UNPKG

swiper

Version:

Most modern mobile touch slider and framework with hardware accelerated transitions

2 lines 4.12 kB
import{g as getDocument}from"../shared/ssr-window.esm.min.mjs";function Autoplay({swiper:e,extendParams:a,on:t,emit:n,params:i}){let r,o;e.autoplay={running:!1,paused:!1,timeLeft:0},a({autoplay:{enabled:!1,delay:3e3,waitForTransition:!0,disableOnInteraction:!1,stopOnLastSlide:!1,reverseDirection:!1,pauseOnMouseEnter:!1}});let s,l,p,u,d,y,m,c,g=i&&i.autoplay?i.autoplay.delay:3e3,v=i&&i.autoplay?i.autoplay.delay:3e3,T=(new Date).getTime();function f(a){e&&!e.destroyed&&e.wrapperEl&&a.target===e.wrapperEl&&(e.wrapperEl.removeEventListener("transitionend",f),c||a.detail&&a.detail.bySwiperTouchMove||O())}const w=()=>{if(e.destroyed||!e.autoplay.running)return;e.autoplay.paused?l=!0:l&&(v=s,l=!1);const a=e.autoplay.paused?s:T+v-(new Date).getTime();e.autoplay.timeLeft=a,n("autoplayTimeLeft",a,a/g),o=requestAnimationFrame(()=>{w()})},b=a=>{if(e.destroyed||!e.autoplay.running)return;cancelAnimationFrame(o),w();let t=void 0===a?e.params.autoplay.delay:a;g=e.params.autoplay.delay,v=e.params.autoplay.delay;const i=(()=>{let a;if(a=e.virtual&&e.params.virtual.enabled?e.slides.find(e=>e.classList.contains("swiper-slide-active")):e.slides[e.activeIndex],!a)return;return parseInt(a.getAttribute("data-swiper-autoplay"),10)})();!Number.isNaN(i)&&i>0&&void 0===a&&(t=i,g=i,v=i),s=t;const l=e.params.speed,p=()=>{e&&!e.destroyed&&(e.params.autoplay.reverseDirection?!e.isBeginning||e.params.loop||e.params.rewind?(e.slidePrev(l,!0,!0),n("autoplay")):e.params.autoplay.stopOnLastSlide||(e.slideTo(e.slides.length-1,l,!0,!0),n("autoplay")):!e.isEnd||e.params.loop||e.params.rewind?(e.slideNext(l,!0,!0),n("autoplay")):e.params.autoplay.stopOnLastSlide||(e.slideTo(0,l,!0,!0),n("autoplay")),e.params.cssMode&&(T=(new Date).getTime(),requestAnimationFrame(()=>{b()})))};return t>0?(clearTimeout(r),r=setTimeout(()=>{p()},t)):requestAnimationFrame(()=>{p()}),t},E=()=>{T=(new Date).getTime(),e.autoplay.running=!0,b(),n("autoplayStart")},L=()=>{e.autoplay.running=!1,clearTimeout(r),cancelAnimationFrame(o),n("autoplayStop")},D=(a,t)=>{if(e.destroyed||!e.autoplay.running)return;clearTimeout(r),a||(m=!0);const i=()=>{n("autoplayPause"),e.params.autoplay.waitForTransition?e.wrapperEl.addEventListener("transitionend",f):O()};if(e.autoplay.paused=!0,t)return y&&(s=e.params.autoplay.delay),y=!1,void i();const o=s||e.params.autoplay.delay;s=o-((new Date).getTime()-T),e.isEnd&&s<0&&!e.params.loop||(s<0&&(s=0),i())},O=()=>{e.isEnd&&s<0&&!e.params.loop||e.destroyed||!e.autoplay.running||(T=(new Date).getTime(),m?(m=!1,b(s)):b(),e.autoplay.paused=!1,n("autoplayResume"))},S=()=>{if(e.destroyed||!e.autoplay.running)return;const a=getDocument();"hidden"===a.visibilityState&&(m=!0,D(!0)),"visible"===a.visibilityState&&O()},M=a=>{"mouse"===a.pointerType&&(m=!0,c=!0,e.animating||e.autoplay.paused||D(!0))},h=a=>{"mouse"===a.pointerType&&(c=!1,e.autoplay.paused&&O())};t("init",()=>{e.params.autoplay.enabled&&(e.params.autoplay.pauseOnMouseEnter&&(e.el.addEventListener("pointerenter",M),e.el.addEventListener("pointerleave",h)),getDocument().addEventListener("visibilitychange",S),E())}),t("destroy",()=>{e.el&&"string"!=typeof e.el&&(e.el.removeEventListener("pointerenter",M),e.el.removeEventListener("pointerleave",h)),getDocument().removeEventListener("visibilitychange",S),e.autoplay.running&&L()}),t("_freeModeStaticRelease",()=>{(u||m)&&O()}),t("_freeModeNoMomentumRelease",()=>{e.params.autoplay.disableOnInteraction?L():D(!0,!0)}),t("beforeTransitionStart",(a,t,n)=>{!e.destroyed&&e.autoplay.running&&(n||!e.params.autoplay.disableOnInteraction?D(!0,!0):L())}),t("sliderFirstMove",()=>{!e.destroyed&&e.autoplay.running&&(e.params.autoplay.disableOnInteraction?L():(p=!0,u=!1,m=!1,d=setTimeout(()=>{m=!0,u=!0,D(!0)},200)))}),t("touchEnd",()=>{if(!e.destroyed&&e.autoplay.running&&p){if(clearTimeout(d),clearTimeout(r),e.params.autoplay.disableOnInteraction)return u=!1,void(p=!1);u&&e.params.cssMode&&O(),u=!1,p=!1}}),t("slideChange",()=>{!e.destroyed&&e.autoplay.running&&(y=!0)}),Object.assign(e.autoplay,{start:E,stop:L,pause:D,resume:O})}export{Autoplay as default}; //# sourceMappingURL=autoplay.min.mjs.map