swiper
Version:
Most modern mobile touch slider and framework with hardware accelerated transitions
2 lines • 3.67 kB
JavaScript
import{g as getDocument}from"../shared/ssr-window.esm.min.mjs";import{p as isObject,e as elementChildren}from"../shared/utils.min.mjs";function Thumb({swiper:e,extendParams:s,on:i}){s({thumbs:{swiper:null,multipleActiveThumbs:!0,autoScrollOffset:0,slideThumbActiveClass:"swiper-slide-thumb-active",thumbsContainerClass:"swiper-thumbs"}});let t=!1,r=!1;function a(){const s=e.thumbs.swiper;return!(!s||s.destroyed)&&(s.params.virtual&&s.params.virtual.enabled)}function n(){const s=e.thumbs.swiper;if(!s||s.destroyed)return;const i=s.clickedIndex,t=s.clickedSlide;if(t&&t.classList.contains(e.params.thumbs.slideThumbActiveClass))return;if(null==i)return;let r;r=s.params.loop?parseInt(s.clickedSlide.getAttribute("data-swiper-slide-index"),10):i,e.params.loop?e.slideToLoop(r):e.slideTo(r)}function l(){const{thumbs:s}=e.params;if(t)return!1;t=!0;const i=e.constructor;if(s.swiper instanceof i){if(s.swiper.destroyed)return t=!1,!1;e.thumbs.swiper=s.swiper,Object.assign(e.thumbs.swiper.originalParams,{watchSlidesProgress:!0,slideToClickedSlide:!1}),Object.assign(e.thumbs.swiper.params,{watchSlidesProgress:!0,slideToClickedSlide:!1}),e.thumbs.swiper.update()}else if(isObject(s.swiper)){const t=Object.assign({},s.swiper);Object.assign(t,{watchSlidesProgress:!0,slideToClickedSlide:!1}),e.thumbs.swiper=new i(t),r=!0}return e.thumbs.swiper.el.classList.add(e.params.thumbs.thumbsContainerClass),e.thumbs.swiper.on("tap",n),a()&&e.thumbs.swiper.on("virtualUpdate",()=>{d(!1,{autoScroll:!1})}),!0}function d(s,i){const t=e.thumbs.swiper;if(!t||t.destroyed)return;let r=1;const n=e.params.thumbs.slideThumbActiveClass;if(e.params.slidesPerView>1&&!e.params.centeredSlides&&(r=e.params.slidesPerView),e.params.thumbs.multipleActiveThumbs||(r=1),r=Math.floor(r),t.slides.forEach(e=>e.classList.remove(n)),t.params.loop||a())for(let s=0;s<r;s+=1)elementChildren(t.slidesEl,`[data-swiper-slide-index="${e.realIndex+s}"]`).forEach(e=>{e.classList.add(n)});else for(let s=0;s<r;s+=1)t.slides[e.realIndex+s]&&t.slides[e.realIndex+s].classList.add(n);(i?.autoScroll??1)&&function(s){const i=e.thumbs.swiper;if(!i||i.destroyed)return;const t="auto"===i.params.slidesPerView?i.slidesPerViewDynamic():i.params.slidesPerView,r=e.params.thumbs.autoScrollOffset,a=r&&!i.params.loop;if(e.realIndex!==i.realIndex||a){const n=i.activeIndex;let l,d;if(i.params.loop){const s=i.slides.find(s=>s.getAttribute("data-swiper-slide-index")===`${e.realIndex}`);l=i.slides.indexOf(s),d=e.activeIndex>e.previousIndex?"next":"prev"}else l=e.realIndex,d=l>e.previousIndex?"next":"prev";a&&(l+="next"===d?r:-1*r),i.visibleSlidesIndexes&&i.visibleSlidesIndexes.indexOf(l)<0&&(i.params.centeredSlides?l=l>n?l-Math.floor(t/2)+1:l+Math.floor(t/2)-1:l>n&&i.params.slidesPerGroup,i.slideTo(l,s))}}(s?0:void 0)}e.thumbs={swiper:null},i("beforeInit",()=>{const{thumbs:s}=e.params;if(s&&s.swiper)if("string"==typeof s.swiper||s.swiper instanceof HTMLElement){const i=getDocument(),t=()=>{const t="string"==typeof s.swiper?i.querySelector(s.swiper):s.swiper;if(t&&t.swiper)s.swiper=t.swiper,l(),d(!0);else if(t){const i=`${e.params.eventsPrefix}init`,r=a=>{s.swiper=a.detail[0],t.removeEventListener(i,r),l(),d(!0),s.swiper.update(),e.update()};t.addEventListener(i,r)}return t},r=()=>{if(e.destroyed)return;t()||requestAnimationFrame(r)};requestAnimationFrame(r)}else l(),d(!0)}),i("slideChange update resize observerUpdate",()=>{d()}),i("setTransition",(s,i)=>{const t=e.thumbs.swiper;t&&!t.destroyed&&t.setTransition(i)}),i("beforeDestroy",()=>{const s=e.thumbs.swiper;s&&!s.destroyed&&r&&s.destroy()}),Object.assign(e.thumbs,{init:l,update:d})}export{Thumb as default};
//# sourceMappingURL=thumbs.min.mjs.map