UNPKG

swiper

Version:

Most modern mobile touch slider and framework with hardware accelerated transitions

2 lines 1.94 kB
import{e as elementChildren}from"../shared/utils.min.mjs";const isVirtualEnabled=e=>!!e.virtual&&!!e.params.virtual?.enabled,HashNavigation=({swiper:e,extendParams:t,emit:a,on:i})=>{let s=!1;function n(){return e.params.hashNavigation}t({hashNavigation:{enabled:!1,replaceState:!1,watchState:!1,getSlideIndex(t,a){if(isVirtualEnabled(e)){const t=e.slides.find(e=>e.getAttribute("data-hash")===a);if(!t)return 0;return parseInt(t.getAttribute("data-swiper-slide-index")||"0",10)}const i=elementChildren(e.slidesEl,`.${e.params.slideClass}[data-hash="${a}"], swiper-slide[data-hash="${a}"]`)[0];return i?e.getSlideIndex(i):0}}});const d=()=>{a("hashChange");const t=document.location.hash.replace("#",""),i=isVirtualEnabled(e)?e.slidesEl.querySelector(`[data-swiper-slide-index="${e.activeIndex}"]`):e.slides[e.activeIndex];if(t!==(i?i.getAttribute("data-hash"):"")){const a=n().getSlideIndex(e,t);if(void 0===a||Number.isNaN(a))return;e.slideTo(a)}},r=()=>{const t=n();if(!s||!t.enabled)return;const i=isVirtualEnabled(e)?e.slidesEl.querySelector(`[data-swiper-slide-index="${e.activeIndex}"]`):e.slides[e.activeIndex],d=i?i.getAttribute("data-hash")||i.getAttribute("data-history"):"";t.replaceState&&window.history&&window.history.replaceState?(window.history.replaceState(null,"",`#${d}`||""),a("hashSet")):(document.location.hash=d||"",a("hashSet"))};i("init",()=>{n().enabled&&(()=>{const t=n(),a=e.params.history;if(!t.enabled||a&&a.enabled)return;s=!0;const i=document.location.hash.replace("#","");if(i){const a=0,s=t.getSlideIndex(e,i);e.slideTo(s||0,a,e.params.runCallbacksOnInit,!0)}t.watchState&&window.addEventListener("hashchange",d)})()}),i("destroy",()=>{n().enabled&&n().watchState&&window.removeEventListener("hashchange",d)}),i("transitionEnd _freeModeNoMomentumRelease",()=>{s&&r()}),i("slideChange",()=>{s&&e.params.cssMode&&r()})};export{HashNavigation as default}; //# sourceMappingURL=hash-navigation.min.mjs.map