swiper
Version:
Most modern mobile touch slider and framework with hardware accelerated transitions
2 lines • 2.3 kB
JavaScript
const Grid=({swiper:e,extendParams:t,on:r})=>{function i(){return e.params.grid}let s,l,a,o;t({grid:{rows:1,fill:"column"}});const n=()=>{let t=e.params.spaceBetween??0;return"string"==typeof t&&t.indexOf("%")>=0?t=parseFloat(t.replace("%",""))/100*e.size:"string"==typeof t&&(t=parseFloat(t)),t},d=()=>{const t=e.params.virtual;return!!e.virtual&&"object"==typeof t&&null!==t&&!!t.enabled};r("init",()=>{const t=e.params.grid;o=!!(t&&(t.rows??1)>1)}),r("update",()=>{const{params:t,el:r}=e,i=t.grid,s=!!(i&&(i.rows??1)>1);o&&!s?(r.classList.remove(`${t.containerModifierClass}grid`,`${t.containerModifierClass}grid-column`),a=1,e.emitContainerClasses()):!o&&s&&(r.classList.add(`${t.containerModifierClass}grid`),"column"===i.fill&&r.classList.add(`${t.containerModifierClass}grid-column`),e.emitContainerClasses()),o=s}),e.grid={initSlides:t=>{const{slidesPerView:r}=e.params,{rows:o,fill:n}=i(),c=d()?e.virtual.slides.length:t.length;a=Math.floor(c/o),s=Math.floor(c/o)===c/o?c:Math.ceil(c/o)*o,"auto"!==r&&"row"===n&&(s=Math.max(s,Math.floor(r??1)*o)),l=s/o},unsetSlides:()=>{e.slides&&e.slides.forEach(t=>{t.swiperSlideGridSet&&(t.style.height="",t.style.setProperty(e.getDirectionLabel("margin-top"),""))})},updateSlide:(t,r,o)=>{const{slidesPerGroup:c}=e.params,p=n(),{rows:u,fill:h}=i(),f=d()?e.virtual.slides.length:o.length;let g,m,M;if("row"===h&&(c??1)>1){const e=c??1,i=Math.floor(t/(e*u)),l=t-u*e*i,a=0===i?e:Math.min(Math.ceil((f-i*u*e)/u),e);M=Math.floor(l/a),m=l-M*a+i*e,g=m+M*s/u,r.style.order=String(g)}else"column"===h?(m=Math.floor(t/u),M=t-m*u,(m>a||m===a&&M===u-1)&&(M+=1,M>=u&&(M=0,m+=1))):(M=Math.floor(t/l),m=t-M*l);const w=r;w.row=M,w.column=m,r.style.height=`calc((100% - ${(u-1)*p}px) / ${u})`,r.style.setProperty(e.getDirectionLabel("margin-top"),0!==M&&p?`${p}px`:""),w.swiperSlideGridSet=!0},updateWrapperSize:(t,r)=>{const{centeredSlides:l,roundLengths:a}=e.params,o=n(),{rows:d}=i();if(e.virtualSize=(t+o)*s,e.virtualSize=Math.ceil(e.virtualSize/d)-o,e.params.cssMode||e.wrapperEl.style.setProperty(e.getDirectionLabel("width"),`${e.virtualSize+o}px`),l){const t=[];for(let i=0;i<r.length;i+=1){let s=r[i];a&&(s=Math.floor(s)),r[i]<e.virtualSize+r[0]&&t.push(s)}r.splice(0,r.length),r.push(...t)}}}};export{Grid as default};
//# sourceMappingURL=grid.min.mjs.map