UNPKG

vuux

Version:

Vue3 Nuxt3 Nuxt4 组件库

2 lines (1 loc) 950 B
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const t=require("vue"),M=(e,l)=>{const n=e.itemSize,s=e.overscan,i=t.ref(e.height),h=t.ref(0),c=t.ref(0),u=t.ref(e.list.length*n),r=t.computed(()=>typeof e.height=="number"?`${e.height}px`:e.height||"100%"),v=t.computed(()=>{const a=Math.ceil(i.value/n),x=Math.min(c.value+a+s,e.list.length);return e.list.slice(c.value,x)}),o=()=>{l.value&&(h.value=l.value.scrollTop,c.value=Math.max(Math.floor(h.value/n)-s,0))},g=()=>o(),d=()=>{l.value&&(l.value.scrollTop=0,o())},T=()=>{l.value&&(l.value.scrollTop=e.list.length*n-i.value,o())},m=a=>{l.value&&(l.value.scrollTop=a*n,o())};return t.watch(()=>e.list,()=>{u.value=e.list.length*n,t.nextTick(o)},{deep:!0}),t.onMounted(()=>{u.value=e.list.length*n,t.nextTick(o)}),{itemHeight:n,startIndex:c,totalHeight:u,heightStyle:r,visibleItems:v,onScroll:g,scrollToTop:d,scrollToBottom:T,scrollToIndex:m}};exports.useVirtualList=M;