framework7 8.2.0 → 8.3.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 (40) hide show
  1. package/components/panel/panel-rtl.css +1 -1
  2. package/components/panel/panel.css +1 -1
  3. package/components/panel/panel.less +2 -2
  4. package/components/popup/popup-class.js +1 -0
  5. package/components/popup/popup-rtl.css +1 -1
  6. package/components/popup/popup.css +1 -1
  7. package/components/popup/popup.less +3 -0
  8. package/components/sheet/sheet-class.js +216 -18
  9. package/components/sheet/sheet-rtl.css +1 -1
  10. package/components/sheet/sheet.css +1 -1
  11. package/components/sheet/sheet.d.ts +16 -1
  12. package/components/sheet/sheet.js +8 -0
  13. package/components/sheet/sheet.less +8 -14
  14. package/components/swiper/swiper-rtl.css +1 -1
  15. package/components/swiper/swiper.css +1 -1
  16. package/components/swiper/swiper.less +1 -1
  17. package/framework7-bundle-rtl.css +22 -21
  18. package/framework7-bundle-rtl.min.css +4 -4
  19. package/framework7-bundle.css +22 -21
  20. package/framework7-bundle.esm.js +2 -2
  21. package/framework7-bundle.js +394 -74
  22. package/framework7-bundle.js.map +1 -1
  23. package/framework7-bundle.less +2 -2
  24. package/framework7-bundle.min.css +4 -4
  25. package/framework7-bundle.min.js +3 -3
  26. package/framework7-bundle.min.js.map +1 -1
  27. package/framework7-lite-bundle.esm.js +2 -2
  28. package/framework7-lite.esm.js +2 -2
  29. package/framework7-lite.js +31 -0
  30. package/framework7-rtl.css +2 -2
  31. package/framework7-rtl.min.css +2 -2
  32. package/framework7.css +2 -2
  33. package/framework7.esm.js +2 -2
  34. package/framework7.js +42 -0
  35. package/framework7.less +2 -2
  36. package/framework7.min.css +2 -2
  37. package/less/plugin.js +15 -0
  38. package/modules/clicks/clicks.js +1 -1
  39. package/modules/router/component-loader.js +42 -8
  40. package/package.json +3 -3
@@ -1,5 +1,5 @@
1
1
  /**
2
- * Framework7 8.2.0
2
+ * Framework7 8.3.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: July 6, 2023
10
+ * Released on: August 18, 2023
11
11
  */
12
12
 
