You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
48 lines
12 KiB
48 lines
12 KiB
import{d as ge,a0 as Ue,a1 as Ve,s as u,c as d,E as ke,v as Fe,S as Ae,G as b,F as Ne,T as he,m as Ge}from"./index-bVOhw2NF.js";import{y as qe,c as O,b as R,d as Z,a as _,f as we,u as Je,h as Ke}from"./light-Cua7cqmF.js";import{f as Qe}from"./fade-in.cssr-CltBGdAW.js";import{u as Ze}from"./use-rtl-CRyak7TN.js";import{g as en,d as ve}from"./index-C-nsH7mf.js";import{a as $,o as j}from"./delegate-CI_DDEu_.js";import{V as be}from"./VResizeObserver-Tzd5ds8d.js";import{g as nn}from"./get-precise-event-target-DhO46Lpt.js";const me=ge({render(){var l,a;return(a=(l=this.$slots).default)===null||a===void 0?void 0:a.call(l)}});function tn(l){const{left:a,right:s,top:p,bottom:o}=en(l);return`${p} ${s} ${o} ${a}`}const ln=(typeof window>"u"?!1:/iPad|iPhone|iPod/.test(navigator.platform)||navigator.platform==="MacIntel"&&navigator.maxTouchPoints>1)&&!window.MSStream;function on(){return ln}function rn(l){const a={isDeactivated:!1};let s=!1;return Ue(()=>{if(a.isDeactivated=!1,!s){s=!0;return}l()}),Ve(()=>{a.isDeactivated=!0,s||(s=!0)}),a}const an={railInsetHorizontal:"auto 2px 4px 2px",railInsetVertical:"2px 4px 2px auto",railColor:"transparent"};function sn(l){const{scrollbarColor:a,scrollbarColorHover:s,scrollbarHeight:p,scrollbarWidth:o,scrollbarBorderRadius:x}=l;return Object.assign(Object.assign({},an),{height:p,width:o,borderRadius:x,color:a,colorHover:s})}const cn={name:"Scrollbar",common:qe,self:sn},un=O("scrollbar",`
|
|
overflow: hidden;
|
|
position: relative;
|
|
z-index: auto;
|
|
height: 100%;
|
|
width: 100%;
|
|
`,[R(">",[O("scrollbar-container",`
|
|
width: 100%;
|
|
overflow: scroll;
|
|
height: 100%;
|
|
min-height: inherit;
|
|
max-height: inherit;
|
|
scrollbar-width: none;
|
|
`,[R("&::-webkit-scrollbar, &::-webkit-scrollbar-track-piece, &::-webkit-scrollbar-thumb",`
|
|
width: 0;
|
|
height: 0;
|
|
display: none;
|
|
`),R(">",[O("scrollbar-content",`
|
|
box-sizing: border-box;
|
|
min-width: 100%;
|
|
`)])])]),R(">, +",[O("scrollbar-rail",`
|
|
position: absolute;
|
|
pointer-events: none;
|
|
user-select: none;
|
|
background: var(--n-scrollbar-rail-color);
|
|
-webkit-user-select: none;
|
|
`,[Z("horizontal",`
|
|
inset: var(--n-scrollbar-rail-inset-horizontal);
|
|
height: var(--n-scrollbar-height);
|
|
`,[R(">",[_("scrollbar",`
|
|
height: var(--n-scrollbar-height);
|
|
border-radius: var(--n-scrollbar-border-radius);
|
|
right: 0;
|
|
`)])]),Z("vertical",`
|
|
inset: var(--n-scrollbar-rail-inset-vertical);
|
|
width: var(--n-scrollbar-width);
|
|
`,[R(">",[_("scrollbar",`
|
|
width: var(--n-scrollbar-width);
|
|
border-radius: var(--n-scrollbar-border-radius);
|
|
bottom: 0;
|
|
`)])]),Z("disabled",[R(">",[_("scrollbar","pointer-events: none;")])]),R(">",[_("scrollbar",`
|
|
z-index: 1;
|
|
position: absolute;
|
|
cursor: pointer;
|
|
pointer-events: all;
|
|
background-color: var(--n-scrollbar-color);
|
|
transition: background-color .2s var(--n-scrollbar-bezier);
|
|
`,[Qe(),R("&:hover","background-color: var(--n-scrollbar-color-hover);")])])])])]),dn=Object.assign(Object.assign({},we.props),{duration:{type:Number,default:0},scrollable:{type:Boolean,default:!0},xScrollable:Boolean,trigger:{type:String,default:"hover"},useUnifiedContainer:Boolean,triggerDisplayManually:Boolean,container:Function,content:Function,containerClass:String,containerStyle:[String,Object],contentClass:[String,Array],contentStyle:[String,Object],horizontalRailStyle:[String,Object],verticalRailStyle:[String,Object],onScroll:Function,onWheel:Function,onResize:Function,internalOnUpdateScrollLeft:Function,internalHoistYRail:Boolean}),fn=ge({name:"Scrollbar",props:dn,inheritAttrs:!1,setup(l){const{mergedClsPrefixRef:a,inlineThemeDisabled:s,mergedRtlRef:p}=Je(l),o=Ze("Scrollbar",p,a),x=u(null),B=u(null),L=u(null),y=u(null),T=u(null),h=u(null),v=u(null),P=u(null),C=u(null),E=u(null),I=u(null),W=u(0),Y=u(0),U=u(!1),V=u(!1);let k=!1,F=!1,m,g,ee=0,ne=0,A=0,te=0;const Se=on(),N=we("Scrollbar","-scrollbar",un,cn,l,a),G=d(()=>{const{value:e}=P,{value:n}=h,{value:t}=E;return e===null||n===null||t===null?0:Math.min(e,t*e/n+ve(N.value.self.width)*1.5)}),Re=d(()=>`${G.value}px`),q=d(()=>{const{value:e}=C,{value:n}=v,{value:t}=I;return e===null||n===null||t===null?0:t*e/n+ve(N.value.self.height)*1.5}),pe=d(()=>`${q.value}px`),xe=d(()=>{const{value:e}=P,{value:n}=W,{value:t}=h,{value:r}=E;if(e===null||t===null||r===null)return 0;{const c=t-e;return c?n/c*(r-G.value):0}}),Be=d(()=>`${xe.value}px`),ye=d(()=>{const{value:e}=C,{value:n}=Y,{value:t}=v,{value:r}=I;if(e===null||t===null||r===null)return 0;{const c=t-e;return c?n/c*(r-q.value):0}}),Te=d(()=>`${ye.value}px`),le=d(()=>{const{value:e}=P,{value:n}=h;return e!==null&&n!==null&&n>e}),oe=d(()=>{const{value:e}=C,{value:n}=v;return e!==null&&n!==null&&n>e}),ze=d(()=>{const{trigger:e}=l;return e==="none"||U.value}),Me=d(()=>{const{trigger:e}=l;return e==="none"||V.value}),z=d(()=>{const{container:e}=l;return e?e():B.value}),Pe=d(()=>{const{content:e}=l;return e?e():L.value}),re=(e,n)=>{if(!l.scrollable)return;if(typeof e=="number"){H(e,n??0,0,!1,"auto");return}const{left:t,top:r,index:c,elSize:f,position:w,behavior:i,el:S,debounce:D=!0}=e;(t!==void 0||r!==void 0)&&H(t??0,r??0,0,!1,i),S!==void 0?H(0,S.offsetTop,S.offsetHeight,D,i):c!==void 0&&f!==void 0?H(0,c*f,f,D,i):w==="bottom"?H(0,Number.MAX_SAFE_INTEGER,0,!1,i):w==="top"&&H(0,0,0,!1,i)},ie=rn(()=>{l.container||re({top:W.value,left:Y.value})}),Ce=()=>{ie.isDeactivated||M()},We=e=>{if(ie.isDeactivated)return;const{onResize:n}=l;n&&n(e),M()},He=(e,n)=>{if(!l.scrollable)return;const{value:t}=z;t&&(typeof e=="object"?t.scrollBy(e):t.scrollBy(e,n||0))};function H(e,n,t,r,c){const{value:f}=z;if(f){if(r){const{scrollTop:w,offsetHeight:i}=f;if(n>w){n+t<=w+i||f.scrollTo({left:e,top:n+t-i,behavior:c});return}}f.scrollTo({left:e,top:n,behavior:c})}}function Xe(){De(),Ee(),M()}function $e(){J()}function J(){Le(),Ye()}function Le(){g!==void 0&&window.clearTimeout(g),g=window.setTimeout(()=>{V.value=!1},l.duration)}function Ye(){m!==void 0&&window.clearTimeout(m),m=window.setTimeout(()=>{U.value=!1},l.duration)}function De(){m!==void 0&&window.clearTimeout(m),U.value=!0}function Ee(){g!==void 0&&window.clearTimeout(g),V.value=!0}function Ie(e){const{onScroll:n}=l;n&&n(e),ae()}function ae(){const{value:e}=z;e&&(W.value=e.scrollTop,Y.value=e.scrollLeft*(o!=null&&o.value?-1:1))}function Oe(){const{value:e}=Pe;e&&(h.value=e.offsetHeight,v.value=e.offsetWidth);const{value:n}=z;n&&(P.value=n.offsetHeight,C.value=n.offsetWidth);const{value:t}=T,{value:r}=y;t&&(I.value=t.offsetWidth),r&&(E.value=r.offsetHeight)}function se(){const{value:e}=z;e&&(W.value=e.scrollTop,Y.value=e.scrollLeft*(o!=null&&o.value?-1:1),P.value=e.offsetHeight,C.value=e.offsetWidth,h.value=e.scrollHeight,v.value=e.scrollWidth);const{value:n}=T,{value:t}=y;n&&(I.value=n.offsetWidth),t&&(E.value=t.offsetHeight)}function M(){l.scrollable&&(l.useUnifiedContainer?se():(Oe(),ae()))}function ce(e){var n;return!(!((n=x.value)===null||n===void 0)&&n.contains(nn(e)))}function _e(e){e.preventDefault(),e.stopPropagation(),F=!0,j("mousemove",window,ue,!0),j("mouseup",window,de,!0),ne=Y.value,A=o!=null&&o.value?window.innerWidth-e.clientX:e.clientX}function ue(e){if(!F)return;m!==void 0&&window.clearTimeout(m),g!==void 0&&window.clearTimeout(g);const{value:n}=C,{value:t}=v,{value:r}=q;if(n===null||t===null)return;const f=(o!=null&&o.value?window.innerWidth-e.clientX-A:e.clientX-A)*(t-n)/(n-r),w=t-n;let i=ne+f;i=Math.min(w,i),i=Math.max(i,0);const{value:S}=z;if(S){S.scrollLeft=i*(o!=null&&o.value?-1:1);const{internalOnUpdateScrollLeft:D}=l;D&&D(i)}}function de(e){e.preventDefault(),e.stopPropagation(),$("mousemove",window,ue,!0),$("mouseup",window,de,!0),F=!1,M(),ce(e)&&J()}function je(e){e.preventDefault(),e.stopPropagation(),k=!0,j("mousemove",window,K,!0),j("mouseup",window,Q,!0),ee=W.value,te=e.clientY}function K(e){if(!k)return;m!==void 0&&window.clearTimeout(m),g!==void 0&&window.clearTimeout(g);const{value:n}=P,{value:t}=h,{value:r}=G;if(n===null||t===null)return;const f=(e.clientY-te)*(t-n)/(n-r),w=t-n;let i=ee+f;i=Math.min(w,i),i=Math.max(i,0);const{value:S}=z;S&&(S.scrollTop=i)}function Q(e){e.preventDefault(),e.stopPropagation(),$("mousemove",window,K,!0),$("mouseup",window,Q,!0),k=!1,M(),ce(e)&&J()}ke(()=>{const{value:e}=oe,{value:n}=le,{value:t}=a,{value:r}=T,{value:c}=y;r&&(e?r.classList.remove(`${t}-scrollbar-rail--disabled`):r.classList.add(`${t}-scrollbar-rail--disabled`)),c&&(n?c.classList.remove(`${t}-scrollbar-rail--disabled`):c.classList.add(`${t}-scrollbar-rail--disabled`))}),Fe(()=>{l.container||M()}),Ae(()=>{m!==void 0&&window.clearTimeout(m),g!==void 0&&window.clearTimeout(g),$("mousemove",window,K,!0),$("mouseup",window,Q,!0)});const fe=d(()=>{const{common:{cubicBezierEaseInOut:e},self:{color:n,colorHover:t,height:r,width:c,borderRadius:f,railInsetHorizontal:w,railInsetVertical:i,railColor:S}}=N.value;return{"--n-scrollbar-bezier":e,"--n-scrollbar-color":n,"--n-scrollbar-color-hover":t,"--n-scrollbar-border-radius":f,"--n-scrollbar-width":c,"--n-scrollbar-height":r,"--n-scrollbar-rail-inset-horizontal":w,"--n-scrollbar-rail-inset-vertical":o!=null&&o.value?tn(i):i,"--n-scrollbar-rail-color":S}}),X=s?Ke("scrollbar",void 0,fe,l):void 0;return Object.assign(Object.assign({},{scrollTo:re,scrollBy:He,sync:M,syncUnifiedContainer:se,handleMouseEnterWrapper:Xe,handleMouseLeaveWrapper:$e}),{mergedClsPrefix:a,rtlEnabled:o,containerScrollTop:W,wrapperRef:x,containerRef:B,contentRef:L,yRailRef:y,xRailRef:T,needYBar:le,needXBar:oe,yBarSizePx:Re,xBarSizePx:pe,yBarTopPx:Be,xBarLeftPx:Te,isShowXBar:ze,isShowYBar:Me,isIos:Se,handleScroll:Ie,handleContentResize:Ce,handleContainerResize:We,handleYScrollMouseDown:je,handleXScrollMouseDown:_e,cssVars:s?void 0:fe,themeClass:X==null?void 0:X.themeClass,onRender:X==null?void 0:X.onRender})},render(){var l;const{$slots:a,mergedClsPrefix:s,triggerDisplayManually:p,rtlEnabled:o,internalHoistYRail:x}=this;if(!this.scrollable)return(l=a.default)===null||l===void 0?void 0:l.call(a);const B=this.trigger==="none",L=(h,v)=>b("div",{ref:"yRailRef",class:[`${s}-scrollbar-rail`,`${s}-scrollbar-rail--vertical`,h],"data-scrollbar-rail":!0,style:[v||"",this.verticalRailStyle],"aria-hidden":!0},b(B?me:he,B?null:{name:"fade-in-transition"},{default:()=>this.needYBar&&this.isShowYBar&&!this.isIos?b("div",{class:`${s}-scrollbar-rail__scrollbar`,style:{height:this.yBarSizePx,top:this.yBarTopPx},onMousedown:this.handleYScrollMouseDown}):null})),y=()=>{var h,v;return(h=this.onRender)===null||h===void 0||h.call(this),b("div",Ge(this.$attrs,{role:"none",ref:"wrapperRef",class:[`${s}-scrollbar`,this.themeClass,o&&`${s}-scrollbar--rtl`],style:this.cssVars,onMouseenter:p?void 0:this.handleMouseEnterWrapper,onMouseleave:p?void 0:this.handleMouseLeaveWrapper}),[this.container?(v=a.default)===null||v===void 0?void 0:v.call(a):b("div",{role:"none",ref:"containerRef",class:[`${s}-scrollbar-container`,this.containerClass],style:this.containerStyle,onScroll:this.handleScroll,onWheel:this.onWheel},b(be,{onResize:this.handleContentResize},{default:()=>b("div",{ref:"contentRef",role:"none",style:[{width:this.xScrollable?"fit-content":null},this.contentStyle],class:[`${s}-scrollbar-content`,this.contentClass]},a)})),x?null:L(void 0,void 0),this.xScrollable&&b("div",{ref:"xRailRef",class:[`${s}-scrollbar-rail`,`${s}-scrollbar-rail--horizontal`],style:this.horizontalRailStyle,"data-scrollbar-rail":!0,"aria-hidden":!0},b(B?me:he,B?null:{name:"fade-in-transition"},{default:()=>this.needXBar&&this.isShowXBar&&!this.isIos?b("div",{class:`${s}-scrollbar-rail__scrollbar`,style:{width:this.xBarSizePx,right:o?this.xBarLeftPx:void 0,left:o?void 0:this.xBarLeftPx},onMousedown:this.handleXScrollMouseDown}):null}))])},T=this.container?y():b(be,{onResize:this.handleContainerResize},{default:y});return x?b(Ne,null,T,L(this.themeClass,this.cssVars)):T}}),xn=fn;export{fn as S,me as W,xn as X,sn as a,cn as s,rn as u};
|