Browse code

Refactor and rewrite as contao bundle

Benjamin Roth authored on04/11/2022 22:32:32
Showing1 changed files
1 1
new file mode 100644
... ...
@@ -0,0 +1,658 @@
1
+"use strict";
2
+
3
+exports.__esModule = true;
4
+exports.Swiper = void 0;
5
+
6
+var _vue = require("vue");
7
+
8
+var _getParams3 = require("./get-params");
9
+
10
+var _initSwiper = require("./init-swiper");
11
+
12
+var _utils = require("./utils");
13
+
14
+var _loop = require("./loop");
15
+
16
+var _getChangedParams = require("./get-changed-params");
17
+
18
+var _getChildren2 = require("./get-children");
19
+
20
+var _updateSwiper = require("./update-swiper");
21
+
22
+var _virtual = require("./virtual");
23
+
24
+var Swiper = {
25
+  name: 'Swiper',
26
+  props: {
27
+    tag: {
28
+      type: String,
29
+      default: 'div'
30
+    },
31
+    wrapperTag: {
32
+      type: String,
33
+      default: 'div'
34
+    },
35
+    init: {
36
+      type: Boolean,
37
+      default: undefined
38
+    },
39
+    direction: {
40
+      type: String,
41
+      default: undefined
42
+    },
43
+    touchEventsTarget: {
44
+      type: String,
45
+      default: undefined
46
+    },
47
+    initialSlide: {
48
+      type: Number,
49
+      default: undefined
50
+    },
51
+    speed: {
52
+      type: Number,
53
+      default: undefined
54
+    },
55
+    cssMode: {
56
+      type: Boolean,
57
+      default: undefined
58
+    },
59
+    updateOnWindowResize: {
60
+      type: Boolean,
61
+      default: undefined
62
+    },
63
+    resizeObserver: {
64
+      type: Boolean,
65
+      default: undefined
66
+    },
67
+    nested: {
68
+      type: Boolean,
69
+      default: undefined
70
+    },
71
+    width: {
72
+      type: Number,
73
+      default: undefined
74
+    },
75
+    height: {
76
+      type: Number,
77
+      default: undefined
78
+    },
79
+    preventInteractionOnTransition: {
80
+      type: Boolean,
81
+      default: undefined
82
+    },
83
+    userAgent: {
84
+      type: String,
85
+      default: undefined
86
+    },
87
+    url: {
88
+      type: String,
89
+      default: undefined
90
+    },
91
+    edgeSwipeDetection: {
92
+      type: [Boolean, String],
93
+      default: undefined
94
+    },
95
+    edgeSwipeThreshold: {
96
+      type: Number,
97
+      default: undefined
98
+    },
99
+    freeMode: {
100
+      type: Boolean,
101
+      default: undefined
102
+    },
103
+    freeModeMomentum: {
104
+      type: Boolean,
105
+      default: undefined
106
+    },
107
+    freeModeMomentumRatio: {
108
+      type: Number,
109
+      default: undefined
110
+    },
111
+    freeModeMomentumBounce: {
112
+      type: Boolean,
113
+      default: undefined
114
+    },
115
+    freeModeMomentumBounceRatio: {
116
+      type: Number,
117
+      default: undefined
118
+    },
119
+    freeModeMomentumVelocityRatio: {
120
+      type: Number,
121
+      default: undefined
122
+    },
123
+    freeModeSticky: {
124
+      type: Boolean,
125
+      default: undefined
126
+    },
127
+    freeModeMinimumVelocity: {
128
+      type: Number,
129
+      default: undefined
130
+    },
131
+    autoHeight: {
132
+      type: Boolean,
133
+      default: undefined
134
+    },
135
+    setWrapperSize: {
136
+      type: Boolean,
137
+      default: undefined
138
+    },
139
+    virtualTranslate: {
140
+      type: Boolean,
141
+      default: undefined
142
+    },
143
+    effect: {
144
+      type: String,
145
+      default: undefined
146
+    },
147
+    breakpoints: {
148
+      type: Object,
149
+      default: undefined
150
+    },
151
+    spaceBetween: {
152
+      type: Number,
153
+      default: undefined
154
+    },
155
+    slidesPerView: {
156
+      type: [Number, String],
157
+      default: undefined
158
+    },
159
+    slidesPerColumn: {
160
+      type: Number,
161
+      default: undefined
162
+    },
163
+    slidesPerColumnFill: {
164
+      type: String,
165
+      default: undefined
166
+    },
167
+    slidesPerGroup: {
168
+      type: Number,
169
+      default: undefined
170
+    },
171
+    slidesPerGroupSkip: {
172
+      type: Number,
173
+      default: undefined
174
+    },
175
+    centeredSlides: {
176
+      type: Boolean,
177
+      default: undefined
178
+    },
179
+    centeredSlidesBounds: {
180
+      type: Boolean,
181
+      default: undefined
182
+    },
183
+    slidesOffsetBefore: {
184
+      type: Number,
185
+      default: undefined
186
+    },
187
+    slidesOffsetAfter: {
188
+      type: Number,
189
+      default: undefined
190
+    },
191
+    normalizeSlideIndex: {
192
+      type: Boolean,
193
+      default: undefined
194
+    },
195
+    centerInsufficientSlides: {
196
+      type: Boolean,
197
+      default: undefined
198
+    },
199
+    watchOverflow: {
200
+      type: Boolean,
201
+      default: undefined
202
+    },
203
+    roundLengths: {
204
+      type: Boolean,
205
+      default: undefined
206
+    },
207
+    touchRatio: {
208
+      type: Number,
209
+      default: undefined
210
+    },
211
+    touchAngle: {
212
+      type: Number,
213
+      default: undefined
214
+    },
215
+    simulateTouch: {
216
+      type: Boolean,
217
+      default: undefined
218
+    },
219
+    shortSwipes: {
220
+      type: Boolean,
221
+      default: undefined
222
+    },
223
+    longSwipes: {
224
+      type: Boolean,
225
+      default: undefined
226
+    },
227
+    longSwipesRatio: {
228
+      type: Number,
229
+      default: undefined
230
+    },
231
+    longSwipesMs: {
232
+      type: Number,
233
+      default: undefined
234
+    },
235
+    followFinger: {
236
+      type: Boolean,
237
+      default: undefined
238
+    },
239
+    allowTouchMove: {
240
+      type: Boolean,
241
+      default: undefined
242
+    },
243
+    threshold: {
244
+      type: Number,
245
+      default: undefined
246
+    },
247
+    touchMoveStopPropagation: {
248
+      type: Boolean,
249
+      default: undefined
250
+    },
251
+    touchStartPreventDefault: {
252
+      type: Boolean,
253
+      default: undefined
254
+    },
255
+    touchStartForcePreventDefault: {
256
+      type: Boolean,
257
+      default: undefined
258
+    },
259
+    touchReleaseOnEdges: {
260
+      type: Boolean,
261
+      default: undefined
262
+    },
263
+    uniqueNavElements: {
264
+      type: Boolean,
265
+      default: undefined
266
+    },
267
+    resistance: {
268
+      type: Boolean,
269
+      default: undefined
270
+    },
271
+    resistanceRatio: {
272
+      type: Number,
273
+      default: undefined
274
+    },
275
+    watchSlidesProgress: {
276
+      type: Boolean,
277
+      default: undefined
278
+    },
279
+    watchSlidesVisibility: {
280
+      type: Boolean,
281
+      default: undefined
282
+    },
283
+    grabCursor: {
284
+      type: Boolean,
285
+      default: undefined
286
+    },
287
+    preventClicks: {
288
+      type: Boolean,
289
+      default: undefined
290
+    },
291
+    preventClicksPropagation: {
292
+      type: Boolean,
293
+      default: undefined
294
+    },
295
+    slideToClickedSlide: {
296
+      type: Boolean,
297
+      default: undefined
298
+    },
299
+    preloadImages: {
300
+      type: Boolean,
301
+      default: undefined
302
+    },
303
+    updateOnImagesReady: {
304
+      type: Boolean,
305
+      default: undefined
306
+    },
307
+    loop: {
308
+      type: Boolean,
309
+      default: undefined
310
+    },
311
+    loopAdditionalSlides: {
312
+      type: Number,
313
+      default: undefined
314
+    },
315
+    loopedSlides: {
316
+      type: Number,
317
+      default: undefined
318
+    },
319
+    loopFillGroupWithBlank: {
320
+      type: Boolean,
321
+      default: undefined
322
+    },
323
+    loopPreventsSlide: {
324
+      type: Boolean,
325
+      default: undefined
326
+    },
327
+    allowSlidePrev: {
328
+      type: Boolean,
329
+      default: undefined
330
+    },
331
+    allowSlideNext: {
332
+      type: Boolean,
333
+      default: undefined
334
+    },
335
+    swipeHandler: {
336
+      type: Boolean,
337
+      default: undefined
338
+    },
339
+    noSwiping: {
340
+      type: Boolean,
341
+      default: undefined
342
+    },
343
+    noSwipingClass: {
344
+      type: String,
345
+      default: undefined
346
+    },
347
+    noSwipingSelector: {
348
+      type: String,
349
+      default: undefined
350
+    },
351
+    passiveListeners: {
352
+      type: Boolean,
353
+      default: undefined
354
+    },
355
+    containerModifierClass: {
356
+      type: String,
357
+      default: undefined
358
+    },
359
+    slideClass: {
360
+      type: String,
361
+      default: undefined
362
+    },
363
+    slideBlankClass: {
364
+      type: String,
365
+      default: undefined
366
+    },
367
+    slideActiveClass: {
368
+      type: String,
369
+      default: undefined
370
+    },
371
+    slideDuplicateActiveClass: {
372
+      type: String,
373
+      default: undefined
374
+    },
375
+    slideVisibleClass: {
376
+      type: String,
377
+      default: undefined
378
+    },
379
+    slideDuplicateClass: {
380
+      type: String,
381
+      default: undefined
382
+    },
383
+    slideNextClass: {
384
+      type: String,
385
+      default: undefined
386
+    },
387
+    slideDuplicateNextClass: {
388
+      type: String,
389
+      default: undefined
390
+    },
391
+    slidePrevClass: {
392
+      type: String,
393
+      default: undefined
394
+    },
395
+    slideDuplicatePrevClass: {
396
+      type: String,
397
+      default: undefined
398
+    },
399
+    wrapperClass: {
400
+      type: String,
401
+      default: undefined
402
+    },
403
+    runCallbacksOnInit: {
404
+      type: Boolean,
405
+      default: undefined
406
+    },
407
+    observer: {
408
+      type: Boolean,
409
+      default: undefined
410
+    },
411
+    observeParents: {
412
+      type: Boolean,
413
+      default: undefined
414
+    },
415
+    observeSlideChildren: {
416
+      type: Boolean,
417
+      default: undefined
418
+    },
419
+    a11y: {
420
+      type: [Boolean, Object],
421
+      default: undefined
422
+    },
423
+    autoplay: {
424
+      type: [Boolean, Object],
425
+      default: undefined
426
+    },
427
+    controller: {
428
+      type: Object,
429
+      default: undefined
430
+    },
431
+    coverflowEffect: {
432
+      type: Object,
433
+      default: undefined
434
+    },
435
+    cubeEffect: {
436
+      type: Object,
437
+      default: undefined
438
+    },
439
+    fadeEffect: {
440
+      type: Object,
441
+      default: undefined
442
+    },
443
+    flipEffect: {
444
+      type: Object,
445
+      default: undefined
446
+    },
447
+    hashNavigation: {
448
+      type: [Boolean, Object],
449
+      default: undefined
450
+    },
451
+    history: {
452
+      type: [Boolean, Object],
453
+      default: undefined
454
+    },
455
+    keyboard: {
456
+      type: [Boolean, Object],
457
+      default: undefined
458
+    },
459
+    lazy: {
460
+      type: [Boolean, Object],
461
+      default: undefined
462
+    },
463
+    mousewheel: {
464
+      type: [Boolean, Object],
465
+      default: undefined
466
+    },
467
+    navigation: {
468
+      type: [Boolean, Object],
469
+      default: undefined
470
+    },
471
+    pagination: {
472
+      type: [Boolean, Object],
473
+      default: undefined
474
+    },
475
+    parallax: {
476
+      type: [Boolean, Object],
477
+      default: undefined
478
+    },
479
+    scrollbar: {
480
+      type: [Boolean, Object],
481
+      default: undefined
482
+    },
483
+    thumbs: {
484
+      type: Object,
485
+      default: undefined
486
+    },
487
+    virtual: {
488
+      type: [Boolean, Object],
489
+      default: undefined
490
+    },
491
+    zoom: {
492
+      type: [Boolean, Object],
493
+      default: undefined
494
+    }
495
+  },
496
+  emits: ['_beforeBreakpoint', '_containerClasses', '_slideClass', '_slideClasses', '_swiper', 'activeIndexChange', 'afterInit', 'autoplay', 'autoplayStart', 'autoplayStop', 'beforeDestroy', 'beforeInit', 'beforeLoopFix', 'beforeResize', 'beforeSlideChangeStart', 'beforeTransitionStart', 'breakpoint', 'changeDirection', 'click', 'doubleTap', 'doubleClick', 'destroy', 'fromEdge', 'hashChange', 'hashSet', 'imagesReady', 'init', 'keyPress', 'lazyImageLoad', 'lazyImageReady', 'loopFix', 'momentumBounce', 'navigationHide', 'navigationShow', 'observerUpdate', 'orientationchange', 'paginationHide', 'paginationRender', 'paginationShow', 'paginationUpdate', 'progress', 'reachBeginning', 'reachEnd', 'realIndexChange', 'resize', 'scroll', 'scrollbarDragEnd', 'scrollbarDragMove', 'scrollbarDragStart', 'setTransition', 'setTranslate', 'slideChange', 'slideChangeTransitionEnd', 'slideChangeTransitionStart', 'slideNextTransitionEnd', 'slideNextTransitionStart', 'slidePrevTransitionEnd', 'slidePrevTransitionStart', 'slideResetTransitionStart', 'slideResetTransitionEnd', 'sliderMove', 'sliderFirstMove', 'slidesLengthChange', 'slidesGridLengthChange', 'snapGridLengthChange', 'snapIndexChange', 'swiper', 'tap', 'toEdge', 'touchEnd', 'touchMove', 'touchMoveOpposite', 'touchStart', 'transitionEnd', 'transitionStart', 'update', 'zoomChange'],
497
+  setup: function setup(props, _ref) {
498
+    var originalSlots = _ref.slots,
499
+        emit = _ref.emit;
500
+    var Tag = props.tag,
501
+        WrapperTag = props.wrapperTag;
502
+    var containerClasses = (0, _vue.ref)('swiper-container');
503
+    var virtualData = (0, _vue.ref)(null);
504
+    var breakpointChanged = (0, _vue.ref)(false);
505
+    var initializedRef = (0, _vue.ref)(false);
506
+    var swiperElRef = (0, _vue.ref)(null);
507
+    var swiperRef = (0, _vue.ref)(null);
508
+    var oldPassedParamsRef = (0, _vue.ref)(null);
509
+    var slidesRef = {
510
+      value: []
511
+    };
512
+    var oldSlidesRef = {
513
+      value: []
514
+    };
515
+    var nextElRef = (0, _vue.ref)(null);
516
+    var prevElRef = (0, _vue.ref)(null);
517
+    var paginationElRef = (0, _vue.ref)(null);
518
+    var scrollbarElRef = (0, _vue.ref)(null);
519
+
520
+    var _getParams = (0, _getParams3.getParams)(props),
521
+        swiperParams = _getParams.params,
522
+        passedParams = _getParams.passedParams;
523
+
524
+    (0, _getChildren2.getChildren)(originalSlots, slidesRef, oldSlidesRef);
525
+    oldPassedParamsRef.value = passedParams;
526
+    oldSlidesRef.value = slidesRef.value;
527
+
528
+    var onBeforeBreakpoint = function onBeforeBreakpoint() {
529
+      (0, _getChildren2.getChildren)(originalSlots, slidesRef, oldSlidesRef);
530
+      breakpointChanged.value = true;
531
+    };
532
+
533
+    swiperParams.onAny = function (event) {
534
+      for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {
535
+        args[_key - 1] = arguments[_key];
536
+      }
537
+
538
+      emit.apply(void 0, [event].concat(args));
539
+    };
540
+
541
+    Object.assign(swiperParams.on, {
542
+      _beforeBreakpoint: onBeforeBreakpoint,
543
+      _containerClasses: function _containerClasses(swiper, classes) {
544
+        containerClasses.value = classes;
545
+      }
546
+    }); // init Swiper
547
+
548
+    swiperRef.value = (0, _initSwiper.initSwiper)(swiperParams);
549
+
550
+    swiperRef.value.loopCreate = function () {};
551
+
552
+    swiperRef.value.loopDestroy = function () {};
553
+
554
+    if (swiperParams.loop) {
555
+      swiperRef.value.loopedSlides = (0, _loop.calcLoopedSlides)(slidesRef.value, swiperParams);
556
+    }
557
+
558
+    if (swiperRef.value.virtual && swiperRef.value.params.virtual.enabled) {
559
+      swiperRef.value.virtual.slides = slidesRef.value;
560
+      var extendWith = {
561
+        cache: false,
562
+        renderExternal: function renderExternal(data) {
563
+          virtualData.value = data;
564
+        },
565
+        renderExternalUpdate: false
566
+      };
567
+      (0, _utils.extend)(swiperRef.value.params.virtual, extendWith);
568
+      (0, _utils.extend)(swiperRef.value.originalParams.virtual, extendWith);
569
+    }
570
+
571
+    (0, _vue.onUpdated)(function () {
572
+      // set initialized flag
573
+      if (!initializedRef.value && swiperRef.value) {
574
+        swiperRef.value.emitSlidesClasses();
575
+        initializedRef.value = true;
576
+      } // watch for params change
577
+
578
+
579
+      var _getParams2 = (0, _getParams3.getParams)(props),
580
+          newPassedParams = _getParams2.passedParams;
581
+
582
+      var changedParams = (0, _getChangedParams.getChangedParams)(newPassedParams, oldPassedParamsRef.value, slidesRef.value, oldSlidesRef.value);
583
+      oldPassedParamsRef.value = newPassedParams;
584
+
585
+      if ((changedParams.length || breakpointChanged.value) && swiperRef.value && !swiperRef.value.destroyed) {
586
+        (0, _updateSwiper.updateSwiper)(swiperRef.value, slidesRef.value, newPassedParams, changedParams);
587
+      }
588
+
589
+      breakpointChanged.value = false;
590
+    }); // update on virtual update
591
+
592
+    (0, _vue.watch)(virtualData, function () {
593
+      (0, _vue.nextTick)(function () {
594
+        (0, _virtual.updateOnVirtualData)(swiperRef.value);
595
+      });
596
+    }); // mount swiper
597
+
598
+    (0, _vue.onMounted)(function () {
599
+      if (!swiperElRef.value) return;
600
+      (0, _initSwiper.mountSwiper)({
601
+        el: swiperElRef.value,
602
+        nextEl: nextElRef.value,
603
+        prevEl: prevElRef.value,
604
+        paginationEl: paginationElRef.value,
605
+        scrollbarEl: scrollbarElRef.value,
606
+        swiper: swiperRef.value
607
+      }, swiperParams);
608
+      emit('swiper', swiperRef.value);
609
+    });
610
+    (0, _vue.onBeforeUnmount)(function () {
611
+      if (swiperRef.value && !swiperRef.value.destroyed) {
612
+        swiperRef.value.destroy(true, false);
613
+      }
614
+    }); // bypass swiper instance to slides
615
+
616
+    function renderSlides(slides) {
617
+      if (swiperParams.virtual) {
618
+        return (0, _virtual.renderVirtual)(swiperRef, slides, virtualData.value);
619
+      }
620
+
621
+      if (!swiperParams.loop || swiperRef.value && swiperRef.value.destroyed) {
622
+        slides.forEach(function (slide) {
623
+          if (!slide.props) slide.props = {};
624
+          slide.props.swiperRef = swiperRef;
625
+        });
626
+        return slides;
627
+      }
628
+
629
+      return (0, _loop.renderLoop)(swiperRef, slides, swiperParams);
630
+    }
631
+
632
+    return function () {
633
+      var _getChildren = (0, _getChildren2.getChildren)(originalSlots, slidesRef, oldSlidesRef),
634
+          slides = _getChildren.slides,
635
+          slots = _getChildren.slots;
636
+
637
+      return (0, _vue.h)(Tag, {
638
+        ref: swiperElRef,
639
+        class: (0, _utils.uniqueClasses)(containerClasses.value)
640
+      }, [slots['container-start'], (0, _utils.needsNavigation)(props) && [(0, _vue.h)('div', {
641
+        ref: prevElRef,
642
+        class: 'swiper-button-prev'
643
+      }), (0, _vue.h)('div', {
644
+        ref: nextElRef,
645
+        class: 'swiper-button-next'
646
+      })], (0, _utils.needsScrollbar)(props) && (0, _vue.h)('div', {
647
+        ref: scrollbarElRef,
648
+        class: 'swiper-scrollbar'
649
+      }), (0, _utils.needsPagination)(props) && (0, _vue.h)('div', {
650
+        ref: paginationElRef,
651
+        class: 'swiper-pagination'
652
+      }), (0, _vue.h)(WrapperTag, {
653
+        class: 'swiper-wrapper'
654
+      }, [slots['wrapper-start'], renderSlides(slides), slots['wrapper-end']]), slots['container-end']]);
655
+    };
656
+  }
657
+};
658
+exports.Swiper = Swiper;
0 659
\ No newline at end of file