@stanfordspezi/spezi-web-design-system
Version:
Stanford Biodesign Digital Health Spezi Web Design System
2 lines (1 loc) • 5.51 kB
JavaScript
;const a=require("react/jsx-runtime"),i=require("react"),j=require("./index-DwV9MiDB.js"),W=require("./Button-CoJ-cT_W.js"),F=require("./ellipsis-B7b-_Whz.js"),U=require("./chevron-right-CNmy_NtA.js"),Y=require("./chevron-left-ConlkygW.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(),r=typeof n.getTextInfo=="function"?n.getTextInfo():n.textInfo;if(r)return r.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},q=i.createContext(S),te=i.createContext(!1);let ne=!!(typeof window<"u"&&window.document&&window.document.createElement),C=new WeakMap;function ae(e=!1){let t=i.useContext(q),n=i.useRef(null);if(n.current===null&&!e){var r,s;let l=(s=i.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED)===null||s===void 0||(r=s.ReactCurrentOwner)===null||r===void 0?void 0:r.current;if(l){let u=C.get(l);u==null?C.set(l,{id:t.current,state:l.memoizedState}):l.memoizedState!==u.state&&(t.current=u.id,C.delete(l))}n.current=++t.current}return n.current}function oe(e){let t=i.useContext(q);t===S&&!ne&&process.env.NODE_ENV!=="production"&&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),r=t===S&&process.env.NODE_ENV==="test"?"react-aria":`react-aria${t.prefix}`;return e||`${r}-${n}`}function ie(e){let t=i.useId(),[n]=i.useState(L()),r=n||process.env.NODE_ENV==="test"?"react-aria":`react-aria${S.prefix}`;return e||`${r}-${t}`}i.useId;function re(){return!1}function se(){return!0}function ce(e){return()=>{}}function L(){return typeof i.useSyncExternalStore=="function"?i.useSyncExternalStore(ce,re,se):i.useContext(te)}const le=Symbol.for("react-aria.i18n.locale");function V(){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=V(),v=new Set;function z(){y=V();for(let e of v)e(y)}function ue(){let e=L(),[t,n]=i.useState(y);return i.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=i.createContext(null);function de(){let e=ue();return i.useContext(fe)||e}function d(e,t){const n=t-e+1;return Array.from({length:n},(r,s)=>s+e)}var p=(e=>(e.DOTS="dots",e.PREV="prev",e.NEXT="next",e))(p||{});function R(e){const{page:t,total:n,siblings:r=1,boundaries:s=1,initialPage:l=1,showControls:u=!1,onChange:m}=e,[o,b]=i.useState(t||l),{direction:H}=de(),$=H==="rtl",h=c=>{b(c),m&&m(c)};i.useEffect(()=>{t&&t!==o&&b(t)},[t]);const f=i.useCallback(c=>{c<=0?h(1):c>n?h(n):h(c)},[n,o,h]),J=()=>f($?o-1:o+1),K=()=>f($?o+1:o-1),Q=()=>f($?n:1),Z=()=>f($?1:n),x=i.useCallback(c=>u?$?["next",...c,"prev"]:["prev",...c,"next"]:c,[$,u]);return{range:i.useMemo(()=>{if(r*2+3+s*2>=n)return x(d(1,n));const I=Math.max(o-r,s),N=Math.min(o+r,n-s),M=I>s+2,k=N<n-(s+1);if(!M&&k){const w=r*2+s+2;return x([...d(1,w),"dots",...d(n-(s-1),n)])}if(M&&!k){const w=s+1+2*r;return x([...d(1,s),"dots",...d(n-w,n)])}return x([...d(1,s),"dots",...d(I,N),"dots",...d(n-s+1,n)])},[n,o,r,s,x]),activePage:o,setPage:f,next:J,previous:K,first:Q,last:Z}}const D=({className:e,...t})=>a.jsx("nav",{"data-slot":"pagination",role:"navigation","aria-label":"pagination",className:j.cn("flex justify-center",e),...t}),A=({className:e,...t})=>a.jsx("ul",{"data-slot":"pagination-content",className:j.cn("flex items-center gap-1",e),...t}),g=({className:e,...t})=>a.jsx("li",{"data-slot":"pagination-item-container",className:j.cn("",e),...t}),P=({isActive:e,size:t="sm",...n})=>a.jsx(W.Button,{"data-slot":"pagination-item","aria-current":e?"page":void 0,variant:e?"outline":"ghost",size:t,...n}),G=()=>a.jsx(Y.default,{className:"size-4"}),B=({children:e,...t})=>a.jsx(P,{"aria-label":"Go to previous page",...t,children:e??a.jsx(G,{})}),T=()=>a.jsx(U.default,{className:"size-4"}),X=({children:e,...t})=>a.jsx(P,{"aria-label":"Go to next page",...t,children:e??a.jsx(T,{})}),E=({className:e,...t})=>a.jsxs("span",{"data-slot":"pagination-ellipsis","aria-hidden":!0,className:j.cn("flex-center size-9",e),...t,children:[a.jsx(F.default,{className:"size-4"}),a.jsx("span",{className:"sr-only",children:"More pages"})]}),$e=({total:e,page:t,onPageChange:n,siblings:r=1,showControls:s=!0,...l})=>{const{activePage:u,range:m}=R({total:e,page:t,siblings:r,showControls:s,...l});return a.jsx(D,{children:a.jsx(A,{children:m.map((o,b)=>o===p.PREV?t===1?null:a.jsx(g,{children:a.jsx(B,{onClick:()=>n(u-1)})},o):o===p.NEXT?t===e?null:a.jsx(g,{children:a.jsx(X,{onClick:()=>n(u+1)})},o):o===p.DOTS?a.jsx(g,{children:a.jsx(E,{})},`${o}-${b}`):a.jsx(g,{children:a.jsx(P,{onClick:()=>n(o),isActive:o===t,children:o})},o))})})};exports.ButtonPagination=$e;exports.Pagination=D;exports.PaginationContent=A;exports.PaginationEllipsis=E;exports.PaginationItem=P;exports.PaginationItemContainer=g;exports.PaginationItemType=p;exports.PaginationNext=X;exports.PaginationNextIcon=T;exports.PaginationPrevious=B;exports.PaginationPreviousIcon=G;exports.usePagination=R;