infinity-forge
Version:
207 lines • 7.92 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.updateSwiper = updateSwiper;
var utils_1 = require("./utils.js");
function updateSwiper(_a) {
var swiper = _a.swiper, slides = _a.slides, passedParams = _a.passedParams, changedParams = _a.changedParams, nextEl = _a.nextEl, prevEl = _a.prevEl, scrollbarEl = _a.scrollbarEl, paginationEl = _a.paginationEl;
var updateParams = changedParams.filter(function (key) { return key !== 'children' && key !== 'direction' && key !== 'wrapperClass'; });
var currentParams = swiper.params, pagination = swiper.pagination, navigation = swiper.navigation, scrollbar = swiper.scrollbar, virtual = swiper.virtual, thumbs = swiper.thumbs;
var needThumbsInit;
var needControllerInit;
var needPaginationInit;
var needScrollbarInit;
var needNavigationInit;
var loopNeedDestroy;
var loopNeedEnable;
var loopNeedReloop;
if (changedParams.includes('thumbs') &&
passedParams.thumbs &&
passedParams.thumbs.swiper &&
currentParams.thumbs &&
!currentParams.thumbs.swiper) {
needThumbsInit = true;
}
if (changedParams.includes('controller') &&
passedParams.controller &&
passedParams.controller.control &&
currentParams.controller &&
!currentParams.controller.control) {
needControllerInit = true;
}
if (changedParams.includes('pagination') &&
passedParams.pagination &&
(passedParams.pagination.el || paginationEl) &&
(currentParams.pagination || currentParams.pagination === false) &&
pagination &&
!pagination.el) {
needPaginationInit = true;
}
if (changedParams.includes('scrollbar') &&
passedParams.scrollbar &&
(passedParams.scrollbar.el || scrollbarEl) &&
(currentParams.scrollbar || currentParams.scrollbar === false) &&
scrollbar &&
!scrollbar.el) {
needScrollbarInit = true;
}
if (changedParams.includes('navigation') &&
passedParams.navigation &&
(passedParams.navigation.prevEl || prevEl) &&
(passedParams.navigation.nextEl || nextEl) &&
(currentParams.navigation || currentParams.navigation === false) &&
navigation &&
!navigation.prevEl &&
!navigation.nextEl) {
needNavigationInit = true;
}
var destroyModule = function (mod) {
if (!swiper[mod])
return;
swiper[mod].destroy();
if (mod === 'navigation') {
if (swiper.isElement) {
swiper[mod].prevEl.remove();
swiper[mod].nextEl.remove();
}
currentParams[mod].prevEl = undefined;
currentParams[mod].nextEl = undefined;
swiper[mod].prevEl = undefined;
swiper[mod].nextEl = undefined;
}
else {
if (swiper.isElement) {
swiper[mod].el.remove();
}
currentParams[mod].el = undefined;
swiper[mod].el = undefined;
}
};
if (changedParams.includes('loop') && swiper.isElement) {
if (currentParams.loop && !passedParams.loop) {
loopNeedDestroy = true;
}
else if (!currentParams.loop && passedParams.loop) {
loopNeedEnable = true;
}
else {
loopNeedReloop = true;
}
}
updateParams.forEach(function (key) {
if ((0, utils_1.isObject)(currentParams[key]) && (0, utils_1.isObject)(passedParams[key])) {
Object.assign(currentParams[key], passedParams[key]);
if ((key === 'navigation' || key === 'pagination' || key === 'scrollbar') &&
'enabled' in passedParams[key] &&
!passedParams[key].enabled) {
destroyModule(key);
}
}
else {
var newValue = passedParams[key];
if ((newValue === true || newValue === false) &&
(key === 'navigation' || key === 'pagination' || key === 'scrollbar')) {
if (newValue === false) {
destroyModule(key);
}
}
else {
currentParams[key] = passedParams[key];
}
}
});
if (updateParams.includes('controller') &&
!needControllerInit &&
swiper.controller &&
swiper.controller.control &&
currentParams.controller &&
currentParams.controller.control) {
swiper.controller.control = currentParams.controller.control;
}
if (changedParams.includes('children') && slides && virtual && currentParams.virtual.enabled) {
virtual.slides = slides;
virtual.update(true);
}
else if (changedParams.includes('virtual') && virtual && currentParams.virtual.enabled) {
if (slides)
virtual.slides = slides;
virtual.update(true);
}
if (changedParams.includes('children') && slides && currentParams.loop) {
loopNeedReloop = true;
}
if (needThumbsInit) {
var initialized = thumbs.init();
if (initialized)
thumbs.update(true);
}
if (needControllerInit) {
swiper.controller.control = currentParams.controller.control;
}
if (needPaginationInit) {
if (swiper.isElement && (!paginationEl || typeof paginationEl === 'string')) {
paginationEl = document.createElement('div');
paginationEl.classList.add('swiper-pagination');
paginationEl.part.add('pagination');
swiper.el.appendChild(paginationEl);
}
if (paginationEl)
currentParams.pagination.el = paginationEl;
pagination.init();
pagination.render();
pagination.update();
}
if (needScrollbarInit) {
if (swiper.isElement && (!scrollbarEl || typeof scrollbarEl === 'string')) {
scrollbarEl = document.createElement('div');
scrollbarEl.classList.add('swiper-scrollbar');
scrollbarEl.part.add('scrollbar');
swiper.el.appendChild(scrollbarEl);
}
if (scrollbarEl)
currentParams.scrollbar.el = scrollbarEl;
scrollbar.init();
scrollbar.updateSize();
scrollbar.setTranslate();
}
if (needNavigationInit) {
if (swiper.isElement) {
if (!nextEl || typeof nextEl === 'string') {
nextEl = document.createElement('div');
nextEl.classList.add('swiper-button-next');
nextEl.innerHTML = swiper.hostEl.constructor.nextButtonSvg;
nextEl.part.add('button-next');
swiper.el.appendChild(nextEl);
}
if (!prevEl || typeof prevEl === 'string') {
prevEl = document.createElement('div');
prevEl.classList.add('swiper-button-prev');
prevEl.innerHTML = swiper.hostEl.constructor.prevButtonSvg;
prevEl.part.add('button-prev');
swiper.el.appendChild(prevEl);
}
}
if (nextEl)
currentParams.navigation.nextEl = nextEl;
if (prevEl)
currentParams.navigation.prevEl = prevEl;
navigation.init();
navigation.update();
}
if (changedParams.includes('allowSlideNext')) {
swiper.allowSlideNext = passedParams.allowSlideNext;
}
if (changedParams.includes('allowSlidePrev')) {
swiper.allowSlidePrev = passedParams.allowSlidePrev;
}
if (changedParams.includes('direction')) {
swiper.changeDirection(passedParams.direction, false);
}
if (loopNeedDestroy || loopNeedReloop) {
swiper.loopDestroy();
}
if (loopNeedEnable || loopNeedReloop) {
swiper.loopCreate();
}
swiper.update();
}
//# sourceMappingURL=update-swiper.js.map