index-2eff43fa.js 5.0 KB

1
  1. import{t as e,v as a,w as t,x as i,d as l,Q as o,r as s,aE as n,y as c,c as u,ah as v,S as r,ae as h,af as p,R as d,o as f,aj as g,ak as w,a6 as m,a7 as x,k as y,a as C,ac as b,V as S,aF as z,at as M,aC as T,C as k,G as E}from"./index-d6d40644.js";const[I,O]=e("swipe"),X={loop:a,width:t,height:t,vertical:Boolean,autoplay:i(0),duration:i(500),touchable:a,lazyRender:Boolean,initialSwipe:i(0),indicatorColor:String,showIndicators:a,stopPropagation:a},Y=Symbol(I),D=k(l({name:I,props:X,emits:["change","dragStart","dragEnd"],setup(e,{emit:a,slots:t}){const i=o(),l=o(),k=s({rect:null,width:0,height:0,offset:0,active:0,swiping:!1});let E=!1;const I=n(),{children:X,linkChildren:D}=c(Y),P=u((()=>X.length)),R=u((()=>k[e.vertical?"height":"width"])),j=u((()=>e.vertical?I.deltaY.value:I.deltaX.value)),B=u((()=>k.rect?(e.vertical?k.rect.height:k.rect.width)-R.value*P.value:0)),F=u((()=>R.value?Math.ceil(Math.abs(B.value)/R.value):P.value)),A=u((()=>P.value*R.value)),G=u((()=>(k.active+P.value)%P.value)),H=u((()=>{const a=e.vertical?"vertical":"horizontal";return I.direction.value===a})),Q=u((()=>{const a={transitionDuration:"".concat(k.swiping?0:e.duration,"ms"),transform:"translate".concat(e.vertical?"Y":"X","(").concat(+k.offset.toFixed(2),"px)")};if(R.value){const t=e.vertical?"height":"width",i=e.vertical?"width":"height";a[t]="".concat(A.value,"px"),a[i]=e[i]?"".concat(e[i],"px"):""}return a})),V=(a,t=0)=>{let i=a*R.value;e.loop||(i=Math.min(i,-B.value));let l=t-i;return e.loop||(l=T(l,B.value,0)),l},W=({pace:t=0,offset:i=0,emitChange:l})=>{if(P.value<=1)return;const{active:o}=k,s=(a=>{const{active:t}=k;return a?e.loop?T(t+a,-1,P.value):T(t+a,0,F.value):t})(t),n=V(s,i);if(e.loop){if(X[0]&&n!==B.value){const e=n<B.value;X[0].setOffset(e?A.value:0)}if(X[P.value-1]&&0!==n){const e=n>0;X[P.value-1].setOffset(e?-A.value:0)}}k.active=s,k.offset=n,l&&s!==o&&a("change",G.value)},q=()=>{k.swiping=!0,k.active<=-1?W({pace:P.value}):k.active>=P.value&&W({pace:-P.value})},J=()=>{q(),I.reset(),M((()=>{k.swiping=!1,W({pace:1,emitChange:!0})}))};let K;const L=()=>clearTimeout(K),N=()=>{L(),+e.autoplay>0&&P.value>1&&(K=setTimeout((()=>{J(),N()}),+e.autoplay))},U=(a=+e.initialSwipe)=>{if(!i.value)return;const t=()=>{var t,l;if(!b(i)){const a={width:i.value.offsetWidth,height:i.value.offsetHeight};k.rect=a,k.width=+(null!=(t=e.width)?t:a.width),k.height=+(null!=(l=e.height)?l:a.height)}P.value&&-1===(a=Math.min(P.value-1,a))&&(a=P.value-1),k.active=a,k.swiping=!0,k.offset=V(a),X.forEach((e=>{e.setOffset(0)})),N()};b(i)?S().then(t):t()},Z=()=>U(k.active);let $;const _=a=>{!e.touchable||a.touches.length>1||(I.start(a),E=!1,$=Date.now(),L(),q())},ee=()=>{if(!e.touchable||!k.swiping)return;const t=Date.now()-$,i=j.value/t;if((Math.abs(i)>.25||Math.abs(j.value)>R.value/2)&&H.value){const a=e.vertical?I.offsetY.value:I.offsetX.value;let t=0;t=e.loop?a>0?j.value>0?-1:1:0:-Math[j.value>0?"ceil":"floor"](j.value/R.value),W({pace:t,emitChange:!0})}else j.value&&W({pace:0});E=!1,k.swiping=!1,a("dragEnd",{index:G.value}),N()},ae=(a,t)=>{const i=t===G.value,l=i?{backgroundColor:e.indicatorColor}:void 0;return C("i",{style:l,"class":O("indicator",{active:i})},null)};return v({prev:()=>{q(),I.reset(),M((()=>{k.swiping=!1,W({pace:-1,emitChange:!0})}))},next:J,state:k,resize:Z,swipeTo:(a,t={})=>{q(),I.reset(),M((()=>{let i;i=e.loop&&a===P.value?0===k.active?0:a:a%P.value,t.immediate?M((()=>{k.swiping=!1})):k.swiping=!1,W({pace:i-k.active,emitChange:!0})}))}}),D({size:R,props:e,count:P,activeIndicator:G}),r((()=>e.initialSwipe),(e=>U(+e))),r(P,(()=>U(k.active))),r((()=>e.autoplay),N),r([h,p,()=>e.width,()=>e.height],Z),r(d(),(e=>{"visible"===e?N():L()})),f(U),g((()=>U(k.active))),w((()=>U(k.active))),m(L),x(L),y("touchmove",(t=>{e.touchable&&k.swiping&&(I.move(t),H.value)&&(!e.loop&&(0===k.active&&j.value>0||k.active===P.value-1&&j.value<0)||(z(t,e.stopPropagation),W({offset:j.value}),E||(a("dragStart",{index:G.value}),E=!0)))}),{target:l}),()=>{var a;return C("div",{ref:i,"class":O()},[C("div",{ref:l,style:Q.value,"class":O("track",{vertical:e.vertical}),onTouchstartPassive:_,onTouchend:ee,onTouchcancel:ee},[null==(a=t["default"])?void 0:a.call(t)]),t.indicator?t.indicator({active:G.value,total:P.value}):e.showIndicators&&P.value>1?C("div",{"class":O("indicators",{vertical:e.vertical})},[Array(P.value).fill("").map(ae)]):void 0])}}})),[P,R]=e("swipe-item"),j=k(l({name:P,setup(e,{slots:a}){let t;const i=s({offset:0,inited:!1,mounted:!1}),{parent:l,index:o}=E(Y);if(!l)return;const n=u((()=>{const e={},{vertical:a}=l.props;return l.size.value&&(e[a?"height":"width"]="".concat(l.size.value,"px")),i.offset&&(e.transform="translate".concat(a?"Y":"X","(").concat(i.offset,"px)")),e})),c=u((()=>{const{loop:e,lazyRender:a}=l.props;if(!a||t)return!0;if(!i.mounted)return!1;const s=l.activeIndicator.value,n=l.count.value-1,c=0===s&&e?n:s-1,u=s===n&&e?0:s+1;return t=o.value===s||o.value===c||o.value===u,t}));return f((()=>{S((()=>{i.mounted=!0}))})),v({setOffset:e=>{i.offset=e}}),()=>{var e;return C("div",{"class":R(),style:n.value},[c.value?null==(e=a["default"])?void 0:e.call(a):null])}}}));export{D as S,j as a};