swiper
Version:
Most modern mobile touch slider and framework with hardware accelerated transitions
2 lines • 2.54 kB
JavaScript
import{c as createShadow}from"../shared/create-shadow.min.mjs";import{e as effectInit}from"../shared/effect-init.min.mjs";import{e as effectTarget}from"../shared/effect-target.min.mjs";import{e as effectVirtualTransitionEnd}from"../shared/effect-virtual-transition-end.min.mjs";import{g as getSlideTransformEl}from"../shared/utils.min.mjs";function EffectCards({swiper:e,extendParams:t,on:a}){t({cardsEffect:{slideShadows:!0,rotate:!0,perSlideRotate:2,perSlideOffset:8}});effectInit({effect:"cards",swiper:e,on:a,setTranslate:()=>{const{slides:t,activeIndex:a,rtlTranslate:s}=e,r=e.params.cardsEffect,{startTranslate:i,isTouched:o}=e.touchEventsData,n=s?-e.translate:e.translate;for(let l=0;l<t.length;l+=1){const d=t[l],c=d.progress,f=Math.min(Math.max(c,-4),4);let m=d.swiperSlideOffset;e.params.centeredSlides&&!e.params.cssMode&&(e.wrapperEl.style.transform=`translateX(${e.minTranslate()}px)`),e.params.centeredSlides&&e.params.cssMode&&(m-=t[0].swiperSlideOffset);let p=e.params.cssMode?-m-e.translate:-m,h=0;const M=-100*Math.abs(f);let S=1,u=-r.perSlideRotate*f,w=r.perSlideOffset-.75*Math.abs(f);const $=e.virtual&&e.params.virtual.enabled?e.virtual.from+l:l,E=($===a||$===a-1)&&f>0&&f<1&&(o||e.params.cssMode)&&n<i,T=($===a||$===a+1)&&f<0&&f>-1&&(o||e.params.cssMode)&&n>i;if(E||T){const t=(1-Math.abs((Math.abs(f)-.5)/.5))**.5;u+=-28*f*t,S+=-.5*t,w+=96*t,h=(r.rotate||e.isHorizontal()?-25:0)*t*Math.abs(f)+"%"}if(p=f<0?`calc(${p}px ${s?"-":"+"} (${w*Math.abs(f)}%))`:f>0?`calc(${p}px ${s?"-":"+"} (-${w*Math.abs(f)}%))`:`${p}px`,!e.isHorizontal()){const e=h;h=p,p=e}const g=f<0?""+(1+(1-S)*f):""+(1-(1-S)*f),x=`\n translate3d(${p}, ${h}, ${M}px)\n rotateZ(${r.rotate?s?-u:u:0}deg)\n scale(${g})\n `;if(r.slideShadows){let e=d.querySelector(".swiper-slide-shadow");e||(e=createShadow("cards",d)),e&&(e.style.opacity=Math.min(Math.max((Math.abs(f)-.5)/.5,0),1))}d.style.zIndex=-Math.abs(Math.round(c))+t.length;effectTarget(r,d).style.transform=x}},setTransition:t=>{const a=e.slides.map(e=>getSlideTransformEl(e));a.forEach(e=>{e.style.transitionDuration=`${t}ms`,e.querySelectorAll(".swiper-slide-shadow").forEach(e=>{e.style.transitionDuration=`${t}ms`})}),effectVirtualTransitionEnd({swiper:e,duration:t,transformElements:a})},perspective:()=>!0,overwriteParams:()=>({_loopSwapReset:!1,watchSlidesProgress:!0,loopAdditionalSlides:e.params.cardsEffect.rotate?3:2,centeredSlides:!0,virtualTranslate:!e.params.cssMode})})}export{EffectCards as default};
//# sourceMappingURL=effect-cards.min.mjs.map