UNPKG

swiper

Version:

Most modern mobile touch slider and framework with hardware accelerated transitions

2 lines 3.45 kB
import{g as getDocument}from"../shared/ssr-window.esm.min.mjs";import{o 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;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 n(){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",a),!0}function l(s){const i=e.thumbs.swiper;if(!i||i.destroyed)return;const t="auto"===i.params.slidesPerView?i.slidesPerViewDynamic():i.params.slidesPerView;let r=1;const a=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),i.slides.forEach(e=>e.classList.remove(a)),i.params.loop||i.params.virtual&&i.params.virtual.enabled)for(let s=0;s<r;s+=1)elementChildren(i.slidesEl,`[data-swiper-slide-index="${e.realIndex+s}"]`).forEach(e=>{e.classList.add(a)});else for(let s=0;s<r;s+=1)i.slides[e.realIndex+s]&&i.slides[e.realIndex+s].classList.add(a);const n=e.params.thumbs.autoScrollOffset,l=n&&!i.params.loop;if(e.realIndex!==i.realIndex||l){const r=i.activeIndex;let a,d;if(i.params.loop){const s=i.slides.find(s=>s.getAttribute("data-swiper-slide-index")===`${e.realIndex}`);a=i.slides.indexOf(s),d=e.activeIndex>e.previousIndex?"next":"prev"}else a=e.realIndex,d=a>e.previousIndex?"next":"prev";l&&(a+="next"===d?n:-1*n),i.visibleSlidesIndexes&&i.visibleSlidesIndexes.indexOf(a)<0&&(i.params.centeredSlides?a=a>r?a-Math.floor(t/2)+1:a+Math.floor(t/2)-1:a>r&&i.params.slidesPerGroup,i.slideTo(a,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,n(),l(!0);else if(t){const i=`${e.params.eventsPrefix}init`,r=a=>{s.swiper=a.detail[0],t.removeEventListener(i,r),n(),l(!0),s.swiper.update(),e.update()};t.addEventListener(i,r)}return t},r=()=>{if(e.destroyed)return;t()||requestAnimationFrame(r)};requestAnimationFrame(r)}else n(),l(!0)}),i("slideChange update resize observerUpdate",()=>{l()}),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:n,update:l})}export{Thumb as default}; //# sourceMappingURL=thumbs.min.mjs.map