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