1"use strict";(self.rspackChunkmodio_frontend=self.rspackChunkmodio_frontend||[]).push([[2487],{28778:function(e,t,a){a.d(t,{A:function(){return M}});var l=a(20641),r=a(90033);let o={key:0,class:"tw-ml-2 tw-mt-1 tw-font-normal tw-text-md tw-text-nowrap"},s={class:"tw-flex tw-flex-col tw-gap-6"},n={class:"tw-w-full"};var i=a(87010),d=a(39280),u=a(47087),m=a(54901),c=a(6027);a(77454);var p=a(50953),v=a(70590);let g=d.O3.toReversed();var b={components:{UserLookUp:i.A},props:{resourceType:{type:String,required:!0},game:{type:Object,required:!0},mod:{type:Object,default:null},show:{type:Boolean,default:!1}},emits:["add:member","close:modal"],setup(e,{emit:t}){let{game:a,mod:l,resourceType:r}=(0,p.QW)(e),o=(0,p.KR)(g[0].value),s=(0,p.KR)(!1),n=(0,p.KR)([]),i=(0,p.KR)(null),d=(0,p.KR)([]),b=a.value.name_id,y=l.value?.name_id,{data:f,error:h,loading:k,run:w}=(0,m.Yb)(e=>"game"===r.value?(0,v.BOB)(b,e):(0,v.DTX)(b,y,e),"Failed to add member to team"),{status:C,updateStatus:L,statusType:x}=(0,m.su)({loading:k,error:h});return{addMemberToTeam:async function(){if(s.value||k.value)return;let e=n.value.find(e=>e.username===i.value)?.user_id||i.value;i.value=e,n.value=[],!function(){if(!i.value)return d.value=["Display name or email is required"],!0;if((0,c.Et)(i.value))return!1;if(i.value.includes("@")){let e=(0,u.Rp)({input:i.value});return!!(0,c.Kg)(e)&&(d.value=["A valid email address or display name is required"],!0)}return d.value=["You must select a user from the dropdown"],!0}()&&(await w({emailOrUserId:i.value,level:o.value}),h.value||(L(x.SUCCESS),t("add:member",f.value),(0,m.$U)({title:"Added team member successfully",isSuccess:!0}),setTimeout(()=>t("close:modal"),2e3)))},searchingUsers:s,roleOptions:g,updateInput:function(e){e||(n.value=[]),i.value=e,d.value=[]},userResults:n,userInput:i,setUser:function(e){i.value=e.user_id},loading:k,status:C,errors:d,error:h,role:o}}},y=a(64901);let f=(0,y.A)(b,[["render",function(e,t,a,r,o,i){let d=(0,l.g2)("base-input-label"),u=(0,l.g2)("user-look-up"),m=(0,l.g2)("base-select"),c=(0,l.g2)("base-button"),p=(0,l.g2)("base-modal");return(0,l.uX)(),(0,l.Wv)(p,{show:a.show,"has-close-btn":"","no-scroll":"","show-overflow":"",size:"md",heading:"Invite user to team","onClose:modal":t[5]||(t[5]=t=>e.$emit("close:modal"))},{footer:(0,l.k6)(()=>[(0,l.bF)(c,{"full-width-at":"xs",primary:"",status:r.status,disabled:r.loading||!r.userInput||r.searchingUsers,errors:r.errors,onClick:r.addMemberToTeam},{default:(0,l.k6)(()=>[...t[6]||(t[6]=[(0,l.eW)(" Send invite ",-1)])]),_:1},8,["status","disabled","errors","onClick"])]),default:(0,l.k6)(()=>[(0,l.Lk)("div",s,[(0,l.Lk)("div",n,[(0,l.bF)(d,{label:"User","margin-bottom":"",required:""}),(0,l.bF)(u,{"team-input":"","search-id":"add-member","can-show-results":!!r.userResults.length,recipients:r.userInput?[r.userInput]:[],errors:r.errors,"onUpdate:results":t[0]||(t[0]=e=>r.userResults=e),onInput:r.updateInput,"onAdd:recipient":t[1]||(t[1]=e=>r.setUser(e)),onEnter:r.addMemberToTeam,onClear:t[2]||(t[2]=e=>r.updateInput("")),onLoading:t[3]||(t[3]=e=>r.searchingUsers=e)},null,8,["can-show-results","recipients","errors","onInput","onEnter"])]),(0,l.bF)(m,{required:"",label:"Role","model-value":r.role,options:r.roleOptions,onChange:t[4]||(t[4]=e=>r.role=e)},null,8,["model-value","options"])])]),_:1},8,["show"])}]]);var h=a(49724),k=a(53777),w=a(50660),C=a(80167),L=a(90073),x=a(94699),S=a(37140),T=a(60719);let{user:A}=(0,T.mQ)();function U(e){return{name:x.zI,params:{user:e.user.name_id}}}var E={components:{DeleteModal:L.A,ModioTable:S.A},props:{game:{type:Object,required:!0},mod:{type:Object,default:null},team:{type:Array,default:()=>[]},teamLeaderUserId:{type:Number,default:null},resourceType:{type:String,required:!0},canEdit:{type:Boolean,default:!1}},emits:["update:member","delete:member","update:leader"],setup(e,{emit:t}){let{resourceType:a,teamLeaderUserId:r,game:o,mod:s,canEdit:n}=(0,p.QW)(e),i=(0,T.mQ)().getUserId(),{replace:d}=(0,m.lq)(),{show:u,toggle:g,close:b}=(0,m.eY)(),{onMessageUser:y}=(0,m.$E)(),f=(0,p.KR)({}),h=o.value.name_id,k=s.value?.name_id,{validateAll:w,validate:L,errors:S,hasErrors:E}=(0,m.c2)(C.kU.validation),{removeTeamLeader:I,addTeamLeader:W,removeTeam:_}=(0,T.qY)(),{loading:F,error:R,data:M,run:D}=(0,m.Yb)((e,t)=>"game"===a.value?(0,v.uJs)(h,e,t):(0,v.GqG)(h,k,e,t),"Failed to update member"),{run:q,error:K,loading:$}=(0,m.Yb)(e=>"game"===a.value?(0,v.mEg)(h,e):(0,v.qXv)(h,k,e),"Failed to remove member"),{loading:O,error:X,data:N,run:G}=(0,m.Yb)(e=>"game"===a.value?(0,v.Ffz)(h,e):(0,v.z31)(h,k,e),"Failed to update team leader"),Q=(0,l.EW)(()=>$.value||F.value||O.value),Y=(0,l.EW)(()=>K.value||R.value||X.value);(0,l.Gt)("saving",Q);let{status:j,updateStatus:B,statusType:P}=(0,m.su)({loading:Q,error:Y}
1),z=(0,l.EW)(()=>({status:j.value,actionName:f.value.name,id:f.value.id})),H=(0,l.EW)(()=>{var e;let t=(e=Z.value,{config:[{label:"User",type:"group",key:"user.username",cellClass:"tw-text-left",to:U,group:[e=>({type:"avatar",user:e.user}),{type:"string",key:"user.username",format:"string"}]},{label:"Position",type:"string",key:"position",cellClass:"tw-text-left tw-capitalize",inputCell:!0,active:{component:"PositionTableInput",type:"component"}},{label:"Role",type:"group",key:"sortLevel",sort:{direction:"desc"},cellClass:"tw-text-left",inputCell:!0,group:[{type:"string",key:"level",format:"role",active:{component:"RoleTableInput",type:"component"}},{label:"Leader",type:"icon",key:"isLeader",tooltip:"Leader",icon:"crown",condition:e=>e.isLeader,cellClass:"tw-text-warning"}]},{label:"Joined",type:"string",key:"date_added",timeTooltip:!0,format:(e,t,a)=>a.invite_pending?"Pending":(0,c._D)(e),cellClass:"tw-text-right",sort:{direction:"desc"}},{label:"Last online",type:"string",key:"user.date_online",timeTooltip:!0,format:e=>e?(0,c._D)(e):"-",cellClass:"tw-text-right",sort:{direction:"desc"}},{actionCell:!0,type:"group",sortable:!1,cellClass:"tw-text-right",group:[e=>({type:"action",attrs:{icon:"pencil-alt",class:"tw-hidden md:tw-flex",disabled:e.user.id===A.value.info.id||e.isLeader||8===e.level&&!e.canEditLeader},tooltip:"Edit member",onClick:"updateActiveId",active:{type:"group",group:[{type:"action",text:"Make leader",cellClass:"tw-hidden md:tw-table-cell",attrs:{icon:"crown",iconColor:"warning",disabled:8!==e.level||!!e.invite_pending},onClick:"makeLeader"},{type:"action",text:"Cancel",mobileIcon:"times",tooltip:"Cancel",attrs:{secondary:!0},onClick:"cancelActiveId"},{type:"action",text:"Save",mobileIcon:"save",tooltip:"Save",attrs:{success:!0},background:"success",dirty:!0,status:!0,onClick:"save"}]}}),t=>({condition:()=>e!==t.id,type:"action",attrs:{secondary:!0,icon:"comment",disabled:t.user.id===A.value.info.id},cellClass:"tw-hidden md:tw-table-cell",tooltip:"Message member",onClick:"messageUser"}),t=>({condition:()=>e!==t.id,type:"action",attrs:{class:"tw-hidden md:tw-flex",danger:!0,icon:"trash",disabled:t.isLeader},tooltip:"Remove member",background:"danger",status:!0,onClick:"delete"}),e=>({type:"secondary-actions",cellClass:"md:tw-hidden",tooltip:"More actions",actions:[{text:"Edit",onClick:"updateActiveId",disabled:e.user.id===A.value.info.id||e.isLeader||8===e.level&&!e.canEditLeader},{text:"Make leader",onClick:"makeLeader",disabled:!e.canEditLeader||e.user.id===A.value.info.id||e.isLeader||8!==e.level||!!e.invite_pending},{text:"Message member",onClick:"messageUser",disabled:e.user.id===A.value.info.id},{text:"Remove member",onClick:"delete",disabled:e.isLeader}]})]}],defaultSort:"sortLevel"});return{...t,config:t.config.filter(e=>!!n.value||!e.actionCell)}}),J=(0,p.KR)({}),V=(0,p.KR)(!1),Z=(0,p.KR)(null),ee=(0,l.EW)(()=>({teamLeaderUserId:r.value}));function et(e){J.value={...e},Z.value=e?.id}async function ea(){if(!V.value||Q.value)return;w(J.value);let{level:e,position:a,id:l}=J.value;f.value.name="save",f.value.id=l,!E()&&(await D(l,{level:e,position:a}),R.value||(B(P.SUCCESS),t("update:member",M.value),V.value=!1,(0,m.$U)({title:"Updated member successfully",isSuccess:!0})))}async function el(){await q(f.value.id),K.value||(i===f.value.member.user.id?(setTimeout(()=>d({name:x.Uh}),500),_({resource:a.value,id:s.value?.id||o.value.id}),(0,m.$U)({title:"Successfully left the team",isSuccess:!0})):(0,m.$U)({title:"Successfully removed team member",isSuccess:!0}),b(),B(P.SUCCESS),t("delete:member",f.value.member))}async function er(e){f.value.name="delete",f.value.id=e.id,f.value.member=e,g()}(0,m.Li)({status:z,updateActiveId:et,updateField:function(e,t){"level"===e?J.value.level=parseInt(t):J.value[e]=t,V.value=!0,L(e,t)},activeId:Z,errors:S,dirty:V,state:J,data:ee});function eo(){et(null)}async function es(e){if(await G(e.id),!X.value){let l=e.user,r=e.position,n="game"===a.value?o.value.user.id:s.value.submitted_by.id;i===l.id?W(a.value,o.value.id,h,r):(n===i&&I(a.value,"game"===a.value?o.value.id:s.value.id),eo()),(0,m.$U)({title:"Successfully updated team leader",isSuccess:!0}),B(P.SUCCESS),t("update:leader",N.value)}}return(0,l.Gt)("save",ea),(0,l.Gt)("delete",er),(0,l.Gt)("messageUser",function(e){y(e.user)}),(0,l.Gt)("cancelActiveId",eo),(0,l.Gt)("makeLeader",es),{tableSchema:H,removeUser:el,tableId:"team-table",status:j,toggle:g,show:u}}};let I=(0,y.A)(E,[["render",function(e,t,a,r,o,s){let n=(0,l.g2)("modio-table"),i=(0,l.g2)("delete-modal");return(0,l.uX)(),(0,l.CE)(l.FK,null,[(0,l.bF)(n,{"table-id":r.tableId,"row-schema":r.tableSchema,items:{data:a.team},"item-total":a.team.length,loading:!a.team.length,fetch:!1,limit:100,"no-data-text":"This team does not have any members."},null,8,["table-id","row-schema","items","item-total","loading"]),(0,l.bF)(i,{show:r.show,"heading-text":"Remove team member",status:r.status,danger:"","confirm-text":"Are you sure you want to remove this member from the team?","onClose:modal":r.toggle,onDelete:r.removeUser},null,8,["show","status","onClose:modal","onDelete"])],64)}]]);var W=a(54195),_=a(41633),F=a(91481),R={components:{AddMemberToTeamModal:f,InlineMessage:h.A,TooltipHover:k.default,TipBoxInner:w.A,PanelHeader:W.A,TeamTable:I,TipButton:_.A,TipBox:F.A},props:{resourceType:{type:String,required:!0},game:{type:Object,required:!0},mod:{type:Object,default:null},team:{type:Array,default:()=>[]},teamLeaderUserId:{type:Number,required:!0}},emits:["update:leader","add:member","update:member","delete:member"],setup(e){let{resourceType:t,game:a,mod:r,teamLeaderUserId:o,team:s}=(0,p.QW)(e),{hasPermissionByNameId:n,hasPermissionForMod:i}=(0,m.Sk)(),{showModal:d,isModalOpen:u,hideModal:c}=(0,m.hS)(),{getUserId:v,isSuperAdmin:g}=(0,T.mQ)(),{ugcName:b}=(0,m.$X)(),y=(0,l.EW)(()=>"game"===t.value?n({resource:"game",nameId:a.value.name_id,scope:"admin"}
1):i(r.value?.name_id,a.value.name_id,"admin")),f=(0,l.EW)(()=>o.value===v()||g()),h=(0,l.EW)(()=>s.value.map(e=>({...e,canEditLeader:f.value,isLeader:o.value===e.user.id,sortLevel:o.value===e.user.id?1/0:e.level}))),k=(0,l.EW)(()=>"game"===t.value?100:50);return{disabledReasonText:(0,l.EW)(()=>`You can only add up to ${k.value} members`),maxUsersToAdd:k,isModalOpen:u,hideModal:c,showModal:d,ugcName:b,canEdit:y,items:h}}},M=(0,y.A)(R,[["render",function(e,t,a,s,n,i){let d=(0,l.g2)("base-link"),u=(0,l.g2)("inline-message"),m=(0,l.g2)("tip-box-inner"),c=(0,l.g2)("tip-box"),p=(0,l.g2)("tip-button"),v=(0,l.g2)("base-button"),g=(0,l.g2)("tooltip-hover"),b=(0,l.g2)("panel-header"),y=(0,l.g2)("team-table"),f=(0,l.g2)("add-member-to-team-modal"),h=(0,l.g2)("base-panel");return(0,l.uX)(),(0,l.CE)(l.FK,null,[(0,l.bF)(c,null,{default:(0,l.k6)(()=>[(0,l.bF)(m,{tip:"Team members"},{default:(0,l.k6)(()=>[(0,l.Lk)("p",null,' When a member accepts an invite, they will join the team with "moderator" access. Promote them to an "administrator" to give them full control over this '+(0,r.toDisplayString)("game"===a.resourceType?"game's":`${s.ugcName(a.game,!0,!0).value}'s`)+" profile, including managing other members access. "+(0,r.toDisplayString)(s.disabledReasonText),1),t[19]||(t[19]=(0,l.Lk)("p",null," Each level of access gives all of the rights of the lower levels, they are: ",-1)),(0,l.Lk)("ul",null,[a.mod?((0,l.uX)(),(0,l.CE)(l.FK,{key:0},[(0,l.Lk)("li",null,[t[4]||(t[4]=(0,l.Lk)("strong",null,"Administrator",-1)),(0,l.eW)(" - Full access (includes editing the "+(0,r.toDisplayString)(s.ugcName(a.game,!0,!0).value)+" details themselves, as well as the team) ",1)]),(0,l.Lk)("li",null,[t[5]||(t[5]=(0,l.Lk)("strong",null,"Manager",-1)),(0,l.eW)(" - Ability to manage "+(0,r.toDisplayString)(s.ugcName(a.game,!0,!0).value)+" details. Cannot edit team or delete files ",1)]),t[6]||(t[6]=(0,l.Lk)("li",null,[(0,l.Lk)("strong",null,"Moderator"),(0,l.eW)(" - Ability to moderate comments")],-1))],64)):((0,l.uX)(),(0,l.CE)(l.FK,{key:1},[t[10]||(t[10]=(0,l.Lk)("li",null,[(0,l.Lk)("strong",null,"Administrator"),(0,l.eW)(" - Full access (includes editing the game details themselves, as well as the team) ")],-1)),(0,l.Lk)("li",null,[t[7]||(t[7]=(0,l.Lk)("strong",null,"Manager",-1)),(0,l.eW)(" - Ability to edit game details, moderate and manage "+(0,r.toDisplayString)(s.ugcName(a.game,!1,!0).value)+", guides and reports on content ",1)]),(0,l.Lk)("li",null,[t[8]||(t[8]=(0,l.Lk)("strong",null,"Moderator",-1)),(0,l.eW)(" - Ability to moderate and manage "+(0,r.toDisplayString)(s.ugcName(a.game,!1,!0).value)+", guides and reports on content, but not the details of the game itself. ",1),t[9]||(t[9]=(0,l.Lk)("br",null,null,-1)),(0,l.eW)(" Can only archive "+(0,r.toDisplayString)(s.ugcName(a.game,!1,!0).value)+" and guides ",1)])],64))]),"game"===a.resourceType?((0,l.uX)(),(0,l.Wv)(u,{key:0,warning:"","has-close":!1},{default:(0,l.k6)(()=>[(0,l.Lk)("p",null,[t[12]||(t[12]=(0,l.Lk)("span",{class:"tw-font-bold"},"Any",-1)),t[13]||(t[13]=(0,l.eW)(" team member assigned a Manager or Administrator role ",-1)),t[14]||(t[14]=(0,l.Lk)("span",{class:"tw-font-bold"},"must",-1)),t[15]||(t[15]=(0,l.eW)(" be covered by ",-1)),t[16]||(t[16]=(0,l.Lk)("span",{class:"tw-font-bold"},"every",-1)),t[17]||(t[17]=(0,l.eW)(" applicable First Party platform NDA agreement. If you are unsure or have any questions, please contact ",-1)),(0,l.bF)(d,{to:"mailto:[email protected]"},{default:(0,l.k6)(()=>[...t[11]||(t[11]=[(0,l.eW)("[email protected]",-1)])]),_:1}),t[18]||(t[18]=(0,l.eW)(" for assistance. ",-1))])]),_:1})):(0,l.Q3)("",!0)]),_:1})]),_:1}),(0,l.bF)(h,null,{header:(0,l.k6)(()=>[(0,l.bF)(b,{text:"Team",small:""},(0,l.eX)({suffix:(0,l.k6)(()=>[a.team.length>1?((0,l.uX)(),(0,l.CE)("span",o,"("+(0,r.toDisplayString)(a.team.length)+" members) ",1)):(0,l.Q3)("",!0),(0,l.bF)(p,{tip:"Team members"})]),_:2},[s.canEdit?{name:"tip",fn:(0,l.k6)(()=>[(0,l.bF)(g,{text:a.team.length>=s.maxUsersToAdd?s.disabledReasonText:"",fixed:""},{default:(0,l.k6)(()=>[(0,l.bF)(v,{primary:"",small:"",icon:"plus",disabled:a.team.length>=s.maxUsersToAdd,onClick:s.showModal},{default:(0,l.k6)(()=>[...t[20]||(t[20]=[(0,l.eW)(" Invite user ",-1)])]),_:1},8,["disabled","onClick"])]),_:1},8,["text"])]),key:"0"}:void 0]),1024)]),default:(0,l.k6)(()=>[(0,l.bF)(y,{"resource-type":a.resourceType,team:s.items,game:a.game,mod:a.mod,"team-leader-user-id":a.teamLeaderUserId,"can-edit":s.canEdit,"onUpdate:member":t[0]||(t[0]=t=>e.$emit("update:member",t)),"onDelete:member":t[1]||(t[1]=t=>e.$emit("delete:member",t)),"onUpdate:leader":t[2]||(t[2]=t=>e.$emit("update:leader",t))},null,8,["resource-type","team","game","mod","team-leader-user-id","can-edit"]),(0,l.bF)(f,{"resource-type":a.resourceType,show:s.isModalOpen,game:a.game,mod:a.mod,"onAdd:member":t[3]||(t[3]=t=>e.$emit("add:member",t)),"onClose:modal":s.hideModal},null,8,["resource-type","show","game","mod","onClose:modal"])]),_:1})],64)}]])}}]);
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.