infinity-forge
Version:
654 lines • 25.9 kB
JavaScript
;
var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
if (ar || !(i in from)) {
if (!ar) ar = Array.prototype.slice.call(from, 0, i);
ar[i] = from[i];
}
}
return to.concat(ar || Array.prototype.slice.call(from));
};
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
//@ts-nocheck
/* eslint no-param-reassign: "off" */
var utils_1 = require("../shared/utils.js");
var get_support_1 = require("../shared/get-support.js");
var get_device_1 = require("../shared/get-device.js");
var get_browser_1 = require("../shared/get-browser.js");
var resize_1 = __importDefault(require("./modules/resize/resize.js"));
var observer_1 = __importDefault(require("./modules/observer/observer.js"));
var events_emitter_1 = __importDefault(require("./events-emitter.js"));
var index_1 = __importDefault(require("./update/index.js"));
var index_2 = __importDefault(require("./translate/index.js"));
var index_3 = __importDefault(require("./transition/index.js"));
var index_4 = __importDefault(require("./slide/index.js"));
var index_5 = __importDefault(require("./loop/index.js"));
var index_6 = __importDefault(require("./grab-cursor/index.js"));
var index_7 = __importDefault(require("./events/index.js"));
var index_8 = __importDefault(require("./breakpoints/index.js"));
var index_9 = __importDefault(require("./classes/index.js"));
var index_10 = __importDefault(require("./check-overflow/index.js"));
var defaults_1 = __importDefault(require("./defaults.js"));
var moduleExtendParams_1 = __importDefault(require("./moduleExtendParams.js"));
var process_lazy_preloader_1 = require("../shared/process-lazy-preloader.js");
var document_1 = require("../ssr-window/document.js");
var prototypes = {
eventsEmitter: events_emitter_1.default,
update: index_1.default,
translate: index_2.default,
transition: index_3.default,
slide: index_4.default,
loop: index_5.default,
grabCursor: index_6.default,
events: index_7.default,
breakpoints: index_8.default,
checkOverflow: index_10.default,
classes: index_9.default,
};
var extendedDefaults = {};
var Swiper = /** @class */ (function () {
function Swiper() {
var _a;
var args = [];
for (var _i = 0; _i < arguments.length; _i++) {
args[_i] = arguments[_i];
}
var el;
var params;
if (args.length === 1 &&
args[0].constructor &&
Object.prototype.toString.call(args[0]).slice(8, -1) === 'Object') {
params = args[0];
}
else {
el = args[0], params = args[1];
}
if (!params)
params = {};
params = (0, utils_1.extend)({}, params);
if (el && !params.el)
params.el = el;
var document = (0, document_1.getDocument)();
if (params.el &&
typeof params.el === 'string' &&
document.querySelectorAll(params.el).length > 1) {
var swipers_1 = [];
document.querySelectorAll(params.el).forEach(function (containerEl) {
var newParams = (0, utils_1.extend)({}, params, { el: containerEl });
swipers_1.push(new Swiper(newParams));
});
// eslint-disable-next-line no-constructor-return
return swipers_1;
}
// Swiper Instance
var swiper = this;
swiper.__swiper__ = true;
swiper.support = (0, get_support_1.getSupport)();
swiper.device = (0, get_device_1.getDevice)({ userAgent: params.userAgent });
swiper.browser = (0, get_browser_1.getBrowser)();
swiper.eventsListeners = {};
swiper.eventsAnyListeners = [];
swiper.modules = __spreadArray([], swiper.__modules__, true);
if (params.modules && Array.isArray(params.modules)) {
(_a = swiper.modules).push.apply(_a, params.modules);
}
var allModulesParams = {};
swiper.modules.forEach(function (mod) {
mod({
params: params,
swiper: swiper,
extendParams: (0, moduleExtendParams_1.default)(params, allModulesParams),
on: swiper.on.bind(swiper),
once: swiper.once.bind(swiper),
off: swiper.off.bind(swiper),
emit: swiper.emit.bind(swiper),
});
});
// Extend defaults with modules params
var swiperParams = (0, utils_1.extend)({}, defaults_1.default, allModulesParams);
// Extend defaults with passed params
swiper.params = (0, utils_1.extend)({}, swiperParams, extendedDefaults, params);
swiper.originalParams = (0, utils_1.extend)({}, swiper.params);
swiper.passedParams = (0, utils_1.extend)({}, params);
// add event listeners
if (swiper.params && swiper.params.on) {
Object.keys(swiper.params.on).forEach(function (eventName) {
swiper.on(eventName, swiper.params.on[eventName]);
});
}
if (swiper.params && swiper.params.onAny) {
swiper.onAny(swiper.params.onAny);
}
// Extend Swiper
Object.assign(swiper, {
enabled: swiper.params.enabled,
el: el,
// Classes
classNames: [],
// Slides
slides: [],
slidesGrid: [],
snapGrid: [],
slidesSizesGrid: [],
// isDirection
isHorizontal: function () {
return swiper.params.direction === 'horizontal';
},
isVertical: function () {
return swiper.params.direction === 'vertical';
},
// Indexes
activeIndex: 0,
realIndex: 0,
//
isBeginning: true,
isEnd: false,
// Props
translate: 0,
previousTranslate: 0,
progress: 0,
velocity: 0,
animating: false,
cssOverflowAdjustment: function () {
// Returns 0 unless `translate` is > 2**23
// Should be subtracted from css values to prevent overflow
return Math.trunc(this.translate / Math.pow(2, 23)) * Math.pow(2, 23);
},
// Locks
allowSlideNext: swiper.params.allowSlideNext,
allowSlidePrev: swiper.params.allowSlidePrev,
// Touch Events
touchEventsData: {
isTouched: undefined,
isMoved: undefined,
allowTouchCallbacks: undefined,
touchStartTime: undefined,
isScrolling: undefined,
currentTranslate: undefined,
startTranslate: undefined,
allowThresholdMove: undefined,
// Form elements to match
focusableElements: swiper.params.focusableElements,
// Last click time
lastClickTime: 0,
clickTimeout: undefined,
// Velocities
velocities: [],
allowMomentumBounce: undefined,
startMoving: undefined,
pointerId: null,
touchId: null,
},
// Clicks
allowClick: true,
// Touches
allowTouchMove: swiper.params.allowTouchMove,
touches: {
startX: 0,
startY: 0,
currentX: 0,
currentY: 0,
diff: 0,
},
// Images
imagesToLoad: [],
imagesLoaded: 0,
});
swiper.emit('_swiper');
// Init
if (swiper.params.init) {
swiper.init();
}
// Return app instance
// eslint-disable-next-line no-constructor-return
return swiper;
}
Swiper.prototype.getDirectionLabel = function (property) {
if (this.isHorizontal()) {
return property;
}
// prettier-ignore
return {
'width': 'height',
'margin-top': 'margin-left',
'margin-bottom ': 'margin-right',
'margin-left': 'margin-top',
'margin-right': 'margin-bottom',
'padding-left': 'padding-top',
'padding-right': 'padding-bottom',
'marginRight': 'marginBottom',
}[property];
};
Swiper.prototype.getSlideIndex = function (slideEl) {
var _a = this, slidesEl = _a.slidesEl, params = _a.params;
var slides = (0, utils_1.elementChildren)(slidesEl, ".".concat(params.slideClass, ", swiper-slide"));
var firstSlideIndex = (0, utils_1.elementIndex)(slides[0]);
return (0, utils_1.elementIndex)(slideEl) - firstSlideIndex;
};
Swiper.prototype.getSlideIndexByData = function (index) {
return this.getSlideIndex(this.slides.filter(function (slideEl) { return slideEl.getAttribute('data-swiper-slide-index') * 1 === index; })[0]);
};
Swiper.prototype.recalcSlides = function () {
var swiper = this;
var slidesEl = swiper.slidesEl, params = swiper.params;
swiper.slides = (0, utils_1.elementChildren)(slidesEl, ".".concat(params.slideClass, ", swiper-slide"));
};
Swiper.prototype.enable = function () {
var swiper = this;
if (swiper.enabled)
return;
swiper.enabled = true;
if (swiper.params.grabCursor) {
swiper.setGrabCursor();
}
swiper.emit('enable');
};
Swiper.prototype.disable = function () {
var swiper = this;
if (!swiper.enabled)
return;
swiper.enabled = false;
if (swiper.params.grabCursor) {
swiper.unsetGrabCursor();
}
swiper.emit('disable');
};
Swiper.prototype.setProgress = function (progress, speed) {
var swiper = this;
progress = Math.min(Math.max(progress, 0), 1);
var min = swiper.minTranslate();
var max = swiper.maxTranslate();
var current = (max - min) * progress + min;
swiper.translateTo(current, typeof speed === 'undefined' ? 0 : speed);
swiper.updateActiveIndex();
swiper.updateSlidesClasses();
};
Swiper.prototype.emitContainerClasses = function () {
var swiper = this;
if (!swiper.params._emitClasses || !swiper.el)
return;
var cls = swiper.el.className.split(' ').filter(function (className) {
return (className.indexOf('swiper') === 0 ||
className.indexOf(swiper.params.containerModifierClass) === 0);
});
swiper.emit('_containerClasses', cls.join(' '));
};
Swiper.prototype.getSlideClasses = function (slideEl) {
var swiper = this;
if (swiper.destroyed)
return '';
return slideEl.className
.split(' ')
.filter(function (className) {
return (className.indexOf('swiper-slide') === 0 ||
className.indexOf(swiper.params.slideClass) === 0);
})
.join(' ');
};
Swiper.prototype.emitSlidesClasses = function () {
var swiper = this;
if (!swiper.params._emitClasses || !swiper.el)
return;
var updates = [];
swiper.slides.forEach(function (slideEl) {
var classNames = swiper.getSlideClasses(slideEl);
updates.push({ slideEl: slideEl, classNames: classNames });
swiper.emit('_slideClass', slideEl, classNames);
});
swiper.emit('_slideClasses', updates);
};
Swiper.prototype.slidesPerViewDynamic = function (view, exact) {
if (view === void 0) { view = 'current'; }
if (exact === void 0) { exact = false; }
var swiper = this;
var params = swiper.params, slides = swiper.slides, slidesGrid = swiper.slidesGrid, slidesSizesGrid = swiper.slidesSizesGrid, swiperSize = swiper.size, activeIndex = swiper.activeIndex;
var spv = 1;
if (typeof params.slidesPerView === 'number')
return params.slidesPerView;
if (params.centeredSlides) {
var slideSize = slides[activeIndex] ? Math.ceil(slides[activeIndex].swiperSlideSize) : 0;
var breakLoop = void 0;
for (var i = activeIndex + 1; i < slides.length; i += 1) {
if (slides[i] && !breakLoop) {
slideSize += Math.ceil(slides[i].swiperSlideSize);
spv += 1;
if (slideSize > swiperSize)
breakLoop = true;
}
}
for (var i = activeIndex - 1; i >= 0; i -= 1) {
if (slides[i] && !breakLoop) {
slideSize += slides[i].swiperSlideSize;
spv += 1;
if (slideSize > swiperSize)
breakLoop = true;
}
}
}
else {
// eslint-disable-next-line
if (view === 'current') {
for (var i = activeIndex + 1; i < slides.length; i += 1) {
var slideInView = exact
? slidesGrid[i] + slidesSizesGrid[i] - slidesGrid[activeIndex] < swiperSize
: slidesGrid[i] - slidesGrid[activeIndex] < swiperSize;
if (slideInView) {
spv += 1;
}
}
}
else {
// previous
for (var i = activeIndex - 1; i >= 0; i -= 1) {
var slideInView = slidesGrid[activeIndex] - slidesGrid[i] < swiperSize;
if (slideInView) {
spv += 1;
}
}
}
}
return spv;
};
Swiper.prototype.update = function () {
var swiper = this;
if (!swiper || swiper.destroyed)
return;
var snapGrid = swiper.snapGrid, params = swiper.params;
// Breakpoints
if (params.breakpoints) {
swiper.setBreakpoint();
}
__spreadArray([], swiper.el.querySelectorAll('[loading="lazy"]'), true).forEach(function (imageEl) {
if (imageEl.complete) {
(0, process_lazy_preloader_1.processLazyPreloader)(swiper, imageEl);
}
});
swiper.updateSize();
swiper.updateSlides();
swiper.updateProgress();
swiper.updateSlidesClasses();
function setTranslate() {
var translateValue = swiper.rtlTranslate ? swiper.translate * -1 : swiper.translate;
var newTranslate = Math.min(Math.max(translateValue, swiper.maxTranslate()), swiper.minTranslate());
swiper.setTranslate(newTranslate);
swiper.updateActiveIndex();
swiper.updateSlidesClasses();
}
var translated;
if (params.freeMode && params.freeMode.enabled && !params.cssMode) {
setTranslate();
if (params.autoHeight) {
swiper.updateAutoHeight();
}
}
else {
if ((params.slidesPerView === 'auto' || params.slidesPerView > 1) &&
swiper.isEnd &&
!params.centeredSlides) {
var slides = swiper.virtual && params.virtual.enabled ? swiper.virtual.slides : swiper.slides;
translated = swiper.slideTo(slides.length - 1, 0, false, true);
}
else {
translated = swiper.slideTo(swiper.activeIndex, 0, false, true);
}
if (!translated) {
setTranslate();
}
}
if (params.watchOverflow && snapGrid !== swiper.snapGrid) {
swiper.checkOverflow();
}
swiper.emit('update');
};
Swiper.prototype.changeDirection = function (newDirection, needUpdate) {
if (needUpdate === void 0) { needUpdate = true; }
var swiper = this;
var currentDirection = swiper.params.direction;
if (!newDirection) {
// eslint-disable-next-line
newDirection = currentDirection === 'horizontal' ? 'vertical' : 'horizontal';
}
if (newDirection === currentDirection ||
(newDirection !== 'horizontal' && newDirection !== 'vertical')) {
return swiper;
}
swiper.el.classList.remove("".concat(swiper.params.containerModifierClass).concat(currentDirection));
swiper.el.classList.add("".concat(swiper.params.containerModifierClass).concat(newDirection));
swiper.emitContainerClasses();
swiper.params.direction = newDirection;
swiper.slides.forEach(function (slideEl) {
if (newDirection === 'vertical') {
slideEl.style.width = '';
}
else {
slideEl.style.height = '';
}
});
swiper.emit('changeDirection');
if (needUpdate)
swiper.update();
return swiper;
};
Swiper.prototype.changeLanguageDirection = function (direction) {
var swiper = this;
if ((swiper.rtl && direction === 'rtl') || (!swiper.rtl && direction === 'ltr'))
return;
swiper.rtl = direction === 'rtl';
swiper.rtlTranslate = swiper.params.direction === 'horizontal' && swiper.rtl;
if (swiper.rtl) {
swiper.el.classList.add("".concat(swiper.params.containerModifierClass, "rtl"));
swiper.el.dir = 'rtl';
}
else {
swiper.el.classList.remove("".concat(swiper.params.containerModifierClass, "rtl"));
swiper.el.dir = 'ltr';
}
swiper.update();
};
Swiper.prototype.mount = function (element) {
var swiper = this;
if (swiper.mounted)
return true;
// Find el
var el = element || swiper.params.el;
if (typeof el === 'string') {
el = document.querySelector(el);
}
if (!el) {
return false;
}
el.swiper = swiper;
if (el.parentNode &&
el.parentNode.host &&
el.parentNode.host.nodeName === swiper.params.swiperElementNodeName.toUpperCase()) {
swiper.isElement = true;
}
var getWrapperSelector = function () {
return ".".concat((swiper.params.wrapperClass || '').trim().split(' ').join('.'));
};
var getWrapper = function () {
if (el && el.shadowRoot && el.shadowRoot.querySelector) {
var res = el.shadowRoot.querySelector(getWrapperSelector());
// Children needs to return slot items
return res;
}
return (0, utils_1.elementChildren)(el, getWrapperSelector())[0];
};
// Find Wrapper
var wrapperEl = getWrapper();
if (!wrapperEl && swiper.params.createElements) {
wrapperEl = (0, utils_1.createElement)('div', swiper.params.wrapperClass);
el.append(wrapperEl);
(0, utils_1.elementChildren)(el, ".".concat(swiper.params.slideClass)).forEach(function (slideEl) {
wrapperEl.append(slideEl);
});
}
Object.assign(swiper, {
el: el,
wrapperEl: wrapperEl,
slidesEl: swiper.isElement && !el.parentNode.host.slideSlots ? el.parentNode.host : wrapperEl,
hostEl: swiper.isElement ? el.parentNode.host : el,
mounted: true,
// RTL
rtl: el.dir.toLowerCase() === 'rtl' || (0, utils_1.elementStyle)(el, 'direction') === 'rtl',
rtlTranslate: swiper.params.direction === 'horizontal' &&
(el.dir.toLowerCase() === 'rtl' || (0, utils_1.elementStyle)(el, 'direction') === 'rtl'),
wrongRTL: (0, utils_1.elementStyle)(wrapperEl, 'display') === '-webkit-box',
});
return true;
};
Swiper.prototype.init = function (el) {
var swiper = this;
if (swiper.initialized)
return swiper;
var mounted = swiper.mount(el);
if (mounted === false)
return swiper;
swiper.emit('beforeInit');
// Set breakpoint
if (swiper.params.breakpoints) {
swiper.setBreakpoint();
}
// Add Classes
swiper.addClasses();
// Update size
swiper.updateSize();
// Update slides
swiper.updateSlides();
if (swiper.params.watchOverflow) {
swiper.checkOverflow();
}
// Set Grab Cursor
if (swiper.params.grabCursor && swiper.enabled) {
swiper.setGrabCursor();
}
// Slide To Initial Slide
if (swiper.params.loop && swiper.virtual && swiper.params.virtual.enabled) {
swiper.slideTo(swiper.params.initialSlide + swiper.virtual.slidesBefore, 0, swiper.params.runCallbacksOnInit, false, true);
}
else {
swiper.slideTo(swiper.params.initialSlide, 0, swiper.params.runCallbacksOnInit, false, true);
}
// Create loop
if (swiper.params.loop) {
swiper.loopCreate();
}
// Attach events
swiper.attachEvents();
var lazyElements = __spreadArray([], swiper.el.querySelectorAll('[loading="lazy"]'), true);
if (swiper.isElement) {
lazyElements.push.apply(lazyElements, swiper.hostEl.querySelectorAll('[loading="lazy"]'));
}
lazyElements.forEach(function (imageEl) {
if (imageEl.complete) {
(0, process_lazy_preloader_1.processLazyPreloader)(swiper, imageEl);
}
else {
imageEl.addEventListener('load', function (e) {
(0, process_lazy_preloader_1.processLazyPreloader)(swiper, e.target);
});
}
});
(0, process_lazy_preloader_1.preload)(swiper);
// Init Flag
swiper.initialized = true;
(0, process_lazy_preloader_1.preload)(swiper);
// Emit
swiper.emit('init');
swiper.emit('afterInit');
return swiper;
};
Swiper.prototype.destroy = function (deleteInstance, cleanStyles) {
if (deleteInstance === void 0) { deleteInstance = true; }
if (cleanStyles === void 0) { cleanStyles = true; }
var swiper = this;
var params = swiper.params, el = swiper.el, wrapperEl = swiper.wrapperEl, slides = swiper.slides;
if (typeof swiper.params === 'undefined' || swiper.destroyed) {
return null;
}
swiper.emit('beforeDestroy');
// Init Flag
swiper.initialized = false;
// Detach events
swiper.detachEvents();
// Destroy loop
if (params.loop) {
swiper.loopDestroy();
}
// Cleanup styles
if (cleanStyles) {
swiper.removeClasses();
if (el && typeof el !== 'string') {
el.removeAttribute('style');
}
if (wrapperEl) {
wrapperEl.removeAttribute('style');
}
if (slides && slides.length) {
slides.forEach(function (slideEl) {
slideEl.classList.remove(params.slideVisibleClass, params.slideFullyVisibleClass, params.slideActiveClass, params.slideNextClass, params.slidePrevClass);
slideEl.removeAttribute('style');
slideEl.removeAttribute('data-swiper-slide-index');
});
}
}
swiper.emit('destroy');
// Detach emitter events
Object.keys(swiper.eventsListeners).forEach(function (eventName) {
swiper.off(eventName);
});
if (deleteInstance !== false) {
if (swiper.el && typeof swiper.el !== 'string') {
swiper.el.swiper = null;
}
(0, utils_1.deleteProps)(swiper);
}
swiper.destroyed = true;
return null;
};
Swiper.extendDefaults = function (newDefaults) {
(0, utils_1.extend)(extendedDefaults, newDefaults);
};
Object.defineProperty(Swiper, "extendedDefaults", {
get: function () {
return extendedDefaults;
},
enumerable: false,
configurable: true
});
Object.defineProperty(Swiper, "defaults", {
get: function () {
return defaults_1.default;
},
enumerable: false,
configurable: true
});
Swiper.installModule = function (mod) {
if (!Swiper.prototype.__modules__)
Swiper.prototype.__modules__ = [];
var modules = Swiper.prototype.__modules__;
if (typeof mod === 'function' && modules.indexOf(mod) < 0) {
modules.push(mod);
}
};
Swiper.use = function (module) {
if (Array.isArray(module)) {
module.forEach(function (m) { return Swiper.installModule(m); });
return Swiper;
}
Swiper.installModule(module);
return Swiper;
};
return Swiper;
}());
Object.keys(prototypes).forEach(function (prototypeGroup) {
Object.keys(prototypes[prototypeGroup]).forEach(function (protoMethod) {
Swiper.prototype[protoMethod] = prototypes[prototypeGroup][protoMethod];
});
});
Swiper.use([resize_1.default, observer_1.default]);
exports.default = Swiper;
//# sourceMappingURL=core.js.map