1 |
- import{j as le,e as c,cV as ne,cW as v,aJ as y,aI as z,bm as oe,d as se,aK as j,r as k,x as ie,cX as ue,a as E,w as ce,h as de,b1 as V,aB as me,ci as ve,ck as pe}from"./index-24b5bd0d.js";var H=Number.isNaN||function(e){return typeof e=="number"&&e!=e};function fe(e,a){if(e.length!==a.length)return!1;for(var l=0;l<e.length;l++)if(n=e[l],r=a[l],!(n===r||H(n)&&H(r)))return!1;var n,r;return!0}const ge=()=>{const e=le().proxy.$props;return c(()=>{const a=(l,n,r)=>({});return e.perfMode?ne(a):function(l,n){n===void 0&&(n=fe);var r=null;function p(){for(var u=[],d=0;d<arguments.length;d++)u[d]=arguments[d];if(r&&r.lastThis===this&&n(u,r.lastArgs))return r.lastResult;var f=l.apply(this,u);return r={lastResult:f,lastArgs:u,lastThis:this},f}return p.clear=function(){r=null},p}(a)})},he=50,ye="itemRendered",be="scroll",K="forward",P="backward",Se="auto",we="smart",xe="start",Ne="center",ze="end",b="horizontal",B="vertical",C="rtl",W="negative",J="positive-ascending",X="positive-descending",Ee={[b]:"left",[B]:"top"},R=v({type:y([Number,Function]),required:!0}),T=v({type:Number}),O=v({type:Number,default:2}),Me=v({type:String,values:["ltr","rtl"],default:"ltr"}),$=v({type:Number,default:0}),M=v({type:Number,required:!0}),Y=v({type:String,values:["horizontal","vertical"],default:B}),_=z({className:{type:String,default:""},containerElement:{type:y([String,Object]),default:"div"},data:{type:y(Array),default:()=>oe([])},direction:Me,height:{type:[String,Number],required:!0},innerElement:{type:[String,Object],default:"div"},style:{type:y([Object,String,Array])},useIsScrolling:{type:Boolean,default:!1},width:{type:[Number,String],required:!1},perfMode:{type:Boolean,default:!0},scrollbarAlwaysOn:{type:Boolean,default:!1}}),Ie=z({cache:O,estimatedItemSize:T,layout:Y,initScrollOffset:$,total:M,itemSize:R,..._}),q={type:Number,default:6},Q={type:Number,default:0},U={type:Number,default:2},Le=z({columnCache:O,columnWidth:R,estimatedColumnWidth:T,estimatedRowHeight:T,initScrollLeft:$,initScrollTop:$,itemKey:{type:y(Function),default:({columnIndex:e,rowIndex:a})=>`${a}:${e}`},rowCache:O,rowHeight:R,totalColumn:M,totalRow:M,hScrollbarSize:q,vScrollbarSize:q,scrollbarStartGap:Q,scrollbarEndGap:U,role:String,..._}),Z=z({alwaysOn:Boolean,class:String,layout:Y,total:M,ratio:{type:Number,required:!0},clientSize:{type:Number,required:!0},scrollFrom:{type:Number,required:!0},scrollbarSize:q,startGap:Q,endGap:U,visible:Boolean}),Be=(e,a)=>e<a?K:P,Ce=e=>e==="ltr"||e===C||e===b,Re=e=>e===C;let S=null;function Te(e=!1){if(S===null||e){const a=document.createElement("div"),l=a.style;l.width="50px",l.height="50px",l.overflow="scroll",l.direction="rtl";const n=document.createElement("div"),r=n.style;return r.width="100px",r.height="100px",a.appendChild(n),document.body.appendChild(a),a.scrollLeft>0?S=X:(a.scrollLeft=1,S=a.scrollLeft===0?W:J),document.body.removeChild(a),S}return S}const Oe=se({name:"ElVirtualScrollBar",props:Z,emits:["scroll","start-move","stop-move"],setup(e,{emit:a}){const l=c(()=>e.startGap+e.endGap),n=j("virtual-scrollbar"),r=j("scrollbar"),p=k(),u=k();let d=null,f=null;const i=ie({isDragging:!1,traveled:0}),o=c(()=>ue[e.layout]),D=c(()=>e.clientSize-E(l)),ee=c(()=>({position:"absolute",width:`${b===e.layout?D.value:e.scrollbarSize}px`,height:`${b===e.layout?e.scrollbarSize:D.value}px`,[Ee[e.layout]]:"2px",right:"2px",bottom:"2px",borderRadius:"4px"})),I=c(()=>{const t=e.ratio,s=e.clientSize;if(t>=100)return Number.POSITIVE_INFINITY;if(t>=50)return t*s/100;const g=s/3;return Math.floor(Math.min(Math.max(t*s,20),g))}),te=c(()=>{if(!Number.isFinite(I.value))return{display:"none"};const t=`${I.value}px`;return function({move:g,size:N,bar:A},re){const m={},L=`translate${A.axis}(${g}px)`;return m[A.size]=N,m.transform=L,m.msTransform=L,m.webkitTransform=L,re==="horizontal"?m.height="100%":m.width="100%",m}({bar:o.value,size:t,move:i.traveled},e.layout)}),h=c(()=>Math.floor(e.clientSize-I.value-E(l))),F=()=>{window.removeEventListener("mousemove",x),window.removeEventListener("mouseup",w),document.onselectstart=f,f=null;const t=E(u);t&&(t.removeEventListener("touchmove",x),t.removeEventListener("touchend",w))},G=t=>{t.stopImmediatePropagation(),t.ctrlKey||[1,2].includes(t.button)||(i.isDragging=!0,i[o.value.axis]=t.currentTarget[o.value.offset]-(t[o.value.client]-t.currentTarget.getBoundingClientRect()[o.value.direction]),a("start-move"),(()=>{window.addEventListener("mousemove",x),window.addEventListener("mouseup",w);const s=E(u);s&&(f=document.onselectstart,document.onselectstart=()=>!1,s.addEventListener("touchmove",x),s.addEventListener("touchend",w))})())},w=()=>{i.isDragging=!1,i[o.value.axis]=0,a("stop-move"),F()},x=t=>{const{isDragging:s}=i;if(!s||!u.value||!p.value)return;const g=i[o.value.axis];if(!g)return;ve(d);const N=-1*(p.value.getBoundingClientRect()[o.value.direction]-t[o.value.client])-(u.value[o.value.offset]-g);d=pe(()=>{i.traveled=Math.max(e.startGap,Math.min(N,h.value)),a("scroll",N,h.value)})},ae=t=>{const s=Math.abs(t.target.getBoundingClientRect()[o.value.direction]-t[o.value.client])-u.value[o.value.offset]/2;i.traveled=Math.max(0,Math.min(s,h.value)),a("scroll",s,h.value)};return ce(()=>e.scrollFrom,t=>{i.isDragging||(i.traveled=Math.ceil(t*h.value))}),de(()=>{F()}),()=>V("div",{role:"presentation",ref:p,class:[n.b(),e.class,(e.alwaysOn||i.isDragging)&&"always-on"],style:ee.value,onMousedown:me(ae,["stop","prevent"]),onTouchstartPrevent:G},V("div",{ref:u,class:r.e("thumb"),style:te.value,onMousedown:G},[]))}});export{Se as A,P as B,Ne as C,he as D,ze as E,K as F,b as H,ye as I,C as R,be as S,B as V,J as a,W as b,Oe as c,Be as d,X as e,xe as f,Te as g,we as h,Ce as i,Le as j,Re as k,Z as l,ge as u,Ie as v};
|