🎩 You're Invited:Meet the Socket team at Black Hat in Las Vegas, August 3-6.RSVP
Sign In

@shadcn/react

Package Overview
Dependencies
Maintainers
1
Versions
3
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@shadcn/react - npm Package Compare versions

Comparing version
0.2.0
to
0.2.1
+1
-1
dist/message-scroller/index.js
"use client";
import*as S from'react';import {jsx,jsxs}from'react/jsx-runtime';function Ie({defaultTagName:e,props:t,render:r,state:n={},stateAttributesMapping:o}){let l=fe(mt(n,o),t);if(!r)return S.createElement(e,l);if(typeof r=="function")return r(l,n);if(!S.isValidElement(r))return null;let a=r.props,g={...fe(l,a),ref:ee(l.ref,a.ref)};return S.cloneElement(r,g)}function fe(...e){let t={};for(let r of e){if(!r)continue;let n=r;for(let o of Object.keys(n)){let l=n[o];if(l===void 0)continue;let a=t[o];o==="className"?t[o]=[a,l].filter(Boolean).join(" "):o==="style"?t[o]={...a,...l}:o==="ref"?t[o]=ee(a,l):bt(o)&&typeof a=="function"&&typeof l=="function"?t[o]=Mt(l,a):t[o]=l;}}return t}function mt(e,t){let r={};for(let n of Object.keys(e)){let o=e[n],l=t?.[n]?.(o);if(l){Object.assign(r,l);continue}if(n==="slot"){r["data-slot"]=o;continue}let a=`data-${String(n).replace(/[A-Z]/g,s=>`-${s.toLowerCase()}`)}`;typeof o=="boolean"?r[a]=o?"":void 0:o!=null&&(r[a]=String(o));}return r}function Mt(e,t){return function(n){e(n),n.defaultPrevented||t(n);}}function bt(e){return /^on[A-Z]/.test(e)}function ee(...e){let t=e.filter(Boolean);if(t.length!==0)return r=>{for(let n of t)typeof n=="function"?n(r):n&&(n.current=r);}}var Ae=8,ke=64,xe=0,te=.5,Ve=180,_e=new Set(["ArrowDown","ArrowUp","End","Home","PageDown","PageUp"," "]),Se={start:false,end:false},Tt=[],Z={currentAnchorId:null,visibleMessageIds:Tt};function Be({content:e,scrollEdgeThreshold:t,spacer:r,viewport:n}){if(!n||!e)return Se;let o=Re({content:e,spacer:r,viewport:n});return {start:n.scrollTop>t,end:o-n.scrollTop-n.clientHeight>t}}function De({content:e,scrollMargin:t,scrollPreviousItemPeek:r,spacer:n,viewport:o,visibleMessageIds:l}){if(!e||!o)return Z;let a=o.getBoundingClientRect(),s=a.top+t+r,g=typeof IntersectionObserver>"u",T=[],m=null;for(let y of re(e,n)){let p=y.dataset.messageId;if(!p)continue;let M=y.dataset.scrollAnchor==="true",L=M||g?y.getBoundingClientRect():null;(g&&L?L.bottom>s&&L.top<a.bottom:l.has(p))&&T.push(p),M&&L&&L.top<=s+te&&(m=p);}return T.length===0&&m===null?Z:{currentAnchorId:m,visibleMessageIds:T}}function re(e,t){return Array.from(e.children).filter(r=>r instanceof HTMLElement&&r!==t)}function je(e,t){for(let r=t;r<e.length;r++){let n=e[r];if(n?.dataset.scrollAnchor==="true")return n}return null}function Fe(e,t){for(let r of e)if(r.dataset.scrollAnchor==="true"&&!t.has(r))return r;return null}function Ne(e,t){let r=0;for(let n=t;n<e.length;n++)if(e[n]?.dataset.scrollAnchor==="true"&&(r+=1,r>1))return true;return false}function Ue(e){for(let t=e.length-1;t>=0;t--){let r=e[t];if(r?.dataset.scrollAnchor==="true")return r}return null}function Ge({content:e,spacer:t,viewport:r}){let n=r.getBoundingClientRect();for(let o of re(e,t)){if(!o.dataset.messageId)continue;let l=o.getBoundingClientRect();if(l.bottom>n.top&&l.top<n.bottom)return o}return null}function Ye({align:e,element:t,scrollMargin:r,spacer:n,viewport:o}){let l=pe(t,o),a=t.getBoundingClientRect().height,s=Et(n);if(e==="center"){let g=Math.max(0,o.clientHeight-s.start-s.end);return l-s.start-(g-a)/2-r}if(e==="end")return l-o.clientHeight+a+s.end+r;if(e==="nearest"){let g=l+a,T=o.scrollTop+s.start,m=o.scrollTop+o.clientHeight-s.end;return l>=T&&g<=m?o.scrollTop:l<T?l-s.start-r:g-o.clientHeight+s.end+r}return l-s.start-r}function pe(e,t){let r=e.getBoundingClientRect(),n=t.getBoundingClientRect();return r.top-n.top+t.scrollTop}function ne(e,t){return e.getBoundingClientRect().top-t.getBoundingClientRect().top}function We({content:e,scrollTop:t,spacer:r,viewport:n}){let o=Re({content:e,spacer:r,viewport:n});return t+n.clientHeight-o}function Re({content:e,spacer:t,viewport:r}){let n=re(e,t),o=Ke(e),l=r.getBoundingClientRect(),a=r.scrollTop,s=o.start+o.end;for(let g of n){let T=g.getBoundingClientRect();s=Math.max(s,T.bottom-l.top+a+o.end);}return s}function ze(e){return Math.max(0,e.scrollHeight-e.clientHeight)}function Ke(e){let t=window.getComputedStyle(e);return {end:ge(t.paddingBlockEnd||t.paddingBottom),start:ge(t.paddingBlockStart||t.paddingTop)}}function Et(e){let t=e?.parentElement;return t?Ke(t):{end:0,start:0}}function qe(e){if(!e)return 0;let t=window.getComputedStyle(e),r=t.rowGap==="normal"?t.gap:t.rowGap;return ge(r)}function ge(e){if(!e)return 0;let t=Number.parseFloat(e);return Number.isFinite(t)?t:0}function $e({refs:e,commitScrollState:t,scheduleStateCommit:r,scheduleVisibilitySync:n}){let{streamingTurnRef:o,autoScrollRef:l,autoscrollingRef:a,autoscrollingTimeoutRef:s,contentRef:g,defaultScrollPositionAppliedRef:T,itemCountRef:m,messageElementsRef:y,modeRef:p,pendingScrollToMessageRef:M,prependRestoreRef:L,scrollMarginRef:h,scrollPreviousItemPeekRef:E,spacerGapRef:W,spacerHeightRef:j,spacerRef:_,viewportRef:B}=e,G=S.useCallback(c=>{s.current!==null&&(window.clearTimeout(s.current),s.current=null),a.current!==c&&(a.current=c,t()),c&&(s.current=window.setTimeout(()=>{s.current=null,a.current=false,t();},Ve));},[t]),b=S.useCallback(c=>{let f=_.current;if(!f)return;let C=Math.max(0,Math.ceil(c));j.current!==C&&(j.current=C,f.hidden=C===0,f.style.height=`${C}px`,f.style.marginTop=C>0?`${-W.current}px`:"");},[]),H=S.useCallback((c,{behavior:f="auto",autoscrolling:C=false}={})=>{let D=B.current;if(!D)return;let N=Math.max(0,c);if(Math.abs(D.scrollTop-N)<=te){D.scrollTop=N,t();return}C&&G(true),D.scrollTo({top:N,behavior:f}),r();},[t,r,G]),le=S.useCallback(({behavior:c="auto"}={})=>B.current?(b(0),o.current=null,p.current="free-scrolling",H(0,{behavior:c}),n(),true):false,[n,H,b]),A=S.useCallback(({behavior:c="auto"}={})=>{let f=B.current;return f?(b(0),o.current=null,p.current=l.current?"following-bottom":"free-scrolling",H(ze(f),{autoscrolling:true,behavior:c}),n(),true):false},[n,H,b]),w=S.useCallback((c,{align:f="start",behavior:C="auto",scrollMargin:D=h.current}={},{keepPreviousPeek:N=false}={})=>{let Y=g.current,z=B.current;if(!Y||!z||!Y.contains(c))return false;let x=Ye({align:f,element:c,scrollMargin:N?D+E.current:D,spacer:_.current,viewport:z}),K=We({content:Y,scrollTop:x,spacer:_.current,viewport:z});return b(K),L.current={element:c,viewportTop:ne(c,z)},p.current=N?"anchored-to-message":"settling-jump",o.current=N?c:null,H(x,{behavior:C}),n(),true},[n,H,b]),F=S.useCallback(()=>{let c=o.current;return !c||!c.isConnected||p.current!=="anchored-to-message"?false:w(c,{align:"start"},{keepPreviousPeek:true})},[w]),k=S.useCallback((c,f)=>{let C=y.current.get(c);return C?(T.current=true,w(C,f)?(M.current=null,true):(M.current={messageId:c,options:f},true)):m.current===0?(M.current={messageId:c,options:f},T.current=true,true):false},[w]);return {flushPendingScrollToMessage:S.useCallback(()=>{let c=M.current;if(!c)return false;let f=y.current.get(c.messageId);return !f||!w(f,c.options)?false:(M.current=null,T.current=true,true)},[w]),reanchorToAnchoredMessage:F,scrollToElement:w,scrollToEnd:A,scrollToMessage:k,scrollToStart:le}}function Ze(e,t){let r=e,n=new Set;return {getSnapshot:()=>r,hasListeners:()=>n.size>0,setSnapshot:o=>{t(r,o)||(r=o,n.forEach(l=>l()));},subscribe:(o,l,a)=>{let s=n.size===0;return n.add(o),s&&l?.(),()=>{n.delete(o),n.size===0&&a?.();}}}}function Je(e,t){return Ze(e,t)}function Qe(){return Ze(Z,vt)}function Xe(e,t){return e.start===t.start&&e.end===t.end}function vt(e,t){return e.currentAnchorId!==t.currentAnchorId||e.visibleMessageIds.length!==t.visibleMessageIds.length?false:e.visibleMessageIds.every((r,n)=>r===t.visibleMessageIds[n])}function et({autoScroll:e,scrollEdgeThreshold:t,scrollMargin:r,scrollPreviousItemPeek:n}){let o=S.useRef(e),l=S.useRef(false),a=S.useRef(null),s=S.useRef(false),g=S.useRef(t),T=S.useRef(0),m=S.useRef(null),y=S.useRef(e?"following-bottom":"free-scrolling"),p=S.useRef(new Map),M=S.useRef(null),L=S.useRef(null),h=S.useRef(null),E=S.useRef(n),W=S.useRef(true),j=S.useRef(null),_=S.useRef(r),B=S.useRef(null),G=S.useRef(0),b=S.useRef(0),H=S.useRef(null),le=S.useRef(null),A=S.useRef(null),w=S.useRef(null),F=S.useRef(null),k=S.useRef(null),V=S.useRef(null),c=S.useRef(null),f=S.useRef(new Set),C=S.useRef(new WeakSet);return A.current===null&&(A.current=Je(Se,Xe)),c.current===null&&(c.current=Qe()),o.current=e,g.current=t,_.current=r,E.current=n,{autoScrollRef:o,autoscrollingRef:l,autoscrollingTimeoutRef:w,streamingTurnRef:h,contentRef:a,defaultScrollPositionAppliedRef:s,firstItemRef:m,itemCountRef:T,messageElementsRef:p,modeRef:y,pendingScrollFrameRef:B,pendingScrollToMessageRef:M,prependRestoreRef:L,preserveScrollOnPrependRef:W,rootRef:j,scrollEdgeThresholdRef:g,scrollMarginRef:_,scrollPreviousItemPeekRef:E,spacerGapRef:G,spacerHeightRef:b,spacerRef:H,stateFrameRef:le,stateStore:A.current,viewportRef:F,visibilityFrameRef:k,visibilityObserverRef:V,visibilityStore:c.current,visibleMessageIdsRef:f,handledScrollAnchorsRef:C}}function tt(e,t){return S.useCallback(r=>{e.current=r,r&&t();},[e,t])}function rt({autoScroll:e=false,defaultScrollPosition:t="end",scrollEdgeThreshold:r=Ae,scrollPreviousItemPeek:n=ke,scrollMargin:o=xe}){let l=et({autoScroll:e,scrollEdgeThreshold:r,scrollMargin:o,scrollPreviousItemPeek:n}),{streamingTurnRef:a,autoScrollRef:s,autoscrollingRef:g,autoscrollingTimeoutRef:T,contentRef:m,defaultScrollPositionAppliedRef:y,firstItemRef:p,itemCountRef:M,messageElementsRef:L,modeRef:h,pendingScrollFrameRef:E,pendingScrollToMessageRef:W,prependRestoreRef:j,preserveScrollOnPrependRef:_,rootRef:B,scrollEdgeThresholdRef:G,scrollMarginRef:b,scrollPreviousItemPeekRef:H,spacerGapRef:le,spacerRef:A,stateFrameRef:w,stateStore:F,viewportRef:k,visibilityFrameRef:V,visibilityObserverRef:c,visibilityStore:f,visibleMessageIdsRef:C,handledScrollAnchorsRef:D}=l,N=S.useRef(t);N.current!==t&&(N.current=t,y.current=false);let Y=S.useCallback(i=>{let u=B.current,v=k.current,O=[i.start&&"start",i.end&&"end"].filter(Boolean).join(" "),ue=g.current;for(let q of [u,v])q&&(O?q.setAttribute("data-scrollable",O):q.removeAttribute("data-scrollable"),q.toggleAttribute("data-autoscrolling",ue));},[]),z=S.useCallback(i=>{s.current&&!i.end&&h.current!=="settling-jump"?h.current="following-bottom":h.current==="following-bottom"&&i.end&&!g.current&&(h.current="free-scrolling");},[]),x=S.useCallback(()=>{let i=Be({content:m.current,scrollEdgeThreshold:G.current,spacer:A.current,viewport:k.current});z(i),Y(i),F.setSnapshot(i);},[z,F,Y]),K=S.useCallback(()=>{w.current===null&&(w.current=window.requestAnimationFrame(()=>{w.current=null,x();}));},[x]),P=S.useCallback(()=>{f.hasListeners()&&V.current===null&&(V.current=window.requestAnimationFrame(()=>{V.current=null,f.hasListeners()&&f.setSnapshot(De({content:m.current,scrollMargin:b.current,scrollPreviousItemPeek:H.current,spacer:A.current,viewport:k.current,visibleMessageIds:C.current}));}));},[f]),{flushPendingScrollToMessage:ce,reanchorToAnchoredMessage:de,scrollToElement:se,scrollToEnd:I,scrollToMessage:me,scrollToStart:ae}=$e({refs:l,commitScrollState:x,scheduleStateCommit:K,scheduleVisibilitySync:P}),Me=S.useCallback(()=>{let i=j.current,u=k.current;if(!i||!u||!i.element.isConnected)return false;let O=ne(i.element,u)-i.viewportTop;return Math.abs(O)<=te?false:(u.scrollTop+=O,i.viewportTop=ne(i.element,u),K(),P(),true)},[K,P]),Q=S.useCallback(()=>{let i=m.current,u=k.current;if(!i||!u){j.current=null;return}let v=Ge({content:i,spacer:A.current,viewport:u});j.current=v?{element:v,viewportTop:ne(v,u)}:null;},[]),be=S.useCallback(()=>{E.current===null&&(E.current=window.requestAnimationFrame(()=>{E.current=null,ce()&&Q();}));},[Q,ce]),ie=S.useCallback(()=>{if(!t||y.current||M.current===0)return false;let i=false;if(t==="last-anchor"){let u=m.current,v=k.current,O=u&&v?Ue(re(u,A.current)):null;if(!u||!v||!O)i=I({behavior:"auto"});else {let ue=pe(O,v);i=Re({content:u,spacer:A.current,viewport:v})-ue<=v.clientHeight?I({behavior:"auto"}):se(O,{align:"start"},{keepPreviousPeek:true});}}else i=t==="end"?I({behavior:"auto"}):ae({behavior:"auto"});return i?(y.current=true,true):false},[t,se,I,ae]),Te=S.useCallback(()=>{let i=m.current;if(!i)return;let u=re(i,A.current),v=M.current,O=p.current;M.current=u.length,p.current=u[0]??null,(()=>{if(ce())return;if(v===0){if(ie()||u.length>0&&s.current&&I({behavior:"auto"}))return;x(),P();return}let q=O?u.indexOf(O):-1;if(_.current&&q>0){Me();return}if(u.length>v){let $=je(u,v);if($){if(s.current&&h.current==="following-bottom"&&Ne(u,v)){I({behavior:"auto"});return}se($,{align:"start"},{keepPreviousPeek:true}),D.current.add($);return}}if(u.length===v){let $=Fe(u,D.current);if($){se($,{align:"start"},{keepPreviousPeek:true}),D.current.add($);return}}h.current==="following-bottom"&&s.current?I({behavior:"auto"}):(x(),P());})(),Q();},[ie,Q,x,ce,Me,P,se,I]),Ee=S.useCallback(()=>{if(h.current==="following-bottom"&&s.current){I({behavior:"auto"});return}de()||(K(),P());},[de,K,P,I]),ve=S.useCallback(()=>{let i=k.current;if(!(!i||!f.hasListeners())){if(typeof IntersectionObserver>"u"){P();return}c.current||(c.current=new IntersectionObserver(u=>{for(let v of u){let O=v.target.dataset.messageId;O&&(v.isIntersecting?C.current.add(O):C.current.delete(O));}P();},{root:i,rootMargin:`${-(b.current+H.current)}px 0px 0px 0px`,threshold:[0,.01,.5,1]})),L.current.forEach(u=>{c.current?.observe(u);}),P();}},[P,f]),he=S.useCallback(()=>{V.current!==null&&(window.cancelAnimationFrame(V.current),V.current=null),c.current?.disconnect(),c.current=null,C.current.clear(),f.setSnapshot(Z);},[f]),gt=S.useCallback((i,u,v)=>{if(u){L.current.set(i,u),c.current?.observe(u),P(),W.current?.messageId===i&&be();return}v&&L.current.get(i)===v&&(L.current.delete(i),C.current.delete(i),c.current?.unobserve(v),P());},[be,P]),Le=S.useCallback(()=>{(h.current==="following-bottom"||h.current==="anchored-to-message"||h.current==="settling-jump")&&(a.current=null,h.current="free-scrolling");},[]),Ce=S.useCallback(()=>Y(F.getSnapshot()),[F,Y]),ye=tt(B,Ce),Pe=tt(k,Ce),we=S.useCallback(i=>{m.current=i;},[]),Oe=S.useCallback(i=>{A.current=i,le.current=qe(i?.parentElement??null);},[]),He=S.useCallback(()=>{x(),P(),Q();},[Q,x,P]),pt=S.useMemo(()=>({handleContentChange:Te,handleResize:Ee,observeVisibility:ve,preserveScrollOnPrependRef:_,scrollToEnd:I,scrollToMessage:me,scrollToStart:ae,setContentElement:we,setRootElement:ye,setSpacerElement:Oe,setViewportElement:Pe,stateStore:F,syncAfterScroll:He,unobserveVisibility:he,userScrollIntent:Le,viewportRef:k,visibilityStore:f}),[Te,Ee,ve,I,me,ae,we,ye,Oe,Pe,F,He,he,Le,f]);return S.useLayoutEffect(()=>{ie();},[ie]),S.useEffect(()=>()=>{w.current!==null&&(window.cancelAnimationFrame(w.current),w.current=null),V.current!==null&&(window.cancelAnimationFrame(V.current),V.current=null),T.current!==null&&(window.clearTimeout(T.current),T.current=null),E.current!==null&&(window.cancelAnimationFrame(E.current),E.current=null),c.current?.disconnect(),c.current=null;},[]),S.useLayoutEffect(()=>{if(e&&h.current==="following-bottom"&&M.current>0){I({behavior:"auto"});return}x();},[e,x,I]),{context:pt,registerMessage:gt}}function ot(e){let t=S.useRef(e);return t.current=e,t}var lt=S.createContext(null),st=S.createContext(null);function J(){let e=S.useContext(lt);if(!e)throw new Error("useMessageScroller must be used within a MessageScroller.");return e}function ht(){let e=S.useContext(st);if(!e)throw new Error("MessageScrollerItem must be used within a MessageScroller.");return e}function Lt(){let{scrollToEnd:e,scrollToMessage:t,scrollToStart:r}=J();return S.useMemo(()=>({scrollToEnd:e,scrollToMessage:t,scrollToStart:r}),[e,t,r])}function Ct(){let{stateStore:e}=J();return S.useSyncExternalStore(e.subscribe,e.getSnapshot,e.getSnapshot)}function yt(){let{observeVisibility:e,unobserveVisibility:t,visibilityStore:r}=J(),n=S.useCallback(o=>r.subscribe(o,e,t),[e,t,r]);return S.useSyncExternalStore(n,r.getSnapshot,r.getSnapshot)}function ct({autoScroll:e=false,children:t,defaultScrollPosition:r="end",scrollEdgeThreshold:n,scrollPreviousItemPeek:o,scrollMargin:l}){let{context:a,registerMessage:s}=rt({autoScroll:e,defaultScrollPosition:r,scrollEdgeThreshold:n,scrollPreviousItemPeek:o,scrollMargin:l});return jsx(lt.Provider,{value:a,children:jsx(st.Provider,{value:s,children:t})})}function at({children:e,...t}){let{setRootElement:r}=J();return jsx("div",{ref:r,...t,children:e})}function it({"aria-label":e,children:t,onKeyDown:r,onScroll:n,onTouchMove:o,onWheel:l,preserveScrollOnPrepend:a=true,ref:s,role:g,tabIndex:T,...m}){let{handleResize:y,preserveScrollOnPrependRef:p,setViewportElement:M,syncAfterScroll:L,userScrollIntent:h,viewportRef:E}=J();p.current=a;let W=S.useCallback(b=>{M(b),ee(s)?.(b);},[s,M]);function j(b){L(),n?.(b);}function _(b){h(),l?.(b);}function B(b){h(),o?.(b);}function G(b){_e.has(b.key)&&h(),r?.(b);}return S.useEffect(()=>{let b=E.current;if(!b||typeof ResizeObserver>"u")return;let H=new ResizeObserver(y);return H.observe(b),()=>H.disconnect()},[y,E]),jsx("div",{ref:W,role:g??"region","aria-label":e??"Messages",tabIndex:T??0,onKeyDown:G,onScroll:j,onTouchMove:B,onWheel:_,...m,children:t})}function ut({"aria-relevant":e,children:t,ref:r,role:n,spacerClassName:o,...l}){let{handleContentChange:a,handleResize:s,setContentElement:g,setSpacerElement:T}=J(),m=S.useRef(null),y=S.useCallback(p=>{m.current=p,g(p),ee(r)?.(p);},[r,g]);return S.useLayoutEffect(()=>{let p=m.current;if(!p||(a(),typeof MutationObserver>"u"))return;let M=new MutationObserver(()=>{a();});return M.observe(p,{childList:true}),()=>M.disconnect()},[a]),S.useEffect(()=>{let p=m.current;if(!p||typeof ResizeObserver>"u")return;let M=new ResizeObserver(s);return M.observe(p),()=>M.disconnect()},[s]),jsxs("div",{ref:y,role:n??"log","aria-relevant":e??"additions",...l,children:[t,jsx("div",{ref:T,"aria-hidden":"true","data-message-scroller-spacer":"",hidden:true,className:o})]})}function ft({messageId:e,ref:t,scrollAnchor:r=false,...n}){let o=ht(),l=S.useRef(null),a=S.useCallback(s=>{let g=l.current;l.current=s,e&&o(e,s,g),ee(t)?.(s);},[e,t,o]);return jsx("div",{ref:a,"data-message-id":e,"data-scroll-anchor":r?"true":"false",...n})}function St({behavior:e="smooth",children:t,direction:r="end",onClick:n,render:o,tabIndex:l,type:a="button",...s}){let{scrollToEnd:g,scrollToStart:T,stateStore:m}=J(),y=ot(n),p=S.useCallback(E=>m.subscribe(E),[m]),M=S.useCallback(()=>{let E=m.getSnapshot();return r==="start"?E.start:E.end},[r,m]),L=S.useSyncExternalStore(p,M,M),h=S.useCallback(E=>{L&&(y.current?.(E),E.defaultPrevented||(E.currentTarget.blur(),r==="start"?T({behavior:e}):g({behavior:e})));},[e,r,L,y,g,T]);return Ie({defaultTagName:"button",props:fe({type:a,inert:!L,tabIndex:L?l:-1,children:t??jsxs("span",{children:["Scroll to ",r]}),onClick:h},s),render:o,state:{active:L,direction:r},stateAttributesMapping:{active:E=>({"data-active":E?"true":"false"})}})}var Qt={Provider:ct,Root:at,Viewport:it,Content:ut,Item:ft,Button:St};export{Qt as MessageScroller,Lt as useMessageScroller,Ct as useMessageScrollerScrollable,yt as useMessageScrollerVisibility};
import*as S from'react';import {jsx,jsxs}from'react/jsx-runtime';function ke({defaultTagName:e,props:t,render:r,state:n={},stateAttributesMapping:o}){let l=Se(bt(n,o),t);if(!r)return S.createElement(e,l);if(typeof r=="function")return r(l,n);if(!S.isValidElement(r))return null;let a=r.props,p={...Se(l,a),ref:te(l.ref,a.ref)};return S.cloneElement(r,p)}function Se(...e){let t={};for(let r of e){if(!r)continue;let n=r;for(let o of Object.keys(n)){let l=n[o];if(l===void 0)continue;let a=t[o];o==="className"?t[o]=[a,l].filter(Boolean).join(" "):o==="style"?t[o]={...a,...l}:o==="ref"?t[o]=te(a,l):Et(o)&&typeof a=="function"&&typeof l=="function"?t[o]=Tt(l,a):t[o]=l;}}return t}function bt(e,t){let r={};for(let n of Object.keys(e)){let o=e[n],l=t?.[n]?.(o);if(l){Object.assign(r,l);continue}if(n==="slot"){r["data-slot"]=o;continue}let a=`data-${String(n).replace(/[A-Z]/g,s=>`-${s.toLowerCase()}`)}`;typeof o=="boolean"?r[a]=o?"":void 0:o!=null&&(r[a]=String(o));}return r}function Tt(e,t){return function(n){e(n),n.defaultPrevented||t(n);}}function Et(e){return /^on[A-Z]/.test(e)}function te(...e){let t=e.filter(Boolean);if(t.length!==0)return r=>{for(let n of t)typeof n=="function"?n(r):n&&(n.current=r);}}var xe=8,Ve=64,_e=0,Z=.5,Be=180,De=new Set(["ArrowDown","ArrowUp","End","Home","PageDown","PageUp"," "]),ge={start:false,end:false},vt=[],J={currentAnchorId:null,visibleMessageIds:vt};function Fe({content:e,scrollEdgeThreshold:t,spacer:r,viewport:n}){if(!n||!e)return ge;let o=pe({content:e,spacer:r,viewport:n});return {start:n.scrollTop>t,end:o-n.scrollTop-n.clientHeight>t}}function je({content:e,scrollMargin:t,scrollPreviousItemPeek:r,spacer:n,viewport:o,visibleMessageIds:l}){if(!e||!o)return J;let a=o.getBoundingClientRect(),s=a.top+t+r,p=typeof IntersectionObserver>"u",E=[],b=null;for(let C of re(e,n)){let d=C.dataset.messageId;if(!d)continue;let m=C.dataset.scrollAnchor==="true",L=m||p?C.getBoundingClientRect():null;(p&&L?L.bottom>s&&L.top<a.bottom:l.has(d))&&E.push(d),m&&L&&L.top<=s+Z&&(b=d);}return E.length===0&&b===null?J:{currentAnchorId:b,visibleMessageIds:E}}function re(e,t){return Array.from(e.children).filter(r=>r instanceof HTMLElement&&r!==t)}function Ue(e,t){for(let r=t;r<e.length;r++){let n=e[r];if(n?.dataset.scrollAnchor==="true")return n}return null}function Ne(e,t){for(let r of e)if(r.dataset.scrollAnchor==="true"&&!t.has(r))return r;return null}function Ge(e,t){let r=0;for(let n=t;n<e.length;n++)if(e[n]?.dataset.scrollAnchor==="true"&&(r+=1,r>1))return true;return false}function Ye(e){for(let t=e.length-1;t>=0;t--){let r=e[t];if(r?.dataset.scrollAnchor==="true")return r}return null}function We({content:e,spacer:t,viewport:r}){let n=r.getBoundingClientRect();for(let o of re(e,t)){if(!o.dataset.messageId)continue;let l=o.getBoundingClientRect();if(l.bottom>n.top&&l.top<n.bottom)return o}return null}function ze({align:e,element:t,scrollMargin:r,spacer:n,viewport:o}){let l=me(t,o),a=t.getBoundingClientRect().height,s=ht(n);if(e==="center"){let p=Math.max(0,o.clientHeight-s.start-s.end);return l-s.start-(p-a)/2-r}if(e==="end")return l-o.clientHeight+a+s.end+r;if(e==="nearest"){let p=l+a,E=o.scrollTop+s.start,b=o.scrollTop+o.clientHeight-s.end;return l>=E&&p<=b?o.scrollTop:l<E?l-s.start-r:p-o.clientHeight+s.end+r}return l-s.start-r}function me(e,t){let r=e.getBoundingClientRect(),n=t.getBoundingClientRect();return r.top-n.top+t.scrollTop}function ne(e,t){return e.getBoundingClientRect().top-t.getBoundingClientRect().top}function Ke({content:e,scrollTop:t,spacer:r,viewport:n}){let o=pe({content:e,spacer:r,viewport:n});return t+n.clientHeight-o}function pe({content:e,spacer:t,viewport:r}){let n=re(e,t),o=$e(e),l=r.getBoundingClientRect(),a=r.scrollTop,s=o.start+o.end;for(let p of n){let E=p.getBoundingClientRect();s=Math.max(s,E.bottom-l.top+a+o.end);}return s}function qe(e){return Math.max(0,e.scrollHeight-e.clientHeight)}function $e(e){let t=window.getComputedStyle(e);return {end:de(t.paddingBlockEnd||t.paddingBottom),start:de(t.paddingBlockStart||t.paddingTop)}}function ht(e){let t=e?.parentElement;return t?$e(t):{end:0,start:0}}function Ze(e){if(!e)return 0;let t=window.getComputedStyle(e),r=t.rowGap==="normal"?t.gap:t.rowGap;return de(r)}function de(e){if(!e)return 0;let t=Number.parseFloat(e);return Number.isFinite(t)?t:0}function Je({refs:e,commitScrollState:t,scheduleStateCommit:r,scheduleVisibilitySync:n}){let{streamingTurnRef:o,autoScrollRef:l,autoscrollingRef:a,autoscrollingTimeoutRef:s,contentRef:p,defaultScrollPositionAppliedRef:E,itemCountRef:b,messageElementsRef:C,modeRef:d,pendingScrollToMessageRef:m,prependRestoreRef:L,scrollMarginRef:O,scrollPreviousItemPeekRef:f,spacerGapRef:k,spacerHeightRef:Y,spacerRef:_,viewportRef:V}=e,U=S.useCallback(i=>{s.current!==null&&(window.clearTimeout(s.current),s.current=null),a.current!==i&&(a.current=i,t()),i&&(s.current=window.setTimeout(()=>{s.current=null,a.current=false,t();},Be));},[t]),v=S.useCallback(i=>{let R=_.current;if(!R)return;let h=Math.max(0,Math.ceil(i));Y.current!==h&&(Y.current=h,R.hidden=h===0,R.style.height=`${h}px`,R.style.marginTop=h>0?`${-k.current}px`:"");},[]),H=S.useCallback((i,{behavior:R="auto",autoscrolling:h=false}={})=>{let y=V.current;if(!y)return;let x=Math.max(0,i);if(Math.abs(y.scrollTop-x)<=Z){y.scrollTop=x,t();return}h&&U(true),y.scrollTo({top:x,behavior:R}),r();},[t,r,U]),N=S.useCallback(({behavior:i="auto"}={})=>V.current?(v(0),o.current=null,d.current="free-scrolling",H(0,{behavior:i}),n(),true):false,[n,H,v]),le=S.useCallback(({behavior:i="auto"}={})=>{let R=V.current;return R?(v(0),o.current=null,d.current=l.current?"following-bottom":"free-scrolling",H(qe(R),{autoscrolling:true,behavior:i}),n(),true):false},[n,H,v]),I=S.useCallback((i,{align:R="start",behavior:h="auto",scrollMargin:y=O.current}={},{keepPreviousPeek:x=false}={})=>{let W=p.current,z=V.current;if(!W||!z||!W.contains(i))return false;let K=ze({align:R,element:i,scrollMargin:x?y+f.current:y,spacer:_.current,viewport:z}),ae=Ke({content:W,scrollTop:K,spacer:_.current,viewport:z});return v(ae),L.current={element:i,viewportTop:ne(i,z)},d.current=x?"anchored-to-message":"settling-jump",o.current=x?i:null,H(K,{behavior:h}),n(),true},[n,H,v]),B=S.useCallback(()=>{let i=o.current;return !i||!i.isConnected||d.current!=="anchored-to-message"?false:I(i,{align:"start"},{keepPreviousPeek:true})},[I]),D=S.useCallback((i,R)=>{let h=C.current.get(i);return h?(E.current=true,I(h,R)?(m.current=null,true):(m.current={messageId:i,options:R},true)):b.current===0?(m.current={messageId:i,options:R},E.current=true,true):false},[I]);return {flushPendingScrollToMessage:S.useCallback(()=>{let i=m.current;if(!i)return false;let R=C.current.get(i.messageId);return !R||!I(R,i.options)?false:(m.current=null,E.current=true,true)},[I]),reanchorToAnchoredMessage:B,scrollToElement:I,scrollToEnd:le,scrollToMessage:D,scrollToStart:N}}function Qe(e,t){let r=e,n=new Set;return {getSnapshot:()=>r,hasListeners:()=>n.size>0,setSnapshot:o=>{t(r,o)||(r=o,n.forEach(l=>l()));},subscribe:(o,l,a)=>{let s=n.size===0;return n.add(o),s&&l?.(),()=>{n.delete(o),n.size===0&&a?.();}}}}function Xe(e,t){return Qe(e,t)}function et(){return Qe(J,Lt)}function tt(e,t){return e.start===t.start&&e.end===t.end}function Lt(e,t){return e.currentAnchorId!==t.currentAnchorId||e.visibleMessageIds.length!==t.visibleMessageIds.length?false:e.visibleMessageIds.every((r,n)=>r===t.visibleMessageIds[n])}function rt({autoScroll:e,scrollEdgeThreshold:t,scrollMargin:r,scrollPreviousItemPeek:n}){let o=S.useRef(e),l=S.useRef(false),a=S.useRef(null),s=S.useRef(false),p=S.useRef(t),E=S.useRef(0),b=S.useRef(null),C=S.useRef(0),d=S.useRef(e?"following-bottom":"free-scrolling"),m=S.useRef(new Map),L=S.useRef(null),O=S.useRef(null),f=S.useRef(null),k=S.useRef(n),Y=S.useRef(true),_=S.useRef(null),V=S.useRef(r),U=S.useRef(null),v=S.useRef(0),H=S.useRef(0),N=S.useRef(null),le=S.useRef(null),I=S.useRef(null),B=S.useRef(null),D=S.useRef(null),G=S.useRef(null),i=S.useRef(null),R=S.useRef(null),h=S.useRef(new Set),y=S.useRef(new WeakSet);return I.current===null&&(I.current=Xe(ge,tt)),R.current===null&&(R.current=et()),o.current=e,p.current=t,V.current=r,k.current=n,{autoScrollRef:o,autoscrollingRef:l,autoscrollingTimeoutRef:B,streamingTurnRef:f,contentRef:a,defaultScrollPositionAppliedRef:s,firstItemRef:b,itemCountRef:E,lastScrollTopRef:C,messageElementsRef:m,modeRef:d,pendingScrollFrameRef:U,pendingScrollToMessageRef:L,prependRestoreRef:O,preserveScrollOnPrependRef:Y,rootRef:_,scrollEdgeThresholdRef:p,scrollMarginRef:V,scrollPreviousItemPeekRef:k,spacerGapRef:v,spacerHeightRef:H,spacerRef:N,stateFrameRef:le,stateStore:I.current,viewportRef:D,visibilityFrameRef:G,visibilityObserverRef:i,visibilityStore:R.current,visibleMessageIdsRef:h,handledScrollAnchorsRef:y}}function nt(e,t){return S.useCallback(r=>{e.current=r,r&&t();},[e,t])}function ot({autoScroll:e=false,defaultScrollPosition:t="end",scrollEdgeThreshold:r=xe,scrollPreviousItemPeek:n=Ve,scrollMargin:o=_e}){let l=rt({autoScroll:e,scrollEdgeThreshold:r,scrollMargin:o,scrollPreviousItemPeek:n}),{streamingTurnRef:a,autoScrollRef:s,autoscrollingRef:p,autoscrollingTimeoutRef:E,contentRef:b,defaultScrollPositionAppliedRef:C,firstItemRef:d,itemCountRef:m,lastScrollTopRef:L,messageElementsRef:O,modeRef:f,pendingScrollFrameRef:k,pendingScrollToMessageRef:Y,prependRestoreRef:_,preserveScrollOnPrependRef:V,rootRef:U,scrollEdgeThresholdRef:v,scrollMarginRef:H,scrollPreviousItemPeekRef:N,spacerGapRef:le,spacerHeightRef:I,spacerRef:B,stateFrameRef:D,stateStore:G,viewportRef:i,visibilityFrameRef:R,visibilityObserverRef:h,visibilityStore:y,visibleMessageIdsRef:x,handledScrollAnchorsRef:W}=l,z=S.useRef(t);z.current!==t&&(z.current=t,C.current=false);let K=S.useCallback(c=>{let u=U.current,T=i.current,w=[c.start&&"start",c.end&&"end"].filter(Boolean).join(" "),Re=p.current;for(let q of [u,T])q&&(w?q.setAttribute("data-scrollable",w):q.removeAttribute("data-scrollable"),q.toggleAttribute("data-autoscrolling",Re));},[]),ae=S.useCallback(c=>{let u=i.current?.scrollTop??0,T=u<L.current-Z;L.current=u,s.current&&!c.end&&f.current!=="settling-jump"&&f.current!=="anchored-to-message"?f.current="following-bottom":f.current==="following-bottom"&&c.end&&T&&!p.current&&(f.current="free-scrolling");},[]),F=S.useCallback(()=>{let c=Fe({content:b.current,scrollEdgeThreshold:v.current,spacer:B.current,viewport:i.current});ae(c);let u=f.current==="following-bottom"?{...c,end:false}:c;K(u),G.setSnapshot(u);},[ae,G,K]),se=S.useCallback(()=>{D.current===null&&(D.current=window.requestAnimationFrame(()=>{D.current=null,F();}));},[F]),P=S.useCallback(()=>{y.hasListeners()&&R.current===null&&(R.current=window.requestAnimationFrame(()=>{R.current=null,y.hasListeners()&&y.setSnapshot(je({content:b.current,scrollMargin:H.current,scrollPreviousItemPeek:N.current,spacer:B.current,viewport:i.current,visibleMessageIds:x.current}));}));},[y]),{flushPendingScrollToMessage:ie,reanchorToAnchoredMessage:Me,scrollToElement:ce,scrollToEnd:A,scrollToMessage:be,scrollToStart:ue}=Je({refs:l,commitScrollState:F,scheduleStateCommit:se,scheduleVisibilitySync:P}),Te=S.useCallback(()=>{let c=_.current,u=i.current;if(!c||!u||!c.element.isConnected)return false;let w=ne(c.element,u)-c.viewportTop;return Math.abs(w)<=Z?false:(u.scrollTop+=w,c.viewportTop=ne(c.element,u),se(),P(),true)},[se,P]),X=S.useCallback(()=>{let c=b.current,u=i.current;if(!c||!u){_.current=null;return}let T=We({content:c,spacer:B.current,viewport:u});_.current=T?{element:T,viewportTop:ne(T,u)}:null;},[]),Ee=S.useCallback(()=>{k.current===null&&(k.current=window.requestAnimationFrame(()=>{k.current=null,ie()&&X();}));},[X,ie]),fe=S.useCallback(()=>{if(!t||C.current||m.current===0)return false;let c=false;if(t==="last-anchor"){let u=b.current,T=i.current,w=u&&T?Ye(re(u,B.current)):null;if(!u||!T||!w)c=A({behavior:"auto"});else {let Re=me(w,T);c=pe({content:u,spacer:B.current,viewport:T})-Re<=T.clientHeight?A({behavior:"auto"}):ce(w,{align:"start"},{keepPreviousPeek:true});}}else c=t==="end"?A({behavior:"auto"}):ue({behavior:"auto"});return c?(C.current=true,true):false},[t,ce,A,ue]),ve=S.useCallback(()=>{let c=b.current;if(!c)return;let u=re(c,B.current),T=m.current,w=d.current;m.current=u.length,d.current=u[0]??null,(()=>{if(ie())return;if(T===0){if(fe()||u.length>0&&s.current&&A({behavior:"auto"}))return;F(),P();return}let q=w?u.indexOf(w):-1;if(V.current&&q>0){Te();return}if(u.length>T){let $=Ue(u,T);if($){if(s.current&&f.current==="following-bottom"&&Ge(u,T)){A({behavior:"auto"});return}ce($,{align:"start"},{keepPreviousPeek:true}),W.current.add($);return}}if(u.length===T){let $=Ne(u,W.current);if($){ce($,{align:"start"},{keepPreviousPeek:true}),W.current.add($);return}}f.current==="following-bottom"&&s.current?A({behavior:"auto"}):(F(),P());})(),X();},[fe,X,F,ie,Te,P,ce,A]),he=S.useCallback(()=>{if(f.current==="following-bottom"&&s.current){A({behavior:"auto"});return}let c=I.current;if(Me()){s.current&&c>0&&I.current===0&&A({behavior:"auto"});return}se(),P();},[Me,se,P,A]),Le=S.useCallback(()=>{let c=i.current;if(!(!c||!y.hasListeners())){if(typeof IntersectionObserver>"u"){P();return}h.current||(h.current=new IntersectionObserver(u=>{for(let T of u){let w=T.target.dataset.messageId;w&&(T.isIntersecting?x.current.add(w):x.current.delete(w));}P();},{root:c,rootMargin:`${-(H.current+N.current)}px 0px 0px 0px`,threshold:[0,.01,.5,1]})),O.current.forEach(u=>{h.current?.observe(u);}),P();}},[P,y]),Ce=S.useCallback(()=>{R.current!==null&&(window.cancelAnimationFrame(R.current),R.current=null),h.current?.disconnect(),h.current=null,x.current.clear(),y.setSnapshot(J);},[y]),dt=S.useCallback((c,u,T)=>{if(u){O.current.set(c,u),h.current?.observe(u),P(),Y.current?.messageId===c&&Ee();return}T&&O.current.get(c)===T&&(O.current.delete(c),x.current.delete(c),h.current?.unobserve(T),P());},[Ee,P]),ye=S.useCallback(()=>{(f.current==="following-bottom"||f.current==="anchored-to-message"||f.current==="settling-jump")&&(a.current=null,f.current="free-scrolling");},[]),Pe=S.useCallback(()=>K(G.getSnapshot()),[G,K]),we=nt(U,Pe),Oe=nt(i,Pe),He=S.useCallback(c=>{b.current=c;},[]),Ae=S.useCallback(c=>{B.current=c,le.current=Ze(c?.parentElement??null);},[]),Ie=S.useCallback(()=>{F(),P(),X();},[X,F,P]),mt=S.useMemo(()=>({handleContentChange:ve,handleResize:he,observeVisibility:Le,preserveScrollOnPrependRef:V,scrollToEnd:A,scrollToMessage:be,scrollToStart:ue,setContentElement:He,setRootElement:we,setSpacerElement:Ae,setViewportElement:Oe,stateStore:G,syncAfterScroll:Ie,unobserveVisibility:Ce,userScrollIntent:ye,viewportRef:i,visibilityStore:y}),[ve,he,Le,A,be,ue,He,we,Ae,Oe,G,Ie,Ce,ye,y]);return S.useLayoutEffect(()=>{fe();},[fe]),S.useEffect(()=>()=>{D.current!==null&&(window.cancelAnimationFrame(D.current),D.current=null),R.current!==null&&(window.cancelAnimationFrame(R.current),R.current=null),E.current!==null&&(window.clearTimeout(E.current),E.current=null),k.current!==null&&(window.cancelAnimationFrame(k.current),k.current=null),h.current?.disconnect(),h.current=null;},[]),S.useLayoutEffect(()=>{if(e&&f.current==="following-bottom"&&m.current>0){A({behavior:"auto"});return}F();},[e,F,A]),{context:mt,registerMessage:dt}}function st(e){let t=S.useRef(e);return t.current=e,t}var ct=S.createContext(null),at=S.createContext(null);function Q(){let e=S.useContext(ct);if(!e)throw new Error("useMessageScroller must be used within a MessageScroller.");return e}function Ct(){let e=S.useContext(at);if(!e)throw new Error("MessageScrollerItem must be used within a MessageScroller.");return e}function yt(){let{scrollToEnd:e,scrollToMessage:t,scrollToStart:r}=Q();return S.useMemo(()=>({scrollToEnd:e,scrollToMessage:t,scrollToStart:r}),[e,t,r])}function Pt(){let{stateStore:e}=Q();return S.useSyncExternalStore(e.subscribe,e.getSnapshot,e.getSnapshot)}function wt(){let{observeVisibility:e,unobserveVisibility:t,visibilityStore:r}=Q(),n=S.useCallback(o=>r.subscribe(o,e,t),[e,t,r]);return S.useSyncExternalStore(n,r.getSnapshot,r.getSnapshot)}function it({autoScroll:e=false,children:t,defaultScrollPosition:r="end",scrollEdgeThreshold:n,scrollPreviousItemPeek:o,scrollMargin:l}){let{context:a,registerMessage:s}=ot({autoScroll:e,defaultScrollPosition:r,scrollEdgeThreshold:n,scrollPreviousItemPeek:o,scrollMargin:l});return jsx(ct.Provider,{value:a,children:jsx(at.Provider,{value:s,children:t})})}function ut({children:e,...t}){let{setRootElement:r}=Q();return jsx("div",{ref:r,...t,children:e})}function ft({"aria-label":e,children:t,onKeyDown:r,onScroll:n,onTouchMove:o,onWheel:l,preserveScrollOnPrepend:a=true,ref:s,role:p,tabIndex:E,...b}){let{handleResize:C,preserveScrollOnPrependRef:d,setViewportElement:m,syncAfterScroll:L,userScrollIntent:O,viewportRef:f}=Q();d.current=a;let k=S.useCallback(v=>{m(v),te(s)?.(v);},[s,m]);function Y(v){L(),n?.(v);}function _(v){O(),l?.(v);}function V(v){O(),o?.(v);}function U(v){De.has(v.key)&&O(),r?.(v);}return S.useEffect(()=>{let v=f.current;if(!v||typeof ResizeObserver>"u")return;let H=0,N=new ResizeObserver(()=>{window.cancelAnimationFrame(H),H=window.requestAnimationFrame(C);});return N.observe(v),()=>{window.cancelAnimationFrame(H),N.disconnect();}},[C,f]),jsx("div",{ref:k,role:p??"region","aria-label":e??"Messages",tabIndex:E??0,onKeyDown:U,onScroll:Y,onTouchMove:V,onWheel:_,...b,children:t})}function Rt({"aria-relevant":e,children:t,ref:r,role:n,spacerClassName:o,...l}){let{handleContentChange:a,handleResize:s,setContentElement:p,setSpacerElement:E}=Q(),b=S.useRef(null),C=S.useCallback(d=>{b.current=d,p(d),te(r)?.(d);},[r,p]);return S.useLayoutEffect(()=>{let d=b.current;if(!d||(a(),typeof MutationObserver>"u"))return;let m=new MutationObserver(()=>{a();});return m.observe(d,{childList:true}),()=>m.disconnect()},[a]),S.useEffect(()=>{let d=b.current;if(!d||typeof ResizeObserver>"u")return;let m=0,L=new ResizeObserver(()=>{window.cancelAnimationFrame(m),m=window.requestAnimationFrame(s);});return L.observe(d),()=>{window.cancelAnimationFrame(m),L.disconnect();}},[s]),jsxs("div",{ref:C,role:n??"log","aria-relevant":e??"additions",...l,children:[t,jsx("div",{ref:E,"aria-hidden":"true","data-message-scroller-spacer":"",hidden:true,className:o})]})}function St({messageId:e,ref:t,scrollAnchor:r=false,...n}){let o=Ct(),l=S.useRef(null),a=S.useCallback(s=>{let p=l.current;l.current=s,e&&o(e,s,p),te(t)?.(s);},[e,t,o]);return jsx("div",{ref:a,"data-message-id":e,"data-scroll-anchor":r?"true":"false",...n})}function gt({behavior:e="smooth",children:t,direction:r="end",onClick:n,render:o,tabIndex:l,type:a="button",...s}){let{scrollToEnd:p,scrollToStart:E,stateStore:b}=Q(),C=st(n),d=S.useCallback(f=>b.subscribe(f),[b]),m=S.useCallback(()=>{let f=b.getSnapshot();return r==="start"?f.start:f.end},[r,b]),L=S.useSyncExternalStore(d,m,m),O=S.useCallback(f=>{L&&(C.current?.(f),f.defaultPrevented||(f.currentTarget.blur(),r==="start"?E({behavior:e}):p({behavior:e})));},[e,r,L,C,p,E]);return ke({defaultTagName:"button",props:Se({type:a,inert:!L,tabIndex:L?l:-1,children:t??jsxs("span",{children:["Scroll to ",r]}),onClick:O},s),render:o,state:{active:L,direction:r},stateAttributesMapping:{active:f=>({"data-active":f?"true":"false"})}})}var er={Provider:it,Root:ut,Viewport:ft,Content:Rt,Item:St,Button:gt};export{er as MessageScroller,yt as useMessageScroller,Pt as useMessageScrollerScrollable,wt as useMessageScrollerVisibility};
{
"name": "@shadcn/react",
"version": "0.2.0",
"version": "0.2.1",
"description": "Unstyled components for React.",

@@ -5,0 +5,0 @@ "publishConfig": {