PageSourceSearch

https://app.cranecloud.io/assets/ProjectUsers-CouG00uM.js

js cranecloud.io collected 2026-10-03 22:46:16 UTC 8,295 bytes, 1 lines download raw bytes

1import{u as ue,a as he,r as c,M as xe,j as s,y as fe,z as pe,c as ge,T as ve,S as j,C as Ce,e as o,F as A,n as je,a9 as Se,p as m,aa as ye,f as S,B as f,ab as Re,ac as Me,a0 as ke,ad as R,t as we,ae as Ee,af as Te,ag as Ae,ah as X,i as Y}from"./index-BDvxBZDb.js";import"./react-Csw2ODfV.js";const _e=()=>{const{project_id:l}=ue(),{project:i}=he(l||""),{setContainerSize:r}=c.useContext(xe);return c.useEffect(()=>(r("md"),()=>{r("xl")}),[r]),s.jsx("div",{children:s.jsx(me,{project:i})})},me=({project:l})=>{var O,B,G,q,D,U,V,W,J;const{user:i}=fe(),{data:r,getData:p,success:I}=pe(),{uploadData:y,submitting:M,success:$,resetSuccess:Z}=ge(),[u,ee]=c.useState([]),[_,b]=c.useState(""),[P,F]=c.useState("member"),[a,t]=c.useState(null),[k,w]=c.useState(null),[L,N]=c.useState(null);c.useEffect(()=>{p({api:`/projects/${l==null?void 0:l.id}/users`})},[l]),c.useEffect(()=>{var e;I&&ee((e=r==null?void 0:r.data)==null?void 0:e.project_users)},[I,r]),c.useEffect(()=>{$&&(p({api:`/projects/${l==null?void 0:l.id}/users`}),b(""),F("member"),Z())},[$,p,l]);const se=()=>{y({api:`/projects/${l==null?void 0:l.id}/users`,params:{email:_,role:P,resend:!1}})},ne=()=>{var n,h;if(!k)return;const e=u.find(x=>{var g;return((g=x==null?void 0:x.user)==null?void 0:g.id)===k});(n=e==null?void 0:e.user)!=null&&n.email&&(y({api:`/projects/${l==null?void 0:l.id}/users/transfer`,params:{email:(h=e==null?void 0:e.user)==null?void 0:h.email}}),p({api:`/projects/${l==null?void 0:l.id}/users`}),t(null),w(null))},le=()=>{var e,n;L&&(y({api:`/projects/${l==null?void 0:l.id}/users`,method:"PATCH",params:{email:(n=(e=a==null?void 0:a.member)==null?void 0:e.user)==null?void 0:n.email,role:L}}),p({api:`/projects/${l==null?void 0:l.id}/users`}),t(null),N(null))},ae=e=>{const n=e[1];return n.charAt(0).toUpperCase()+n.slice(1)},ie=[{id:"name",header:"Name"},{id:"status",header:"Status"},{id:"role",header:"Role"},{id:"actions",header:"Actions"}],z=e=>{var d,K;const n=e.role.split(".")[1],h=((d=e==null?void 0:e.user)==null?void 0:d.id)===(i==null?void 0:i.id),x=(K=E.find(C=>{var Q;return((Q=C==null?void 0:C.user)==null?void 0:Q.id)===(i==null?void 0:i.id)}))==null?void 0:K.role.split(".")[1],g=u.filter(C=>C.accepted_collaboration_invite===!0&&C.user.id!==(i==null?void 0:i.id)),v=[];return h?n==="owner"&&v.push({label:"Transfer",icon:s.jsx(Ae,{}),onClick:()=>t({type:"transfer",member:e}),disabled:g.length===0}):x==="owner"?v.push({label:"Change Role",icon:s.jsx(X,{}),onClick:()=>t({type:"changeRole",member:e})},{label:"Remove",color:"red",onClick:()=>t({type:"remove",member:e}),icon:s.jsx(Y,{})}):x==="admin"&&n!=="owner"&&v.push({label:"Change Role",icon:s.jsx(X,{}),onClick:()=>t({type:"changeRole",member:e})},{label:"Remove",color:"red",onClick:()=>t({type:"remove",member:e}),icon:s.jsx(Y,{})}),v},E=[...((O=r==null?void 0:r.data)==null?void 0:O.project_users)||[],...((G=(B=r==null?void 0:r.data)==null?void 0:B.project_anonymous_users)==null?void 0:G.map(e=>({user:{name:e.email,email:e.email},role:`project.${e.role}`,isAnonymous:!0})))||[]].sort((e,n)=>e.role==="RolesList.owner"?-1:n.role==="RolesList.owner"?1:0),te=e=>e==null?void 0:e.map(n=>{var h,x,g,v;return{name:s.jsxs(A,{gap:10,wrap:"nowrap",align:"center",children:[s.jsx(Te,{alt:(h=n==null?void 0:n.user)==null?void 0:h.name,name:(x=n==null?void 0:n.user)==null?void 0:x.name,radius:"xl",color:"initials"}),s.jsxs(j,{gap:0,children:[s.jsx(A,{align:"center",gap:6,children:s.jsx(o,{className:"subtitle",children:(g=n==null?void 0:n.user)==null?void 0:g.name})}),s.jsx(o,{size:"xs",children:(v=n==null?void 0:n.user)==null?void 0:v.email})]})]}),status:n.accepted_collaboration_invite===!1?s.jsx(o,{size:"xs",color:"dimmed",children:"Pending Invitation"}):n.isAnonymous?s.jsx(o,{size:"xs",color:"dimmed",children:"Pending Invitation"}):"",role:ae(n.role.split(".")),actions:s.jsx(S,{gap:10,children:z(n).length>0&&s.jsxs(R,{position:"bottom-end",shadow:"md",children:[s.jsx(R.Target,{children:s.jsx(we,{variant:"subtle",children:s.jsx(Ee,{})})}),s.jsx(R.Dropdown,{children:z(n).map(d=>s.jsx(R.Item,{color:d.color,onClick:()=>d.onClick(),leftSection:d==null?void 0:d.icon,disabled:d.disabled,children:d.label},d.label))})]})})}}),re=()=>s.jsxs(j,{gap:0,children:[s.jsxs(o,{className:"subtitle",children:["Project has ",u==null?void 0:u.length," team member",(u==null?void 0:u.length)>1?"s":""]}),s.jsx(o,{className:"subtext",children:"Members that have accounts on crane cloud can perform different operations on the project depending on their permission."})]}),de=e=>{e&&(y({api:`/projects/${l==null?void 0:l.id}/users`,method:"DELETE",params:{email:e}}),p({api:`/projects/${l==null?void 0:l.id}/users`}),t(null))},oe=e=>{e&&(y({api:`/projects/${l==null?void 0:l.id}/users`,method:"DELETE",params:{email:e}}),p({api:`/projects/${l==null?void 0:l.id}/users`}),t(null))},T=u.find(e=>{var n;return((n=e==null?void 0:e.user)==null?void 0:n.id)===(i==null?void 0:i.id)}),ce=((q=T==null?void 0:T.user)==null?void 0:q.id)===(i==null?void 0:i.id),H=(D=E.find(e=>{var n;return((n=e==null?void 0:e.user)==null?void 0:n.id)===(i==null?void 0:i.id)}))==null?void 0:D.role.split(".")[1];return s.jsxs(s.Fragment,{children:[s.jsx(ve,{children:"Members"}),s.jsxs(j,{gap:20,children:[ce&&(H==="owner"||H==="admin")&&s.jsx(Ce,{p:"lg",radiu
1s:"md",withBorder:!0,children:s.jsxs(j,{gap:20,children:[s.jsx(o,{className:"title",children:"Invite New Member"}),s.jsxs(A,{gap:10,align:"end",children:[s.jsx(je,{placeholder:"Enter email address",label:"Email Address",leftSection:s.jsx(Se,{}),required:!0,variant:"filled",flex:1,onChange:e=>b(e.target.value),value:_,disabled:M}),s.jsx(m,{label:"Role",variant:"filled",placeholder:"Select Role",data:["admin","member"],required:!0,flex:1,leftSection:s.jsx(ye,{}),onChange:e=>F(e||"member"),value:P})]}),s.jsx(S,{justify:"start",mt:10,children:s.jsx(f,{radius:"md",color:"var(--mantine-color-text)",leftSection:s.jsx(Re,{}),onClick:se,disabled:M,loading:M,children:"Invite"})})]})}),s.jsx(Me,{striped:!1,verticalSpacing:"md",columns:ie,data:te(E),header:re,noHeader:!0})]}),s.jsxs(ke,{opened:!!a,onClose:()=>{t(null),w(null)},title:(a==null?void 0:a.type)==="transfer"?"Transfer Ownership":(a==null?void 0:a.type)==="changeRole"?"Change Role":(a==null?void 0:a.type)==="remove"?"Remove Member":(a==null?void 0:a.type)==="leave"?"Leave Project":"",centered:!0,children:[(a==null?void 0:a.type)==="transfer"&&s.jsxs(j,{gap:"md",children:[s.jsx(o,{children:"Select a member to transfer ownership to:"}),s.jsx(m,{placeholder:"Select Member",data:u.filter(e=>e.accepted_collaboration_invite===!0).map(e=>{var n,h;return{value:(n=e==null?void 0:e.user)==null?void 0:n.id,label:(h=e==null?void 0:e.user)==null?void 0:h.name}}),onChange:e=>w(e)}),s.jsxs(S,{mt:"md",children:[s.jsx(f,{variant:"default",onClick:()=>t(null),children:"Cancel"}),s.jsx(f,{color:"blue",onClick:ne,disabled:!k,children:"Confirm"})]})]}),(a==null?void 0:a.type)==="changeRole"&&s.jsxs(s.Fragment,{children:[s.jsxs(j,{gap:"md",children:[s.jsxs(o,{children:["Change role for ",s.jsx("b",{children:(V=(U=a.member)==null?void 0:U.user)==null?void 0:V.name}),":"]}),s.jsx(m,{placeholder:"Select Role",data:[{value:"admin",label:"Admin"},{value:"member",label:"Member"}],onChange:e=>N(e||"member")})]}),s.jsxs(S,{mt:"md",children:[s.jsx(f,{variant:"default",onClick:()=>t(null),children:"Cancel"}),s.jsx(f,{color:"red",onClick:()=>{t(null),le()},children:"Confirm"})]})]}),(a==null?void 0:a.type)==="remove"&&s.jsxs(s.Fragment,{children:[s.jsxs(o,{children:["Are you sure you want to remove ",s.jsx("b",{children:(J=(W=a.member)==null?void 0:W.user)==null?void 0:J.name})," ","from the project?"]}),s.jsxs(S,{mt:"md",children:[s.jsx(f,{variant:"default",onClick:()=>t(null),children:"Cancel"}),s.jsx(f,{color:"red",onClick:()=>{var e,n;t(null),de((n=(e=a.member)==null?void 0:e.user)==null?void 0:n.email)},children:"Confirm"})]})]}),(a==null?void 0:a.type)==="leave"&&s.jsxs(s.Fragment,{children:[s.jsx(o,{children:"Are you sure you want to leave this project?"}),s.jsxs(S,{mt:"md",children:[s.jsx(f,{variant:"default",onClick:()=>t(null),children:"Cancel"}),s.jsx(f,{color:"red",onClick:()=>{var e,n;t(null),oe((n=(e=a.member)==null?void 0:e.user)==null?void 0:n.email)},children:"Confirm"})]})]})]})]})};export{me as MembersSection,_e 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.