UNPKG

4.8 kBJavaScriptView Raw
1"use strict";
2
3exports.__esModule = true;
4exports.default = void 0;
5
6var _dom = _interopRequireDefault(require("../../utils/dom"));
7
8var _utils = require("../../utils/utils");
9
10function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
11
12function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
13
14var Flip = {
15 setTranslate: function setTranslate() {
16 var swiper = this;
17 var slides = swiper.slides,
18 rtl = swiper.rtlTranslate;
19
20 for (var i = 0; i < slides.length; i += 1) {
21 var $slideEl = slides.eq(i);
22 var progress = $slideEl[0].progress;
23
24 if (swiper.params.flipEffect.limitRotation) {
25 progress = Math.max(Math.min($slideEl[0].progress, 1), -1);
26 }
27
28 var offset = $slideEl[0].swiperSlideOffset;
29 var rotate = -180 * progress;
30 var rotateY = rotate;
31 var rotateX = 0;
32 var tx = -offset;
33 var ty = 0;
34
35 if (!swiper.isHorizontal()) {
36 ty = tx;
37 tx = 0;
38 rotateX = -rotateY;
39 rotateY = 0;
40 } else if (rtl) {
41 rotateY = -rotateY;
42 }
43
44 $slideEl[0].style.zIndex = -Math.abs(Math.round(progress)) + slides.length;
45
46 if (swiper.params.flipEffect.slideShadows) {
47 // Set shadows
48 var shadowBefore = swiper.isHorizontal() ? $slideEl.find('.swiper-slide-shadow-left') : $slideEl.find('.swiper-slide-shadow-top');
49 var shadowAfter = swiper.isHorizontal() ? $slideEl.find('.swiper-slide-shadow-right') : $slideEl.find('.swiper-slide-shadow-bottom');
50
51 if (shadowBefore.length === 0) {
52 shadowBefore = (0, _dom.default)("<div class=\"swiper-slide-shadow-" + (swiper.isHorizontal() ? 'left' : 'top') + "\"></div>");
53 $slideEl.append(shadowBefore);
54 }
55
56 if (shadowAfter.length === 0) {
57 shadowAfter = (0, _dom.default)("<div class=\"swiper-slide-shadow-" + (swiper.isHorizontal() ? 'right' : 'bottom') + "\"></div>");
58 $slideEl.append(shadowAfter);
59 }
60
61 if (shadowBefore.length) shadowBefore[0].style.opacity = Math.max(-progress, 0);
62 if (shadowAfter.length) shadowAfter[0].style.opacity = Math.max(progress, 0);
63 }
64
65 $slideEl.transform("translate3d(" + tx + "px, " + ty + "px, 0px) rotateX(" + rotateX + "deg) rotateY(" + rotateY + "deg)");
66 }
67 },
68 setTransition: function setTransition(duration) {
69 var swiper = this;
70 var slides = swiper.slides,
71 activeIndex = swiper.activeIndex,
72 $wrapperEl = swiper.$wrapperEl;
73 slides.transition(duration).find('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left').transition(duration);
74
75 if (swiper.params.virtualTranslate && duration !== 0) {
76 var eventTriggered = false; // eslint-disable-next-line
77
78 slides.eq(activeIndex).transitionEnd(function onTransitionEnd() {
79 if (eventTriggered) return;
80 if (!swiper || swiper.destroyed) return; // if (!$(this).hasClass(swiper.params.slideActiveClass)) return;
81
82 eventTriggered = true;
83 swiper.animating = false;
84 var triggerEvents = ['webkitTransitionEnd', 'transitionend'];
85
86 for (var i = 0; i < triggerEvents.length; i += 1) {
87 $wrapperEl.trigger(triggerEvents[i]);
88 }
89 });
90 }
91 }
92};
93var _default = {
94 name: 'effect-flip',
95 params: {
96 flipEffect: {
97 slideShadows: true,
98 limitRotation: true
99 }
100 },
101 create: function create() {
102 var swiper = this;
103 (0, _utils.bindModuleMethods)(swiper, {
104 flipEffect: _extends({}, Flip)
105 });
106 },
107 on: {
108 beforeInit: function beforeInit(swiper) {
109 if (swiper.params.effect !== 'flip') return;
110 swiper.classNames.push(swiper.params.containerModifierClass + "flip");
111 swiper.classNames.push(swiper.params.containerModifierClass + "3d");
112 var overwriteParams = {
113 slidesPerView: 1,
114 slidesPerColumn: 1,
115 slidesPerGroup: 1,
116 watchSlidesProgress: true,
117 spaceBetween: 0,
118 virtualTranslate: true
119 };
120 (0, _utils.extend)(swiper.params, overwriteParams);
121 (0, _utils.extend)(swiper.originalParams, overwriteParams);
122 },
123 setTranslate: function setTranslate(swiper) {
124 if (swiper.params.effect !== 'flip') return;
125 swiper.flipEffect.setTranslate();
126 },
127 setTransition: function setTransition(swiper, duration) {
128 if (swiper.params.effect !== 'flip') return;
129 swiper.flipEffect.setTransition(duration);
130 }
131 }
132};
133exports.default = _default;
\No newline at end of file