(function(f,e){typeof exports=="object"&&typeof module<"u"?e(exports,require("vue")):typeof define=="function"&&define.amd?define(["exports","vue"],e):(f=typeof globalThis<"u"?globalThis:f||self,e(f["seamless-scrolling"]={},f.Vue))})(this,function(f,e){"use strict";function G(n,d,m){var F=m||{},l=F.noTrailing,M=l===void 0?!1:l,W=F.noLeading,b=W===void 0?!1:W,y=F.debounceMode,i=y===void 0?void 0:y,u,V=!1,T=0;function r(){u&&clearTimeout(u)}function c(o){var p=o||{},s=p.upcomingOnly,S=s===void 0?!1:s;r(),V=!S}function v(){for(var o=arguments.length,p=new Array(o),s=0;s<o;s++)p[s]=arguments[s];var S=this,g=Date.now()-T;if(V)return;function h(){T=Date.now(),d.apply(S,p)}function x(){u=void 0}!b&&i&&!u&&h(),r(),i===void 0&&g>n?b?(T=Date.now(),M||(u=setTimeout(i?x:h,n))):h():M!==!0&&(u=setTimeout(i?x:h,i===void 0?n-g:n))}return v.cancel=c,v}function J(n){const d=e.getCurrentInstance();d&&Object.assign(d.proxy,n)}const K={modelValue:{type:Boolean,default:!0},list:{type:Array,required:!0,default:[]},step:{type:Number,default:1},limitScrollNum:{type:Number,default:1},hover:{type:Boolean,default:!1},direction:{type:String,default:"up"},singleHeight:{type:Number,default:0},singleWidth:{type:Number,default:0},singleWaitTime:{type:Number,default:1e3},isRemUnit:{type:Boolean,default:!1},isWatch:{type:Boolean,default:!0},delay:{type:Number,default:0},ease:{type:[String,Object],default:"linear"},count:{type:Number,default:-1},copyNum:{type:Number,default:1},wheel:{type:Boolean,default:!1},singleLine:{type:Boolean,default:!1},lessVisibleAreaScrolling:{type:Boolean,default:!1}};globalThis.window.cancelAnimationFrame=function(){return globalThis.window.cancelAnimationFrame||globalThis.window.webkitCancelAnimationFrame||globalThis.window.mozCancelAnimationFrame||globalThis.window.oCancelAnimationFrame||globalThis.window.msCancelAnimationFrame||function(n){return globalThis.window.clearTimeout(n)}}(),globalThis.window.requestAnimationFrame=function(){return globalThis.window.requestAnimationFrame||globalThis.window.webkitRequestAnimationFrame||globalThis.window.mozRequestAnimationFrame||globalThis.window.oRequestAnimationFrame||globalThis.window.msRequestAnimationFrame||function(n){return globalThis.window.setTimeout(n,1e3/60)}}();function Q(n){n&&typeof n!="boolean"&&n.length>100&&console.warn(`数据达到了${n.length}条有点多哦~,可能会造成部分老旧浏览器卡顿。`)}const H=e.defineComponent({name:"vue3-seamless-scroll",inheritAttrs:!1,props:K,emits:["stop","count","move"],setup(n,{slots:d,emit:m,attrs:F}){const l=n,M=e.ref(null),W=e.ref(null),b=e.ref(null),y=e.ref(null),i=e.ref(null),u=e.ref(0),V=e.ref(0),T=e.ref(!1),r=e.ref(0),c=e.ref(0),v=e.ref(!1),o=e.ref(0),p=e.ref(375),s=e.computed(()=>l.list?g.value?u.value>=p.value&&l.list.length>=l.limitScrollNum:l.list.length>=l.limitScrollNum:!1),S=e.computed(()=>({width:u.value?`${u.value}px`:"auto",transform:`translate(${r.value}px,${c.value}px)`,transition:`all ${typeof l.ease=="string"?l.ease:"cubic-bezier("+l.ease.x1+","+l.ease.y1+","+l.ease.x2+","+l.ease.y2+")"} ${l.delay}ms`,overflow:"hidden",display:l.singleLine?"flex":"block"})),g=e.computed(()=>l.direction=="left"||l.direction=="right"),h={overflow:"hidden",display:l.singleLine?"flex":"block",flexShrink:l.singleLine?0:1},x=e.computed(()=>{if(g.value)return l.lessVisibleAreaScrolling&&T.value?Object.assign({},h,{flex:1}):h}),j=e.computed(()=>l.isRemUnit?parseInt(globalThis.window.getComputedStyle(globalThis.document.documentElement,null).fontSize):1),C=e.computed(()=>l.singleWidth*j.value),B=e.computed(()=>l.singleHeight*j.value),_=e.computed(()=>{let t,a=l.step;return g.value?t=C.value:t=B.value,t>0&&t%a>0&&console.error("如果设置了单步滚动，step 需是单步大小的约数，否则无法保证单步滚动结束的位置是否准确。~~~~~"),a}),A=()=>{cancelAnimationFrame(y.value),y.value=null},O=(t,a,L)=>{y.value=requestAnimationFrame(function(){const I=V.value/2,U=u.value/2;if(t==="up"?(Math.abs(c.value)>=I&&(c.value=0,o.value+=1,m("count",o.value)),c.value-=a):t==="down"?(c.value>=0&&(c.value=I*-1,o.value+=1,m("count",o.value)),c.value+=a):t==="left"?(Math.abs(r.value)>=U&&(r.value=0,o.value+=1,m("count",o.value)),r.value-=a):t==="right"&&(r.value>=0&&(r.value=U*-1,o.value+=1,m("count",o.value)),r.value+=a),L)return;let{singleWaitTime:Y}=l;i.value&&clearTimeout(i.value),B.value?Math.abs(c.value)%B.value<a?i.value=setTimeout(()=>{w()},Y):w():C.value&&Math.abs(r.value)%C.value<a?i.value=setTimeout(()=>{w()},Y):w()})},w=()=>{if(A(),v.value||!s.value||o.value===l.count){m("stop",o.value),o.value=0;return}O(l.direction,_.value,!1)},D=()=>{Q(l.list),P(),s.value?(V.value=b.value.offsetHeight,l.modelValue&&w()):(A(),c.value=r.value=0)},N=()=>{v.value=!1,w()},$=()=>{v.value=!0,i.value&&clearTimeout(i.value),A()},R=e.computed(()=>l.hover&&l.modelValue&&s.value),ee=G(30,t=>{A();const a=B.value?B.value:15;t.deltaY<0&&O("down",a,!0),t.deltaY>0&&O("up",a,!0)}),le=t=>{ee(t)},E=()=>{A(),v.value=!1,D()};J({Reset:()=>{E()}}),e.watch(()=>l.list,()=>{l.isWatch&&e.nextTick(()=>{E()})},{deep:!0}),e.watch(()=>l.modelValue,t=>{if(t)return N();$()}),e.watch(()=>l.count,t=>{t!==0&&N()}),e.onBeforeMount(()=>{A(),clearTimeout(i.value)});const P=()=>{if(g.value){let t=W.value.offsetWidth,a=M.value.getBoundingClientRect(),{width:L=375}=a;t=t*2+2,l.singleLine&&l.lessVisibleAreaScrolling&&t<=L&&(t=L*2,T.value=!0),u.value=t,p.value=L,console.log("slotListWidth2:",t)}};e.onMounted(()=>{P(),s.value&&D()});const{default:q,html:z}=d,te=new Array(l.copyNum).fill(null),k=()=>e.createVNode(e.Fragment,null,[e.createVNode("div",{ref:W,style:x.value,class:"222"},[q&&q()]),s.value?te.map(()=>z&&typeof z=="function"?e.createVNode("div",{style:x.value},[z()]):e.createVNode("div",{style:x.value},[q&&q()])):null]);return()=>e.createVNode("div",{ref:M,class:F.class},[l.wheel&&l.hover?e.createVNode("div",{ref:b,style:S.value,class:"wheel-class",onMouseenter:()=>{R.value&&$()},onMouseleave:()=>{R.value&&N()},onWheel:t=>{R.value&&le(t)}},[k()]):e.createVNode("div",{ref:b,style:S.value,class:"hover-class",onMouseenter:()=>{R.value&&$()},onMouseleave:()=>{R.value&&N()},onTouchstart:()=>{$()},onTouchmove:()=>{N()},onTouchend:()=>{N()}},[k()])])}}),X=function(n,d={}){n.component(d.name||H.name,H)};function Z(n){n.use(X)}f.SeamlessScrolling=H,f.default=Z,Object.defineProperties(f,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}})});
