UNPKG

amotify

Version:

UI Component for React,NextJS,esbuild

2 lines (1 loc) 4.69 kB
import{b as w,c as m,d as D}from"../chunk-C5N2D3ZX.js";import{jsx as T}from"react/jsx-runtime";import c,{UUID as P}from"jmini";import{useState as V,useEffect as k,useRef as X}from"react";import{$$fromRoot as f}from"../@utils";import{Box as L,Flex as j}from"../atoms";import{LayoutClasses as a}from"../@styles/componentClasses";const _=t=>{let M=t,{options:{onSlideCallback:e,visibilitySurroundSlide:u=!0,autoSwipems:o=0,loop:s=!1,disableMousedrag:n=!1,disableTouch:l=!1}={},wrapper:i=r=>r,slides:S=[],slideIndex:B}=M,g=D(M,["options","wrapper","slides","slideIndex"]),[h]=V(P()),[d,b]=V({eventType:"init",index:t.slideIndex});const C=X(!1);k(()=>{b({eventType:"usr",index:t.slideIndex}),C.current||(C.current=!0)},[t.slideIndex]),k(()=>{let r=d.index+(s?1:0),v=[-1,S.length].includes(d.index);v||e&&setTimeout(()=>{e(d.index)},300);let E=f("#Swiper-"+h);if(d.eventType=="adjustLoop")E.await(250).css({transition:"0s",transform:x(r)}).children().removeClass(a("Display")).parent().children(r).addClass([a("Display"),a("LoopAdjusting")]).await(100).removeClass(a("LoopAdjusting"));else if(d.eventType=="sys")E.await(250).css({transform:x(r)}).children().removeClass(a("Display")).parent().children(r).addClass(a("Display"));else if(E.children().removeClass(a("Display")).parent().children(r).addClass(a("Display")).parent().css({transition:"0.3s",transform:x(r)}).await(250).css({transition:"0s"}),v){let y=d.index==-1?S.length-1:0;b({eventType:"adjustLoop",index:y})}o&&!v&&c.interval.once(()=>{let y=d.index+1;!s&&y>S.length-1&&(y=0),b({eventType:"usr",index:y})},o-(d.eventType=="sys"?310:0),"SwipeTimer-"+h)},[d]);let p=S.map((r,v)=>T(L,{flexSizing:"none",width:1,height:0,className:a("Child"),children:i(r)},v));s&&(p.push(m(w({},p[0]),{key:p[0].key+"-Shallow0"})),p.unshift(m(w({},p[p.length-2]),{key:p[p.length-2].key+"-Shallow0"})));let A={x:0,y:0,process:!1,effectStartAt:0,id:h,loop:s,index:d.index,minIndex:s?-1:0,maxIndex:S.length+(s?1:-1),width:0,set_event:b},N=d.index+ +!!s;return T(L,m(w({overflow:"hidden",position:"relative"},g),{className:[g.className,a("SwipeView")].join(" "),freeCSS:w({zIndex:1},g.freeCSS),"data-swipe-id":h,onPointerDown:r=>{if(r.pointerType=="touch"){if(l)return}else if(r.pointerType=="mouse"&&(n||r.buttons!=1))return;I.Start(r,A)},children:T(j,{flexWrap:!1,gap:1,transition:"long",className:[a("Rail"),a("ShowOther_"+u)].join(" "),id:"Swiper-"+h,freeCSS:w({},C.current?{}:{transform:x(N)}),children:p})}))},x=t=>`translateX( calc( ${-100*t}% - ${12*t}px ) )`,I={Start:(t,e)=>{let{x:u,y:o}=c.getCursor(t),s=t.currentTarget,n=t.target;if(["SELECT","BUTTON","LABEL","INPUT"].includes(n.tagName))return;e=m(w({},e),{x:u-e.x+window.scrollX,y:o-e.y+window.scrollY,effectStartAt:new Date().getTime(),width:f("#Swiper-"+e.id).position().width});let{swipeId:l}=s.dataset;l==e.id&&c(document).addEvent({eventID:"SwipeView.PointerMove",eventType:"pointermove",callback:i=>{I.Check(i,e)},options:{passive:!1}}).addEvent({eventID:"SwipeView.PointerUp",eventType:"pointerup",callback:i=>{I.End(i,e)},options:{passive:!1}})},Check:(t,e)=>{if(e.process)return;let{x:u,y:o}=c.getCursor(t),s=Math.abs(u-e.x+window.scrollX),n=Math.abs(o-e.y+window.scrollY);if(!(t.touches&&t.touches.length>1)&&!(n+s<15))if(n>s/2)c(document).removeEvent(["SwipeView.PointerMove"]);else{e.process=!0;let l=e.index+(e.loop?1:0);f("#Swiper-"+e.id).children(l-1).addClass(a("Display")),c(document).addEvent({eventID:"SwipeView.Check.MouseMove",eventType:"mousemove",callback:i=>{I.Move(i,e)},options:{passive:!1}}).addEvent({eventID:"SwipeView.Check.TouchMove",eventType:"touchmove",callback:i=>{I.Move(i,e)},options:{passive:!1}}),t.preventDefault();return}},Move:(t,e)=>{if(t.touches&&t.touches.length>1)return;let{x:u}=c.getCursor(t),o=u-e.x+window.scrollX,n=e.index+(e.loop?1:0)-o/e.width;if(n<0)n/=2;else if(n>e.maxIndex){let l=n-e.maxIndex;n=e.maxIndex+l/2}f("#Swiper-"+e.id).css({transition:"0s",transform:x(n)}),t.preventDefault()},End:(t,e)=>{if(e.process){let o=c.getCursor(t).x-e.x+window.scrollX,s=new Date().getTime(),n=s-e.effectStartAt,l=e.index+(e.loop?1:0),i=0;n<400?i=l-(+(o>0)*2-1):i=Math.round(l-o/e.width),i=Math.max(Math.min(i,e.maxIndex),e.minIndex),e.process=!1,l===i?(e.effectStartAt=s,f("#Swiper-"+e.id).css({transition:".2s",transform:x(i)}).await(310).css({transition:"0s"}).children().removeClass(a("Display")).parent().children(l).addClass(a("Display"))):e.set_event({eventType:"usr",index:i+e.minIndex})}c(document).removeEvent(["SwipeView.PointerMove","SwipeView.Check.MouseMove","SwipeView.Check.TouchMove","SwipeView.PointerUp"])}},R=t=>T(_,m(w({},t),{slideIndex:Math.max(Math.min(t.slideIndex,t.slides.length-1),0)}));export{R as SwipeView,R as default};