@undp/design-system-react
Version:
React based design system for UNDP
2 lines • 22.2 kB
JavaScript
const e=require("./rolldown-runtime-mLOUI7ql.cjs"),t=require("./utils-Dd9-5CFr.cjs"),n=require("./createLucideIcon-FKMTNncQ.cjs"),r=require("./Button.cjs");let i=require("react");i=e.r(i,1);let a=require("react/jsx-runtime");var o=n.t(`arrow-down`,[[`path`,{d:`M12 5v14`,key:`s699le`}],[`path`,{d:`m19 12-7 7-7-7`,key:`1idqje`}]]);function s({defaultTagName:e,props:t,render:n,state:r={},stateAttributesMapping:a}){let o=c(l(r,a),t);if(!n)return i.createElement(e,o);if(typeof n==`function`)return n(o,r);if(!i.isValidElement(n))return null;let s=n.props,u={...c(o,s),ref:f(o.ref,s.ref)};return i.cloneElement(n,u)}function c(...e){let t={};for(let n of e){if(!n)continue;let e=n;for(let n of Object.keys(e)){let r=e[n];if(r===void 0)continue;let i=t[n];n===`className`?t[n]=[i,r].filter(Boolean).join(` `):n===`style`?t[n]={...i,...r}:n===`ref`?t[n]=f(i,r):d(n)&&typeof i==`function`&&typeof r==`function`?t[n]=u(r,i):t[n]=r}}return t}function l(e,t){let n={};for(let r of Object.keys(e)){let i=e[r],a=t?.[r]?.(i);if(a){Object.assign(n,a);continue}if(r===`slot`){n[`data-slot`]=i;continue}let o=`data-${String(r).replace(/[A-Z]/g,e=>`-${e.toLowerCase()}`)}`;typeof i==`boolean`?n[o]=i?``:void 0:i!=null&&(n[o]=String(i))}return n}function u(e,t){return function(n){e(n),n.defaultPrevented||t(n)}}function d(e){return/^on[A-Z]/.test(e)}function f(...e){let t=e.filter(Boolean);if(t.length!==0)return e=>{for(let n of t)typeof n==`function`?n(e):n&&(n.current=e)}}var p=8,m=64,h=0,g=.5,_=180,v=new Set([`ArrowDown`,`ArrowUp`,`End`,`Home`,`PageDown`,`PageUp`,` `]),y={start:!1,end:!1},b={currentAnchorId:null,visibleMessageIds:[]};function x({content:e,scrollEdgeThreshold:t,spacer:n,viewport:r}){if(!r||!e)return y;let i=M({content:e,spacer:n,viewport:r});return{start:r.scrollTop>t,end:i-r.scrollTop-r.clientHeight>t}}function S({content:e,scrollMargin:t,scrollPreviousItemPeek:n,spacer:r,viewport:i,visibleMessageIds:a}){if(!e||!i)return b;let o=i.getBoundingClientRect(),s=o.top+t+n,c=typeof IntersectionObserver>`u`,l=[],u=null;for(let t of C(e,r)){let e=t.dataset.messageId;if(!e)continue;let n=t.dataset.scrollAnchor===`true`,r=n||c?t.getBoundingClientRect():null;(c&&r?r.bottom>s&&r.top<o.bottom:a.has(e))&&l.push(e),n&&r&&r.top<=s+g&&(u=e)}return l.length===0&&u===null?b:{currentAnchorId:u,visibleMessageIds:l}}function C(e,t){return Array.from(e.children).filter(e=>e instanceof HTMLElement&&e!==t)}function w(e,t){for(let n=t;n<e.length;n++){let t=e[n];if(t?.dataset.scrollAnchor===`true`)return t}return null}function T(e,t){for(let n of e)if(n.dataset.scrollAnchor===`true`&&!t.has(n))return n;return null}function E(e,t){let n=0;for(let r=t;r<e.length;r++)if(e[r]?.dataset.scrollAnchor===`true`&&(n+=1,n>1))return!0;return!1}function ee(e){for(let t=e.length-1;t>=0;t--){let n=e[t];if(n?.dataset.scrollAnchor===`true`)return n}return null}function D({content:e,spacer:t,viewport:n}){let r=n.getBoundingClientRect();for(let n of C(e,t)){if(!n.dataset.messageId)continue;let e=n.getBoundingClientRect();if(e.bottom>r.top&&e.top<r.bottom)return n}return null}function O({align:e,element:t,scrollMargin:n,spacer:r,viewport:i}){let a=k(t,i),o=t.getBoundingClientRect().height,s=F(r);if(e===`center`){let e=Math.max(0,i.clientHeight-s.start-s.end);return a-s.start-(e-o)/2-n}if(e===`end`)return a-i.clientHeight+o+s.end+n;if(e===`nearest`){let e=a+o,t=i.scrollTop+s.start,r=i.scrollTop+i.clientHeight-s.end;return a>=t&&e<=r?i.scrollTop:a<t?a-s.start-n:e-i.clientHeight+s.end+n}return a-s.start-n}function k(e,t){let n=e.getBoundingClientRect(),r=t.getBoundingClientRect();return n.top-r.top+t.scrollTop}function A(e,t){return e.getBoundingClientRect().top-t.getBoundingClientRect().top}function j({content:e,scrollTop:t,spacer:n,viewport:r}){let i=M({content:e,spacer:n,viewport:r});return t+r.clientHeight-i}function M({content:e,spacer:t,viewport:n}){let r=C(e,t),i=P(e),a=n.getBoundingClientRect(),o=n.scrollTop,s=i.start+i.end;for(let e of r){let t=e.getBoundingClientRect();s=Math.max(s,t.bottom-a.top+o+i.end)}return s}function N(e){return Math.max(0,e.scrollHeight-e.clientHeight)}function P(e){let t=window.getComputedStyle(e);return{end:I(t.paddingBlockEnd||t.paddingBottom),start:I(t.paddingBlockStart||t.paddingTop)}}function F(e){let t=e?.parentElement;return t?P(t):{end:0,start:0}}function te(e){if(!e)return 0;let t=window.getComputedStyle(e);return I(t.rowGap===`normal`?t.gap:t.rowGap)}function I(e){if(!e)return 0;let t=Number.parseFloat(e);return Number.isFinite(t)?t:0}function ne({refs:e,commitScrollState:t,scheduleStateCommit:n,scheduleVisibilitySync:r}){let{streamingTurnRef:a,autoScrollRef:o,autoscrollingRef:s,autoscrollingTimeoutRef:c,contentRef:l,defaultScrollPositionAppliedRef:u,itemCountRef:d,messageElementsRef:f,modeRef:p,pendingScrollToMessageRef:m,prependRestoreRef:h,scrollMarginRef:v,scrollPreviousItemPeekRef:y,spacerGapRef:b,spacerHeightRef:x,spacerRef:S,viewportRef:C}=e,w=i.useCallback(e=>{c.current!==null&&(window.clearTimeout(c.current),c.current=null),s.current!==e&&(s.current=e,t()),e&&(c.current=window.setTimeout(()=>{c.current=null,s.current=!1,t()},_))},[t]),T=i.useCallback(e=>{let t=S.current;if(!t)return;let n=Math.max(0,Math.ceil(e));x.current!==n&&(x.current=n,t.hidden=n===0,t.style.height=`${n}px`,t.style.marginTop=n>0?`${-b.current}px`:``)},[]),E=i.useCallback((e,{behavior:r=`auto`,autoscrolling:i=!1}={})=>{let a=C.current;if(!a)return;let o=Math.max(0,e);if(Math.abs(a.scrollTop-o)<=g){a.scrollTop=o,t();return}i&&w(!0),a.scrollTo({top:o,behavior:r}),n()},[t,n,w]),ee=i.useCallback(({behavior:e=`auto`}={})=>C.current?(T(0),a.current=null,p.current=`free-scrolling`,E(0,{behavior:e}),r(),!0):!1,[r,E,T]),D=i.useCallback(({behavior:e=`auto`}={})=>{let t=C.current;return t?(T(0),a.current=null,p.current=o.current?`following-bottom`:`free-scrolling`,E(N(t),{autoscrolling:!0,behavior:e}),r(),!0):!1},[r,E,T]),k=i.useCallback((e,{align:t=`start`,behavior:n=`auto`,scrollMargin:i=v.current}={},{keepPreviousPeek:o=!1}={})=>{let s=l.current,c=C.current;if(!s||!c||!s.contains(e))return!1;let u=O({align:t,element:e,scrollMargin:o?i+y.current:i,spacer:S.current,viewport:c}),d=j({content:s,scrollTop:u,spacer:S.current,viewport:c});return T(d),h.current={element:e,viewportTop:A(e,c)},p.current=o?`anchored-to-message`:`settling-jump`,a.current=o?e:null,E(u,{behavior:n}),r(),!0},[r,E,T]),M=i.useCallback(()=>{let e=a.current;return!e||!e.isConnected||p.current!==`anchored-to-message`?!1:k(e,{align:`start`},{keepPreviousPeek:!0})},[k]),P=i.useCallback((e,t)=>{let n=f.current.get(e);return n?(u.current=!0,k(n,t)?(m.current=null,!0):(m.current={messageId:e,options:t},!0)):d.current===0?(m.current={messageId:e,options:t},u.current=!0,!0):!1},[k]);return{flushPendingScrollToMessage:i.useCallback(()=>{let e=m.current;if(!e)return!1;let t=f.current.get(e.messageId);return!t||!k(t,e.options)?!1:(m.current=null,u.current=!0,!0)},[k]),reanchorToAnchoredMessage:M,scrollToElement:k,scrollToEnd:D,scrollToMessage:P,scrollToStart:ee}}function re(e,t){let n=e,r=new Set;return{getSnapshot:()=>n,hasListeners:()=>r.size>0,setSnapshot:e=>{t(n,e)||(n=e,r.forEach(e=>e()))},subscribe:(e,t,n)=>{let i=r.size===0;return r.add(e),i&&t?.(),()=>{r.delete(e),r.size===0&&n?.()}}}}function ie(e,t){return re(e,t)}function ae(){return re(b,se)}function oe(e,t){return e.start===t.start&&e.end===t.end}function se(e,t){return e.currentAnchorId!==t.currentAnchorId||e.visibleMessageIds.length!==t.visibleMessageIds.length?!1:e.visibleMessageIds.every((e,n)=>e===t.visibleMessageIds[n])}function ce({autoScroll:e,scrollEdgeThreshold:t,scrollMargin:n,scrollPreviousItemPeek:r}){let a=i.useRef(e),o=i.useRef(!1),s=i.useRef(null),c=i.useRef(!1),l=i.useRef(t),u=i.useRef(0),d=i.useRef(null),f=i.useRef(0),p=i.useRef(e?`following-bottom`:`free-scrolling`),m=i.useRef(new Map),h=i.useRef(null),g=i.useRef(null),_=i.useRef(null),v=i.useRef(r),b=i.useRef(!0),x=i.useRef(null),S=i.useRef(n),C=i.useRef(null),w=i.useRef(0),T=i.useRef(0),E=i.useRef(null),ee=i.useRef(null),D=i.useRef(null),O=i.useRef(null),k=i.useRef(null),A=i.useRef(null),j=i.useRef(null),M=i.useRef(null),N=i.useRef(new Set),P=i.useRef(new WeakSet);return D.current===null&&(D.current=ie(y,oe)),M.current===null&&(M.current=ae()),a.current=e,l.current=t,S.current=n,v.current=r,{autoScrollRef:a,autoscrollingRef:o,autoscrollingTimeoutRef:O,streamingTurnRef:_,contentRef:s,defaultScrollPositionAppliedRef:c,firstItemRef:d,itemCountRef:u,lastScrollTopRef:f,messageElementsRef:m,modeRef:p,pendingScrollFrameRef:C,pendingScrollToMessageRef:h,prependRestoreRef:g,preserveScrollOnPrependRef:b,rootRef:x,scrollEdgeThresholdRef:l,scrollMarginRef:S,scrollPreviousItemPeekRef:v,spacerGapRef:w,spacerHeightRef:T,spacerRef:E,stateFrameRef:ee,stateStore:D.current,viewportRef:k,visibilityFrameRef:A,visibilityObserverRef:j,visibilityStore:M.current,visibleMessageIdsRef:N,handledScrollAnchorsRef:P}}function le(e,t){return i.useCallback(n=>{e.current=n,n&&t()},[e,t])}function ue({autoScroll:e=!1,defaultScrollPosition:t=`end`,scrollEdgeThreshold:n=p,scrollPreviousItemPeek:r=m,scrollMargin:a=h}){let o=ce({autoScroll:e,scrollEdgeThreshold:n,scrollMargin:a,scrollPreviousItemPeek:r}),{streamingTurnRef:s,autoScrollRef:c,autoscrollingRef:l,autoscrollingTimeoutRef:u,contentRef:d,defaultScrollPositionAppliedRef:f,firstItemRef:_,itemCountRef:v,lastScrollTopRef:y,messageElementsRef:O,modeRef:j,pendingScrollFrameRef:N,pendingScrollToMessageRef:P,prependRestoreRef:F,preserveScrollOnPrependRef:I,rootRef:re,scrollEdgeThresholdRef:ie,scrollMarginRef:ae,scrollPreviousItemPeekRef:oe,spacerGapRef:se,spacerHeightRef:ue,spacerRef:L,stateFrameRef:R,stateStore:z,viewportRef:B,visibilityFrameRef:V,visibilityObserverRef:H,visibilityStore:U,visibleMessageIdsRef:W,handledScrollAnchorsRef:de}=o,fe=i.useRef(t);fe.current!==t&&(fe.current=t,f.current=!1);let G=i.useCallback(e=>{let t=re.current,n=B.current,r=[e.start&&`start`,e.end&&`end`].filter(Boolean).join(` `),i=l.current;for(let e of[t,n])e&&(r?e.setAttribute(`data-scrollable`,r):e.removeAttribute(`data-scrollable`),e.toggleAttribute(`data-autoscrolling`,i))},[]),pe=i.useCallback(e=>{let t=B.current?.scrollTop??0,n=t<y.current-g;y.current=t,c.current&&!e.end&&j.current!==`settling-jump`&&j.current!==`anchored-to-message`?j.current=`following-bottom`:j.current===`following-bottom`&&e.end&&n&&!l.current&&(j.current=`free-scrolling`)},[]),K=i.useCallback(()=>{let e=x({content:d.current,scrollEdgeThreshold:ie.current,spacer:L.current,viewport:B.current});pe(e);let t=j.current===`following-bottom`?{...e,end:!1}:e;G(t),z.setSnapshot(t)},[pe,z,G]),q=i.useCallback(()=>{R.current===null&&(R.current=window.requestAnimationFrame(()=>{R.current=null,K()}))},[K]),J=i.useCallback(()=>{U.hasListeners()&&V.current===null&&(V.current=window.requestAnimationFrame(()=>{V.current=null,U.hasListeners()&&U.setSnapshot(S({content:d.current,scrollMargin:ae.current,scrollPreviousItemPeek:oe.current,spacer:L.current,viewport:B.current,visibleMessageIds:W.current}))}))},[U]),{flushPendingScrollToMessage:Y,reanchorToAnchoredMessage:me,scrollToElement:X,scrollToEnd:Z,scrollToMessage:he,scrollToStart:Q}=ne({refs:o,commitScrollState:K,scheduleStateCommit:q,scheduleVisibilitySync:J}),ge=i.useCallback(()=>{let e=F.current,t=B.current;if(!e||!t||!e.element.isConnected)return!1;let n=A(e.element,t)-e.viewportTop;return Math.abs(n)<=g?!1:(t.scrollTop+=n,e.viewportTop=A(e.element,t),q(),J(),!0)},[q,J]),$=i.useCallback(()=>{let e=d.current,t=B.current;if(!e||!t){F.current=null;return}let n=D({content:e,spacer:L.current,viewport:t});F.current=n?{element:n,viewportTop:A(n,t)}:null},[]),_e=i.useCallback(()=>{N.current===null&&(N.current=window.requestAnimationFrame(()=>{N.current=null,Y()&&$()}))},[$,Y]),ve=i.useCallback(()=>{if(!t||f.current||v.current===0)return!1;let e=!1;if(t===`last-anchor`){let t=d.current,n=B.current,r=t&&n?ee(C(t,L.current)):null;if(!t||!n||!r)e=Z({behavior:`auto`});else{let i=k(r,n);e=M({content:t,spacer:L.current,viewport:n})-i<=n.clientHeight?Z({behavior:`auto`}):X(r,{align:`start`},{keepPreviousPeek:!0})}}else e=t===`end`?Z({behavior:`auto`}):Q({behavior:`auto`});return e?(f.current=!0,!0):!1},[t,X,Z,Q]),ye=i.useCallback(()=>{let e=d.current;if(!e)return;let t=C(e,L.current),n=v.current,r=_.current;v.current=t.length,_.current=t[0]??null,(()=>{if(Y())return;if(n===0){if(ve()||t.length>0&&c.current&&Z({behavior:`auto`}))return;K(),J();return}let e=r?t.indexOf(r):-1;if(I.current&&e>0){ge();return}if(t.length>n){let e=w(t,n);if(e){if(c.current&&j.current===`following-bottom`&&E(t,n)){Z({behavior:`auto`});return}X(e,{align:`start`},{keepPreviousPeek:!0}),de.current.add(e);return}}if(t.length===n){let e=T(t,de.current);if(e){X(e,{align:`start`},{keepPreviousPeek:!0}),de.current.add(e);return}}j.current===`following-bottom`&&c.current?Z({behavior:`auto`}):(K(),J())})(),$()},[ve,$,K,Y,ge,J,X,Z]),be=i.useCallback(()=>{if(j.current===`following-bottom`&&c.current){Z({behavior:`auto`});return}let e=ue.current;if(me()){c.current&&e>0&&ue.current===0&&Z({behavior:`auto`});return}q(),J()},[me,q,J,Z]),xe=i.useCallback(()=>{let e=B.current;if(!(!e||!U.hasListeners())){if(typeof IntersectionObserver>`u`){J();return}H.current||=new IntersectionObserver(e=>{for(let t of e){let e=t.target.dataset.messageId;e&&(t.isIntersecting?W.current.add(e):W.current.delete(e))}J()},{root:e,rootMargin:`${-(ae.current+oe.current)}px 0px 0px 0px`,threshold:[0,.01,.5,1]}),O.current.forEach(e=>{H.current?.observe(e)}),J()}},[J,U]),Se=i.useCallback(()=>{V.current!==null&&(window.cancelAnimationFrame(V.current),V.current=null),H.current?.disconnect(),H.current=null,W.current.clear(),U.setSnapshot(b)},[U]),Ce=i.useCallback((e,t,n)=>{if(t){O.current.set(e,t),H.current?.observe(t),J(),P.current?.messageId===e&&_e();return}n&&O.current.get(e)===n&&(O.current.delete(e),W.current.delete(e),H.current?.unobserve(n),J())},[_e,J]),we=i.useCallback(()=>{(j.current===`following-bottom`||j.current===`anchored-to-message`||j.current===`settling-jump`)&&(s.current=null,j.current=`free-scrolling`)},[]),Te=i.useCallback(()=>G(z.getSnapshot()),[z,G]),Ee=le(re,Te),De=le(B,Te),Oe=i.useCallback(e=>{d.current=e},[]),ke=i.useCallback(e=>{L.current=e,se.current=te(e?.parentElement??null)},[]),Ae=i.useCallback(()=>{K(),J(),$()},[$,K,J]),je=i.useMemo(()=>({handleContentChange:ye,handleResize:be,observeVisibility:xe,preserveScrollOnPrependRef:I,scrollToEnd:Z,scrollToMessage:he,scrollToStart:Q,setContentElement:Oe,setRootElement:Ee,setSpacerElement:ke,setViewportElement:De,stateStore:z,syncAfterScroll:Ae,unobserveVisibility:Se,userScrollIntent:we,viewportRef:B,visibilityStore:U}),[ye,be,xe,Z,he,Q,Oe,Ee,ke,De,z,Ae,Se,we,U]);return i.useLayoutEffect(()=>{ve()},[ve]),i.useEffect(()=>()=>{R.current!==null&&(window.cancelAnimationFrame(R.current),R.current=null),V.current!==null&&(window.cancelAnimationFrame(V.current),V.current=null),u.current!==null&&(window.clearTimeout(u.current),u.current=null),N.current!==null&&(window.cancelAnimationFrame(N.current),N.current=null),H.current?.disconnect(),H.current=null},[]),i.useLayoutEffect(()=>{if(e&&j.current===`following-bottom`&&v.current>0){Z({behavior:`auto`});return}K()},[e,K,Z]),{context:je,registerMessage:Ce}}function L(e){let t=i.useRef(e);return t.current=e,t}var R=i.createContext(null),z=i.createContext(null);function B(){let e=i.useContext(R);if(!e)throw Error(`useMessageScroller must be used within a MessageScroller.`);return e}function V(){let e=i.useContext(z);if(!e)throw Error(`MessageScrollerItem must be used within a MessageScroller.`);return e}function H(){let{scrollToEnd:e,scrollToMessage:t,scrollToStart:n}=B();return i.useMemo(()=>({scrollToEnd:e,scrollToMessage:t,scrollToStart:n}),[e,t,n])}function U(){let{stateStore:e}=B();return i.useSyncExternalStore(e.subscribe,e.getSnapshot,e.getSnapshot)}function W(){let{observeVisibility:e,unobserveVisibility:t,visibilityStore:n}=B(),r=i.useCallback(r=>n.subscribe(r,e,t),[e,t,n]);return i.useSyncExternalStore(r,n.getSnapshot,n.getSnapshot)}function de({autoScroll:e=!1,children:t,defaultScrollPosition:n=`end`,scrollEdgeThreshold:r,scrollPreviousItemPeek:i,scrollMargin:o}){let{context:s,registerMessage:c}=ue({autoScroll:e,defaultScrollPosition:n,scrollEdgeThreshold:r,scrollPreviousItemPeek:i,scrollMargin:o});return(0,a.jsx)(R.Provider,{value:s,children:(0,a.jsx)(z.Provider,{value:c,children:t})})}function fe({children:e,...t}){let{setRootElement:n}=B();return(0,a.jsx)(`div`,{ref:n,...t,children:e})}function G({"aria-label":e,children:t,onKeyDown:n,onScroll:r,onTouchMove:o,onWheel:s,preserveScrollOnPrepend:c=!0,ref:l,role:u,tabIndex:d,...p}){let{handleResize:m,preserveScrollOnPrependRef:h,setViewportElement:g,syncAfterScroll:_,userScrollIntent:y,viewportRef:b}=B();h.current=c;let x=i.useCallback(e=>{g(e),f(l)?.(e)},[l,g]);function S(e){_(),r?.(e)}function C(e){y(),s?.(e)}function w(e){y(),o?.(e)}function T(e){v.has(e.key)&&y(),n?.(e)}return i.useEffect(()=>{let e=b.current;if(!e||typeof ResizeObserver>`u`)return;let t=0,n=new ResizeObserver(()=>{window.cancelAnimationFrame(t),t=window.requestAnimationFrame(m)});return n.observe(e),()=>{window.cancelAnimationFrame(t),n.disconnect()}},[m,b]),(0,a.jsx)(`div`,{ref:x,role:u??`region`,"aria-label":e??`Messages`,tabIndex:d??0,onKeyDown:T,onScroll:S,onTouchMove:w,onWheel:C,...p,children:t})}function pe({"aria-relevant":e,children:t,ref:n,role:r,spacerClassName:o,...s}){let{handleContentChange:c,handleResize:l,setContentElement:u,setSpacerElement:d}=B(),p=i.useRef(null),m=i.useCallback(e=>{p.current=e,u(e),f(n)?.(e)},[n,u]);return i.useLayoutEffect(()=>{let e=p.current;if(!e||(c(),typeof MutationObserver>`u`))return;let t=new MutationObserver(()=>{c()});return t.observe(e,{childList:!0}),()=>t.disconnect()},[c]),i.useEffect(()=>{let e=p.current;if(!e||typeof ResizeObserver>`u`)return;let t=0,n=new ResizeObserver(()=>{window.cancelAnimationFrame(t),t=window.requestAnimationFrame(l)});return n.observe(e),()=>{window.cancelAnimationFrame(t),n.disconnect()}},[l]),(0,a.jsxs)(`div`,{ref:m,role:r??`log`,"aria-relevant":e??`additions`,...s,children:[t,(0,a.jsx)(`div`,{ref:d,"aria-hidden":`true`,"data-message-scroller-spacer":``,hidden:!0,className:o})]})}function K({messageId:e,ref:t,scrollAnchor:n=!1,...r}){let o=V(),s=i.useRef(null);return(0,a.jsx)(`div`,{ref:i.useCallback(n=>{let r=s.current;s.current=n,e&&o(e,n,r),f(t)?.(n)},[e,t,o]),"data-message-id":e,"data-scroll-anchor":n?`true`:`false`,...r})}function q({behavior:e=`smooth`,children:t,direction:n=`end`,onClick:r,render:o,tabIndex:l,type:u=`button`,...d}){let{scrollToEnd:f,scrollToStart:p,stateStore:m}=B(),h=L(r),g=i.useCallback(e=>m.subscribe(e),[m]),_=i.useCallback(()=>{let e=m.getSnapshot();return n===`start`?e.start:e.end},[n,m]),v=i.useSyncExternalStore(g,_,_),y=i.useCallback(t=>{v&&(h.current?.(t),t.defaultPrevented||(t.currentTarget.blur(),n===`start`?p({behavior:e}):f({behavior:e})))},[e,n,v,h,f,p]);return s({defaultTagName:`button`,props:c({type:u,inert:!v,tabIndex:v?l:-1,children:t??(0,a.jsxs)(`span`,{children:[`Scroll to `,n]}),onClick:y},d),render:o,state:{active:v,direction:n},stateAttributesMapping:{active:e=>({"data-active":e?`true`:`false`})}})}var J={Provider:de,Root:fe,Viewport:G,Content:pe,Item:K,Button:q};function Y(e){return(0,a.jsx)(J.Provider,{...e})}function me({className:e,...n}){return(0,a.jsx)(J.Root,{"data-slot":`message-scroller`,className:t.t(`group/message-scroller relative flex size-full min-h-0 flex-col overflow-hidden`,e),...n})}function X({className:e,...n}){return(0,a.jsx)(J.Viewport,{"data-slot":`message-scroller-viewport`,className:t.t(`scroll-fade-b scrollbar-thin scrollbar-gutter-stable data-autoscrolling:scrollbar-thumb-transparent data-autoscrolling:scrollbar-track-transparent size-full min-h-0 min-w-0 overflow-y-auto overscroll-contain contain-content`,e),...n})}function Z({className:e,...n}){return(0,a.jsx)(J.Content,{"data-slot":`message-scroller-content`,className:t.t(`flex h-max min-h-full flex-col gap-6`,e),...n})}function he({className:e,scrollAnchor:n=!1,...r}){return(0,a.jsx)(J.Item,{"data-slot":`message-scroller-item`,scrollAnchor:n,className:t.t(`min-w-0 shrink-0 [contain-intrinsic-size:auto_10rem] [content-visibility:auto]`,e),...r})}function Q({direction:e=`end`,className:n,children:i,render:s,variant:c=`primary`,size:l=`xs`,...u}){return(0,a.jsx)(J.Button,{"data-slot":`message-scroller-button`,"data-direction":e,"data-variant":c,"data-size":l,direction:e,className:t.t(`absolute inset-s-1/2 -translate-x-1/2 border-border bg-surface text-foreground transition-[translate,scale,opacity] duration-200 hover:bg-surface-hover data-[direction=end]:data-[active=false]:translate-y-full data-[direction=start]:data-[active=false]:-translate-y-full data-[active=false]:pointer-events-none data-[direction=start]:top-4 data-[direction=end]:bottom-4 data-[active=true]:translate-y-0 data-[active=false]:scale-95 data-[active=true]:scale-100 data-[active=false]:opacity-0 data-[active=true]:opacity-100 data-[active=false]:duration-400 data-[active=false]:ease-[cubic-bezier(0.7,0,0.84,0)] data-[active=true]:ease-[cubic-bezier(0.23,1,0.32,1)] rtl:translate-x-1/2 data-[direction=start]:[&_svg]:rotate-180`,n),render:s??(0,a.jsx)(r.Button,{variant:c,size:l}),...u,children:i??(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(o,{}),(0,a.jsx)(`span`,{className:`sr-only`,children:e===`end`?`Scroll to end`:`Scroll to start`})]})})}Object.defineProperty(exports,"a",{enumerable:!0,get:function(){return Y}}),Object.defineProperty(exports,"c",{enumerable:!0,get:function(){return W}}),Object.defineProperty(exports,"i",{enumerable:!0,get:function(){return he}}),Object.defineProperty(exports,"l",{enumerable:!0,get:function(){return H}}),Object.defineProperty(exports,"n",{enumerable:!0,get:function(){return Q}}),Object.defineProperty(exports,"o",{enumerable:!0,get:function(){return X}}),Object.defineProperty(exports,"r",{enumerable:!0,get:function(){return Z}}),Object.defineProperty(exports,"s",{enumerable:!0,get:function(){return U}}),Object.defineProperty(exports,"t",{enumerable:!0,get:function(){return me}});
//# sourceMappingURL=message-scroller-B5KC-IdJ.cjs.map