1import{w as R,r as n,o as j,j as e,A as he,d as Le,L as fe,u as M,Q as Re,l as Pe,t as G,f as Ue,a as Ae,C as Oe,P as Be,R as ke,b as ce,q as oe,F as ee,h as ze,bt as Fe,s as ie,c as $e,bv as De}from"./index-DKr66--M.js";import{s as ae}from"./subscription-error-RExF5g3c.js";import{w as Ge,a as qe}from"./with-email-verification-Bxiu_3A2.js";import{G as xe}from"./get-surfer-O3bx2XZe.js";import{R as He,P as pe,A as We}from"./status-B30ipH8k.js";import{B as me}from"./index.esm-jRZlR-E3.js";import{M as z}from"./modal-alert-BrZxP2Cu.js";import{I as ge}from"./index.esm-DFJMQ_vx.js";import{uploadBytesResumable as Ve,getDownloadURL as Qe}from"./index.esm-DoTe_umu.js";import{S as _e}from"./surfer-edit-D7W0TxZx.js";import{u as Ke}from"./use-image-upload-D4NW5seQ.js";import{M as D}from"./Modal-DZlIpUj6.js";import{A as Je}from"./Alert-DtORJ-W2.js";import{B as te}from"./Button-bkW_oL3h.js";import{P as k}from"./Pagination-6KJpr4Hr.js";import"./index.esm-DYJTQ7me.js";import"./ButtonGroup-DKcvnnjx.js";const de=({status:t})=>{const{t:a}=M(),l={[We]:{color:"#22c55e",label:a("team.accepted")},[pe]:{color:"#fabe08",label:a("team.pending")},[He]:{color:"#3b82f6",label:a("team.requested")}},{color:o,label:m}=l[t]||{color:"#9ca3af",label:t};return e.jsx("span",{style:{fontSize:"0.7rem",fontWeight:700,letterSpacing:"0.08em",textTransform:"uppercase",color:o,background:o+"20",borderRadius:"0.3rem",padding:"0.15rem 0.45rem"},children:m})},Xe=t=>{const{uid:a,currentUser:l}=t,[o,m]=n.useState(!0),[i,d]=n.useState(null);return n.useEffect(()=>{const u=t.firebase.surferTeamMember(l,a),c=j(u,f=>{d(f.val()),m(!1)});return()=>c()},[a,l]),o||!i?null:e.jsx(he.Consumer,{children:u=>u&&u.role===Le?e.jsx(fe,{to:"/admin/surfer/"+a,className:"team-status-link",children:e.jsx(de,{status:i})}):e.jsx(de,{status:i})})},Ye=R(Xe),Ze=t=>{const{uid:a,currentUser:l,handleAccept:o}=t,[m,i]=n.useState(!1);return n.useEffect(()=>{const d=t.firebase.surferTeamMember(l,a),u=j(d,c=>{c.val()===pe?i(!0):i(!1)});return()=>{u()}},[l,a]),e.jsx(e.Fragment,{children:a&&m&&e.jsx(ea,{uid:a,handleAccept:o})})},ea=t=>{const{t:a}=M();return e.jsx(z,{variant:"primary",body:a("modal.addTeamMember"),name:e.jsx(me,{}),confirmLabel:a("modal.accept"),confirmIcon:e.jsx(me,{}),handleAction:l=>t.handleAccept(l,t.uid)})},aa=R(Ze),ta=t=>{const{firebase:a,uid:l,currentUser:o,handleRemove:m,handleRemoveCreatedSurfer:i}=t,[d,u]=n.useState(!1);return n.useEffect(()=>{let c=!1,f=null;const b=()=>u(c&&f===o),x=j(a.surferUnclaimed(l),C=>{c=!!C.val(),b()}),p=j(a.surferCreatedBy(l),C=>{f=C.val(),b()});return()=>{x(),p()}},[l,o,a]),l?d?e.jsx(na,{uid:l,handleRemoveCreatedSurfer:i}):e.jsx(sa,{uid:l,handleRemoveMember:m}):null},sa=t=>{const{t:a}=M();return e.jsx(z,{className:"btn-wave-delete",body:a("modal.deleteTeamMember"),name:e.jsx(ge,{}),handleAction:l=>t.handleRemoveMember(l,t.uid)})},na=t=>{const{t:a}=M();return e.jsx(z,{className:"btn-wave-delete",body:a("modal.deleteCreatedSurfer"),name:e.jsx(ge,{}),handleAction:()=>t.handleRemoveCreatedSurfer(t.uid)})},ra=R(ta),ue={bio:"",bot:!1,country:"",created:"",dob:"",email:"",height:"",jerseyColor:"",jerseyNumber:"",middleName:"",name:"",picture:"",role:"",sex:"",stance:"",surname:"",updated:"",weight:""},la=({firebase:t,show:a,onHide:l,uid:o,mode:m})=>{const{t:i}=M(),[d,u]=n.useState(ue),[c,f]=n.useState(!1),[b,x]=n.useState(!1),[p,C]=n.useState(m==="create"),[v,P]=n.useState(null),{src:q,file:U,crop:H,setSrc:W,handleChangeImage:A,onImageLoaded:V,onCropComplete:Q,onCropChange:E}=Ke();n.useEffect(()=>{if(m!=="edit")return;let g=!0;return t.cloud("getOwnedSurfer")({uid:o}).then(({data:N})=>{g&&(u({...ue,...N}),C(!0))}).catch(()=>{g&&P(i("team.surferLoadError"))}),()=>{g=!1}},[t,m,o]);const I=g=>{u(N=>({...N,[g.target.id]:g.target.value}))},_=async()=>{if(!p||c||b)return;x(!0);const g={contentType:"image/jpeg"},N=await t.uploadImage(o);Ve(N,U,g).on("state_changed",null,w=>{console.error(w),x(!1)},()=>{Qe(N).then(w=>{u(J=>({...J,picture:w})),W(null),x(!1)})})},K=g=>{if(g.preventDefault(),!p||c||b)return;P(null),f(!0),(m==="create"?t.cloud("createSurfer")({uid:o,surfer:d}):t.cloud("updateOwnedSurfer")({uid:o,surfer:d})).then(()=>{f(!1),l()}).catch(T=>{console.error(T),P(ae(T,i)),f(!1)})};return e.jsx(D,{show:a,onHide:l,size:"lg",centered:!0,children:a&&e.jsxs(e.Fragment,{children:[e.jsx(D.Header,{closeButton:!0,className:"modal-gold-header",children:e.jsx(D.Title,{children:i(m==="create"?"team.createSurferTitle":"team.editSurferTitle")})}),e.jsxs(D.Body,{children:[v&&e.jsx(Je,{variant:"danger",children:v}),!p&&!v&&e.jsx("p",{role:"status",children:i("team.surferLoading")}),p&&e.jsx(_e,{surfer:d,handleChange:I,handleSubmit:K,crop:H,src:q,handleChangeImage:A,onImageLoaded:V,onCropComplete:Q,onCropChange:E,uploadImageToStorage:_,isLoading:c||b,isUploading:b,file:U,isCreating:!0})]})]})})},ca=t=>t.show?e.jsx(la,{...t},`${t.mode}:${t.uid}`):null,je=R(ca),oa=({firebase:t,uid:a,currentUser:l})=>{const[o,m]=n.useState(!1),[i,d]=n.useState(null),[u,c]=n.useState(!1);return n.useEffect(()=>{const f=j(t.surferUnclaimed(a),x=>{m(!!x.val())}),b=j(t.surferCreatedBy(a),x=>{d(x.val())});return()=>{f(),b()}},[a,t]),!o||i!==l?null:e.jsxs(e.Fragment,{children:[e.jsx(te,{variant:"outline-secondary",size:"sm",onClick:()=>c(!0),children:e.jsx(Re,{})}),e.jsx(je,{show:u,onHide:()=>c(!1),uid:a,mode:"edit"})]})},ia=R(oa),ma=({firebase:t,uid:a})=>{const{t:l}=M(),[o,m]=n.useState(!1);return n.useEffect(()=>{const i=j(t.surferUnclaimed(a),d=>{m(!!d.val())});return()=>i()},[a,t]),o?e.jsx("span",{className:"team-unclaimed-badge",children:l("team.unclaimedBadge")}):e.jsx(xe,{uid:a,email:!0})},da=R(ma),ua=({firebase:t})=>{const{t:a}=M(),[l,o]=n.useState([]),[m,i]=n.useState(!0),d=n.useCallback(()=>{t.cloud("getMyOrganizations")().then(c=>{o((c.data||[]).filter(f=>f.role==="surfer")),i(!1)})},[t]);n.useEffect(()=>{d()},[d]);const u=c=>{t.cloud("leaveOrganizationAsSurfer")({orgId:c}
1).then(d)};return m||l.length===0?null:e.jsxs("div",{className:"team-panel-wrap mt-4",children:[e.jsxs("div",{className:"team-panel-header",children:[e.jsx(Pe,{className:"team-panel-icon"}),e.jsx("span",{className:"team-panel-title",children:a("organisation.myOrganisations")})]}),e.jsx("div",{className:"team-panel-body",children:l.map(c=>e.jsxs("div",{className:"d-flex align-items-center justify-content-between mb-2",children:[e.jsx(fe,{to:`/organisation/${c.orgId}/about`,children:c.name}),e.jsx(z,{variant:"outline-secondary",size:"sm",body:a("organisation.leaveConfirm"),name:e.jsx(G,{}),confirmLabel:a("organisation.leave"),confirmIcon:e.jsx(G,{}),handleAction:()=>u(c.orgId)})]},c.orgId))})]})},ha=({firebase:t})=>{const{t:a}=M(),[l,o]=n.useState(""),[m,i]=n.useState(!1),[d,u]=n.useState(null),[c,f]=n.useState([]),[b,x]=n.useState(!1),[p]=n.useState(t.currentUser().uid),[C]=n.useState(t.currentSurferData()),[v,P]=n.useState([]),[q,U]=n.useState(!1),[H,W]=n.useState(null),[A,V]=n.useState(""),[Q,E]=n.useState(1),I=25,[_,K]=n.useState({}),g=n.useContext(he),N=Ue(),T=n.useMemo(()=>t.surferTeam(p),[p]),w=n.useCallback(()=>{t.cloud("getMyTeamInvites")().then(s=>{f(s.data||[])})},[t]);n.useEffect(()=>{if(!g){N("/sign-in");return}const s=j(T,J);return w(),()=>s()},[g,T]);const J=s=>{const r=s.val();P(r?Object.keys(r):[])};n.useEffect(()=>{const s=v.flatMap(r=>{const y=h=>K($=>({...$,[r]:{...$[r],...h}}));return[j(t.surferName(r),h=>h.val()!==null&&y({name:h.val()})),j(t.surferSurname(r),h=>h.val()!==null&&y({surname:h.val()})),j(t.surferEmail(r),h=>h.val()!==null&&y({email:h.val()})),j(t.bot(r),h=>h.val()&&y(h.val()))]});return()=>s.forEach(r=>r())},[v,t]);const se=(s,r,y)=>{if(!A)return!0;const h=A.toLowerCase();return(s||"").toLowerCase().includes(h)||(r||"").toLowerCase().includes(h)||(y||"").toLowerCase().includes(h)},O=v.filter(s=>{const r=_[s]||{};return se(r.name,r.surname,r.email)}),X=c.filter(s=>se(null,null,s.email)),F=O.length+X.length,B=Math.max(1,Math.ceil(F/I)),S=Math.min(Q,B),L=(S-1)*I,ne=O.slice(L,L+I),ve=X.slice(Math.max(0,L-O.length),Math.max(0,L+I-O.length));n.useEffect(()=>{E(S)},[S]);const re=[...new Set([1,S-1,S,S+1,B])].filter(s=>s>=1&&s<=B).sort((s,r)=>s-r),{tier:Y,loading:Se,refreshing:be,error:Ne}=Ae(),le=Y==="free"&&v.length+c.length>=t.teamLimit,Z=Se||be||Ne||!Y||le,Ce=s=>{s.preventDefault(),i(!0),u(null),t.cloud("createTeamInvite")({email:l}).then(()=>{o(""),i(!1),w()}).catch(r=>{u(ae(r,a)),i(!1)})},ye=s=>{t.cloud("cancelTeamInvite")({token:s}).then(()=>{w()})},Me=(s,r)=>{t.cloud("deleteMember")({uid:r}).then(()=>x(!0))},Ee=(s,r)=>{De(t.surferEmail(r)).then(y=>{const h=y.val(),$=`${C.name} ${C.surname}`;t.cloud("acceptMember")({uid:r}).then(()=>{t.cloud("acceptEmail")({uid:r,email:h,fullName:$}).then(()=>x(!0))}).catch(Te=>u(ae(Te,a)))})},Ie=s=>{t.cloud("removeCreatedSurfer")({uid:s}).then(()=>x(!0))},we=()=>{W(t.createSurferId()),U(!0)};return e.jsxs(Oe,{className:"content py-2 min-vh-100",children:[e.jsx(Be,{title:"Team",noindex:!0}),e.jsxs(ke,{className:"g-4",children:[e.jsxs(ce,{xs:12,md:3,children:[e.jsxs("div",{className:"team-panel-wrap",children:[e.jsxs("div",{className:"team-panel-header",children:[e.jsx(oe,{className:"team-panel-icon"}),e.jsx("span",{className:"team-panel-title",children:a("team.addMember")})]}),e.jsxs("div",{className:"team-panel-body",children:[e.jsx("p",{className:"team-invite-hint",children:a("team.addMemberHint")}),e.jsxs(ee,{onSubmit:Ce,children:[e.jsx(ee.Group,{controlId:"inviteEmail",children:e.jsx(ee.Control,{type:"email",required:!0,disabled:Z,placeholder:a("team.emailPlaceholder"),value:l,onChange:s=>o(s.target.value)})}),d&&e.jsx("p",{className:"text-danger",children:d}),e.jsx(te,{type:"submit",variant:"primary",size:"sm",className:"w-100 mt-3",disabled:m||Z,children:m?e.jsx(ze,{as:"span",animation:"border",size:"sm",role:"status"}):e.jsxs(e.Fragment,{children:[e.jsx(oe,{className:"team-btn-icon"}),a("team.addMember")]})}),Y==="free"&&e.jsx("p",{className:"team-invite-hint mt-2",children:a("team.memberCap",{used:v.length+c.length,limit:t.teamLimit})}),le&&e.jsx("p",{className:"text-danger",children:a("team.capReached")})]}),e.jsx("hr",{}),e.jsx("p",{className:"team-invite-hint",children:a("team.createSurferHint")}),e.jsxs(te,{onClick:we,variant:"outline-secondary",size:"sm",className:"w-100",disabled:Z,children:[e.jsx(Fe,{className:"team-btn-icon"}),a("team.createSurfer")]})]})]}),e.jsx(ua,{firebase:t})]}),e.jsx(ce,{xs:12,md:9,children:e.jsxs("div",{className:"team-panel-wrap",children:[e.jsxs("div",{className:"team-panel-header team-list-header",children:[e.jsxs("div",{className:"d-flex align-items-center gap-2",children:[e.jsx(ie,{className:"team-panel-icon"}),e.jsx("span",{className:"team-panel-title",children:a("team.myTeam")})]}),e.jsxs("span",{className:"team-member-count",children:[e.jsx(ie,{className:"team-count-icon"}),v.length+c.length," ",v.length+c.length!==1?a("team.members"):a("team.member")]})]}),e.jsxs("div",{className:"search-wrap mb-3 mt-3 mx-3",children:[e.jsx($e,{className:"search-icon"}),e.jsx("input",{type:"text",placeholder:a("team.searchByNameOrEmail"),value:A,onChange:s=>{V(s.target.value),E(1)},className:"search-input search-input-sm"})]}),e.jsxs("div",{className:"team-col-headers",children:[e.jsx("div",{className:"team-col-name",children:a("team.name")}),e.jsx("div",{className:"team-col-email",children:a("team.email")}),e.jsx("div",{className:"team-col-status",children:a("team.status")}),e.jsx("div",{className:"team-col-actions"})]}),O.length===0&&X.length===0&&e.jsx("div",{className:"text-center py-4 team-empty",children:a("team.noMembers")}),ne.map((s,r)=>e.jsxs("div",{className:"team-member-row",style:{borderTop:r>0?"1px solid #efefef":"none"},children:[e.jsx("div",{className:"team-col-name team-member-name",children:e.jsx(xe,{uid:s})}),e.jsx("div",{className:"team-col-email team-member-email",children:e.jsx(da,{uid:s})}),e.jsx("div",{className:"team-col-status",children:e.jsx(Ye,{uid:s,currentUser:p})}),e.jsxs("div",{className:"d-flex gap-2 team-col-actions",children:[e.jsx(aa,{uid:s,currentUser:p,handleAccept:Ee}),e.jsx(ia,{uid:s,currentUser:p}),e.jsx(ra,{uid:s,currentUser:p,handleRemove:Me,handleRemoveCreatedSurfer:Ie})]})]},s)),ve.map((s,r)=>e.jsxs("div",{className:"team-member-row",style:{borderTop:ne.length+r>0?"1px solid #efefef":"none"},children:[e.jsx("div",{className:"team-col-name team-member-name",children:a("team.pendingInvite")}),e.jsx("div",{className:"team-col-email team-member-email",children:s.email}),e.jsx("div",{className:"team-col-status",children:e.jsx("span",{className:"team-status-pending-badge",children:a("team.pending")})}),e.jsx("div",{className:"d-flex gap-2 team-col-actions",children:e.jsx(z,{variant:"outline-secondary",size:"sm",body:a("modal.cancelInvite"),name:e.jsx(G,{}),confirmLabel:a("team.cancelInvite"),confirmIcon:e.jsx(G,{}),handleAction:()=>ye(s.token)})})]},s.token)),F>0&&e.jsxs("div",{className:"px-3 py-3",children:[e.jsx("p",{className:"team-invite-hint mb-2","aria-live":"polite",children:a("team.pageSummary",{from:L+1,to:Math.min(L+I,F),total:F})}),B>1&&e.jsx("nav",{"aria-label":a("team.pagination"),children:e.jsxs(k,{className:"mb-0 flex-wrap",children:[e.jsx(k.Prev,{disabled:S===1,onClick:()=>E(S-1),"aria-label":a("team.previousPage")}),re.flatMap((s,r)=>[...r>0&&s>re[r-1]+1?[e.jsx(k.Ellipsis,{disabled:!0},`gap-${s}`)]:[],e.jsx(k.Item,{active:s===S,activeLabel:a("team.currentPage"),"aria-label":a("team.pageLabel",{page:s}),onClick:()=>E(s),children:s},s)]),e.jsx(k.Next,{disabled:S===B,onClick:()=>E(S+1),"aria-label":a("team.nextPage")})]})})]})]})})]}),e.jsx(je,{show:q,onHide:()=>U(!1),uid:H,mode:"create"})]})},fa=t=>!!t,Pa=Ge(qe(fa)(ha));export{Pa as default};
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.