13
13
  (function (global, factory) {
@@ -9524,7 +9524,7 @@
9524
9524
  view = $(clickedLinkData.view)[0].f7View;
9525
9525
  } else {
9526
9526
  view = $clickedEl.parents('.view')[0] && $clickedEl.parents('.view')[0].f7View;
9527
- if (!$clickedLinkEl.hasClass('back') && view && view.params.linksView) {
9527
+ if (view && view.params.linksView && (!$clickedLinkEl.hasClass('back') || $clickedLinkEl.hasClass('back') && view.router.history.length === 1)) {
9528
9528
  if (typeof view.params.linksView === 'string') view = $(view.params.linksView)[0].f7View;else if (view.params.linksView instanceof View$1) view = view.params.linksView;
9529
9529
  }
9530
9530
  }
@@ -9573,31 +9573,65 @@
9573
9573
  const params = {
9574
9574
  ...options
9575
9575
  };
9576
+ const component = (props, ctx) => {
9577
+ const {
9578
+ $h,
9579
+ $onMounted,
9580
+ $el,
9581
+ $f7
9582
+ } = ctx;
9583
+ $onMounted(() => {
9584
+ const viewEl = $el.value.find('.view');
9585
+ const view = $f7.view.create(viewEl, {
9586
+ linksView: router.view.selector,
9587
+ ignoreOpenIn: true,
9588
+ loadInitialPage: false
9589
+ });
9590
+ view.router.navigate(url, {
9591
+ props: options.props,
9592
+ reloadAll: true
9593
+ });
9594
+ });
9595
+ // eslint-disable-next-line
9596
+ return () => {
9597
+ if (options.openIn === 'popup') {
9598
+ return $h`<div class="popup popup-router-open-in" data-url="${url}"><div class="view"></div></div>`;
9599
+ }
9600
+ if (options.openIn === 'loginScreen') {
9601
+ return $h`<div class="login-screen login-screen-router-open-in" data-url="${url}"><div class="view"></div></div>`;
9602
+ }
9603
+ if (options.openIn === 'sheet') {
9604
+ return $h`<div class="sheet-modal sheet-modal-router-open-in" data-url="${url}"><div class="sheet-modal-inner"><div class="view"></div></div></div>`;
9605
+ }
9606
+ if (options.openIn === 'popover') {
9607
+ return $h`<div class="popover popover-router-open-in" data-url="${url}"><div class="popover-inner"><div class="view"></div></div></div>`;
9608
+ }
9609
+ if (options.openIn.indexOf('panel') >= 0) {
9610
+ const parts = options.openIn.split(':');
9611
+ const side = parts[1] || 'left';
9612
+ const effect = parts[2] || 'cover';
9613
+ return $h`<div class="panel panel-router-open-in panel-${side} panel-${effect}" data-url="${url}"><div class="view"></div></div>`;
9614
+ }
9615
+ };
9616
+ };
9576
9617
  if (options.openIn === 'popup') {
9577
- params.content = `<div class="popup popup-router-open-in" data-url="${url}"><div class="view view-init" data-links-view="${router.view.selector}" data-url="${url}" data-ignore-open-in="true"></div></div>`;
9578
9618
  navigateOptions.route.popup = params;
9579
9619
  }
9580
9620
  if (options.openIn === 'loginScreen') {
9581
- params.content = `<div class="login-screen login-screen-router-open-in" data-url="${url}"><div class="view view-init" data-links-view="${router.view.selector}" data-url="${url}" data-ignore-open-in="true"></div></div>`;
9582
9621
  navigateOptions.route.loginScreen = params;
9583
9622
  }
9584
9623
  if (options.openIn === 'sheet') {
9585
- params.content = `<div class="sheet-modal sheet-modal-router-open-in" data-url="${url}"><div class="sheet-modal-inner"><div class="view view-init" data-links-view="${router.view.selector}" data-url="${url}" data-ignore-open-in="true"></div></div></div>`;
9586
9624
  navigateOptions.route.sheet = params;
9587
9625
  }
9588
9626
  if (options.openIn === 'popover') {
9589
9627
  params.targetEl = options.clickedEl || options.targetEl;
9590
- params.content = `<div class="popover popover-router-open-in" data-url="${url}"><div class="popover-inner"><div class="view view-init" data-links-view="${router.view.selector}" data-url="${url}" data-ignore-open-in="true"></div></div></div>`;
9591
9628
  navigateOptions.route.popover = params;
9592
9629
  }
9593
9630
  if (options.openIn.indexOf('panel') >= 0) {
9594
- const parts = options.openIn.split(':');
9595
- const side = parts[1] || 'left';
9596
- const effect = parts[2] || 'cover';
9597
9631
  params.targetEl = options.clickedEl || options.targetEl;
9598
- params.content = `<div class="panel panel-router-open-in panel-${side} panel-${effect}" data-url="${url}"><div class="view view-init" data-links-view="${router.view.selector}" data-url="${url}" data-ignore-open-in="true"></div></div>`;
9599
9632
  navigateOptions.route.panel = params;
9600
9633
  }
9634
+ params.component = component;
9601
9635
  return router.navigate(navigateOptions);
9602
9636
  },
9603
9637
  componentLoader(component, componentUrl, options, resolve, reject) {
@@ -13895,6 +13929,7 @@
13895
13929
  if (popup.params.swipeHandler && $(e.target).closest(popup.params.swipeHandler).length === 0) {
13896
13930
  return;
13897
13931
  }
13932
+ if ($(e.target).closest('.sortable-handler').length > 0) return;
13898
13933
  isTouched = true;
13899
13934
  isMoved = false;
13900
13935
  startTouch = {
@@ -15061,6 +15096,7 @@
15061
15096
  function pushViewScale(offset) {
15062
15097
  return (app.height - offset * 2) / app.height;
15063
15098
  }
15099
+ const useBreakpoints = sheet.params.breakpoints && sheet.params.breakpoints.length > 0;
15064
15100
  let isTouched = false;
15065
15101
  let startTouch;
15066
15102
  let currentTouch;
@@ -15081,11 +15117,15 @@
15081
15117
  let sheetPageContentScrollTop;
15082
15118
  let sheetPageContentScrollHeight;
15083
15119
  let sheetPageContentOffsetHeight;
15120
+ let breakpointsTranslate = [];
15121
+ let currentBreakpointIndex;
15122
+ let backdropBreakpointSet = true;
15084
15123
  function handleTouchStart(e) {
15085
15124
  if (isTouched || !(sheet.params.swipeToClose || sheet.params.swipeToStep) || !e.isTrusted) return;
15086
15125
  if (sheet.params.swipeHandler && $(e.target).closest(sheet.params.swipeHandler).length === 0) {
15087
15126
  return;
15088
15127
  }
15128
+ if ($(e.target).closest('.sortable-handler').length > 0) return;
15089
15129
  isTouched = true;
15090
15130
  isMoved = false;
15091
15131
  startTouch = {
@@ -15137,14 +15177,23 @@
15137
15177
  maxTranslate = 0;
15138
15178
  } else {
15139
15179
  minTranslate = 0;
15140
- maxTranslate = sheet.params.swipeToClose ? sheetElOffsetHeight : swipeStepTranslate;
15180
+ maxTranslate = sheet.params.swipeToClose ? sheetElOffsetHeight : useBreakpoints ? breakpointsTranslate[0] : swipeStepTranslate;
15141
15181
  }
15142
15182
  isMoved = true;
15143
15183
  }
15144
15184
  currentTranslate = startTranslate - touchesDiff;
15145
15185
  currentTranslate = Math.min(Math.max(currentTranslate, minTranslate), maxTranslate);
15146
15186
  e.preventDefault();
15147
- if (sheet.push && pushOffset) {
15187
+ if (useBreakpoints) {
15188
+ let progress = isTopSheetModal ? 1 + currentTranslate / sheetElOffsetHeight : 1 - currentTranslate / sheetElOffsetHeight;
15189
+ progress = Math.abs(progress);
15190
+ progress = Math.min(Math.max(progress, 0), 1);
15191
+ // eslint-disable-next-line
15192
+ setBackdropBreakpoint(progress);
15193
+ // eslint-disable-next-line
15194
+ setPushBreakpoint(progress);
15195
+ }
15196
+ if (sheet.push && pushOffset && !useBreakpoints) {
15148
15197
  let progress = (currentTranslate - startTranslate) / sheetElOffsetHeight;
15149
15198
  if (sheet.params.swipeToStep) {
15150
15199
  if (isTopSheetModal) {
@@ -15185,14 +15234,17 @@
15185
15234
  isMoved = false;
15186
15235
  $el.transform('').transition('');
15187
15236
  if (sheet.push && pushOffset) {
15188
- $pushViewEl.transition('').transform('');
15189
- $pushViewEl.css('border-radius', '');
15237
+ $pushViewEl.transition('');
15238
+ if (!useBreakpoints) {
15239
+ $pushViewEl.transform('');
15240
+ $pushViewEl.css('border-radius', '');
15241
+ }
15190
15242
  }
15191
15243
  const direction = touchesDiff < 0 ? 'to-bottom' : 'to-top';
15192
15244
  const diff = Math.abs(touchesDiff);
15193
15245
  if (diff === 0 || currentTranslate === startTranslate) return;
15194
15246
  const timeDiff = new Date().getTime() - touchStartTime;
15195
- if (!sheet.params.swipeToStep) {
15247
+ if (!sheet.params.swipeToStep && !useBreakpoints) {
15196
15248
  if (direction !== (isTopSheetModal ? 'to-top' : 'to-bottom')) {
15197
15249
  return;
15198
15250
  }
@@ -15205,7 +15257,34 @@
15205
15257
  const closeDirection = isTopSheetModal ? 'to-top' : 'to-bottom';
15206
15258
  const absCurrentTranslate = Math.abs(currentTranslate);
15207
15259
  const absSwipeStepTranslate = Math.abs(swipeStepTranslate);
15208
- if (timeDiff < 300 && diff > 10) {
15260
+ if (timeDiff < 300 && diff > 10 && useBreakpoints) {
15261
+ // SHORT SWIPES BREAKPOINTS
15262
+ if (direction === openDirection && typeof currentBreakpointIndex !== 'undefined') {
15263
+ if (currentBreakpointIndex === params.breakpoints.length - 1) {
15264
+ // open
15265
+ sheet.setBreakpoint(1);
15266
+ } else {
15267
+ // move to next breakpoint
15268
+ currentBreakpointIndex = Math.min(breakpointsTranslate.length - 1, currentBreakpointIndex + 1);
15269
+ sheet.setBreakpoint(params.breakpoints[currentBreakpointIndex]);
15270
+ }
15271
+ }
15272
+ if (direction === closeDirection) {
15273
+ if (currentBreakpointIndex === 0) {
15274
+ // close
15275
+ sheet.close();
15276
+ } else {
15277
+ // move to prev breakpoint
15278
+ if (typeof currentBreakpointIndex === 'undefined') {
15279
+ currentBreakpointIndex = params.breakpoints.length - 1;
15280
+ } else {
15281
+ currentBreakpointIndex = Math.max(0, currentBreakpointIndex - 1);
15282
+ }
15283
+ sheet.setBreakpoint(params.breakpoints[currentBreakpointIndex]);
15284
+ }
15285
+ }
15286
+ } else if (timeDiff < 300 && diff > 10) {
15287
+ // SHORT SWIPES SWIPE STEP
15209
15288
  if (direction === openDirection && absCurrentTranslate < absSwipeStepTranslate) {
15210
15289
  // open step
15211
15290
  $el.removeClass('modal-in-swipe-step');
@@ -15252,7 +15331,26 @@
15252
15331
  }
15253
15332
  return;
15254
15333
  }
15255
- if (timeDiff >= 300) {
15334
+ if (timeDiff >= 300 && useBreakpoints) {
15335
+ // LONG SWIPES BREAKPOINTS
15336
+ const allBreakpoints = [sheetElOffsetHeight, ...breakpointsTranslate, 0];
15337
+ const closestTranslate = allBreakpoints.reduce((prev, curr) => {
15338
+ return Math.abs(curr - currentTranslate) < Math.abs(prev - currentTranslate) ? curr : prev;
15339
+ });
15340
+ const closestIndex = allBreakpoints.indexOf(closestTranslate);
15341
+ if (closestTranslate === 0) {
15342
+ // open
15343
+ sheet.setBreakpoint(1);
15344
+ } else if (closestIndex === 0) {
15345
+ // close
15346
+ sheet.close();
15347
+ } else {
15348
+ // set bp
15349
+ currentBreakpointIndex = closestIndex - 1;
15350
+ sheet.setBreakpoint(params.breakpoints[currentBreakpointIndex]);
15351
+ }
15352
+ } else if (timeDiff >= 300) {
15353
+ // LONG SWIPES SWIPE STEP
15256
15354
  const stepOpened = !$el.hasClass('modal-in-swipe-step');
15257
15355
  if (!stepOpened) {
15258
15356
  if (absCurrentTranslate < absSwipeStepTranslate / 2) {
@@ -15291,12 +15389,133 @@
15291
15389
  }
15292
15390
  }
15293
15391
  }
15392
+ const setPushBreakpoint = breakpoint => {
15393
+ const {
15394
+ pushBreakpoint
15395
+ } = params;
15396
+ if (pushBreakpoint === null || typeof pushBreakpoint === 'undefined' || !sheet.push || !pushOffset) return;
15397
+ if (breakpoint >= pushBreakpoint) {
15398
+ sheet.$htmlEl.addClass('with-modal-sheet-push').removeClass('with-modal-sheet-push-closing');
15399
+ $pushViewEl.transition('').forEach(el => {
15400
+ el.style.setProperty('transform', `translate3d(0,0,0) scale(${pushViewScale(pushOffset)})`, 'important');
15401
+ });
15402
+ $pushViewEl.css('border-radius', `${pushBorderRadius * 1}px`);
15403
+ } else {
15404
+ const pushBreakpoints = [0, ...params.breakpoints, 1];
15405
+ const pushTransparentBreakpoint = pushBreakpoints[pushBreakpoints.indexOf(pushBreakpoint) - 1];
15406
+ if (breakpoint <= pushTransparentBreakpoint) {
15407
+ $pushViewEl.transition('').css('transform', '');
15408
+ $pushViewEl.css('border-radius', '');
15409
+ sheet.$htmlEl.removeClass('with-modal-sheet-push');
15410
+ if (breakpoint === pushTransparentBreakpoint) {
15411
+ sheet.$htmlEl.addClass('with-modal-sheet-push-closing');
15412
+ }
15413
+ } else {
15414
+ const progress = (breakpoint - pushTransparentBreakpoint) / (pushBreakpoint - pushTransparentBreakpoint);
15415
+ sheet.$htmlEl.addClass('with-modal-sheet-push').removeClass('with-modal-sheet-push-closing');
15416
+ $pushViewEl.transition(0).forEach(el => {
15417
+ el.style.setProperty('transform', `translate3d(0,0,0) scale(${1 - (1 - pushViewScale(pushOffset)) * progress})`, 'important');
15418
+ });
15419
+ $pushViewEl.css('border-radius', `${pushBorderRadius * progress}px`);
15420
+ }
15421
+ }
15422
+ };
15423
+ const setBackdropBreakpoint = breakpoint => {
15424
+ const {
15425
+ backdrop,
15426
+ backdropBreakpoint
15427
+ } = params;
15428
+ if (!backdropBreakpoint || !backdrop || !$backdropEl.length) return;
15429
+ if (breakpoint >= backdropBreakpoint) {
15430
+ if (!backdropBreakpointSet) {
15431
+ $backdropEl.transition('').css({
15432
+ opacity: '',
15433
+ pointerEvents: ''
15434
+ });
15435
+ }
15436
+ backdropBreakpointSet = true;
15437
+ } else {
15438
+ const backdropBreakpoints = [0, ...params.breakpoints, 1];
15439
+ const backdropTransparentBreakpoint = backdropBreakpoints[backdropBreakpoints.indexOf(backdropBreakpoint) - 1];
15440
+ if (breakpoint <= backdropTransparentBreakpoint) {
15441
+ if (backdropBreakpointSet) {
15442
+ $backdropEl.transition('').css({
15443
+ opacity: 0,
15444
+ pointerEvents: 'none'
15445
+ });
15446
+ }
15447
+ backdropBreakpointSet = false;
15448
+ } else {
15449
+ const progress = (breakpoint - backdropTransparentBreakpoint) / (backdropBreakpoint - backdropTransparentBreakpoint);
15450
+ $backdropEl.transition(0).css({
15451
+ opacity: progress,
15452
+ pointerEvents: 'auto'
15453
+ });
15454
+ }
15455
+ }
15456
+ };
15457
+ sheet.calcBreakpoints = () => {
15458
+ if (!useBreakpoints) {
15459
+ return;
15460
+ }
15461
+ const fullSize = $el[0].offsetHeight;
15462
+ // eslint-disable-next-line
15463
+ const isTopSheetModal = $el.hasClass('sheet-modal-top');
15464
+ breakpointsTranslate = [];
15465
+ sheet.params.breakpoints.forEach(ratio => {
15466
+ breakpointsTranslate.push((fullSize - fullSize * ratio) * (isTopSheetModal ? -1 : 1));
15467
+ });
15468
+ };
15469
+ sheet.setBreakpoint = value => {
15470
+ if (!useBreakpoints) {
15471
+ return sheet;
15472
+ }
15473
+ if (value === 1) {
15474
+ // open
15475
+ if (!sheet.opened) {
15476
+ sheet.open();
15477
+ }
15478
+ $el.removeClass('modal-in-breakpoint');
15479
+ currentBreakpointIndex = undefined;
15480
+ setBackdropBreakpoint(value);
15481
+ setPushBreakpoint(value);
15482
+ $el.trigger('sheet:breakpoint', value);
15483
+ sheet.emit('local::breakpoint sheetBreakpoint', sheet, value);
15484
+ } else if (value === 0) {
15485
+ // close
15486
+ $el.trigger('sheet:breakpoint', value);
15487
+ sheet.emit('local::breakpoint sheetBreakpoint', sheet, value);
15488
+ sheet.close();
15489
+ } else {
15490
+ const index = params.breakpoints.indexOf(value);
15491
+ if (index < 0) return sheet;
15492
+ if (!sheet.opened) {
15493
+ sheet.open();
15494
+ }
15495
+ setBackdropBreakpoint(value);
15496
+ setPushBreakpoint(value);
15497
+ $el.trigger('sheet:breakpoint', value);
15498
+ sheet.emit('local::breakpoint sheetBreakpoint', sheet, value);
15499
+ currentBreakpointIndex = index;
15500
+ $el[0].style.setProperty('--f7-sheet-breakpoint', `${breakpointsTranslate[index]}px`);
15501
+ $el.addClass('modal-in-breakpoint');
15502
+ }
15503
+ return sheet;
15504
+ };
15505
+ const setBreakpointsOnResize = () => {
15506
+ sheet.calcBreakpoints();
15507
+ if (typeof currentBreakpointIndex !== 'undefined') {
15508
+ sheet.setBreakpoint(params.breakpoints[currentBreakpointIndex]);
15509
+ }
15510
+ };
15294
15511
  sheet.setSwipeStep = function setSwipeStep(byResize) {
15295
15512
  if (byResize === void 0) {
15296
15513
  byResize = true;
15297
15514
  }
15298
15515
  const $swipeStepEl = $el.find('.sheet-modal-swipe-step').eq(0);
15299
15516
  if (!$swipeStepEl.length) return;
15517
+
15518
+ // eslint-disable-next-line
15300
15519
  if ($el.hasClass('sheet-modal-top')) {
15301
15520
  swipeStepTranslate = -($swipeStepEl.offset().top - $el.offset().top + $swipeStepEl[0].offsetHeight);
15302
15521
  } else {
@@ -15309,12 +15528,16 @@
15309
15528
  }
15310
15529
  };
15311
15530
  function onResize() {
15312
- sheet.setSwipeStep(true);
15531
+ if (useBreakpoints) {
15532
+ setBreakpointsOnResize();
15533
+ } else {
15534
+ sheet.setSwipeStep(true);
15535
+ }
15313
15536
  }
15314
15537
  const passive = support.passiveListener ? {
15315
15538
  passive: true
15316
15539
  } : false;
15317
- if (sheet.params.swipeToClose || sheet.params.swipeToStep) {
15540
+ if (sheet.params.swipeToClose || sheet.params.swipeToStep || useBreakpoints) {
15318
15541
  $el.on(app.touchEvents.start, handleTouchStart, passive);
15319
15542
  app.on('touchmove', handleTouchMove);
15320
15543
  app.on('touchend:passive', handleTouchEnd);
@@ -15329,10 +15552,7 @@
15329
15552
  $(document).on('keydown', onKeyDown);
15330
15553
  }
15331
15554
  $el.prevAll('.popup.modal-in').addClass('popup-behind');
15332
- if (sheet.params.swipeToStep) {
15333
- sheet.setSwipeStep(false);
15334
- app.on('resize', onResize);
15335
- }
15555
+ app.on('resize', onResize);
15336
15556
  if (sheet.params.scrollToEl) {
15337
15557
  scrollToElementOnOpen();
15338
15558
  }
@@ -15342,15 +15562,23 @@
15342
15562
  if (!pushOffset) pushOffset = app.theme === 'ios' ? 44 : 48;
15343
15563
  sheet.$htmlEl[0].style.setProperty('--f7-sheet-push-offset', `${pushOffset}px`);
15344
15564
  $el.addClass('sheet-modal-push');
15345
- sheet.$htmlEl.addClass('with-modal-sheet-push');
15346
- if (!sheet.params.swipeToStep) {
15565
+ if (!useBreakpoints) {
15566
+ sheet.$htmlEl.addClass('with-modal-sheet-push');
15567
+ }
15568
+ if (!sheet.params.swipeToStep && !useBreakpoints) {
15347
15569
  sheet.$htmlEl[0].style.setProperty('--f7-sheet-push-scale', pushViewScale(pushOffset));
15348
15570
  } else {
15349
15571
  $pushViewEl = app.$el.children('.view, .views');
15350
- pushBorderRadius = parseFloat($el.css(`border-${isTopSheetModal ? 'bottom' : 'top'}-left-radius`));
15572
+ pushBorderRadius = app.theme === 'ios' ? 10 : 16;
15351
15573
  $pushViewEl.css('border-radius', '0px');
15352
15574
  }
15353
15575
  }
15576
+ if (useBreakpoints) {
15577
+ sheet.calcBreakpoints();
15578
+ sheet.setBreakpoint(params.breakpoints[0]);
15579
+ } else if (sheet.params.swipeToStep) {
15580
+ sheet.setSwipeStep(false);
15581
+ }
15354
15582
  });
15355
15583
  sheet.on('opened', () => {
15356
15584
  if (sheet.params.closeByOutsideClick || sheet.params.closeByBackdropClick) {
@@ -15358,8 +15586,9 @@
15358
15586
  }
15359
15587
  });
15360
15588
  sheet.on('close', () => {
15361
- if (sheet.params.swipeToStep) {
15362
- $el.removeClass('modal-in-swipe-step');
15589
+ currentBreakpointIndex = undefined;
15590
+ if (sheet.params.swipeToStep || useBreakpoints) {
15591
+ $el.removeClass('modal-in-swipe-step modal-in-breakpoint');
15363
15592
  sheet.emit('local::_swipeStep', false);
15364
15593
  app.off('resize', onResize);
15365
15594
  }
@@ -15376,6 +15605,10 @@
15376
15605
  if (sheet.push && pushOffset) {
15377
15606
  sheet.$htmlEl.removeClass('with-modal-sheet-push');
15378
15607
  sheet.$htmlEl.addClass('with-modal-sheet-push-closing');
15608
+ if ($pushViewEl) {
15609
+ $pushViewEl.transform('');
15610
+ $pushViewEl.css('border-radius', '');
15611
+ }
15379
15612
  }
15380
15613
  });
15381
15614
  sheet.on('closed', () => {
@@ -15427,6 +15660,9 @@
15427
15660
  closeOnEscape: false,
15428
15661
  swipeToClose: false,
15429
15662
  swipeToStep: false,
15663
+ breakpoints: [],
15664
+ backdropBreakpoint: 0,
15665
+ pushBreakpoint: 0,
15430
15666
  swipeHandler: null,
15431
15667
  containerEl: null
15432
15668
  }
@@ -15455,6 +15691,11 @@
15455
15691
  const sheetInstance = app.sheet.get(sheet);
15456
15692
  if (sheetInstance && sheetInstance.stepToggle) return sheetInstance.stepToggle();
15457
15693
  return undefined;
15694
+ },
15695
+ setBreakpoint(sheet, breakpoint) {
15696
+ const sheetInstance = app.sheet.get(sheet);
15697
+ if (sheetInstance && sheetInstance.setBreakpoint) return sheetInstance.setBreakpoint(breakpoint);
15698
+ return undefined;
15458
15699
  }
15459
15700
  });
15460
15701
  },
@@ -31084,13 +31325,13 @@
31084
31325
  const init = () => {
31085
31326
  if (!swiper.params.observer) return;
31086
31327
  if (swiper.params.observeParents) {
31087
- const containerParents = elementParents(swiper.el);
31328
+ const containerParents = elementParents(swiper.hostEl);
31088
31329
  for (let i = 0; i < containerParents.length; i += 1) {
31089
31330
  attach(containerParents[i]);
31090
31331
  }
31091
31332
  }
31092
31333
  // Observe container
31093
- attach(swiper.el, {
31334
+ attach(swiper.hostEl, {
31094
31335
  childList: swiper.params.observeSlideChildren
31095
31336
  });
31096
31337
 
@@ -31754,7 +31995,10 @@
31754
31995
  const slideSelector = () => swiper.isElement ? `swiper-slide` : `.${swiper.params.slideClass}`;
31755
31996
  const slideEl = imageEl.closest(slideSelector());
31756
31997
  if (slideEl) {
31757
- const lazyEl = slideEl.querySelector(`.${swiper.params.lazyPreloaderClass}`);
31998
+ let lazyEl = slideEl.querySelector(`.${swiper.params.lazyPreloaderClass}`);
31999
+ if (!lazyEl && swiper.isElement) {
32000
+ lazyEl = slideEl.shadowRoot.querySelector(`.${swiper.params.lazyPreloaderClass}`);
32001
+ }
31758
32002
  if (lazyEl) lazyEl.remove();
31759
32003
  }
31760
32004
  };
@@ -32101,6 +32345,7 @@
32101
32345
  const swiper = this;
32102
32346
  if (!swiper.params.cssMode) {
32103
32347
  swiper.wrapperEl.style.transitionDuration = `${duration}ms`;
32348
+ swiper.wrapperEl.style.transitionDelay = duration === 0 ? `0ms` : '';
32104
32349
  }
32105
32350
  swiper.emit('setTransition', duration, byController);
32106
32351
  }
@@ -32662,11 +32907,13 @@
32662
32907
  swiper.slideTo(activeIndex + slidesPrepended, 0, false, true);
32663
32908
  if (setTranslate) {
32664
32909
  swiper.touches[swiper.isHorizontal() ? 'startX' : 'startY'] += diff;
32910
+ swiper.touchEventsData.currentTranslate = swiper.translate;
32665
32911
  }
32666
32912
  }
32667
32913
  } else {
32668
32914
  if (setTranslate) {
32669
32915
  swiper.slideToLoop(slideRealIndex, 0, false, true);
32916
+ swiper.touchEventsData.currentTranslate = swiper.translate;
32670
32917
  }
32671
32918
  }
32672
32919
  } else if (appendSlidesIndexes.length > 0 && isNext) {
@@ -32680,6 +32927,7 @@
32680
32927
  swiper.slideTo(activeIndex - slidesAppended, 0, false, true);
32681
32928
  if (setTranslate) {
32682
32929
  swiper.touches[swiper.isHorizontal() ? 'startX' : 'startY'] += diff;
32930
+ swiper.touchEventsData.currentTranslate = swiper.translate;
32683
32931
  }
32684
32932
  }
32685
32933
  } else {
@@ -32692,7 +32940,6 @@
32692
32940
  if (swiper.controller && swiper.controller.control && !byController) {
32693
32941
  const loopParams = {
32694
32942
  slideRealIndex,
32695
- slideTo: false,
32696
32943
  direction,
32697
32944
  setTranslate,
32698
32945
  activeSlideIndex,
@@ -32700,10 +32947,16 @@
32700
32947
  };
32701
32948
  if (Array.isArray(swiper.controller.control)) {
32702
32949
  swiper.controller.control.forEach(c => {
32703
- if (!c.destroyed && c.params.loop) c.loopFix(loopParams);
32950
+ if (!c.destroyed && c.params.loop) c.loopFix({
32951
+ ...loopParams,
32952
+ slideTo: c.params.slidesPerView === params.slidesPerView ? slideTo : false
32953
+ });
32704
32954
  });
32705
32955
  } else if (swiper.controller.control instanceof swiper.constructor && swiper.controller.control.params.loop) {
32706
- swiper.controller.control.loopFix(loopParams);
32956
+ swiper.controller.control.loopFix({
32957
+ ...loopParams,
32958
+ slideTo: swiper.controller.control.params.slidesPerView === params.slidesPerView ? slideTo : false
32959
+ });
32707
32960
  }
32708
32961
  }
32709
32962
  swiper.emit('loopFix');
@@ -33128,8 +33381,8 @@
33128
33381
  if (pointerIndex >= 0) {
33129
33382
  data.evCache.splice(pointerIndex, 1);
33130
33383
  }
33131
- if (['pointercancel', 'pointerout', 'pointerleave'].includes(event.type)) {
33132
- const proceed = event.type === 'pointercancel' && (swiper.browser.isSafari || swiper.browser.isWebView);
33384
+ if (['pointercancel', 'pointerout', 'pointerleave', 'contextmenu'].includes(event.type)) {
33385
+ const proceed = ['pointercancel', 'contextmenu'].includes(event.type) && (swiper.browser.isSafari || swiper.browser.isWebView);
33133
33386
  if (!proceed) {
33134
33387
  return;
33135
33388
  }
@@ -33405,6 +33658,9 @@
33405
33658
  document[domMethod]('pointerleave', swiper.onTouchEnd, {
33406
33659
  passive: true
33407
33660
  });
33661
+ document[domMethod]('contextmenu', swiper.onTouchEnd, {
33662
+ passive: true
33663
+ });
33408
33664
 
33409
33665
  // Prevent Links Clicks
33410
33666
  if (params.preventClicks || params.preventClicksPropagation) {
@@ -34223,7 +34479,7 @@
34223
34479
  return false;
34224
34480
  }
34225
34481
  el.swiper = swiper;
34226
- if (el.parentNode && el.parentNode.host) {
34482
+ if (el.parentNode && el.parentNode.host && el.parentNode.host.nodeName === 'SWIPER-CONTAINER') {
34227
34483
  swiper.isElement = true;
34228
34484
  }
34229
34485
  const getWrapperSelector = () => {
@@ -34249,7 +34505,7 @@
34249
34505
  Object.assign(swiper, {
34250
34506
  el,
34251
34507
  wrapperEl,
34252
- slidesEl: swiper.isElement ? el.parentNode.host : wrapperEl,
34508
+ slidesEl: swiper.isElement && !el.parentNode.host.slideSlots ? el.parentNode.host : wrapperEl,
34253
34509
  hostEl: swiper.isElement ? el.parentNode.host : el,
34254
34510
  mounted: true,
34255
34511
  // RTL
@@ -34302,7 +34558,11 @@
34302
34558
 
34303
34559
  // Attach events
34304
34560
  swiper.attachEvents();
34305
- [...swiper.el.querySelectorAll('[loading="lazy"]')].forEach(imageEl => {
34561
+ const lazyElements = [...swiper.el.querySelectorAll('[loading="lazy"]')];
34562
+ if (swiper.isElement) {
34563
+ lazyElements.push(...swiper.hostEl.querySelectorAll('[loading="lazy"]'));
34564
+ }
34565
+ lazyElements.forEach(imageEl => {
34306
34566
  if (imageEl.complete) {
34307
34567
  processLazyPreloader(swiper, imageEl);
34308
34568
  } else {
@@ -35182,7 +35442,9 @@
35182
35442
  // Stop autoplay
35183
35443
  if (swiper.params.autoplay && swiper.params.autoplayDisableOnInteraction) swiper.autoplay.stop();
35184
35444
  // Return page scroll on edge positions
35185
- if (position === swiper.minTranslate() || position === swiper.maxTranslate()) return true;
35445
+ if (params.releaseOnEdges && (position === swiper.minTranslate() || position === swiper.maxTranslate())) {
35446
+ return true;
35447
+ }
35186
35448
  }
35187
35449
  }
35188
35450
  if (e.preventDefault) e.preventDefault();else e.returnValue = false;
@@ -35275,10 +35537,7 @@
35275
35537
  nextEl: null,
35276
35538
  prevEl: null
35277
35539
  };
35278
- const makeElementsArray = el => {
35279
- if (!Array.isArray(el)) el = [el].filter(e => !!e);
35280
- return el;
35281
- };
35540
+ const makeElementsArray = el => (Array.isArray(el) ? el : [el]).filter(e => !!e);
35282
35541
  function getEl(el) {
35283
35542
  let res;
35284
35543
  if (el && typeof el === 'string' && swiper.isElement) {
@@ -35494,10 +35753,7 @@
35494
35753
  };
35495
35754
  let bulletSize;
35496
35755
  let dynamicBulletIndex = 0;
35497
- const makeElementsArray = el => {
35498
- if (!Array.isArray(el)) el = [el].filter(e => !!e);
35499
- return el;
35500
- };
35756
+ const makeElementsArray = el => (Array.isArray(el) ? el : [el]).filter(e => !!e);
35501
35757
  function isPaginationDisabled() {
35502
35758
  return !swiper.params.pagination.el || !swiper.pagination.el || Array.isArray(swiper.pagination.el) && swiper.pagination.el.length === 0;
35503
35759
  }
@@ -35524,14 +35780,20 @@
35524
35780
  const index = elementIndex(bulletEl) * swiper.params.slidesPerGroup;
35525
35781
  if (swiper.params.loop) {
35526
35782
  if (swiper.realIndex === index) return;
35783
+ const realIndex = swiper.realIndex;
35527
35784
  const newSlideIndex = swiper.getSlideIndexByData(index);
35528
35785
  const currentSlideIndex = swiper.getSlideIndexByData(swiper.realIndex);
35529
35786
  if (newSlideIndex > swiper.slides.length - swiper.loopedSlides) {
35787
+ const indexBeforeLoopFix = swiper.activeIndex;
35530
35788
  swiper.loopFix({
35531
35789
  direction: newSlideIndex > currentSlideIndex ? 'next' : 'prev',
35532
35790
  activeSlideIndex: newSlideIndex,
35533
35791
  slideTo: false
35534
35792
  });
35793
+ const indexAfterFix = swiper.activeIndex;
35794
+ if (indexBeforeLoopFix === indexAfterFix) {
35795
+ swiper.slideToLoop(realIndex, 0, false, true);
35796
+ }
35535
35797
  }
35536
35798
  swiper.slideToLoop(index);
35537
35799
  } else {
@@ -35762,7 +36024,7 @@
35762
36024
  el = makeElementsArray(el);
35763
36025
  el.forEach(subEl => {
35764
36026
  if (params.type === 'bullets' && params.clickable) {
35765
- subEl.classList.add(params.clickableClass);
36027
+ subEl.classList.add(...(params.clickableClass || '').split(' '));
35766
36028
  }
35767
36029
  subEl.classList.add(params.modifierClass + params.type);
35768
36030
  subEl.classList.add(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass);
@@ -35795,6 +36057,7 @@
35795
36057
  subEl.classList.remove(params.modifierClass + params.type);
35796
36058
  subEl.classList.remove(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass);
35797
36059
  if (params.clickable) {
36060
+ subEl.classList.remove(...(params.clickableClass || '').split(' '));
35798
36061
  subEl.removeEventListener('click', onBulletClick);
35799
36062
  }
35800
36063
  });
@@ -36256,6 +36519,7 @@
36256
36519
  enabled: false
36257
36520
  }
36258
36521
  });
36522
+ const elementsSelector = '[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y], [data-swiper-parallax-opacity], [data-swiper-parallax-scale]';
36259
36523
  const setTransform = (el, progress) => {
36260
36524
  const {
36261
36525
  rtl
@@ -36307,9 +36571,14 @@
36307
36571
  el,
36308
36572
  slides,
36309
36573
  progress,
36310
- snapGrid
36574
+ snapGrid,
36575
+ isElement
36311
36576
  } = swiper;
36312
- elementChildren(el, '[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y], [data-swiper-parallax-opacity], [data-swiper-parallax-scale]').forEach(subEl => {
36577
+ const elements = elementChildren(el, elementsSelector);
36578
+ if (swiper.isElement) {
36579
+ elements.push(...elementChildren(swiper.hostEl, elementsSelector));
36580
+ }
36581
+ elements.forEach(subEl => {
36313
36582
  setTransform(subEl, progress);
36314
36583
  });
36315
36584
  slides.forEach((slideEl, slideIndex) => {
@@ -36318,7 +36587,7 @@
36318
36587
  slideProgress += Math.ceil(slideIndex / 2) - progress * (snapGrid.length - 1);
36319
36588
  }
36320
36589
  slideProgress = Math.min(Math.max(slideProgress, -1), 1);
36321
- slideEl.querySelectorAll('[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y], [data-swiper-parallax-opacity], [data-swiper-parallax-scale], [data-swiper-parallax-rotate]').forEach(subEl => {
36590
+ slideEl.querySelectorAll(`${elementsSelector}, [data-swiper-parallax-rotate]`).forEach(subEl => {
36322
36591
  setTransform(subEl, slideProgress);
36323
36592
  });
36324
36593
  });
@@ -36328,9 +36597,14 @@
36328
36597
  duration = swiper.params.speed;
36329
36598
  }
36330
36599
  const {
36331
- el
36600
+ el,
36601
+ hostEl
36332
36602
  } = swiper;
36333
- el.querySelectorAll('[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y], [data-swiper-parallax-opacity], [data-swiper-parallax-scale]').forEach(parallaxEl => {
36603
+ const elements = [...el.querySelectorAll(elementsSelector)];
36604
+ if (swiper.isElement) {
36605
+ elements.push(...hostEl.querySelectorAll(elementsSelector));
36606
+ }
36607
+ elements.forEach(parallaxEl => {
36334
36608
  let parallaxDuration = parseInt(parallaxEl.getAttribute('data-swiper-parallax-duration'), 10) || duration;
36335
36609
  if (duration === 0) parallaxDuration = 0;
36336
36610
  parallaxEl.style.transitionDuration = `${parallaxDuration}ms`;
@@ -36457,7 +36731,7 @@
36457
36731
  function eventWithinZoomContainer(e) {
36458
36732
  const selector = `.${swiper.params.zoom.containerClass}`;
36459
36733
  if (e.target.matches(selector)) return true;
36460
- if ([...swiper.el.querySelectorAll(selector)].filter(containerEl => containerEl.contains(e.target)).length > 0) return true;
36734
+ if ([...swiper.hostEl.querySelectorAll(selector)].filter(containerEl => containerEl.contains(e.target)).length > 0) return true;
36461
36735
  return false;
36462
36736
  }
36463
36737
 
@@ -37159,10 +37433,7 @@
37159
37433
  notification.innerHTML = '';
37160
37434
  notification.innerHTML = message;
37161
37435
  }
37162
- const makeElementsArray = el => {
37163
- if (!Array.isArray(el)) el = [el].filter(e => !!e);
37164
- return el;
37165
- };
37436
+ const makeElementsArray = el => (Array.isArray(el) ? el : [el]).filter(e => !!e);
37166
37437
  function getRandomNumber(size) {
37167
37438
  if (size === void 0) {
37168
37439
  size = 16;
@@ -37887,6 +38158,7 @@
37887
38158
  const onPointerEnter = e => {
37888
38159
  if (e.pointerType !== 'mouse') return;
37889
38160
  pausedByInteraction = true;
38161
+ if (swiper.animating || swiper.autoplay.paused) return;
37890
38162
  pause(true);
37891
38163
  };
37892
38164
  const onPointerLeave = e => {
@@ -39500,7 +39772,7 @@
39500
39772
  }
39501
39773
 
39502
39774
  /**
39503
- * Swiper 10.0.3
39775
+ * Swiper 10.2.0
39504
39776
  * Most modern mobile touch slider and framework with hardware accelerated transitions
39505
39777
  * https://swiperjs.com
39506
39778
  *
@@ -39508,7 +39780,7 @@
39508
39780
  *
39509
39781
  * Released under the MIT License
39510
39782
  *
39511
- * Released on: July 3, 2023
39783
+ * Released on: August 17, 2023
39512
39784
  */
39513
39785
 
39514
39786
  // Swiper Class
@@ -39685,6 +39957,7 @@
39685
39957
  if (swiper.isElement && (!paginationEl || typeof paginationEl === 'string')) {
39686
39958
  paginationEl = document.createElement('div');
39687
39959
  paginationEl.classList.add('swiper-pagination');
39960
+ paginationEl.part.add('pagination');
39688
39961
  swiper.el.appendChild(paginationEl);
39689
39962
  }
39690
39963
  if (paginationEl) currentParams.pagination.el = paginationEl;
@@ -39696,6 +39969,7 @@
39696
39969
  if (swiper.isElement && (!scrollbarEl || typeof scrollbarEl === 'string')) {
39697
39970
  scrollbarEl = document.createElement('div');
39698
39971
  scrollbarEl.classList.add('swiper-scrollbar');
39972
+ scrollbarEl.part.add('scrollbar');
39699
39973
  swiper.el.appendChild(scrollbarEl);
39700
39974
  }
39701
39975
  if (scrollbarEl) currentParams.scrollbar.el = scrollbarEl;
@@ -39708,13 +39982,15 @@
39708
39982
  if (!nextEl || typeof nextEl === 'string') {
39709
39983
  nextEl = document.createElement('div');
39710
39984
  nextEl.classList.add('swiper-button-next');
39711
- nextEl.innerHTML = swiper.hostEl.nextButtonSvg;
39985
+ nextEl.innerHTML = swiper.hostEl.constructor.nextButtonSvg;
39986
+ nextEl.part.add('button-next');
39712
39987
  swiper.el.appendChild(nextEl);
39713
39988
  }
39714
39989
  if (!prevEl || typeof prevEl === 'string') {
39715
39990
  prevEl = document.createElement('div');
39716
39991
  prevEl.classList.add('swiper-button-prev');
39717
- nextEl.innerHTML = swiper.hostEl.prevButtonSvg;
39992
+ prevEl.innerHTML = swiper.hostEl.constructor.prevButtonSvg;
39993
+ prevEl.part.add('button-prev');
39718
39994
  swiper.el.appendChild(prevEl);
39719
39995
  }
39720
39996
  }
@@ -39842,7 +40118,7 @@
39842
40118
  }
39843
40119
 
39844
40120
  /**
39845
- * Swiper Custom Element 10.0.3
40121
+ * Swiper Custom Element 10.2.0
39846
40122
  * Most modern mobile touch slider and framework with hardware accelerated transitions
39847
40123
  * https://swiperjs.com
39848
40124
  *
@@ -39850,19 +40126,19 @@
39850
40126
  *
39851
40127
  * Released under the MIT License
39852
40128
  *
39853
- * Released on: July 3, 2023
40129
+ * Released on: August 17, 2023
39854
40130
  */
39855
40131
 
39856
40132
  /* eslint-disable spaced-comment */
39857
40133
 
39858
- const SwiperCSS = `:host{--swiper-theme-color:#007aff}:host{position:relative;display:block;margin-left:auto;margin-right:auto;z-index:1}.swiper{width:100%;height:100%;margin-left:auto;margin-right:auto;position:relative;overflow:hidden;overflow:clip;list-style:none;padding:0;z-index:1;display:block}.swiper-vertical>.swiper-wrapper{flex-direction:column}.swiper-wrapper{position:relative;width:100%;height:100%;z-index:1;display:flex;transition-property:transform;transition-timing-function:var(--swiper-wrapper-transition-timing-function,initial);box-sizing:content-box}.swiper-android ::slotted(swiper-slide),.swiper-ios ::slotted(swiper-slide),.swiper-wrapper{transform:translate3d(0px,0,0)}.swiper-horizontal{touch-action:pan-y}.swiper-vertical{touch-action:pan-x}::slotted(swiper-slide){flex-shrink:0;width:100%;height:100%;position:relative;transition-property:transform;display:block}::slotted(.swiper-slide-invisible-blank){visibility:hidden}.swiper-autoheight,.swiper-autoheight ::slotted(swiper-slide){height:auto}.swiper-autoheight .swiper-wrapper{align-items:flex-start;transition-property:transform,height}.swiper-backface-hidden ::slotted(swiper-slide){transform:translateZ(0);-webkit-backface-visibility:hidden;backface-visibility:hidden}.swiper-3d.swiper-css-mode .swiper-wrapper{perspective:1200px}.swiper-3d .swiper-wrapper{transform-style:preserve-3d}.swiper-3d{perspective:1200px}.swiper-3d .swiper-cube-shadow,.swiper-3d ::slotted(swiper-slide){transform-style:preserve-3d}.swiper-css-mode>.swiper-wrapper{overflow:auto;scrollbar-width:none;-ms-overflow-style:none}.swiper-css-mode>.swiper-wrapper::-webkit-scrollbar{display:none}.swiper-css-mode ::slotted(swiper-slide){scroll-snap-align:start start}.swiper-css-mode.swiper-horizontal>.swiper-wrapper{scroll-snap-type:x mandatory}.swiper-css-mode.swiper-vertical>.swiper-wrapper{scroll-snap-type:y mandatory}.swiper-css-mode.swiper-free-mode>.swiper-wrapper{scroll-snap-type:none}.swiper-css-mode.swiper-free-mode ::slotted(swiper-slide){scroll-snap-align:none}.swiper-css-mode.swiper-centered>.swiper-wrapper::before{content:'';flex-shrink:0;order:9999}.swiper-css-mode.swiper-centered ::slotted(swiper-slide){scroll-snap-align:center center;scroll-snap-stop:always}.swiper-css-mode.swiper-centered.swiper-horizontal ::slotted(swiper-slide):first-child{margin-inline-start:var(--swiper-centered-offset-before)}.swiper-css-mode.swiper-centered.swiper-horizontal>.swiper-wrapper::before{height:100%;min-height:1px;width:var(--swiper-centered-offset-after)}.swiper-css-mode.swiper-centered.swiper-vertical ::slotted(swiper-slide):first-child{margin-block-start:var(--swiper-centered-offset-before)}.swiper-css-mode.swiper-centered.swiper-vertical>.swiper-wrapper::before{width:100%;min-width:1px;height:var(--swiper-centered-offset-after)}.swiper-virtual ::slotted(swiper-slide){-webkit-backface-visibility:hidden;transform:translateZ(0)}.swiper-virtual.swiper-css-mode .swiper-wrapper::after{content:'';position:absolute;left:0;top:0;pointer-events:none}.swiper-virtual.swiper-css-mode.swiper-horizontal .swiper-wrapper::after{height:1px;width:var(--swiper-virtual-size)}.swiper-virtual.swiper-css-mode.swiper-vertical .swiper-wrapper::after{width:1px;height:var(--swiper-virtual-size)}:host{--swiper-navigation-size:44px}.swiper-button-next,.swiper-button-prev{position:absolute;top:var(--swiper-navigation-top-offset,50%);width:calc(var(--swiper-navigation-size)/ 44 * 27);height:var(--swiper-navigation-size);margin-top:calc(0px - (var(--swiper-navigation-size)/ 2));z-index:10;cursor:pointer;display:flex;align-items:center;justify-content:center;color:var(--swiper-navigation-color,var(--swiper-theme-color))}.swiper-button-next.swiper-button-disabled,.swiper-button-prev.swiper-button-disabled{opacity:.35;cursor:auto;pointer-events:none}.swiper-button-next.swiper-button-hidden,.swiper-button-prev.swiper-button-hidden{opacity:0;cursor:auto;pointer-events:none}.swiper-navigation-disabled .swiper-button-next,.swiper-navigation-disabled .swiper-button-prev{display:none!important}.swiper-button-next svg,.swiper-button-prev svg{width:100%;height:100%;object-fit:contain;transform-origin:center}.swiper-rtl .swiper-button-next svg,.swiper-rtl .swiper-button-prev svg{transform:rotate(180deg)}.swiper-button-prev,.swiper-rtl .swiper-button-next{left:var(--swiper-navigation-sides-offset,10px);right:auto}.swiper-button-next,.swiper-rtl .swiper-button-prev{right:var(--swiper-navigation-sides-offset,10px);left:auto}.swiper-button-lock{display:none}.swiper-pagination{position:absolute;text-align:center;transition:.3s opacity;transform:translate3d(0,0,0);z-index:10}.swiper-pagination.swiper-pagination-hidden{opacity:0}.swiper-pagination-disabled>.swiper-pagination,.swiper-pagination.swiper-pagination-disabled{display:none!important}.swiper-horizontal>.swiper-pagination-bullets,.swiper-pagination-bullets.swiper-pagination-horizontal,.swiper-pagination-custom,.swiper-pagination-fraction{bottom:var(--swiper-pagination-bottom,8px);top:var(--swiper-pagination-top,auto);left:0;width:100%}.swiper-pagination-bullets-dynamic{overflow:hidden;font-size:0}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet{transform:scale(.33);position:relative}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active{transform:scale(1)}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-main{transform:scale(1)}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-prev{transform:scale(.66)}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-prev-prev{transform:scale(.33)}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-next{transform:scale(.66)}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-next-next{transform:scale(.33)}.swiper-pagination-bullet{width:var(--swiper-pagination-bullet-width,var(--swiper-pagination-bullet-size,8px));height:var(--swiper-pagination-bullet-height,var(--swiper-pagination-bullet-size,8px));display:inline-block;border-radius:var(--swiper-pagination-bullet-border-radius,50%);background:var(--swiper-pagination-bullet-inactive-color,#000);opacity:var(--swiper-pagination-bullet-inactive-opacity, .2)}button.swiper-pagination-bullet{border:none;margin:0;padding:0;box-shadow:none;-webkit-appearance:none;appearance:none}.swiper-pagination-clickable .swiper-pagination-bullet{cursor:pointer}.swiper-pagination-bullet:only-child{display:none!important}.swiper-pagination-bullet-active{opacity:var(--swiper-pagination-bullet-opacity, 1);background:var(--swiper-pagination-color,var(--swiper-theme-color))}.swiper-pagination-vertical.swiper-pagination-bullets,.swiper-vertical>.swiper-pagination-bullets{right:var(--swiper-pagination-right,8px);left:var(--swiper-pagination-left,auto);top:50%;transform:translate3d(0px,-50%,0)}.swiper-pagination-vertical.swiper-pagination-bullets .swiper-pagination-bullet,.swiper-vertical>.swiper-pagination-bullets .swiper-pagination-bullet{margin:var(--swiper-pagination-bullet-vertical-gap,6px) 0;display:block}.swiper-pagination-vertical.swiper-pagination-bullets.swiper-pagination-bullets-dynamic,.swiper-vertical>.swiper-pagination-bullets.swiper-pagination-bullets-dynamic{top:50%;transform:translateY(-50%);width:8px}.swiper-pagination-vertical.swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet,.swiper-vertical>.swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet{display:inline-block;transition:.2s transform,.2s top}.swiper-horizontal>.swiper-pagination-bullets .swiper-pagination-bullet,.swiper-pagination-horizontal.swiper-pagination-bullets .swiper-pagination-bullet{margin:0 var(--swiper-pagination-bullet-horizontal-gap,4px)}.swiper-horizontal>.swiper-pagination-bullets.swiper-pagination-bullets-dynamic,.swiper-pagination-horizontal.swiper-pagination-bullets.swiper-pagination-bullets-dynamic{left:50%;transform:translateX(-50%);white-space:nowrap}.swiper-horizontal>.swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet,.swiper-pagination-horizontal.swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet{transition:.2s transform,.2s left}.swiper-horizontal.swiper-rtl>.swiper-pagination-bullets-dynamic .swiper-pagination-bullet{transition:.2s transform,.2s right}.swiper-pagination-fraction{color:var(--swiper-pagination-fraction-color,inherit)}.swiper-pagination-progressbar{background:var(--swiper-pagination-progressbar-bg-color,rgba(0,0,0,.25));position:absolute}.swiper-pagination-progressbar .swiper-pagination-progressbar-fill{background:var(--swiper-pagination-color,var(--swiper-theme-color));position:absolute;left:0;top:0;width:100%;height:100%;transform:scale(0);transform-origin:left top}.swiper-rtl .swiper-pagination-progressbar .swiper-pagination-progressbar-fill{transform-origin:right top}.swiper-horizontal>.swiper-pagination-progressbar,.swiper-pagination-progressbar.swiper-pagination-horizontal,.swiper-pagination-progressbar.swiper-pagination-vertical.swiper-pagination-progressbar-opposite,.swiper-vertical>.swiper-pagination-progressbar.swiper-pagination-progressbar-opposite{width:100%;height:var(--swiper-pagination-progressbar-size,4px);left:0;top:0}.swiper-horizontal>.swiper-pagination-progressbar.swiper-pagination-progressbar-opposite,.swiper-pagination-progressbar.swiper-pagination-horizontal.swiper-pagination-progressbar-opposite,.swiper-pagination-progressbar.swiper-pagination-vertical,.swiper-vertical>.swiper-pagination-progressbar{width:var(--swiper-pagination-progressbar-size,4px);height:100%;left:0;top:0}.swiper-pagination-lock{display:none}.swiper-scrollbar{border-radius:var(--swiper-scrollbar-border-radius,10px);position:relative;-ms-touch-action:none;background:var(--swiper-scrollbar-bg-color,rgba(0,0,0,.1))}.swiper-scrollbar-disabled>.swiper-scrollbar,.swiper-scrollbar.swiper-scrollbar-disabled{display:none!important}.swiper-horizontal>.swiper-scrollbar,.swiper-scrollbar.swiper-scrollbar-horizontal{position:absolute;left:var(--swiper-scrollbar-sides-offset,1%);bottom:var(--swiper-scrollbar-bottom,4px);top:var(--swiper-scrollbar-top,auto);z-index:50;height:var(--swiper-scrollbar-size,4px);width:calc(100% - 2 * var(--swiper-scrollbar-sides-offset,1%))}.swiper-scrollbar.swiper-scrollbar-vertical,.swiper-vertical>.swiper-scrollbar{position:absolute;left:var(--swiper-scrollbar-left,auto);right:var(--swiper-scrollbar-right,4px);top:var(--swiper-scrollbar-sides-offset,1%);z-index:50;width:var(--swiper-scrollbar-size,4px);height:calc(100% - 2 * var(--swiper-scrollbar-sides-offset,1%))}.swiper-scrollbar-drag{height:100%;width:100%;position:relative;background:var(--swiper-scrollbar-drag-bg-color,rgba(0,0,0,.5));border-radius:var(--swiper-scrollbar-border-radius,10px);left:0;top:0}.swiper-scrollbar-cursor-drag{cursor:move}.swiper-scrollbar-lock{display:none}.swiper-zoom-container{width:100%;height:100%;display:flex;justify-content:center;align-items:center;text-align:center}.swiper-zoom-container>canvas,.swiper-zoom-container>img,.swiper-zoom-container>svg{max-width:100%;max-height:100%;object-fit:contain}::slotted(.swiper-slide-zoomed){cursor:move;touch-action:none}.swiper .swiper-notification{position:absolute;left:0;top:0;pointer-events:none;opacity:0;z-index:-1000}.swiper-free-mode>.swiper-wrapper{transition-timing-function:ease-out;margin:0 auto}.swiper-grid>.swiper-wrapper{flex-wrap:wrap}.swiper-grid-column>.swiper-wrapper{flex-wrap:wrap;flex-direction:column}.swiper-fade.swiper-free-mode ::slotted(swiper-slide){transition-timing-function:ease-out}.swiper-fade ::slotted(swiper-slide){pointer-events:none;transition-property:opacity}.swiper-fade ::slotted(swiper-slide) ::slotted(swiper-slide){pointer-events:none}.swiper-fade ::slotted(.swiper-slide-active),.swiper-fade ::slotted(.swiper-slide-active) ::slotted(.swiper-slide-active){pointer-events:auto}.swiper-cube{overflow:visible}.swiper-cube ::slotted(swiper-slide){pointer-events:none;-webkit-backface-visibility:hidden;backface-visibility:hidden;z-index:1;visibility:hidden;transform-origin:0 0;width:100%;height:100%}.swiper-cube ::slotted(swiper-slide) ::slotted(swiper-slide){pointer-events:none}.swiper-cube.swiper-rtl ::slotted(swiper-slide){transform-origin:100% 0}.swiper-cube ::slotted(.swiper-slide-active),.swiper-cube ::slotted(.swiper-slide-active) ::slotted(.swiper-slide-active){pointer-events:auto}.swiper-cube ::slotted(.swiper-slide-active),.swiper-cube ::slotted(.swiper-slide-next),.swiper-cube ::slotted(.swiper-slide-prev){pointer-events:auto;visibility:visible}.swiper-cube .swiper-cube-shadow{position:absolute;left:0;bottom:0px;width:100%;height:100%;opacity:.6;z-index:0}.swiper-cube .swiper-cube-shadow:before{content:'';background:#000;position:absolute;left:0;top:0;bottom:0;right:0;filter:blur(50px)}.swiper-cube ::slotted(.swiper-slide-next)+::slotted(swiper-slide){pointer-events:auto;visibility:visible}.swiper-flip{overflow:visible}.swiper-flip ::slotted(swiper-slide){pointer-events:none;-webkit-backface-visibility:hidden;backface-visibility:hidden;z-index:1}.swiper-flip ::slotted(swiper-slide) ::slotted(swiper-slide){pointer-events:none}.swiper-flip ::slotted(.swiper-slide-active),.swiper-flip ::slotted(.swiper-slide-active) ::slotted(.swiper-slide-active){pointer-events:auto}.swiper-creative ::slotted(swiper-slide){-webkit-backface-visibility:hidden;backface-visibility:hidden;overflow:hidden;transition-property:transform,opacity,height}.swiper-cards{overflow:visible}.swiper-cards ::slotted(swiper-slide){transform-origin:center bottom;-webkit-backface-visibility:hidden;backface-visibility:hidden;overflow:hidden}`;
39859
- const SwiperSlideCSS = `::slotted(.swiper-slide-shadow),::slotted(.swiper-slide-shadow-bottom),::slotted(.swiper-slide-shadow-left),::slotted(.swiper-slide-shadow-right),::slotted(.swiper-slide-shadow-top){position:absolute;left:0;top:0;width:100%;height:100%;pointer-events:none;z-index:10}::slotted(.swiper-slide-shadow){background:rgba(0,0,0,.15)}::slotted(.swiper-slide-shadow-left){background-image:linear-gradient(to left,rgba(0,0,0,.5),rgba(0,0,0,0))}::slotted(.swiper-slide-shadow-right){background-image:linear-gradient(to right,rgba(0,0,0,.5),rgba(0,0,0,0))}::slotted(.swiper-slide-shadow-top){background-image:linear-gradient(to top,rgba(0,0,0,.5),rgba(0,0,0,0))}::slotted(.swiper-slide-shadow-bottom){background-image:linear-gradient(to bottom,rgba(0,0,0,.5),rgba(0,0,0,0))}::slotted(.swiper-lazy-preloader){animation:swiper-preloader-spin 1s infinite linear;width:42px;height:42px;position:absolute;left:50%;top:50%;margin-left:-21px;margin-top:-21px;z-index:10;transform-origin:50%;box-sizing:border-box;border:4px solid var(--swiper-preloader-color,var(--swiper-theme-color));border-radius:50%;border-top-color:transparent}@keyframes swiper-preloader-spin{0%{transform:rotate(0deg)}100%{transform:rotate(360deg)}}::slotted(.swiper-slide-shadow-cube.swiper-slide-shadow-bottom),::slotted(.swiper-slide-shadow-cube.swiper-slide-shadow-left),::slotted(.swiper-slide-shadow-cube.swiper-slide-shadow-right),::slotted(.swiper-slide-shadow-cube.swiper-slide-shadow-top){z-index:0;-webkit-backface-visibility:hidden;backface-visibility:hidden}::slotted(.swiper-slide-shadow-flip.swiper-slide-shadow-bottom),::slotted(.swiper-slide-shadow-flip.swiper-slide-shadow-left),::slotted(.swiper-slide-shadow-flip.swiper-slide-shadow-right),::slotted(.swiper-slide-shadow-flip.swiper-slide-shadow-top){z-index:0;-webkit-backface-visibility:hidden;backface-visibility:hidden}`;
40134
+ const SwiperCSS = `:host{--swiper-theme-color:#007aff}:host{position:relative;display:block;margin-left:auto;margin-right:auto;z-index:1}.swiper{width:100%;height:100%;margin-left:auto;margin-right:auto;position:relative;overflow:hidden;overflow:clip;list-style:none;padding:0;z-index:1;display:block}.swiper-vertical>.swiper-wrapper{flex-direction:column}.swiper-wrapper{position:relative;width:100%;height:100%;z-index:1;display:flex;transition-property:transform;transition-timing-function:var(--swiper-wrapper-transition-timing-function,initial);box-sizing:content-box}.swiper-android ::slotted(swiper-slide),.swiper-ios ::slotted(swiper-slide),.swiper-wrapper{transform:translate3d(0px,0,0)}.swiper-horizontal{touch-action:pan-y}.swiper-vertical{touch-action:pan-x}::slotted(swiper-slide){flex-shrink:0;width:100%;height:100%;position:relative;transition-property:transform;display:block}::slotted(.swiper-slide-invisible-blank){visibility:hidden}.swiper-autoheight,.swiper-autoheight ::slotted(swiper-slide){height:auto}.swiper-autoheight .swiper-wrapper{align-items:flex-start;transition-property:transform,height}.swiper-backface-hidden ::slotted(swiper-slide){transform:translateZ(0);-webkit-backface-visibility:hidden;backface-visibility:hidden}.swiper-3d.swiper-css-mode .swiper-wrapper{perspective:1200px}.swiper-3d .swiper-wrapper{transform-style:preserve-3d}.swiper-3d{perspective:1200px}.swiper-3d .swiper-cube-shadow,.swiper-3d ::slotted(swiper-slide){transform-style:preserve-3d}.swiper-css-mode>.swiper-wrapper{overflow:auto;scrollbar-width:none;-ms-overflow-style:none}.swiper-css-mode>.swiper-wrapper::-webkit-scrollbar{display:none}.swiper-css-mode ::slotted(swiper-slide){scroll-snap-align:start start}.swiper-css-mode.swiper-horizontal>.swiper-wrapper{scroll-snap-type:x mandatory}.swiper-css-mode.swiper-vertical>.swiper-wrapper{scroll-snap-type:y mandatory}.swiper-css-mode.swiper-free-mode>.swiper-wrapper{scroll-snap-type:none}.swiper-css-mode.swiper-free-mode ::slotted(swiper-slide){scroll-snap-align:none}.swiper-css-mode.swiper-centered>.swiper-wrapper::before{content:'';flex-shrink:0;order:9999}.swiper-css-mode.swiper-centered ::slotted(swiper-slide){scroll-snap-align:center center;scroll-snap-stop:always}.swiper-css-mode.swiper-centered.swiper-horizontal ::slotted(swiper-slide):first-child{margin-inline-start:var(--swiper-centered-offset-before)}.swiper-css-mode.swiper-centered.swiper-horizontal>.swiper-wrapper::before{height:100%;min-height:1px;width:var(--swiper-centered-offset-after)}.swiper-css-mode.swiper-centered.swiper-vertical ::slotted(swiper-slide):first-child{margin-block-start:var(--swiper-centered-offset-before)}.swiper-css-mode.swiper-centered.swiper-vertical>.swiper-wrapper::before{width:100%;min-width:1px;height:var(--swiper-centered-offset-after)}.swiper-virtual ::slotted(swiper-slide){-webkit-backface-visibility:hidden;transform:translateZ(0)}.swiper-virtual.swiper-css-mode .swiper-wrapper::after{content:'';position:absolute;left:0;top:0;pointer-events:none}.swiper-virtual.swiper-css-mode.swiper-horizontal .swiper-wrapper::after{height:1px;width:var(--swiper-virtual-size)}.swiper-virtual.swiper-css-mode.swiper-vertical .swiper-wrapper::after{width:1px;height:var(--swiper-virtual-size)}:host{--swiper-navigation-size:44px}.swiper-button-next,.swiper-button-prev{position:absolute;top:var(--swiper-navigation-top-offset,50%);width:calc(var(--swiper-navigation-size)/ 44 * 27);height:var(--swiper-navigation-size);margin-top:calc(0px - (var(--swiper-navigation-size)/ 2));z-index:10;cursor:pointer;display:flex;align-items:center;justify-content:center;color:var(--swiper-navigation-color,var(--swiper-theme-color))}.swiper-button-next.swiper-button-disabled,.swiper-button-prev.swiper-button-disabled{opacity:.35;cursor:auto;pointer-events:none}.swiper-button-next.swiper-button-hidden,.swiper-button-prev.swiper-button-hidden{opacity:0;cursor:auto;pointer-events:none}.swiper-navigation-disabled .swiper-button-next,.swiper-navigation-disabled .swiper-button-prev{display:none!important}.swiper-button-next svg,.swiper-button-prev svg{width:100%;height:100%;object-fit:contain;transform-origin:center}.swiper-rtl .swiper-button-next svg,.swiper-rtl .swiper-button-prev svg{transform:rotate(180deg)}.swiper-button-prev,.swiper-rtl .swiper-button-next{left:var(--swiper-navigation-sides-offset,10px);right:auto}.swiper-button-next,.swiper-rtl .swiper-button-prev{right:var(--swiper-navigation-sides-offset,10px);left:auto}.swiper-button-lock{display:none}.swiper-pagination{position:absolute;text-align:center;transition:.3s opacity;transform:translate3d(0,0,0);z-index:10}.swiper-pagination.swiper-pagination-hidden{opacity:0}.swiper-pagination-disabled>.swiper-pagination,.swiper-pagination.swiper-pagination-disabled{display:none!important}.swiper-horizontal>.swiper-pagination-bullets,.swiper-pagination-bullets.swiper-pagination-horizontal,.swiper-pagination-custom,.swiper-pagination-fraction{bottom:var(--swiper-pagination-bottom,8px);top:var(--swiper-pagination-top,auto);left:0;width:100%}.swiper-pagination-bullets-dynamic{overflow:hidden;font-size:0}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet{transform:scale(.33);position:relative}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active{transform:scale(1)}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-main{transform:scale(1)}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-prev{transform:scale(.66)}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-prev-prev{transform:scale(.33)}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-next{transform:scale(.66)}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-next-next{transform:scale(.33)}.swiper-pagination-bullet{width:var(--swiper-pagination-bullet-width,var(--swiper-pagination-bullet-size,8px));height:var(--swiper-pagination-bullet-height,var(--swiper-pagination-bullet-size,8px));display:inline-block;border-radius:var(--swiper-pagination-bullet-border-radius,50%);background:var(--swiper-pagination-bullet-inactive-color,#000);opacity:var(--swiper-pagination-bullet-inactive-opacity, .2)}button.swiper-pagination-bullet{border:none;margin:0;padding:0;box-shadow:none;-webkit-appearance:none;appearance:none}.swiper-pagination-clickable .swiper-pagination-bullet{cursor:pointer}.swiper-pagination-bullet:only-child{display:none!important}.swiper-pagination-bullet-active{opacity:var(--swiper-pagination-bullet-opacity, 1);background:var(--swiper-pagination-color,var(--swiper-theme-color))}.swiper-pagination-vertical.swiper-pagination-bullets,.swiper-vertical>.swiper-pagination-bullets{right:var(--swiper-pagination-right,8px);left:var(--swiper-pagination-left,auto);top:50%;transform:translate3d(0px,-50%,0)}.swiper-pagination-vertical.swiper-pagination-bullets .swiper-pagination-bullet,.swiper-vertical>.swiper-pagination-bullets .swiper-pagination-bullet{margin:var(--swiper-pagination-bullet-vertical-gap,6px) 0;display:block}.swiper-pagination-vertical.swiper-pagination-bullets.swiper-pagination-bullets-dynamic,.swiper-vertical>.swiper-pagination-bullets.swiper-pagination-bullets-dynamic{top:50%;transform:translateY(-50%);width:8px}.swiper-pagination-vertical.swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet,.swiper-vertical>.swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet{display:inline-block;transition:.2s transform,.2s top}.swiper-horizontal>.swiper-pagination-bullets .swiper-pagination-bullet,.swiper-pagination-horizontal.swiper-pagination-bullets .swiper-pagination-bullet{margin:0 var(--swiper-pagination-bullet-horizontal-gap,4px)}.swiper-horizontal>.swiper-pagination-bullets.swiper-pagination-bullets-dynamic,.swiper-pagination-horizontal.swiper-pagination-bullets.swiper-pagination-bullets-dynamic{left:50%;transform:translateX(-50%);white-space:nowrap}.swiper-horizontal>.swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet,.swiper-pagination-horizontal.swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet{transition:.2s transform,.2s left}.swiper-horizontal.swiper-rtl>.swiper-pagination-bullets-dynamic .swiper-pagination-bullet{transition:.2s transform,.2s right}.swiper-pagination-fraction{color:var(--swiper-pagination-fraction-color,inherit)}.swiper-pagination-progressbar{background:var(--swiper-pagination-progressbar-bg-color,rgba(0,0,0,.25));position:absolute}.swiper-pagination-progressbar .swiper-pagination-progressbar-fill{background:var(--swiper-pagination-color,var(--swiper-theme-color));position:absolute;left:0;top:0;width:100%;height:100%;transform:scale(0);transform-origin:left top}.swiper-rtl .swiper-pagination-progressbar .swiper-pagination-progressbar-fill{transform-origin:right top}.swiper-horizontal>.swiper-pagination-progressbar,.swiper-pagination-progressbar.swiper-pagination-horizontal,.swiper-pagination-progressbar.swiper-pagination-vertical.swiper-pagination-progressbar-opposite,.swiper-vertical>.swiper-pagination-progressbar.swiper-pagination-progressbar-opposite{width:100%;height:var(--swiper-pagination-progressbar-size,4px);left:0;top:0}.swiper-horizontal>.swiper-pagination-progressbar.swiper-pagination-progressbar-opposite,.swiper-pagination-progressbar.swiper-pagination-horizontal.swiper-pagination-progressbar-opposite,.swiper-pagination-progressbar.swiper-pagination-vertical,.swiper-vertical>.swiper-pagination-progressbar{width:var(--swiper-pagination-progressbar-size,4px);height:100%;left:0;top:0}.swiper-pagination-lock{display:none}.swiper-scrollbar{border-radius:var(--swiper-scrollbar-border-radius,10px);position:relative;-ms-touch-action:none;background:var(--swiper-scrollbar-bg-color,rgba(0,0,0,.1))}.swiper-scrollbar-disabled>.swiper-scrollbar,.swiper-scrollbar.swiper-scrollbar-disabled{display:none!important}.swiper-horizontal>.swiper-scrollbar,.swiper-scrollbar.swiper-scrollbar-horizontal{position:absolute;left:var(--swiper-scrollbar-sides-offset,1%);bottom:var(--swiper-scrollbar-bottom,4px);top:var(--swiper-scrollbar-top,auto);z-index:50;height:var(--swiper-scrollbar-size,4px);width:calc(100% - 2 * var(--swiper-scrollbar-sides-offset,1%))}.swiper-scrollbar.swiper-scrollbar-vertical,.swiper-vertical>.swiper-scrollbar{position:absolute;left:var(--swiper-scrollbar-left,auto);right:var(--swiper-scrollbar-right,4px);top:var(--swiper-scrollbar-sides-offset,1%);z-index:50;width:var(--swiper-scrollbar-size,4px);height:calc(100% - 2 * var(--swiper-scrollbar-sides-offset,1%))}.swiper-scrollbar-drag{height:100%;width:100%;position:relative;background:var(--swiper-scrollbar-drag-bg-color,rgba(0,0,0,.5));border-radius:var(--swiper-scrollbar-border-radius,10px);left:0;top:0}.swiper-scrollbar-cursor-drag{cursor:move}.swiper-scrollbar-lock{display:none}::slotted(.swiper-slide-zoomed){cursor:move;touch-action:none}.swiper .swiper-notification{position:absolute;left:0;top:0;pointer-events:none;opacity:0;z-index:-1000}.swiper-free-mode>.swiper-wrapper{transition-timing-function:ease-out;margin:0 auto}.swiper-grid>.swiper-wrapper{flex-wrap:wrap}.swiper-grid-column>.swiper-wrapper{flex-wrap:wrap;flex-direction:column}.swiper-fade.swiper-free-mode ::slotted(swiper-slide){transition-timing-function:ease-out}.swiper-fade ::slotted(swiper-slide){pointer-events:none;transition-property:opacity}.swiper-fade ::slotted(swiper-slide) ::slotted(swiper-slide){pointer-events:none}.swiper-fade ::slotted(.swiper-slide-active){pointer-events:auto}.swiper-fade ::slotted(.swiper-slide-active) ::slotted(.swiper-slide-active){pointer-events:auto}.swiper-cube{overflow:visible}.swiper-cube ::slotted(swiper-slide){pointer-events:none;-webkit-backface-visibility:hidden;backface-visibility:hidden;z-index:1;visibility:hidden;transform-origin:0 0;width:100%;height:100%}.swiper-cube ::slotted(swiper-slide) ::slotted(swiper-slide){pointer-events:none}.swiper-cube.swiper-rtl ::slotted(swiper-slide){transform-origin:100% 0}.swiper-cube ::slotted(.swiper-slide-active),.swiper-cube ::slotted(.swiper-slide-active) ::slotted(.swiper-slide-active){pointer-events:auto}.swiper-cube ::slotted(.swiper-slide-active),.swiper-cube ::slotted(.swiper-slide-next),.swiper-cube ::slotted(.swiper-slide-prev){pointer-events:auto;visibility:visible}.swiper-cube .swiper-cube-shadow{position:absolute;left:0;bottom:0px;width:100%;height:100%;opacity:.6;z-index:0}.swiper-cube .swiper-cube-shadow:before{content:'';background:#000;position:absolute;left:0;top:0;bottom:0;right:0;filter:blur(50px)}.swiper-cube ::slotted(.swiper-slide-next)+::slotted(swiper-slide){pointer-events:auto;visibility:visible}.swiper-flip{overflow:visible}.swiper-flip ::slotted(swiper-slide){pointer-events:none;-webkit-backface-visibility:hidden;backface-visibility:hidden;z-index:1}.swiper-flip ::slotted(swiper-slide) ::slotted(swiper-slide){pointer-events:none}.swiper-flip ::slotted(.swiper-slide-active),.swiper-flip ::slotted(.swiper-slide-active) ::slotted(.swiper-slide-active){pointer-events:auto}.swiper-creative ::slotted(swiper-slide){-webkit-backface-visibility:hidden;backface-visibility:hidden;overflow:hidden;transition-property:transform,opacity,height}.swiper-cards{overflow:visible}.swiper-cards ::slotted(swiper-slide){transform-origin:center bottom;-webkit-backface-visibility:hidden;backface-visibility:hidden;overflow:hidden}`;
40135
+ const SwiperSlideCSS = `::slotted(.swiper-slide-shadow),::slotted(.swiper-slide-shadow-bottom),::slotted(.swiper-slide-shadow-left),::slotted(.swiper-slide-shadow-right),::slotted(.swiper-slide-shadow-top){position:absolute;left:0;top:0;width:100%;height:100%;pointer-events:none;z-index:10}::slotted(.swiper-slide-shadow){background:rgba(0,0,0,.15)}::slotted(.swiper-slide-shadow-left){background-image:linear-gradient(to left,rgba(0,0,0,.5),rgba(0,0,0,0))}::slotted(.swiper-slide-shadow-right){background-image:linear-gradient(to right,rgba(0,0,0,.5),rgba(0,0,0,0))}::slotted(.swiper-slide-shadow-top){background-image:linear-gradient(to top,rgba(0,0,0,.5),rgba(0,0,0,0))}::slotted(.swiper-slide-shadow-bottom){background-image:linear-gradient(to bottom,rgba(0,0,0,.5),rgba(0,0,0,0))}.swiper-lazy-preloader{animation:swiper-preloader-spin 1s infinite linear;width:42px;height:42px;position:absolute;left:50%;top:50%;margin-left:-21px;margin-top:-21px;z-index:10;transform-origin:50%;box-sizing:border-box;border:4px solid var(--swiper-preloader-color,var(--swiper-theme-color));border-radius:50%;border-top-color:transparent}@keyframes swiper-preloader-spin{0%{transform:rotate(0deg)}100%{transform:rotate(360deg)}}::slotted(.swiper-slide-shadow-cube.swiper-slide-shadow-bottom),::slotted(.swiper-slide-shadow-cube.swiper-slide-shadow-left),::slotted(.swiper-slide-shadow-cube.swiper-slide-shadow-right),::slotted(.swiper-slide-shadow-cube.swiper-slide-shadow-top){z-index:0;-webkit-backface-visibility:hidden;backface-visibility:hidden}::slotted(.swiper-slide-shadow-flip.swiper-slide-shadow-bottom),::slotted(.swiper-slide-shadow-flip.swiper-slide-shadow-left),::slotted(.swiper-slide-shadow-flip.swiper-slide-shadow-right),::slotted(.swiper-slide-shadow-flip.swiper-slide-shadow-top){z-index:0;-webkit-backface-visibility:hidden;backface-visibility:hidden}::slotted(.swiper-zoom-container){width:100%;height:100%;display:flex;justify-content:center;align-items:center;text-align:center}::slotted(.swiper-zoom-container)>canvas,::slotted(.swiper-zoom-container)>img,::slotted(.swiper-zoom-container)>svg{max-width:100%;max-height:100%;object-fit:contain}`;
39860
40136
  class DummyHTMLElement {}
39861
40137
  const ClassToExtend = typeof window === 'undefined' || typeof HTMLElement === 'undefined' ? DummyHTMLElement : HTMLElement;
39862
40138
  const arrowSvg = `<svg width="11" height="20" viewBox="0 0 11 20" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M0.38296 20.0762C0.111788 19.805 0.111788 19.3654 0.38296 19.0942L9.19758 10.2796L0.38296 1.46497C0.111788 1.19379 0.111788 0.754138 0.38296 0.482966C0.654131 0.211794 1.09379 0.211794 1.36496 0.482966L10.4341 9.55214C10.8359 9.9539 10.8359 10.6053 10.4341 11.007L1.36496 20.0762C1.09379 20.3474 0.654131 20.3474 0.38296 20.0762Z" fill="currentColor"/></svg>
39863
40139
  `;
39864
40140
  const addStyle = (shadowRoot, styles) => {
39865
- if (typeof CSSStyleSheet !== 'undefined' && !shadowRoot.adoptedStyleSheets) {
40141
+ if (typeof CSSStyleSheet !== 'undefined' && shadowRoot.adoptedStyleSheets) {
39866
40142
  const styleSheet = new CSSStyleSheet();
39867
40143
  styleSheet.replaceSync(styles);
39868
40144
  shadowRoot.adoptedStyleSheets = [styleSheet];
@@ -39894,11 +40170,41 @@
39894
40170
  cssLinks() {
39895
40171
  return this.injectStylesUrls || [];
39896
40172
  }
40173
+ calcSlideSlots() {
40174
+ const currentSideSlots = this.slideSlots || 0;
40175
+ // slide slots
40176
+ const slideSlotChildren = [...this.querySelectorAll(`[slot^=slide-]`)].map(child => {
40177
+ return parseInt(child.getAttribute('slot').split('slide-')[1], 10);
40178
+ });
40179
+ this.slideSlots = slideSlotChildren.length ? Math.max(...slideSlotChildren) + 1 : 0;
40180
+ if (!this.rendered) return;
40181
+ if (this.slideSlots > currentSideSlots) {
40182
+ for (let i = currentSideSlots; i < this.slideSlots; i += 1) {
40183
+ const slideEl = document.createElement('swiper-slide');
40184
+ slideEl.setAttribute('part', `slide slide-${i + 1}`);
40185
+ const slotEl = document.createElement('slot');
40186
+ slotEl.setAttribute('name', `slide-${i + 1}`);
40187
+ slideEl.appendChild(slotEl);
40188
+ this.shadowRoot.querySelector('.swiper-wrapper').appendChild(slideEl);
40189
+ }
40190
+ } else if (this.slideSlots < currentSideSlots) {
40191
+ const slides = this.swiper.slides;
40192
+ for (let i = slides.length - 1; i >= 0; i -= 1) {
40193
+ if (i > this.slideSlots) {
40194
+ slides[i].remove();
40195
+ }
40196
+ }
40197
+ }
40198
+ }
39897
40199
  render() {
39898
40200
  if (this.rendered) return;
40201
+ this.calcSlideSlots();
39899
40202
 
39900
40203
  // local styles
39901
- const localStyles = this.cssStyles();
40204
+ let localStyles = this.cssStyles();
40205
+ if (this.slideSlots > 0) {
40206
+ localStyles = localStyles.replace(/::slotted\(([a-z-0-9.]*)\)/g, '$1');
40207
+ }
39902
40208
  if (localStyles.length) {
39903
40209
  addStyle(this.shadowRoot, localStyles);
39904
40210
  }
@@ -39914,11 +40220,19 @@
39914
40220
  const el = document.createElement('div');
39915
40221
  el.classList.add('swiper');
39916
40222
  el.part = 'container';
40223
+
39917
40224
  // prettier-ignore
39918
40225
  el.innerHTML = `
39919
40226
  <slot name="container-start"></slot>
39920
40227
  <div class="swiper-wrapper" part="wrapper">
39921
40228
  <slot></slot>
40229
+ ${Array.from({
40230
+ length: this.slideSlots
40231
+ }).map((_, index) => `
40232
+ <swiper-slide part="slide slide-${index}">
40233
+ <slot name="slide-${index}"></slot>
40234
+ </swiper-slide>
40235
+ `).join('')}
39922
40236
  </div>
39923
40237
  <slot name="container-end"></slot>
39924
40238
  ${needsNavigation(this.passedParams) ? `
@@ -39947,14 +40261,19 @@
39947
40261
  this.passedParams = passedParams;
39948
40262
  delete this.swiperParams.init;
39949
40263
  this.render();
40264
+
39950
40265
  // eslint-disable-next-line
39951
40266
  this.swiper = new Swiper$1(this.shadowRoot.querySelector('.swiper'), {
39952
- ...swiperParams,
39953
- touchEventsTarget: 'container',
39954
40267
  ...(swiperParams.virtual ? {} : {
39955
- observer: true
40268
+ observer: true,
40269
+ observeSlideChildren: this.slideSlots > 0
39956
40270
  }),
40271
+ ...swiperParams,
40272
+ touchEventsTarget: 'container',
39957
40273
  onAny: function (name) {
40274
+ if (name === 'observerUpdate') {
40275
+ _this.calcSlideSlots();
40276
+ }
39958
40277
  const eventName = swiperParams.eventsPrefix ? `${swiperParams.eventsPrefix}${name.toLowerCase()}` : name.toLowerCase();
39959
40278
  for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {
39960
40279
  args[_key - 1] = arguments[_key];
@@ -40051,7 +40370,8 @@
40051
40370
  if (lazy) {
40052
40371
  const lazyDiv = document.createElement('div');
40053
40372
  lazyDiv.classList.add('swiper-lazy-preloader');
40054
- this.appendChild(lazyDiv);
40373
+ lazyDiv.part.add('preloader');
40374
+ this.shadowRoot.appendChild(lazyDiv);
40055
40375
  }
40056
40376
  }
40057
40377
  initialize() {