PageSourceSearch

https://workspace.amy.vc/build/assets/ScrollArea-CR5Vazy_.js

js amy.vc collected 2026-09-29 04:04:17 UTC 17,761 bytes, 1 lines download raw bytes

1import{c as W}from"./createContext-DotT5HnY.js";import{u as ae}from"./useDirection-BajPvpr3.js";import{u as R}from"./useForwardExpose-EU6gKQUl.js";import{P as I}from"./Primitive-Df2ZtYIB.js";import{d as A,M,o as b,a as S,w as p,l as g,A as B,u as l,j as w,h as Y,E as y,e as U,g as E,m as x,z as H,f as $,Q as N,c as ne,i as se,b as ie,F as ce,bB as ue}from"./runtime-core.esm-bundler-BUvReHWE.js";import{c as O}from"./index-CKGhAOWA.js";import{u as de}from"./useNonce-B7wjIY0m.js";import{c as Z}from"./utils-CbKt2VT1.js";import{c as fe}from"./clamp-BstbYvQo.js";import{P as z,a as ee}from"./Presence-C94u67O_.js";import{d as F,m as ve,r as re}from"./index-C_ruiPkq.js";const[T,pe]=W("ScrollAreaRoot");var he=A({__name:"ScrollAreaRoot",props:{type:{type:String,required:!1,default:"hover"},dir:{type:String,required:!1},scrollHideDelay:{type:Number,required:!1,default:600},asChild:{type:Boolean,required:!1},as:{type:null,required:!1}},setup(i,{expose:e}){const a=i,r=w(0),t=w(0),o=w(),s=w(),n=w(),u=w(),d=w(!1),f=w(!1),{type:_,dir:h,scrollHideDelay:C}=M(a),P=ae(h);function L(){o.value?.scrollTo({top:0})}function D(){o.value?.scrollTo({top:0,left:0})}e({viewport:o,scrollTop:L,scrollTopLeft:D});const{forwardRef:c,currentElement:m}=R();return pe({type:_,dir:P,scrollHideDelay:C,scrollArea:m,viewport:o,onViewportChange:v=>{o.value=v||void 0},content:s,onContentChange:v=>{s.value=v},scrollbarX:n,scrollbarXEnabled:d,scrollbarY:u,scrollbarYEnabled:f,onScrollbarXChange:v=>{n.value=v||void 0},onScrollbarYChange:v=>{u.value=v||void 0},onScrollbarXEnabledChange:v=>{d.value=v},onScrollbarYEnabledChange:v=>{f.value=v},onCornerWidthChange:v=>{r.value=v},onCornerHeightChange:v=>{t.value=v}}),(v,Q)=>(b(),S(l(I),{ref:l(c),"as-child":a.asChild,as:v.as,dir:l(P),style:B({position:"relative","--reka-scroll-area-corner-width":`${r.value}px`,"--reka-scroll-area-corner-height":`${t.value}px`})},{default:p(()=>[g(v.$slots,"default")]),_:3},8,["as-child","as","dir","style"]))}}),_e=he,me=A({__name:"ScrollAreaCornerImpl",setup(i){const e=T(),a=w(0),r=w(0),t=E(()=>!!a.value&&!!r.value);function o(){const n=e.scrollbarX.value?.offsetHeight||0;e.onCornerHeightChange(n),r.value=n}function s(){const n=e.scrollbarY.value?.offsetWidth||0;e.onCornerWidthChange(n),a.value=n}return O(e.scrollbarX.value,o),O(e.scrollbarY.value,s),Y(()=>e.scrollbarX.value,o),Y(()=>e.scrollbarY.value,s),(n,u)=>t.value?(b(),S(l(I),y({key:0,style:{width:`${a.value}px`,height:`${r.value}px`,position:"absolute",right:l(e).dir.value==="ltr"?0:void 0,left:l(e).dir.value==="rtl"?0:void 0,bottom:0}},n.$parent?.$props),{default:p(()=>[g(n.$slots,"default")]),_:3},16,["style"])):U("v-if",!0)}}),be=me,Se=A({__name:"ScrollAreaCorner",props:{asChild:{type:Boolean,required:!1},as:{type:null,required:!1}},setup(i){const e=i,{forwardRef:a}=R(),r=T(),t=E(()=>!!r.scrollbarX.value&&!!r.scrollbarY.value),o=E(()=>r.type.value!=="scroll"&&t.value);return(s,n)=>o.value?(b(),S(be,y({key:0},e,{ref:l(a)}),{default:p(()=>[g(s.$slots,"default")]),_:3},16)):U("v-if",!0)}}),ge=Se;function te(i,e){return a=>{if(i[0]===i[1]||e[0]===e[1])return e[0];const r=(e[1]-e[0])/(i[1]-i[0]);return e[0]+r*(a-i[0])}}function V(i){const e=le(i.viewport,i.content),a=i.scrollbar.paddingStart+i.scrollbar.paddingEnd,r=(i.scrollbar.size-a)*e;return Math.max(r,18)}function le(i,e){const a=i/e;return Number.isNaN(a)?0:a}function we(i,e=()=>{}){let a={left:i.scrollLeft,top:i.scrollTop},r=0;return(function t(){const o={left:i.scrollLeft,top:i.scrollTop},s=a.left!==o.left,n=a.top!==o.top;(s||n)&&e(),a=o,r=window.requestAnimationFrame(t)})(),()=>window.cancelAnimationFrame(r)}function J(i,e,a="ltr"){const r=V(e),t=e.scrollbar.paddingStart+e.scrollbar.paddingEnd,o=e.scrollbar.size-t,s=e.content-e.viewport,n=o-r,u=a==="ltr"?[0,s]:[s*-1,0],d=fe(i,u[0],u[1]);return te([0,s],[0,n])(d)}function q(i){return i?Number.parseInt(i,10):0}function Ce(i,e,a,r="ltr"){const t=V(a),o=t/2,s=e||o,n=t-s,u=a.scrollbar.paddingStart+s,d=a.scrollbar.size-a.scrollbar.paddingEnd-n,f=a.content-a.viewport,_=r==="ltr"?[0,f]:[f*-1,0];return te([u,d],_)(i)}function K(i,e){return i>0&&i<e}var ye=A({__name:"ScrollAreaScrollbarX",setup(i){const e=T(),a=X(),{forwardRef:r,currentElement:t}=R();x(()=>{t.value&&e.onScrollbarXChange(t.value)}),H(()=>{e.onScrollbarXChange(null)});const o=E(()=>a.sizes.value);return(s,n)=>(b(),S(oe,{ref:l(r),"is-horizontal":!0,"data-orientation":"horizontal",style:B({bottom:0,left:l(e).dir.value==="rtl"?"var(--reka-scroll-area-corner-width)":0,right:l(e).dir.value==="ltr"?"var(--reka-scroll-area-corner-width)":0,"--reka-scroll-area-thumb-width":o.value?`${l(V)(o.value)}px`:void 0}),onOnDragScroll:n[0]||(n[0]=u=>l(a).onDragScroll(u.x))},{default:p(()=>[g(s.$slots,"default")]),_:3},8,["style"]))}}),Ee=ye,Ae=A({__name:"ScrollAreaScrollbarY",setup(i){const e=T(),a=X(),{forwardRef:r,currentElement:t}=R();x(()=>{t.value&&e.onScrollbarYChange(t.value)}),H(()=>{e.onScrollbarYChange(null)});const o=E(()=>a.sizes.value);return(s,n)=>(b(),S(oe,{ref:l(r),"is-horizontal":!1,"data-orientation":"vertical",style:B({top:0,right:l(e).dir.value==="ltr"?0:void 0,left:l(e).dir.value==="rtl"?0:void 0,bottom:"var(--reka-scroll-area-corner-height)","--reka-scroll-area-thumb-height":o.value?`${l(V)(o.value)}px`:void 0}),onOnDragScroll:n[0]||(n[0]=u=>l(a).onDragScroll(u.y))},{default:p(()=>[g(s.$slots,"default")]),_:3},8,["style"]))}}),Pe=Ae,Re=A({__name:"ScrollAreaScrollbarAuto",props:{forceMount:{type:Boolean,required:!1}},setup(i){const e=T(),a=k(),{forwardRef:r}=R(),t=w(!1),o=F(()=>
1{if(e.viewport.value){const s=e.viewport.value.offsetWidth<e.viewport.value.scrollWidth,n=e.viewport.value.offsetHeight<e.viewport.value.scrollHeight;t.value=a.isHorizontal.value?s:n}},10);return x(()=>o()),O(e.viewport,o),O(e.content,o),(s,n)=>(b(),S(l(z),{present:s.forceMount||t.value},{default:p(()=>[$(G,y(s.$attrs,{ref:l(r),"data-state":t.value?"visible":"hidden"}),{default:p(()=>[g(s.$slots,"default")]),_:3},16,["data-state"])]),_:3},8,["present"]))}}),j=Re,Te=A({inheritAttrs:!1,__name:"ScrollAreaScrollbarGlimpse",props:{forceMount:{type:Boolean,required:!1}},setup(i){const e=T(),a=k(),{forwardRef:r}=R(),{state:t,dispatch:o}=ee("hidden",{hidden:{POINTER_ENTER:"glimpse",SCROLL:"scrolling"},glimpse:{HIDE:"hidden",POINTER_LEAVE:"hidden",SCROLL:"scrolling",POINTER_ENTER:"glimpse"},scrolling:{SCROLL_END:"idle",POINTER_ENTER:"interacting"},interacting:{SCROLL:"interacting",POINTER_LEAVE:"idle"},idle:{HIDE:"hidden",SCROLL:"scrolling",POINTER_ENTER:"interacting"}}),s=E(()=>t.value!=="hidden");function n(){o("POINTER_ENTER")}function u(){o("POINTER_LEAVE")}const d=F(()=>o("SCROLL_END"),100);return N(f=>{if(t.value==="glimpse"){const _=window.setTimeout(o,e.scrollHideDelay.value,"HIDE");f(()=>{window.clearTimeout(_)})}}),N(f=>{if(t.value==="idle"){const _=window.setTimeout(o,e.scrollHideDelay.value,"HIDE");f(()=>{window.clearTimeout(_)})}}),N(f=>{const _=e.viewport.value,h=a.isHorizontal.value?"scrollLeft":"scrollTop";if(_){let C=_[h];const P=()=>{const L=_[h];C!==L&&(o("SCROLL"),d()),C=L};_.addEventListener("scroll",P),f(()=>{_.removeEventListener("scroll",P)})}}),x(()=>{const f=e.scrollArea.value;f&&(f.addEventListener("pointerenter",n),f.addEventListener("pointerleave",u))}),H(()=>{const f=e.scrollArea.value;f&&(f.removeEventListener("pointerenter",n),f.removeEventListener("pointerleave",u))}),(f,_)=>(b(),S(l(z),{present:f.forceMount||s.value},{default:p(()=>[$(j,y(f.$attrs,{ref:l(r),"data-state":s.value?"visible":"hidden"}),{default:p(()=>[g(f.$slots,"default")]),_:3},16,["data-state"])]),_:3},8,["present"]))}}),Le=Te,$e=A({inheritAttrs:!1,__name:"ScrollAreaScrollbarHover",props:{forceMount:{type:Boolean,required:!1}},setup(i){const e=T(),{forwardRef:a}=R();let r;const t=w(!1);function o(){window.clearTimeout(r),t.value=!0}function s(){r=window.setTimeout(()=>{t.value=!1},e.scrollHideDelay.value)}return x(()=>{const n=e.scrollArea.value;n&&(n.addEventListener("pointerenter",o),n.addEventListener("pointerleave",s))}),H(()=>{const n=e.scrollArea.value;n&&(window.clearTimeout(r),n.removeEventListener("pointerenter",o),n.removeEventListener("pointerleave",s))}),(n,u)=>(b(),S(l(z),{present:n.forceMount||t.value},{default:p(()=>[$(j,y(n.$attrs,{ref:l(a),"data-state":t.value?"visible":"hidden"}),{default:p(()=>[g(n.$slots,"default")]),_:3},16,["data-state"])]),_:3},8,["present"]))}}),De=$e,xe=A({__name:"ScrollAreaScrollbarScroll",props:{forceMount:{type:Boolean,required:!1}},setup(i){const e=T(),a=k(),{forwardRef:r}=R(),{state:t,dispatch:o}=ee("hidden",{hidden:{SCROLL:"scrolling"},scrolling:{SCROLL_END:"idle",POINTER_ENTER:"interacting"},interacting:{SCROLL:"interacting",POINTER_LEAVE:"idle"},idle:{HIDE:"hidden",SCROLL:"scrolling",POINTER_ENTER:"interacting"}}),s=E(()=>t.value!=="hidden");N(u=>{if(t.value==="idle"){const d=window.setTimeout(o,e.scrollHideDelay.value,"HIDE");u(()=>{window.clearTimeout(d)})}});const n=F(()=>o("SCROLL_END"),100);return N(u=>{const d=e.viewport.value,f=a.isHorizontal.value?"scrollLeft":"scrollTop";if(d){let _=d[f];const h=()=>{const C=d[f];_!==C&&(o("SCROLL"),n()),_=C};d.addEventListener("scroll",h),u(()=>{d.removeEventListener("scroll",h)})}}),(u,d)=>(b(),S(l(z),{present:u.forceMount||s.value},{default:p(()=>[$(G,y(u.$attrs,{ref:l(r),"data-state":s.value?"visible":"hidden"}),{default:p(()=>[g(u.$slots,"default")]),_:3},16,["data-state"])]),_:3},8,["present"]))}}),He=xe;const[k,Ie]=W("ScrollAreaScrollbar");var Oe=A({inheritAttrs:!1,__name:"ScrollAreaScrollbar",props:{orientation:{type:String,required:!1,default:"vertical"},forceMount:{type:Boolean,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1,default:"div"}},setup(i){const e=i,{forwardRef:a}=R(),r=T(),t=E(()=>e.orientation==="horizontal");Y(t,()=>{t.value?r.onScrollbarXEnabledChange(!0):r.onScrollbarYEnabledChange(!0)},{immediate:!0}),H(()=>{r.onScrollbarXEnabledChange(!1),r.onScrollbarYEnabledChange(!1)});const{orientation:o,forceMount:s,asChild:n,as:u}=M(e);return Ie({orientation:o,forceMount:s,isHorizontal:t,as:u,asChild:n}),(d,f)=>l(r).type.value==="hover"?(b(),S(De,y({key:0},d.$attrs,{ref:l(a),"force-mount":l(s)}),{default:p(()=>[g(d.$slots,"default")]),_:3}
1,16,["force-mount"])):l(r).type.value==="scroll"?(b(),S(He,y({key:1},d.$attrs,{ref:l(a),"force-mount":l(s)}),{default:p(()=>[g(d.$slots,"default")]),_:3},16,["force-mount"])):l(r).type.value==="glimpse"?(b(),S(Le,y({key:2},d.$attrs,{ref:l(a),"force-mount":l(s)}),{default:p(()=>[g(d.$slots,"default")]),_:3},16,["force-mount"])):l(r).type.value==="auto"?(b(),S(j,y({key:3},d.$attrs,{ref:l(a),"force-mount":l(s)}),{default:p(()=>[g(d.$slots,"default")]),_:3},16,["force-mount"])):l(r).type.value==="always"?(b(),S(G,y({key:4},d.$attrs,{ref:l(a),"data-state":"visible"}),{default:p(()=>[g(d.$slots,"default")]),_:3},16)):U("v-if",!0)}}),Ne=Oe;const[X,ke]=W("ScrollAreaScrollbarVisible");var qe=A({__name:"ScrollAreaScrollbarVisible",setup(i){const e=T(),a=k(),{forwardRef:r}=R(),t=w({content:0,viewport:0,scrollbar:{size:0,paddingStart:0,paddingEnd:0}}),o=E(()=>{const c=le(t.value.viewport,t.value.content);return c>0&&c<1}),s=w(),n=w(0);function u(c,m){if(C.value){const v=e.viewport.value.scrollLeft+c.deltaY;e.viewport.value.scrollLeft=v,K(v,m)&&c.preventDefault()}else{const v=e.viewport.value.scrollTop+c.deltaY;e.viewport.value.scrollTop=v,K(v,m)&&c.preventDefault()}}function d(c,m){C.value?n.value=m.x:n.value=m.y}function f(c){n.value=0}function _(c){t.value=c}function h(c,m){return Ce(c,n.value,t.value,m)}const C=E(()=>a.isHorizontal.value);function P(c){C.value?e.viewport.value.scrollLeft=h(c,e.dir.value):e.viewport.value.scrollTop=h(c)}function L(){if(C.value){if(e.viewport.value&&s.value){const c=e.viewport.value.scrollLeft,m=J(c,t.value,e.dir.value);s.value.style.transform=`translate3d(${m}px, 0, 0)`}}else if(e.viewport.value&&s.value){const c=e.viewport.value.scrollTop,m=J(c,t.value);s.value.style.transform=`translate3d(0, ${m}px, 0)`}}function D(c){s.value=c}return ke({sizes:t,hasThumb:o,handleWheelScroll:u,handleThumbDown:d,handleThumbUp:f,handleSizeChange:_,onThumbPositionChange:L,onThumbChange:D,onDragScroll:P}),(c,m)=>C.value?(b(),S(Ee,y({key:0},c.$attrs,{ref:l(r)}),{default:p(()=>[g(c.$slots,"default")]),_:3},16)):(b(),S(Pe,y({key:1},c.$attrs,{ref:l(r)}),{default:p(()=>[g(c.$slots,"default")]),_:3},16))}}),G=qe,Be=A({__name:"ScrollAreaScrollbarImpl",props:{isHorizontal:{type:Boolean,required:!0}},emits:["onDragScroll","onWheelScroll","onThumbPointerDown"],setup(i,{emit:e}){const a=i,r=e,t=T(),o=X(),s=k(),{forwardRef:n,currentElement:u}=R(),d=w(""),f=w();function _(c){if(f.value){const m=c.clientX-f.value?.left,v=c.clientY-f.value?.top;r("onDragScroll",{x:m,y:v})}}function h(c){c.button===0&&(c.target.setPointerCapture(c.pointerId),f.value=u.value.getBoundingClientRect(),d.value=document.body.style.webkitUserSelect,document.body.style.webkitUserSelect="none",t.viewport&&(t.viewport.value.style.scrollBehavior="auto"),_(c))}function C(c){_(c)}function P(c){const m=c.target;m.hasPointerCapture(c.pointerId)&&m.releasePointerCapture(c.pointerId),document.body.style.webkitUserSelect=d.value,t.viewport&&(t.viewport.value.style.scrollBehavior=""),f.value=void 0}function L(c){const m=c.target,v=u.value?.contains(m),Q=o.sizes.value.content-o.sizes.value.viewport;v&&o.handleWheelScroll(c,Q)}x(()=>{document.addEventListener("wheel",L,{passive:!1})}),H(()=>{document.removeEventListener("wheel",L)});function D(){u.value&&(a.isHorizontal?o.handleSizeChange({content:t.viewport.value?.scrollWidth??0,viewport:t.viewport.value?.offsetWidth??0,scrollbar:{size:u.value.clientWidth??0,paddingStart:q(getComputedStyle(u.value).paddingLeft),paddingEnd:q(getComputedStyle(u.value).paddingRight)}}):o.handleSizeChange({content:t.viewport.value?.scrollHeight??0,viewport:t.viewport.value?.offsetHeight??0,scrollbar:{size:u.value?.clientHeight??0,paddingStart:q(getComputedStyle(u.value).paddingTop),paddingEnd:q(getComputedStyle(u.value).paddingBottom)}}),o.onThumbPositionChange())}return O(u,D),O(t.content,D),(c,m)=>(b(),S(l(I),{ref:l(n),style:{position:"absolute"},"data-scrollbarimpl":"",as:l(s).as.value,"as-child":l(s).asChild.value,onPointerdown:h,onPointermove:C,onPointerup:P},{default:p(()=>[g(c.$slots,"default")]),_:3},8,["as","as-child"]))}}),oe=Be,ze=A({__name:"ScrollAreaThumb",props:{asChild:{type:Boolean,required:!1},as:{type:null,required:!1}},setup(i){const e=i,a=T(),r=X();function t(h){const P=h.target.getBoundingClientRect(),L=h.clientX-P.left,D=h.clientY-P.top;r.handleThumbDown(h,{x:L,y:D})}function o(h){r.handleThumbUp(h)}const{forwardRef:s,currentElement:n}=R(),u=w(),d=E(()=>a.viewport.value);function f(){if(!u.value){const h=we(d.value,r.onThumbPositionChange);u.value=h,r.onThumbPositionChange()}}const _=E(()=>r.sizes.value);return ve(_,()=>{r.onThumbChange(n.value),d.value&&(r.onThumbPositionChange(),d.value.addEventListener("scroll",f))}),H(()=>{d.value?.removeEventListener("scroll",f),u.value?.()}),(h,C)=>(b(),S(l(I),{ref:l(s),"data-state":l(r).hasThumb?"visible":"hidden",style:{width:"var(--reka-scroll-area-thumb-width)",height:"var(--reka-scroll-area-thumb-height)"},"as-child":e.asChild,as:h.as,onPointerdown:t,onPointerup:o},{default:p(()=>[g(h.$slots,"default")]),_:3},8,["data-state","as-child","as"]))}}),Ve=ze,Xe=A({inheritAttrs:!1,__name:"ScrollAreaViewport",props:{nonce:{type:String,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1}},setup(i,{expose:e}){const a=i,{nonce:r}=M(a),t=de(r),o=T(),s=w();x(()=>{o.onViewportChange(s.value),o.onContentChange(u.value)}),e({viewportElement:s});const{forwardRef:n,currentElement:u}=R();return(d,f)=>(b(),ne(ce,null,[se("div",y({ref_key:"viewportElement",ref:s,"data-reka-scroll-area-viewport":"",style:{overflowX:l(o).scrollbarXEnabled.value?"scroll":"hidden",overflowY:l(o).scrollbarYEnabled.value?"scroll":"hidden"}},d.$attrs,{tabindex:0}),[$(l(I),{ref:l(n),style:B({minWidth:l(o).scrollbarXEnabled.value?"fit-content":void 0}),"as-child":a.asChild,as:d.as},{default:p(()=>[g(d.$slots,"default")]),_:3},8,["style","as-child","as"])],16),$(l(I),{as:"style",nonce:l(t)},{default:p(()=>f[0]||(f[0]=[ie(" /* Hide scrollbars cross-browser and enable momentum scroll for touch devices */ [data-reka-scroll-area-viewport] { scrollbar-width:none; -ms-overflow-style:none; -webkit-overflow-scrolling:touch; } [data-reka-scroll-area-viewport]::-webkit-scrollbar { display:none; } ")])),_:1,__:[0]},8,["nonce"])],64))}}),Ye=Xe;const We={__name:"ScrollBar",props:{orientation:{type:String,required:!1,default:"vertical"},forceMount:{type:Boolean,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1},class:{type:null,required:!1}},setup(i){const e=i,a=re(e,"class");return(r,t)=>
1(b(),S(l(Ne),y(l(a),{class:l(Z)("flex touch-none select-none transition-colors",i.orientation==="vertical"&&"h-full w-2.5 border-l border-l-transparent p-px",i.orientation==="horizontal"&&"h-2.5 flex-col border-t border-t-transparent p-px",e.class)}),{default:p(()=>[$(l(Ve),{class:"relative flex-1 rounded-full bg-border"})]),_:1},16,["class"]))}},tr=Object.assign({inheritAttrs:!1},{__name:"ScrollArea",props:{type:{type:String,required:!1},dir:{type:String,required:!1},scrollHideDelay:{type:Number,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1},class:{type:null,required:!1}},setup(i){const e=i,a=ue(),r=re(e,"class"),t=E(()=>"scroll-region"in a?{"scroll-region":""}:{}),o=E(()=>{const{"scroll-region":s,...n}=a;return n});return(s,n)=>(b(),S(l(_e),y({...l(r),...o.value},{class:l(Z)("relative overflow-hidden",e.class)}),{default:p(()=>[$(l(Ye),y(t.value,{class:"h-full w-full rounded-[inherit]"}),{default:p(()=>[g(s.$slots,"default")]),_:3},16),$(We),$(l(ge))]),_:3},16,["class"]))}});export{tr as _};

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.