UNPKG

swiper

Version:

Most modern mobile touch slider and framework with hardware accelerated transitions

2 lines 4.42 kB
import{c as createElementIfNotDefined}from"../shared/create-element-if-not-defined.min.mjs";import{m as makeElementsArray,s as setInnerHTML}from"../shared/utils.min.mjs";const arrowSvg='<svg class="swiper-navigation-icon" width="11" height="20" viewBox="0 0 11 20" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M0.38296 20.0762C0.111788 19.805 0.111788 19.3654 0.38296 19.0942L9.19758 10.2796L0.38296 1.46497C0.111788 1.19379 0.111788 0.754138 0.38296 0.482966C0.654131 0.211794 1.09379 0.211794 1.36496 0.482966L10.4341 9.55214C10.8359 9.9539 10.8359 10.6053 10.4341 11.007L1.36496 20.0762C1.09379 20.3474 0.654131 20.3474 0.38296 20.0762Z" fill="currentColor"/></svg>';function Navigation({swiper:e,extendParams:a,on:n,emit:t}){function i(a){let n;return a&&"string"==typeof a&&e.isElement&&(n=e.el.querySelector(a)||e.hostEl.querySelector(a),n)?n:(a&&("string"==typeof a&&(n=[...document.querySelectorAll(a)]),e.params.uniqueNavElements&&"string"==typeof a&&n&&n.length>1&&1===e.el.querySelectorAll(a).length?n=e.el.querySelector(a):n&&1===n.length&&(n=n[0])),a&&!n?a:n)}function s(a,n){const t=e.params.navigation;(a=makeElementsArray(a)).forEach(a=>{a&&(a.classList[n?"add":"remove"](...t.disabledClass.split(" ")),"BUTTON"===a.tagName&&(a.disabled=n),e.params.watchOverflow&&e.enabled&&a.classList[e.isLocked?"add":"remove"](t.lockClass))})}function l(){const{nextEl:a,prevEl:n}=e.navigation;if(e.params.loop)return s(n,!1),void s(a,!1);s(n,e.isBeginning&&!e.params.rewind),s(a,e.isEnd&&!e.params.rewind)}function r(a){a.preventDefault(),(!e.isBeginning||e.params.loop||e.params.rewind)&&(e.slidePrev(),t("navigationPrev"))}function o(a){a.preventDefault(),(!e.isEnd||e.params.loop||e.params.rewind)&&(e.slideNext(),t("navigationNext"))}function d(){const a=e.params.navigation;if(e.params.navigation=createElementIfNotDefined(e,e.originalParams.navigation,e.params.navigation,{nextEl:"swiper-button-next",prevEl:"swiper-button-prev"}),!a.nextEl&&!a.prevEl)return;let n=i(a.nextEl),t=i(a.prevEl);Object.assign(e.navigation,{nextEl:n,prevEl:t}),n=makeElementsArray(n),t=makeElementsArray(t);const s=(n,t)=>{if(n){if(a.addIcons&&n.matches(".swiper-button-next,.swiper-button-prev")&&!n.querySelector("svg")){const e=document.createElement("div");setInnerHTML(e,arrowSvg),n.appendChild(e.querySelector("svg")),e.remove()}n.addEventListener("click","next"===t?o:r)}!e.enabled&&n&&n.classList.add(...a.lockClass.split(" "))};n.forEach(e=>s(e,"next")),t.forEach(e=>s(e,"prev"))}function c(){let{nextEl:a,prevEl:n}=e.navigation;a=makeElementsArray(a),n=makeElementsArray(n);const t=(a,n)=>{a.removeEventListener("click","next"===n?o:r),a.classList.remove(...e.params.navigation.disabledClass.split(" "))};a.forEach(e=>t(e,"next")),n.forEach(e=>t(e,"prev"))}a({navigation:{nextEl:null,prevEl:null,addIcons:!0,hideOnClick:!1,disabledClass:"swiper-button-disabled",hiddenClass:"swiper-button-hidden",lockClass:"swiper-button-lock",navigationDisabledClass:"swiper-navigation-disabled"}}),e.navigation={nextEl:null,prevEl:null},n("init",()=>{!1===e.params.navigation.enabled?m():(d(),l())}),n("toEdge fromEdge lock unlock",()=>{l()}),n("destroy",()=>{c()}),n("enable disable",()=>{let{nextEl:a,prevEl:n}=e.navigation;a=makeElementsArray(a),n=makeElementsArray(n),e.enabled?l():[...a,...n].filter(e=>!!e).forEach(a=>a.classList.add(e.params.navigation.lockClass))}),n("click",(a,n)=>{let{nextEl:i,prevEl:s}=e.navigation;i=makeElementsArray(i),s=makeElementsArray(s);const l=n.target;let r=s.includes(l)||i.includes(l);if(e.isElement&&!r){const e=n.path||n.composedPath&&n.composedPath();e&&(r=e.find(e=>i.includes(e)||s.includes(e)))}if(e.params.navigation.hideOnClick&&!r){if(e.pagination&&e.params.pagination&&e.params.pagination.clickable&&(e.pagination.el===l||e.pagination.el.contains(l)))return;let a;i.length?a=i[0].classList.contains(e.params.navigation.hiddenClass):s.length&&(a=s[0].classList.contains(e.params.navigation.hiddenClass)),t(!0===a?"navigationShow":"navigationHide"),[...i,...s].filter(e=>!!e).forEach(a=>a.classList.toggle(e.params.navigation.hiddenClass))}});const m=()=>{e.el.classList.add(...e.params.navigation.navigationDisabledClass.split(" ")),c()};Object.assign(e.navigation,{enable:()=>{e.el.classList.remove(...e.params.navigation.navigationDisabledClass.split(" ")),d(),l()},disable:m,update:l,init:d,destroy:c})}export{Navigation as default}; //# sourceMappingURL=navigation.min.mjs.map