PageSourceSearch

https://www.supreso.co/assets/MemberLeaderboardPage-C4ACqHQW.js

js supreso.co collected 2026-10-10 00:01:33 UTC 13,369 bytes, 1 lines download raw bytes

1import{j as a,m as ue,g as be,r as o}from"./ThemeContext-CCOCtADw.js";import{b as he}from"./resolveMediaUrl-CfNsOsUK.js";import{B as pe}from"./badge-check-h41Jvbqq.js";import{M as fe}from"./users-_DXWDtSf.js";import{M as ge}from"./MemberEmptyState-CfiVSV4k.js";import{M as xe}from"./MemberPageHeader-DRl5CsQj.js";import{t as Y}from"./app-entry-KRjH7_lx.js";import{c as je}from"./gymFacilityRoles-D65_ZN3F.js";import"./index-hjR8rd9R.js";import{u as J,C as Se}from"./useDebouncedCallback-BJJhXmNW.js";import{c as ye}from"./memberPortalApi-BqFEy06v.js";import{S as X}from"./search-CNwAy8Hs.js";import{X as z}from"./x-fyKww0Pl.js";import{C as Ne}from"./clock-Bbob_9JT.js";import{S as _e}from"./sliders-horizontal-B_2H4UQn.js";import{C as ve}from"./chevron-down-BtyJl0Tw.js";import{T as ke}from"./trophy-BW-IFbuc.js";import"./buttonClasses-DUHPZpWJ.js";const Q=["USA","United States","America","Canada","Mexico","UK","United Kingdom","England","Scotland","Wales","Germany","France","Spain","Italy","Netherlands","Australia","New Zealand","Japan","China","India","Brazil","Argentina","South Africa","Nigeria","Egypt"],Me=["California","Texas","New York","Florida"],q=[{id:"lifting",name:"Lifting",emoji:"🏋️",events:["Max Squat","Max Deadlift","Max Bench","Total Volume"]},{id:"running",name:"Running",emoji:"🏃",events:["1-Mile","5K","10K","Total Distance"]},{id:"combat",name:"Combat",emoji:"🥋",events:["Max Kicks/Min","Punch Speed","Sparring Wins","Belt Rank"]},{id:"bodyweight",name:"Bodyweight",emoji:"🧘",events:["Pull-ups","Push-ups","Plank Hold","Handstand"]}],Ce=[{key:"today",label:"Today"},{key:"week",label:"This Week"},{key:"month",label:"This Month"}],Le=20,ee=e=>{if(!e||!String(e).trim())return{type:"none",params:{}};const r=String(e).trim();if(r.startsWith("@")){const s=r.substring(1).trim();if(s)return{type:"username",params:{username:s},displayText:`Searching for user: ${s}`}}if(r.includes(",")){const s=r.split(",").map(l=>l.trim());if(s.length===2&&s[0]&&s[1]){const[l,m]=s,d=/^[A-Z]{2}$/.test(m)||Me.includes(m),u=/^[A-Z][a-zA-Z\s]+$/.test(m)||/^[A-Z]{2,3}$/.test(m)||Q.includes(m);if(d)return{type:"city_state",params:{city:l,search:`${l}, ${m}`},displayText:`Searching in: ${l}, ${m}`};if(u)return{type:"location",params:{city:l,country:m},displayText:`Searching in: ${l}, ${m}`}}}const n=/^[A-Z][a-zA-Z\s\-'\.]+$/;return n.test(r)&&r.length>=2&&r.length<=50?{type:"city",params:{city:r},displayText:`Searching in city: ${r}`}:n.test(r)&&Q.includes(r)?{type:"country",params:{country:r},displayText:`Searching in country: ${r}`}:{type:"general",params:{search:r},displayText:`Searching for: ${r}`}},Ae=e=>{const r=new Date;if(e==="today"){const s=new Date(r);return s.setHours(24,0,0,0),`Resets ${s.toLocaleTimeString([],{hour:"numeric",minute:"2-digit"})}`}if(e==="week"){const s=new Date(r),l=r.getDay(),m=l===0?1:8-l;return s.setDate(r.getDate()+m),s.setHours(0,0,0,0),`Resets ${s.toLocaleDateString([],{weekday:"short"})}`}return`Resets ${new Date(r.getFullYear(),r.getMonth()+1,1).toLocaleDateString([],{month:"short",day:"numeric"})}`},$e=e=>q.find(r=>r.id===e)??null,Ee=e=>e===1?{emoji:"🥇",tone:"gold"}:e===2?{emoji:"🥈",tone:"silver"}:e===3?{emoji:"🥉",tone:"bronze"}:e<=10?{emoji:"🏆",tone:"top"}:{emoji:null,tone:"default"},Re=(e,r)=>{if(e==null||Number.isNaN(Number(e)))return"—";if(r==="min"||r==="sec"){const l=Math.round(Number(e)*60),m=Math.floor(l/60),d=l%60;return`${m}:${d.toString().padStart(2,"0")}`}const n=Number(e),s=Number.isInteger(n)?String(n):n.toFixed(1);return r?`${s} ${r}`:s},Te=(e,r)=>{const n=e&&e!=="Unknown"?e:"",s=r&&r!=="Unknown"?r:"";return n&&s?`${n}, ${s}`:n||s||""},we=e=>{const r=e.username??e.user_name??"",n=e.userName??([e.firstname,e.lastname].filter(Boolean).join(" ").trim()||r||"Athlete");return{id:e.id??`${e.userId??r}-${e.rank}-${e.event??e.eventName}`,rank:e.rank??null,username:r,displayName:n,avatarUrl:e.user_avatar??e.profile_picture??null,event:e.eventName??e.event??e.exercise_name??"Achievement",value:e.value??0,unit:e.unit??"",location:Te(e.location,e.country),category:e.category??"",verified:!!e.verified,spots:e.spots??0,improvement:e.improvement??null,date:e.date??null}},De=({category:e,windowKey:r,selectedEvent:n,searchQuery:s,offset:l=0,limit:m=Le})=>{const d={category:e,limit:m,offset:l,verified_only:"false",sort_by:"rank",
1sort_order:"asc",window:r};if(n&&(d.event=n),s!=null&&s.trim()){const u=ee(s);Object.entries(u.params).forEach(([N,_])=>{_&&(d[N]=_)})}return d};function ze(e=""){var n;const r=e.trim().split(/\s+/).filter(Boolean);return r.length>=2?(r[0][0]+r[r.length-1][0]).toUpperCase():(((n=r[0])==null?void 0:n[0])??"?").toUpperCase()}function Pe({achievement:e}){const r=Ee(e.rank),n=e.avatarUrl?he(e.avatarUrl):null,s=e.username?`/members/u/${e.username}`:null;return a.jsxs("li",{className:"member-leaderboard-row",children:[a.jsxs("div",{className:"member-leaderboard-row__rank","data-tone":r.tone,children:[r.emoji?a.jsx("span",{className:"member-leaderboard-row__rank-emoji","aria-hidden":"true",children:r.emoji}):null,a.jsxs("span",{className:"member-leaderboard-row__rank-num",children:["#",e.rank??"—"]})]}),a.jsxs("div",{className:"member-leaderboard-row__identity",children:[n?a.jsx("img",{className:"member-leaderboard-row__avatar",src:n,alt:"",loading:"lazy"}):a.jsx("span",{className:"member-leaderboard-row__avatar member-leaderboard-row__avatar--fallback",children:ze(e.dis
1playName)}),a.jsxs("div",{className:"member-leaderboard-row__copy",children:[a.jsxs("div",{className:"member-leaderboard-row__name-row",children:[s?a.jsx(ue,{to:s,className:"member-leaderboard-row__name",children:e.displayName}):a.jsx("span",{className:"member-leaderboard-row__name",children:e.displayName}),e.verified?a.jsx(pe,{size:14,className:"member-leaderboard-row__verified","aria-label":"Verified"}):null]}),a.jsx("p",{className:"member-leaderboard-row__event",children:e.event}),e.location?a.jsxs("p",{className:"member-leaderboard-row__location",children:[a.jsx(fe,{size:11,"aria-hidden":"true"}),e.location]}):null]})]}),a.jsxs("div",{className:"member-leaderboard-row__score",children:[a.jsx("strong",{children:Re(e.value,e.unit)}),e.spots>0?a.jsxs("span",{className:"member-leaderboard-row__spots",children:[e.spots," spots"]}):null]})]})}function ta(){const{authAxios:e}=be(),r=o.useMemo(()=>ye(e),[e]),[n,s]=o.useState("lifting"),[l,m]=o.useState("week"),[d,u]=o.useState(null),[N,_]=o.useState(!1),[i,A]=o.useState(""),[ae,P]=o.useState(!1),[$,v]=o.useState([]),[E,R]=o.useState([]),[te,g]=o.useState(!1),[x,U]=o.useState([]),[j,re]=o.useState(0),[O,se]=o.useState(!1),[ne,oe]=o.useState(0),[B,F]=o.useState(!0),[T,H]=o.useState(!1),[I,W]=o.useState(""),k=o.useRef(null),b=o.useRef(!0),h=o.useMemo(()=>$e(n),[n]),le=o.useMemo(()=>Ae(l),[l]),S=o.useMemo(()=>i.trim()?ee(i):null,[i]),Z=(d?1:0)+(i.trim()?1:0)+(l!=="week"?1:0);o.useEffect(()=>(b.current=!0,()=>{b.current=!1}),[]),o.useEffect(()=>{document.title="Leaderboard · Supreso"},[]),o.useEffect(()=>{r.fetchLeaderboardSearchHistory().then(t=>{b.current&&Array.isArray(t)&&R(t.slice(0,5))}).catch(()=>{})},[r]);const p=o.useCallback(async({nextOffset:t=0,append:c=!1}={})=>{t===0?F(!0):H(!0),W("");try{const f=De({category:n,windowKey:l,selectedEvent:d,searchQuery:i,offset:t}),D=await r.fetchLeaderboard(f);if(!b.current)return;const L=(D.achievements??[]).map(we);U(me=>c?[...me,...L]:L),re(D.total??L.length),se(!!D.hasMore),oe(t+L.length)}catch(f){if(!b.current)return;W(je(f,"Unable to load leaderboard.")),c||U([])}finally{b.current&&(F(!1),H(!1))}},[n,r,i,d,l]);o.useEffect(()=>{p({nextOffset:0,append:!1})},[p]);const{call:K,cancel:M}=J(async t=>{if(!t||t.length<2){v([]);return}try{const c=await r.fetchLeaderboardSearchSuggestions({query:t,category:n,limit:5});b.current&&v(c)}catch{b.current&&v([])}},300),{call:G,cancel:C}=J(()=>{p({nextOffset:0,append:!1})},450);o.useEffect(()=>(M(),i.length>=2?K.call(i):v([]),M),[M,K,i,n]),o.useEffect(()=>(C(),i.trim()&&G.call(),C),[C,G,i]);const ie=t=>{s(t),u(null),_(!1)},ce=()=>{var c;const t=i.trim();g(!1),(c=k.current)==null||c.blur(),t&&(r.saveLeaderboardSearchHistory(t).catch(()=>{}),R(y=>[t,...y.filter(f=>f!==t)].slice(0,5))),p({nextOffset:0,append:!1})},V=t=>{var c;A(t),g(!1),(c=k.current)==null||c.blur(),setTimeout(()=>{r.saveLeaderboardSearchHistory(t).catch(()=>{}),R(y=>[t,...y.filter(f=>f!==t)].slice(0,5)),p({nextOffset:0,append:!1})},0)},w=()=>{var t;M(),C(),A(""),v([]),g(!1),(t=k.current)==null||t.blur(),p({nextOffset:0,append:!1})},de=()=>{T||!O||p({nextOffset:ne,append:!0})};return a.jsxs("div",{className:"member-portal-page member-leaderboard-page",children:[a.jsx(xe,{title:"Leaderboard",subtitle:j>0?`${j} athletes ranked · ${(h==null?void 0:h.name)??"Global"}`:"Regional PR rankings across Supreso."}),a.jsxs("section",{className:"member-leaderboard-toolbar","aria-label":"Leaderboard filters",children:[a.jsxs("div",{className:"member-leaderboard-toolbar__meta",children:[a.jsx("span",{children:j>0?`${j} athletes ranked`:"Global rankings"}),a.jsx("span",{children:le})]}),a.jsxs("div",{className:"member-leaderboard-search member-search-bar",children:[a.jsx(X,{size:18,className:"member-leaderboard-search__icon","aria-hidden":"true"}),a.jsx("input",{ref:k,type:"search",value:i,placeholder:"Search @username, city, or country…","aria-label":"Search leaderboard",onChange:t=>{A(t.target.value),g(t.target.value.length>=2)},onFocus:()=>{P(!0),g(i.length>=2)},onBlur:()=>{P(!1),setTimeout(()=>g(!1),180)},onKeyDown:t=>{t.key==="Enter"&&ce()}}),i?a.jsx("button",{type:"button",className:"member-leaderboard-search__clear",onClick:w,"aria-label":"Clear search",children:a.jsx(z,{size:16})}):null]}),S!=null&&S.displayText?a.jsx("p",{className:"member-leaderboard-search-hint",children:S.displayText}):null,ae&&te&&($.length>0||E.length>0)?a.jsxs("div",{className:"member-leaderboard-suggestions",children:[$.length>0?a.jsxs(a.Fragment,{children:[a.jsx("p",{className:"member-leaderboard-suggestions__title",children:"Suggestions"}),$.map((t,c)=>a.jsxs("button",{type:"button",className:"member-leaderboard-suggestions__item",onMouseDown:y=>y.preventDefault(),onClick:()=>V(t.text),children:[a.jsx("span",{"aria-hidden":"true",children:t.icon}),a.jsxs("span",{children:[a.jsx("strong",{children:t.text}),t.description?a.jsx("small",{children:t.description}):null]})]},`suggestion-${c}`))]}):null,E.length>0?a.jsxs(a.Fragment,{children:[a.jsx("p",{className:"member-leaderboard-suggestions__title",children:"Recent searches"}),E.map(t=>a.jsxs("button",{type:"button",className:"member-leaderboard-suggestions__item member-leaderboard-suggestions__item--recent",onMouseDown:c=>c.preventDefault(),onClick:()=>V(t),children:[a.jsx(Ne,{size:14,"aria-hidden":"true"}),a.jsx("span",{children:t})]},t))]}):null]}):null,a.jsx("div",{className:"member-leaderboard-categories",role:"tablist","aria-label":"Category",children:q.map(t=>{const c=n===t.id;return a.jsxs("button",{type:"button",role:"tab","aria-selected":c,className:c?"is-active":void 0,onClick:()=>ie(t.id),children:[a.jsx("span",{"aria-hidden":"true",children:t.emoji}),t.name]},t.id)})}),a.jsx("div",{className:"member-leaderboard-windows",role:"group","aria-label":"Time window",children:Ce.map(t=>{const c=l===t.key;return a.jsx("button",{type:"button",className:c?"is-active":void 0,onClick:()=>m(t.key),children:t.label},t.key)})}),a.jsxs("button",{type:"button",className:"member-leaderboard-events-toggle",onClick:()=>_(t=>!t),"aria-expanded":N,children:[a.jsxs("span",{children:[a.jsx(_e,{size:14,"aria-hidden":"true"}),"Events",d?` · ${d}`:h?` · ${h.name}`:"",Z>0?a.jsx("span",{className:"member-leaderboard-events-toggle__badge",children:Z}):null]}),N?a.jsx(Se,{size:16}):a.jsx(ve,{size:16})]}),N&&h?a.jsxs("div",{className:"member-leaderboard-events",children:[a.jsx("button",{type:"button",className:d?void 0:"is-active",onClick:()=>u(null),children:"All"}),h.events.map(t=>a.jsx("button",{type:"button",className:d===t?"is-active":void 0,onClick:()=>u(t),children:t},t))]}):null,i.trim()||d?a.jsxs("div",{className:"member-leaderboard-active-filters",children:[i.trim()?a.jsxs("button",{type:"button",className:"member-leaderboard-chip",onClick:w,children:[i.trim(),a.jsx(z,{size:12})]}):null,d?a.jsxs("button",{type:"button",className:"member-leaderboard-chip member-leaderboard-chip--muted",onClick:()=>u(null),children:[d,a.jsx(z,{size:12})]}):null]}):null]}),I?a.jsx("p",{className:"member-form-error",children:I}):null,B&&x.length===0?a.jsx(Y,{count:8,label:"Loading leaderboard"}):null,!B&&x.length===0?a.jsx(ge,{icon:i.trim()?X:ke,title:i.trim()?"No results found":"No achievements yet",description:S?`No results for ${S.displayText.toLowerCase()}.`:"Be the first to set a record in this category.",actionLabel:i.trim()?"Clear search":void 0,onAction:i.trim()?w:void 0}):null,x.length>0?a.jsx("ol",{className:"member-leaderboard-list","aria-label":"Leaderboard rankings",children:x.map(t=>a.jsx(Pe,{achievement:t},t.id))}):null,T?a.jsx(Y,{count:2,label:"Loading more"}):null,x.length>0&&O&&!T?a.jsxs("div",{className:"member-leaderboard-load-more",children:[a.jsx("button",{type:"button",className:"button button-outline button-surface",onClick:de,children:"Load more"}),j>0?a.jsxs("span",{className:"member-empty-copy",children:["Showing ",x.length," of ",j]}):null]}):null]})}export{ta as MemberLeaderboardPage};

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.