UNPKG

infinity-forge

Version:
222 lines • 8.72 kB
"use strict"; 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 }); exports.Navigation = Navigation; var create_element_if_not_defined_1 = __importDefault(require("../shared/create-element-if-not-defined.js")); var utils_1 = require("../shared/utils.js"); function Navigation(_a) { var swiper = _a.swiper, extendParams = _a.extendParams, on = _a.on, emit = _a.emit; extendParams({ navigation: { nextEl: null, prevEl: null, hideOnClick: false, disabledClass: 'swiper-button-disabled', hiddenClass: 'swiper-button-hidden', lockClass: 'swiper-button-lock', navigationDisabledClass: 'swiper-navigation-disabled', }, }); swiper.navigation = { nextEl: null, prevEl: null, }; function getEl(el) { var res; if (el && typeof el === 'string' && swiper.isElement) { res = swiper.el.querySelector(el); if (res) return res; } if (el) { if (typeof el === 'string') res = __spreadArray([], document.querySelectorAll(el), true); if (swiper.params.uniqueNavElements && typeof el === 'string' && res && res.length > 1 && swiper.el.querySelectorAll(el).length === 1) { res = swiper.el.querySelector(el); } else if (res && res.length === 1) { res = res[0]; } } if (el && !res) return el; // if (Array.isArray(res) && res.length === 1) res = res[0]; return res; } function toggleEl(el, disabled) { var params = swiper.params.navigation; el = (0, utils_1.makeElementsArray)(el); el.forEach(function (subEl) { var _a; if (subEl) { (_a = subEl.classList)[disabled ? 'add' : 'remove'].apply(_a, params.disabledClass.split(' ')); if (subEl.tagName === 'BUTTON') subEl.disabled = disabled; if (swiper.params.watchOverflow && swiper.enabled) { subEl.classList[swiper.isLocked ? 'add' : 'remove'](params.lockClass); } } }); } function update() { // Update Navigation Buttons var _a = swiper.navigation, nextEl = _a.nextEl, prevEl = _a.prevEl; if (swiper.params.loop) { toggleEl(prevEl, false); toggleEl(nextEl, false); return; } toggleEl(prevEl, swiper.isBeginning && !swiper.params.rewind); toggleEl(nextEl, swiper.isEnd && !swiper.params.rewind); } function onPrevClick(e) { e.preventDefault(); if (swiper.isBeginning && !swiper.params.loop && !swiper.params.rewind) return; swiper.slidePrev(); emit('navigationPrev'); } function onNextClick(e) { e.preventDefault(); if (swiper.isEnd && !swiper.params.loop && !swiper.params.rewind) return; swiper.slideNext(); emit('navigationNext'); } function init() { var params = swiper.params.navigation; swiper.params.navigation = (0, create_element_if_not_defined_1.default)(swiper, swiper.originalParams.navigation, swiper.params.navigation, { nextEl: 'swiper-button-next', prevEl: 'swiper-button-prev', }); if (!(params.nextEl || params.prevEl)) return; var nextEl = getEl(params.nextEl); var prevEl = getEl(params.prevEl); Object.assign(swiper.navigation, { nextEl: nextEl, prevEl: prevEl, }); nextEl = (0, utils_1.makeElementsArray)(nextEl); prevEl = (0, utils_1.makeElementsArray)(prevEl); var initButton = function (el, dir) { var _a; if (el) { el.addEventListener('click', dir === 'next' ? onNextClick : onPrevClick); } if (!swiper.enabled && el) { (_a = el.classList).add.apply(_a, params.lockClass.split(' ')); } }; nextEl.forEach(function (el) { return initButton(el, 'next'); }); prevEl.forEach(function (el) { return initButton(el, 'prev'); }); } function destroy() { var _a = swiper.navigation, nextEl = _a.nextEl, prevEl = _a.prevEl; nextEl = (0, utils_1.makeElementsArray)(nextEl); prevEl = (0, utils_1.makeElementsArray)(prevEl); var destroyButton = function (el, dir) { var _a; el.removeEventListener('click', dir === 'next' ? onNextClick : onPrevClick); (_a = el.classList).remove.apply(_a, swiper.params.navigation.disabledClass.split(' ')); }; nextEl.forEach(function (el) { return destroyButton(el, 'next'); }); prevEl.forEach(function (el) { return destroyButton(el, 'prev'); }); } on('init', function () { if (swiper.params.navigation.enabled === false) { // eslint-disable-next-line disable(); } else { init(); update(); } }); on('toEdge fromEdge lock unlock', function () { update(); }); on('destroy', function () { destroy(); }); on('enable disable', function () { var _a = swiper.navigation, nextEl = _a.nextEl, prevEl = _a.prevEl; nextEl = (0, utils_1.makeElementsArray)(nextEl); prevEl = (0, utils_1.makeElementsArray)(prevEl); if (swiper.enabled) { update(); return; } __spreadArray(__spreadArray([], nextEl, true), prevEl, true).filter(function (el) { return !!el; }) .forEach(function (el) { return el.classList.add(swiper.params.navigation.lockClass); }); }); on('click', function (_s, e) { var _a = swiper.navigation, nextEl = _a.nextEl, prevEl = _a.prevEl; nextEl = (0, utils_1.makeElementsArray)(nextEl); prevEl = (0, utils_1.makeElementsArray)(prevEl); var targetEl = e.target; var targetIsButton = prevEl.includes(targetEl) || nextEl.includes(targetEl); if (swiper.isElement && !targetIsButton) { var path = e.path || (e.composedPath && e.composedPath()); if (path) { targetIsButton = path.find(function (pathEl) { return nextEl.includes(pathEl) || prevEl.includes(pathEl); }); } } if (swiper.params.navigation.hideOnClick && !targetIsButton) { if (swiper.pagination && swiper.params.pagination && swiper.params.pagination.clickable && (swiper.pagination.el === targetEl || swiper.pagination.el.contains(targetEl))) return; var isHidden = void 0; if (nextEl.length) { isHidden = nextEl[0].classList.contains(swiper.params.navigation.hiddenClass); } else if (prevEl.length) { isHidden = prevEl[0].classList.contains(swiper.params.navigation.hiddenClass); } if (isHidden === true) { emit('navigationShow'); } else { emit('navigationHide'); } __spreadArray(__spreadArray([], nextEl, true), prevEl, true).filter(function (el) { return !!el; }) .forEach(function (el) { return el.classList.toggle(swiper.params.navigation.hiddenClass); }); } }); var enable = function () { var _a; (_a = swiper.el.classList).remove.apply(_a, swiper.params.navigation.navigationDisabledClass.split(' ')); init(); update(); }; var disable = function () { var _a; (_a = swiper.el.classList).add.apply(_a, swiper.params.navigation.navigationDisabledClass.split(' ')); destroy(); }; Object.assign(swiper.navigation, { enable: enable, disable: disable, update: update, init: init, destroy: destroy, }); } //# sourceMappingURL=navigation.js.map