UNPKG

swiper

Version:

Most modern mobile touch slider and framework with hardware accelerated transitions

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