UNPKG

17.9 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
10var _getSupport = require("../../utils/get-support");
11
12var _getDevice = require("../../utils/get-device");
13
14var _getBrowser = require("../../utils/get-browser");
15
16var _resize = _interopRequireDefault(require("../../modules/resize/resize"));
17
18var _observer = _interopRequireDefault(require("../../modules/observer/observer"));
19
20var _modular = _interopRequireDefault(require("./modular"));
21
22var _eventsEmitter = _interopRequireDefault(require("./events-emitter"));
23
24var _index = _interopRequireDefault(require("./update/index"));
25
26var _index2 = _interopRequireDefault(require("./translate/index"));
27
28var _index3 = _interopRequireDefault(require("./transition/index"));
29
30var _index4 = _interopRequireDefault(require("./slide/index"));
31
32var _index5 = _interopRequireDefault(require("./loop/index"));
33
34var _index6 = _interopRequireDefault(require("./grab-cursor/index"));
35
36var _index7 = _interopRequireDefault(require("./manipulation/index"));
37
38var _index8 = _interopRequireDefault(require("./events/index"));
39
40var _index9 = _interopRequireDefault(require("./breakpoints/index"));
41
42var _index10 = _interopRequireDefault(require("./classes/index"));
43
44var _index11 = _interopRequireDefault(require("./images/index"));
45
46var _index12 = _interopRequireDefault(require("./check-overflow/index"));
47
48var _defaults = _interopRequireDefault(require("./defaults"));
49
50function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
51
52function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }
53
54function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }
55
56var prototypes = {
57 modular: _modular.default,
58 eventsEmitter: _eventsEmitter.default,
59 update: _index.default,
60 translate: _index2.default,
61 transition: _index3.default,
62 slide: _index4.default,
63 loop: _index5.default,
64 grabCursor: _index6.default,
65 manipulation: _index7.default,
66 events: _index8.default,
67 breakpoints: _index9.default,
68 checkOverflow: _index12.default,
69 classes: _index10.default,
70 images: _index11.default
71};
72var extendedDefaults = {};
73
74var Swiper = /*#__PURE__*/function () {
75 function Swiper() {
76 var el;
77 var params;
78
79 for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
80 args[_key] = arguments[_key];
81 }
82
83 if (args.length === 1 && args[0].constructor && args[0].constructor === Object) {
84 params = args[0];
85 } else {
86 el = args[0];
87 params = args[1];
88 }
89
90 if (!params) params = {};
91 params = (0, _utils.extend)({}, params);
92 if (el && !params.el) params.el = el;
93
94 if (params.el && (0, _dom.default)(params.el).length > 1) {
95 var swipers = [];
96 (0, _dom.default)(params.el).each(function (containerEl) {
97 var newParams = (0, _utils.extend)({}, params, {
98 el: containerEl
99 });
100 swipers.push(new Swiper(newParams));
101 });
102 return swipers;
103 } // Swiper Instance
104
105
106 var swiper = this;
107 swiper.support = (0, _getSupport.getSupport)();
108 swiper.device = (0, _getDevice.getDevice)({
109 userAgent: params.userAgent
110 });
111 swiper.browser = (0, _getBrowser.getBrowser)();
112 swiper.eventsListeners = {};
113 swiper.eventsAnyListeners = [];
114
115 if (typeof swiper.modules === 'undefined') {
116 swiper.modules = {};
117 }
118
119 Object.keys(swiper.modules).forEach(function (moduleName) {
120 var module = swiper.modules[moduleName];
121
122 if (module.params) {
123 var moduleParamName = Object.keys(module.params)[0];
124 var moduleParams = module.params[moduleParamName];
125 if (typeof moduleParams !== 'object' || moduleParams === null) return;
126 if (!(moduleParamName in params && 'enabled' in moduleParams)) return;
127
128 if (params[moduleParamName] === true) {
129 params[moduleParamName] = {
130 enabled: true
131 };
132 }
133
134 if (typeof params[moduleParamName] === 'object' && !('enabled' in params[moduleParamName])) {
135 params[moduleParamName].enabled = true;
136 }
137
138 if (!params[moduleParamName]) params[moduleParamName] = {
139 enabled: false
140 };
141 }
142 }); // Extend defaults with modules params
143
144 var swiperParams = (0, _utils.extend)({}, _defaults.default);
145 swiper.useParams(swiperParams); // Extend defaults with passed params
146
147 swiper.params = (0, _utils.extend)({}, swiperParams, extendedDefaults, params);
148 swiper.originalParams = (0, _utils.extend)({}, swiper.params);
149 swiper.passedParams = (0, _utils.extend)({}, params); // add event listeners
150
151 if (swiper.params && swiper.params.on) {
152 Object.keys(swiper.params.on).forEach(function (eventName) {
153 swiper.on(eventName, swiper.params.on[eventName]);
154 });
155 }
156
157 if (swiper.params && swiper.params.onAny) {
158 swiper.onAny(swiper.params.onAny);
159 } // Save Dom lib
160
161
162 swiper.$ = _dom.default; // Extend Swiper
163
164 (0, _utils.extend)(swiper, {
165 el: el,
166 // Classes
167 classNames: [],
168 // Slides
169 slides: (0, _dom.default)(),
170 slidesGrid: [],
171 snapGrid: [],
172 slidesSizesGrid: [],
173 // isDirection
174 isHorizontal: function isHorizontal() {
175 return swiper.params.direction === 'horizontal';
176 },
177 isVertical: function isVertical() {
178 return swiper.params.direction === 'vertical';
179 },
180 // Indexes
181 activeIndex: 0,
182 realIndex: 0,
183 //
184 isBeginning: true,
185 isEnd: false,
186 // Props
187 translate: 0,
188 previousTranslate: 0,
189 progress: 0,
190 velocity: 0,
191 animating: false,
192 // Locks
193 allowSlideNext: swiper.params.allowSlideNext,
194 allowSlidePrev: swiper.params.allowSlidePrev,
195 // Touch Events
196 touchEvents: function touchEvents() {
197 var touch = ['touchstart', 'touchmove', 'touchend', 'touchcancel'];
198 var desktop = ['mousedown', 'mousemove', 'mouseup'];
199
200 if (swiper.support.pointerEvents) {
201 desktop = ['pointerdown', 'pointermove', 'pointerup'];
202 }
203
204 swiper.touchEventsTouch = {
205 start: touch[0],
206 move: touch[1],
207 end: touch[2],
208 cancel: touch[3]
209 };
210 swiper.touchEventsDesktop = {
211 start: desktop[0],
212 move: desktop[1],
213 end: desktop[2]
214 };
215 return swiper.support.touch || !swiper.params.simulateTouch ? swiper.touchEventsTouch : swiper.touchEventsDesktop;
216 }(),
217 touchEventsData: {
218 isTouched: undefined,
219 isMoved: undefined,
220 allowTouchCallbacks: undefined,
221 touchStartTime: undefined,
222 isScrolling: undefined,
223 currentTranslate: undefined,
224 startTranslate: undefined,
225 allowThresholdMove: undefined,
226 // Form elements to match
227 formElements: 'input, select, option, textarea, button, video, label',
228 // Last click time
229 lastClickTime: (0, _utils.now)(),
230 clickTimeout: undefined,
231 // Velocities
232 velocities: [],
233 allowMomentumBounce: undefined,
234 isTouchEvent: undefined,
235 startMoving: undefined
236 },
237 // Clicks
238 allowClick: true,
239 // Touches
240 allowTouchMove: swiper.params.allowTouchMove,
241 touches: {
242 startX: 0,
243 startY: 0,
244 currentX: 0,
245 currentY: 0,
246 diff: 0
247 },
248 // Images
249 imagesToLoad: [],
250 imagesLoaded: 0
251 }); // Install Modules
252
253 swiper.useModules();
254 swiper.emit('_swiper'); // Init
255
256 if (swiper.params.init) {
257 swiper.init();
258 } // Return app instance
259
260
261 return swiper;
262 }
263
264 var _proto = Swiper.prototype;
265
266 _proto.emitContainerClasses = function emitContainerClasses() {
267 var swiper = this;
268 if (!swiper.params._emitClasses || !swiper.el) return;
269 var classes = swiper.el.className.split(' ').filter(function (className) {
270 return className.indexOf('swiper-container') === 0 || className.indexOf(swiper.params.containerModifierClass) === 0;
271 });
272 swiper.emit('_containerClasses', classes.join(' '));
273 };
274
275 _proto.getSlideClasses = function getSlideClasses(slideEl) {
276 var swiper = this;
277 return slideEl.className.split(' ').filter(function (className) {
278 return className.indexOf('swiper-slide') === 0 || className.indexOf(swiper.params.slideClass) === 0;
279 }).join(' ');
280 };
281
282 _proto.emitSlidesClasses = function emitSlidesClasses() {
283 var swiper = this;
284 if (!swiper.params._emitClasses || !swiper.el) return;
285 var updates = [];
286 swiper.slides.each(function (slideEl) {
287 var classNames = swiper.getSlideClasses(slideEl);
288 updates.push({
289 slideEl: slideEl,
290 classNames: classNames
291 });
292 swiper.emit('_slideClass', slideEl, classNames);
293 });
294 swiper.emit('_slideClasses', updates);
295 };
296
297 _proto.slidesPerViewDynamic = function slidesPerViewDynamic() {
298 var swiper = this;
299 var params = swiper.params,
300 slides = swiper.slides,
301 slidesGrid = swiper.slidesGrid,
302 swiperSize = swiper.size,
303 activeIndex = swiper.activeIndex;
304 var spv = 1;
305
306 if (params.centeredSlides) {
307 var slideSize = slides[activeIndex].swiperSlideSize;
308 var breakLoop;
309
310 for (var i = activeIndex + 1; i < slides.length; i += 1) {
311 if (slides[i] && !breakLoop) {
312 slideSize += slides[i].swiperSlideSize;
313 spv += 1;
314 if (slideSize > swiperSize) breakLoop = true;
315 }
316 }
317
318 for (var _i = activeIndex - 1; _i >= 0; _i -= 1) {
319 if (slides[_i] && !breakLoop) {
320 slideSize += slides[_i].swiperSlideSize;
321 spv += 1;
322 if (slideSize > swiperSize) breakLoop = true;
323 }
324 }
325 } else {
326 for (var _i2 = activeIndex + 1; _i2 < slides.length; _i2 += 1) {
327 if (slidesGrid[_i2] - slidesGrid[activeIndex] < swiperSize) {
328 spv += 1;
329 }
330 }
331 }
332
333 return spv;
334 };
335
336 _proto.update = function update() {
337 var swiper = this;
338 if (!swiper || swiper.destroyed) return;
339 var snapGrid = swiper.snapGrid,
340 params = swiper.params; // Breakpoints
341
342 if (params.breakpoints) {
343 swiper.setBreakpoint();
344 }
345
346 swiper.updateSize();
347 swiper.updateSlides();
348 swiper.updateProgress();
349 swiper.updateSlidesClasses();
350
351 function setTranslate() {
352 var translateValue = swiper.rtlTranslate ? swiper.translate * -1 : swiper.translate;
353 var newTranslate = Math.min(Math.max(translateValue, swiper.maxTranslate()), swiper.minTranslate());
354 swiper.setTranslate(newTranslate);
355 swiper.updateActiveIndex();
356 swiper.updateSlidesClasses();
357 }
358
359 var translated;
360
361 if (swiper.params.freeMode) {
362 setTranslate();
363
364 if (swiper.params.autoHeight) {
365 swiper.updateAutoHeight();
366 }
367 } else {
368 if ((swiper.params.slidesPerView === 'auto' || swiper.params.slidesPerView > 1) && swiper.isEnd && !swiper.params.centeredSlides) {
369 translated = swiper.slideTo(swiper.slides.length - 1, 0, false, true);
370 } else {
371 translated = swiper.slideTo(swiper.activeIndex, 0, false, true);
372 }
373
374 if (!translated) {
375 setTranslate();
376 }
377 }
378
379 if (params.watchOverflow && snapGrid !== swiper.snapGrid) {
380 swiper.checkOverflow();
381 }
382
383 swiper.emit('update');
384 };
385
386 _proto.changeDirection = function changeDirection(newDirection, needUpdate) {
387 if (needUpdate === void 0) {
388 needUpdate = true;
389 }
390
391 var swiper = this;
392 var currentDirection = swiper.params.direction;
393
394 if (!newDirection) {
395 // eslint-disable-next-line
396 newDirection = currentDirection === 'horizontal' ? 'vertical' : 'horizontal';
397 }
398
399 if (newDirection === currentDirection || newDirection !== 'horizontal' && newDirection !== 'vertical') {
400 return swiper;
401 }
402
403 swiper.$el.removeClass("" + swiper.params.containerModifierClass + currentDirection).addClass("" + swiper.params.containerModifierClass + newDirection);
404 swiper.emitContainerClasses();
405 swiper.params.direction = newDirection;
406 swiper.slides.each(function (slideEl) {
407 if (newDirection === 'vertical') {
408 slideEl.style.width = '';
409 } else {
410 slideEl.style.height = '';
411 }
412 });
413 swiper.emit('changeDirection');
414 if (needUpdate) swiper.update();
415 return swiper;
416 };
417
418 _proto.mount = function mount(el) {
419 var swiper = this;
420 if (swiper.mounted) return true; // Find el
421
422 var $el = (0, _dom.default)(el || swiper.params.el);
423 el = $el[0];
424
425 if (!el) {
426 return false;
427 }
428
429 el.swiper = swiper; // Find Wrapper
430
431 var $wrapperEl;
432
433 if (el && el.shadowRoot && el.shadowRoot.querySelector) {
434 $wrapperEl = (0, _dom.default)(el.shadowRoot.querySelector("." + swiper.params.wrapperClass)); // Children needs to return slot items
435
436 $wrapperEl.children = function (options) {
437 return $el.children(options);
438 };
439 } else {
440 $wrapperEl = $el.children("." + swiper.params.wrapperClass);
441 }
442
443 (0, _utils.extend)(swiper, {
444 $el: $el,
445 el: el,
446 $wrapperEl: $wrapperEl,
447 wrapperEl: $wrapperEl[0],
448 mounted: true,
449 // RTL
450 rtl: el.dir.toLowerCase() === 'rtl' || $el.css('direction') === 'rtl',
451 rtlTranslate: swiper.params.direction === 'horizontal' && (el.dir.toLowerCase() === 'rtl' || $el.css('direction') === 'rtl'),
452 wrongRTL: $wrapperEl.css('display') === '-webkit-box'
453 });
454 return true;
455 };
456
457 _proto.init = function init(el) {
458 var swiper = this;
459 if (swiper.initialized) return swiper;
460 var mounted = swiper.mount(el);
461 if (mounted === false) return swiper;
462 swiper.emit('beforeInit'); // Set breakpoint
463
464 if (swiper.params.breakpoints) {
465 swiper.setBreakpoint();
466 } // Add Classes
467
468
469 swiper.addClasses(); // Create loop
470
471 if (swiper.params.loop) {
472 swiper.loopCreate();
473 } // Update size
474
475
476 swiper.updateSize(); // Update slides
477
478 swiper.updateSlides();
479
480 if (swiper.params.watchOverflow) {
481 swiper.checkOverflow();
482 } // Set Grab Cursor
483
484
485 if (swiper.params.grabCursor) {
486 swiper.setGrabCursor();
487 }
488
489 if (swiper.params.preloadImages) {
490 swiper.preloadImages();
491 } // Slide To Initial Slide
492
493
494 if (swiper.params.loop) {
495 swiper.slideTo(swiper.params.initialSlide + swiper.loopedSlides, 0, swiper.params.runCallbacksOnInit);
496 } else {
497 swiper.slideTo(swiper.params.initialSlide, 0, swiper.params.runCallbacksOnInit);
498 } // Attach events
499
500
501 swiper.attachEvents(); // Init Flag
502
503 swiper.initialized = true; // Emit
504
505 swiper.emit('init');
506 swiper.emit('afterInit');
507 return swiper;
508 };
509
510 _proto.destroy = function destroy(deleteInstance, cleanStyles) {
511 if (deleteInstance === void 0) {
512 deleteInstance = true;
513 }
514
515 if (cleanStyles === void 0) {
516 cleanStyles = true;
517 }
518
519 var swiper = this;
520 var params = swiper.params,
521 $el = swiper.$el,
522 $wrapperEl = swiper.$wrapperEl,
523 slides = swiper.slides;
524
525 if (typeof swiper.params === 'undefined' || swiper.destroyed) {
526 return null;
527 }
528
529 swiper.emit('beforeDestroy'); // Init Flag
530
531 swiper.initialized = false; // Detach events
532
533 swiper.detachEvents(); // Destroy loop
534
535 if (params.loop) {
536 swiper.loopDestroy();
537 } // Cleanup styles
538
539
540 if (cleanStyles) {
541 swiper.removeClasses();
542 $el.removeAttr('style');
543 $wrapperEl.removeAttr('style');
544
545 if (slides && slides.length) {
546 slides.removeClass([params.slideVisibleClass, params.slideActiveClass, params.slideNextClass, params.slidePrevClass].join(' ')).removeAttr('style').removeAttr('data-swiper-slide-index');
547 }
548 }
549
550 swiper.emit('destroy'); // Detach emitter events
551
552 Object.keys(swiper.eventsListeners).forEach(function (eventName) {
553 swiper.off(eventName);
554 });
555
556 if (deleteInstance !== false) {
557 swiper.$el[0].swiper = null;
558 (0, _utils.deleteProps)(swiper);
559 }
560
561 swiper.destroyed = true;
562 return null;
563 };
564
565 Swiper.extendDefaults = function extendDefaults(newDefaults) {
566 (0, _utils.extend)(extendedDefaults, newDefaults);
567 };
568
569 Swiper.installModule = function installModule(module) {
570 if (!Swiper.prototype.modules) Swiper.prototype.modules = {};
571 var name = module.name || Object.keys(Swiper.prototype.modules).length + "_" + (0, _utils.now)();
572 Swiper.prototype.modules[name] = module;
573 };
574
575 Swiper.use = function use(module) {
576 if (Array.isArray(module)) {
577 module.forEach(function (m) {
578 return Swiper.installModule(m);
579 });
580 return Swiper;
581 }
582
583 Swiper.installModule(module);
584 return Swiper;
585 };
586
587 _createClass(Swiper, null, [{
588 key: "extendedDefaults",
589 get: function get() {
590 return extendedDefaults;
591 }
592 }, {
593 key: "defaults",
594 get: function get() {
595 return _defaults.default;
596 }
597 }]);
598
599 return Swiper;
600}();
601
602Object.keys(prototypes).forEach(function (prototypeGroup) {
603 Object.keys(prototypes[prototypeGroup]).forEach(function (protoMethod) {
604 Swiper.prototype[protoMethod] = prototypes[prototypeGroup][protoMethod];
605 });
606});
607Swiper.use([_resize.default, _observer.default]);
608var _default = Swiper;
609exports.default = _default;
\No newline at end of file