2 lines
3.6 KiB
Java
2 lines
3.6 KiB
Java
import{cE as M,au as $,y as k}from"./index-X7Y8jykP.js";import{useEventListener as B}from"./useEventListener-BRXjwk7A.js";import{e as V,h as D,o as P,b as L,n as A,u as i,r as F,f as a,c,y as q,z,A as f,K as S,Q as p,E as R,G as T}from"./vue-vendor-DNhG1Cve.js";import{P as G}from"./index-Ckh_BVlA.js";import K from"./index-saD4h7VJ.js";import"./emoji-mart-vue-fast-R0uJEDq-.js";import"./useMenuSetting-BwQ9LkAm.js";import"./useFullContent-B3OUGaJG.js";import"./useContentHeight-vWUZcXk1.js";import"./onMountedOrActivated-DhSdLlqP.js";import"./useWindowSizeFn-C-0M9_Ul.js";import"./useContentViewHeight-Cja8zrBg.js";import"./usePageContext-9jIr04Op.js";import"./injectionKey-DPVn4AgL.js";import"./ArrowLeftOutlined-B3JgaWh-.js";import"./ArrowRightOutlined-CZG1QCpB.js";import"./index-lcIOKfa7.js";import"./dropdown-jkliuVyN.js";import"./index-B4gPlWQt.js";import"./eagerComputed-BTlOruLW.js";import"./transButton-B2CWzlQO.js";import"./operationUnit-vCu2co3e.js";const Q={height:[Number,String],maxHeight:[Number,String],maxWidth:[Number,String],minHeight:[Number,String],minWidth:[Number,String],width:[Number,String],bench:{type:[Number,String],default:0},itemHeight:{type:[Number,String],required:!0},items:{type:Array,default:()=>[]}},w="virtual-scroll";function s(t,r="px"){if(!(t==null||t===""))return isNaN(+t)?String(t):`${Number(t)}${r}`}const U=V({name:"VirtualScroll",props:Q,setup(t,{slots:r}){const m=F(null),o=L({first:0,last:0,scrollTop:0}),_=c(()=>parseInt(t.bench,10)),u=c(()=>parseInt(t.itemHeight,10)),h=c(()=>Math.max(0,o.first-i(_))),g=c(()=>Math.min((t.items||[]).length,o.last+i(_))),v=c(()=>({height:s((t.items||[]).length*i(u))})),d=c(()=>{const e={},n=s(t.height),l=s(t.minHeight),y=s(t.minWidth),N=s(t.maxHeight),x=s(t.maxWidth),W=s(t.width);return n&&(e.height=n),l&&(e.minHeight=l),y&&(e.minWidth=y),N&&(e.maxHeight=N),x&&(e.maxWidth=x),W&&(e.width=W),e});D([()=>t.itemHeight,()=>t.height],()=>{b()});function H(e){const n=i(m);if(!n)return 0;const l=parseInt(t.height||0,10)||n.clientHeight;return e+Math.ceil(l/i(u))}function C(){return Math.floor(o.scrollTop/i(u))}function b(){const e=i(m);e&&(o.scrollTop=e.scrollTop,o.first=C(),o.last=H(o.first))}function E(){const{items:e=[]}=t;return e.slice(i(h),i(g)).map(I)}function I(e,n){n+=i(h);const l=s(n*i(u));return a("div",{class:`${w}__item`,style:{top:l},key:n},[M(r,"default",{index:n,item:e})])}return P(()=>{o.last=H(0),A(()=>{const e=i(m);e&&B({el:e,name:"scroll",listener:b,wait:0})})}),()=>a("div",{class:w,style:i(d),ref:m},[a("div",{class:`${w}__container`,style:i(v)},[E()])])}}),j=$(U,[["__scopeId","data-v-f9d5e69c"]]),J=k(j),O=(()=>{const t=[];for(let r=1;r<2e4;r++)t.push({title:"列表项"+r});return t})(),X=V({components:{VScroll:J,Divider:K,PageWrapper:G},setup(){return{data:O}}}),Y={class:"virtual-scroll-demo-wrap"},Z={class:"virtual-scroll-demo__item"},tt={class:"virtual-scroll-demo-wrap"},et={class:"virtual-scroll-demo__item"};function it(t,r,m,o,_,u){const h=S("Divider"),g=S("VScroll"),v=S("PageWrapper");return z(),q(v,{class:"virtual-scroll-demo"},{default:f(()=>[a(h,null,{default:f(()=>[...r[0]||(r[0]=[R("基础滚动示例",-1)])]),_:1}),p("div",Y,[a(g,{itemHeight:41,items:t.data,height:300,width:300},{default:f(({item:d})=>[p("div",Z,T(d.title),1)]),_:1},8,["items"])]),a(h,null,{default:f(()=>[...r[1]||(r[1]=[R("即使不可见,也预先加载50条数据,防止空白",-1)])]),_:1}),p("div",tt,[a(g,{itemHeight:41,items:t.data,height:300,width:300,bench:50},{default:f(({item:d})=>[p("div",et,T(d.title),1)]),_:1},8,["items"])])]),_:1})}const xt=$(X,[["render",it],["__scopeId","data-v-7316c0b2"]]);export{xt as default};
|