ll-package
Version:
2 lines (1 loc) • 6.37 kB
JavaScript
Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const X=require("../../../@babel/runtime/helpers/esm/objectSpread2.js"),g=require("../../../@babel/runtime/helpers/esm/extends.js"),t=require("vue"),Z=require("./Filler.js"),ee=require("./Item.js"),te=require("./ScrollBar.js"),le=require("./hooks/useHeights.js"),oe=require("./hooks/useScrollTo.js"),ne=require("./hooks/useFrameWheel.js"),re=require("./hooks/useMobileTouchMove.js"),ie=require("./hooks/useOriginScroll.js"),ae=require("../_util/vue-types/index.js"),se=require("../_util/classNames.js"),z=require("../_util/supportsPassive.js");var ce=function(o,u){var f={};for(var n in o)Object.prototype.hasOwnProperty.call(o,n)&&u.indexOf(n)<0&&(f[n]=o[n]);if(o!=null&&typeof Object.getOwnPropertySymbols=="function")for(var s=0,n=Object.getOwnPropertySymbols(o);s<n.length;s++)u.indexOf(n[s])<0&&Object.prototype.propertyIsEnumerable.call(o,n[s])&&(f[n[s]]=o[n[s]]);return f};const ue=[],de={overflowY:"auto",overflowAnchor:"none"};function fe(o,u,f,n,s,c){let{getKey:H}=c;return o.slice(u,f+1).map((r,m)=>{const i=u+m,p=s(r,i,{}),S=H(r);return t.createVNode(ee.default,{key:S,setRef:h=>n(r,h)},{default:()=>[p]})})}const he=t.defineComponent({compatConfig:{MODE:3},name:"List",inheritAttrs:!1,props:{prefixCls:String,data:ae.default.array,height:Number,itemHeight:Number,fullHeight:{type:Boolean,default:void 0},itemKey:{type:[String,Number,Function],required:!0},component:{type:[String,Object]},virtual:{type:Boolean,default:void 0},children:Function,onScroll:Function,onMousedown:Function,onMouseenter:Function,onVisibleChange:Function},setup(o,u){let{expose:f}=u;const n=t.computed(()=>{const{height:e,itemHeight:l,virtual:a}=o;return!!(a!==!1&&e&&l)}),s=t.computed(()=>{const{height:e,itemHeight:l,data:a}=o;return n.value&&a&&l*a.length>e}),c=t.reactive({scrollTop:0,scrollMoving:!1}),H=t.computed(()=>o.data||ue),r=t.shallowRef([]);t.watch(H,()=>{r.value=t.toRaw(H.value).slice()},{immediate:!0});const m=t.shallowRef(e=>{});t.watch(()=>o.itemKey,e=>{typeof e=="function"?m.value=e:m.value=l=>l==null?void 0:l[e]},{immediate:!0});const i=t.shallowRef(),p=t.shallowRef(),S=t.shallowRef(),h=e=>m.value(e),_={getKey:h};function T(e){let l;typeof e=="function"?l=e(c.scrollTop):l=e;const a=E(l);i.value&&(i.value.scrollTop=a),c.scrollTop=a}const[N,M,R,B]=le.default(r,h,null,null),d=t.reactive({scrollHeight:void 0,start:0,end:0,offset:void 0}),y=t.shallowRef(0);t.onMounted(()=>{t.nextTick(()=>{var e;y.value=((e=p.value)===null||e===void 0?void 0:e.offsetHeight)||0})}),t.onUpdated(()=>{t.nextTick(()=>{var e;y.value=((e=p.value)===null||e===void 0?void 0:e.offsetHeight)||0})}),t.watch([n,r],()=>{n.value||g.default(d,{scrollHeight:void 0,start:0,end:r.value.length-1,offset:void 0})},{immediate:!0}),t.watch([n,r,y,s],()=>{n.value&&!s.value&&g.default(d,{scrollHeight:y.value,start:0,end:r.value.length-1,offset:void 0}),i.value&&(c.scrollTop=i.value.scrollTop)},{immediate:!0}),t.watch([s,n,()=>c.scrollTop,r,B,()=>o.height,y],()=>{if(!n.value||!s.value)return;let e=0,l,a,v;const I=r.value.length,Y=r.value,K=c.scrollTop,{itemHeight:A,height:$}=o,G=K+$;for(let b=0;b<I;b+=1){const J=Y[b],Q=h(J);let V=R.get(Q);V===void 0&&(V=A);const k=e+V;l===void 0&&k>=K&&(l=b,a=e),v===void 0&&k>G&&(v=b),e=k}l===void 0&&(l=0,a=0,v=Math.ceil($/A)),v===void 0&&(v=I-1),v=Math.min(v+1,I),g.default(d,{scrollHeight:e,start:l,end:v,offset:a})},{immediate:!0});const w=t.computed(()=>d.scrollHeight-o.height);function E(e){let l=e;return Number.isNaN(w.value)||(l=Math.min(l,w.value)),l=Math.max(l,0),l}const O=t.computed(()=>c.scrollTop<=0),q=t.computed(()=>c.scrollTop>=w.value),F=ie.default(O,q);function L(e){T(e)}function C(e){var l;const{scrollTop:a}=e.currentTarget;a!==c.scrollTop&&T(a),(l=o.onScroll)===null||l===void 0||l.call(o,e)}const[x,P]=ne.default(n,O,q,e=>{T(l=>l+e)});re.default(n,i,(e,l)=>F(e,l)?!1:(x({preventDefault(){},deltaY:e}),!0));function D(e){n.value&&e.preventDefault()}const j=()=>{i.value&&(i.value.removeEventListener("wheel",x,z.default?{passive:!1}:!1),i.value.removeEventListener("DOMMouseScroll",P),i.value.removeEventListener("MozMousePixelScroll",D))};t.watchEffect(()=>{t.nextTick(()=>{i.value&&(j(),i.value.addEventListener("wheel",x,z.default?{passive:!1}:!1),i.value.addEventListener("DOMMouseScroll",P),i.value.addEventListener("MozMousePixelScroll",D))})}),t.onBeforeUnmount(()=>{j()});const U=oe.default(i,r,R,o,h,M,T,()=>{var e;(e=S.value)===null||e===void 0||e.delayHidden()});f({scrollTo:U});const W=t.computed(()=>{let e=null;return o.height&&(e=g.default({[o.fullHeight?"height":"maxHeight"]:o.height+"px"},de),n.value&&(e.overflowY="hidden",c.scrollMoving&&(e.pointerEvents="none"))),e});return t.watch([()=>d.start,()=>d.end,r],()=>{if(o.onVisibleChange){const e=r.value.slice(d.start,d.end+1);o.onVisibleChange(e,r.value)}},{flush:"post"}),{state:c,mergedData:r,componentStyle:W,onFallbackScroll:C,onScrollBar:L,componentRef:i,useVirtual:n,calRes:d,collectHeight:M,setInstance:N,sharedConfig:_,scrollBarRef:S,fillerInnerRef:p,delayHideScrollBar:()=>{var e;(e=S.value)===null||e===void 0||e.delayHidden()}}},render(){const o=g.default(g.default({},this.$props),this.$attrs),{prefixCls:u="rc-virtual-list",height:f,itemHeight:n,fullHeight:s,data:c,itemKey:H,virtual:r,component:m="div",onScroll:i,children:p=this.$slots.default,style:S,class:h}=o,_=ce(o,["prefixCls","height","itemHeight","fullHeight","data","itemKey","virtual","component","onScroll","children","style","class"]),T=se.default(u,h),{scrollTop:N}=this.state,{scrollHeight:M,offset:R,start:B,end:d}=this.calRes,{componentStyle:y,onFallbackScroll:w,onScrollBar:E,useVirtual:O,collectHeight:q,sharedConfig:F,setInstance:L,mergedData:C,delayHideScrollBar:x}=this;return t.createVNode("div",X.default({style:g.default(g.default({},S),{position:"relative"}),class:T},_),[t.createVNode(m,{class:`${u}-holder`,style:y,ref:"componentRef",onScroll:w,onMouseenter:x},{default:()=>[t.createVNode(Z.default,{prefixCls:u,height:M,offset:R,onInnerResize:q,ref:"fillerInnerRef"},{default:()=>fe(C,B,d,L,p,F)})]}),O&&t.createVNode(te.default,{ref:"scrollBarRef",prefixCls:u,scrollTop:N,height:f,scrollHeight:M,count:C.length,onScroll:E,onStartMove:()=>{this.state.scrollMoving=!0},onStopMove:()=>{this.state.scrollMoving=!1}},null)])}}),ve=he;exports.default=ve;
;