@stanfordspezi/spezi-web-design-system
Version:
Stanford Biodesign Digital Health Spezi Web Design System
2 lines (1 loc) • 5.32 kB
JavaScript
;const a=require("react/jsx-runtime"),o=require("react"),j=require("./index-DwV9MiDB.js"),W=require("./Button-DEDWKDkp.js"),F=require("./chevron-left-p73IPIsY.js"),U=require("./chevron-right-DwipE5IV.js"),Y=require("./ellipsis-BynMCB21.js"),O=new Set(["Arab","Syrc","Samr","Mand","Thaa","Mend","Nkoo","Adlm","Rohg","Hebr"]),_=new Set(["ae","ar","arc","bcc","bqi","ckb","dv","fa","glk","he","ku","mzn","nqo","pnb","ps","sd","ug","ur","yi"]);function ee(e){if(Intl.Locale){let n=new Intl.Locale(e).maximize(),i=typeof n.getTextInfo=="function"?n.getTextInfo():n.textInfo;if(i)return i.direction==="rtl";if(n.script)return O.has(n.script)}let t=e.split("-")[0];return _.has(t)}const S={prefix:String(Math.round(Math.random()*1e10)),current:0},L=o.createContext(S),te=o.createContext(!1);let ne=!!(typeof window<"u"&&window.document&&window.document.createElement),w=new WeakMap;function ae(e=!1){let t=o.useContext(L),n=o.useRef(null);if(n.current===null&&!e){var i,s;let l=(s=o.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED)===null||s===void 0||(i=s.ReactCurrentOwner)===null||i===void 0?void 0:i.current;if(l){let u=w.get(l);u==null?w.set(l,{id:t.current,state:l.memoizedState}):l.memoizedState!==u.state&&(t.current=u.id,w.delete(l))}n.current=++t.current}return n.current}function re(e){let t=o.useContext(L);t===S&&!ne&&console.warn("When server rendering, you must wrap your application in an <SSRProvider> to ensure consistent ids are generated between the client and server.");let n=ae(!!e),i=t===S&&process.env.NODE_ENV==="test"?"react-aria":`react-aria${t.prefix}`;return e||`${i}-${n}`}function oe(e){let t=o.useId(),[n]=o.useState(q()),i=n||process.env.NODE_ENV==="test"?"react-aria":`react-aria${S.prefix}`;return e||`${i}-${t}`}o.useId;function ie(){return!1}function se(){return!0}function ce(e){return()=>{}}function q(){return typeof o.useSyncExternalStore=="function"?o.useSyncExternalStore(ce,ie,se):o.useContext(te)}const le=Symbol.for("react-aria.i18n.locale");function R(){let e=typeof window<"u"&&window[le]||typeof navigator<"u"&&(navigator.language||navigator.userLanguage)||"en-US";try{Intl.DateTimeFormat.supportedLocalesOf([e])}catch{e="en-US"}return{locale:e,direction:ee(e)?"rtl":"ltr"}}let y=R(),v=new Set;function z(){y=R();for(let e of v)e(y)}function ue(){let e=q(),[t,n]=o.useState(y);return o.useEffect(()=>(v.size===0&&window.addEventListener("languagechange",z),v.add(n),()=>{v.delete(n),v.size===0&&window.removeEventListener("languagechange",z)}),[]),e?{locale:"en-US",direction:"ltr"}:t}const fe=o.createContext(null);function de(){let e=ue();return o.useContext(fe)||e}function d(e,t){const n=t-e+1;return Array.from({length:n},(i,s)=>s+e)}var p=(e=>(e.DOTS="dots",e.PREV="prev",e.NEXT="next",e))(p||{});function V(e){const{page:t,total:n,siblings:i=1,boundaries:s=1,initialPage:l=1,showControls:u=!1,onChange:h}=e,[r,m]=o.useState(t||l),{direction:E}=de(),$=E==="rtl",b=c=>{m(c),h&&h(c)};o.useEffect(()=>{t&&t!==r&&m(t)},[t]);const f=o.useCallback(c=>{c<=0?b(1):c>n?b(n):b(c)},[n,r,b]),J=()=>f($?r-1:r+1),K=()=>f($?r+1:r-1),Q=()=>f($?n:1),Z=()=>f($?1:n),x=o.useCallback(c=>u?$?["next",...c,"prev"]:["prev",...c,"next"]:c,[$,u]);return{range:o.useMemo(()=>{if(i*2+3+s*2>=n)return x(d(1,n));const I=Math.max(r-i,s),N=Math.min(r+i,n-s),M=I>s+2,k=N<n-(s+1);if(!M&&k){const P=i*2+s+2;return x([...d(1,P),"dots",...d(n-(s-1),n)])}if(M&&!k){const P=s+1+2*i;return x([...d(1,s),"dots",...d(n-P,n)])}return x([...d(1,s),"dots",...d(I,N),"dots",...d(n-s+1,n)])},[n,r,i,s,x]),activePage:r,setPage:f,next:J,previous:K,first:Q,last:Z}}const A=({className:e,...t})=>a.jsx("nav",{role:"navigation","aria-label":"pagination",className:j.cn("flex justify-center",e),...t}),D=({className:e,...t})=>a.jsx("ul",{className:j.cn("flex items-center gap-1",e),...t}),g=({className:e,...t})=>a.jsx("li",{className:j.cn("",e),...t}),C=({isActive:e,size:t="sm",...n})=>a.jsx(W.Button,{"aria-current":e?"page":void 0,variant:e?"outline":"ghost",size:t,...n}),G=()=>a.jsx(F.ChevronLeft,{className:"size-4"}),B=({children:e,...t})=>a.jsx(C,{"aria-label":"Go to previous page",...t,children:e??a.jsx(G,{})}),T=()=>a.jsx(U.ChevronRight,{className:"size-4"}),X=({children:e,...t})=>a.jsx(C,{"aria-label":"Go to next page",...t,children:e??a.jsx(T,{})}),H=({className:e,...t})=>a.jsxs("span",{"aria-hidden":!0,className:j.cn("flex-center size-9",e),...t,children:[a.jsx(Y.Ellipsis,{className:"size-4"}),a.jsx("span",{className:"sr-only",children:"More pages"})]}),$e=({total:e,page:t,onPageChange:n,siblings:i=1,showControls:s=!0,...l})=>{const{activePage:u,range:h}=V({total:e,page:t,siblings:i,showControls:s,...l});return a.jsx(A,{children:a.jsx(D,{children:h.map((r,m)=>r===p.PREV?t===1?null:a.jsx(g,{children:a.jsx(B,{onClick:()=>n(u-1)})},r):r===p.NEXT?t===e?null:a.jsx(g,{children:a.jsx(X,{onClick:()=>n(u+1)})},r):r===p.DOTS?a.jsx(g,{children:a.jsx(H,{})},`${r}-${m}`):a.jsx(g,{children:a.jsx(C,{onClick:()=>n(r),isActive:r===t,children:r})},r))})})};exports.ButtonPagination=$e;exports.Pagination=A;exports.PaginationContent=D;exports.PaginationEllipsis=H;exports.PaginationItem=C;exports.PaginationItemContainer=g;exports.PaginationItemType=p;exports.PaginationNext=X;exports.PaginationNextIcon=T;exports.PaginationPrevious=B;exports.PaginationPreviousIcon=G;exports.usePagination=V;