PageSourceSearch

https://tuforums.com/assets/CreatorManagementPage.DynEZooH.js

js tuforums.com collected 2026-10-02 00:58:17 UTC 32,583 bytes, 1 lines download raw bytes

1import{j as e,z as Me,A as is,cs as Ke,a as T,r as z,E as _,bK as Ze,e as cs,b as ds,M as Ue,i as us,p as ms}from"./index.C_jEAofg.js";import{r as l,d as ps}from"./reactRouter.C6cvQAHO.js";import{S as Ie,a as Re}from"./SortDescIcon.CZKLl-Qm.js";import{a as hs}from"./levelcreditseditpopup.Bv94erU-.js";import{A as fs}from"./AccessDenied.Da_IVTEt.js";import{C as gs}from"./CreatorStatusBadge.BebQkP3q.js";import{u as Cs,a as qe,D as xs,b as vs,p as bs,r as js,c as Be,s as Ns,K as Ss,P as ys,d as _s,e as As,S as Ts,v as ws,f as Es,g as Is,C as Rs}from"./sortable.esm.CFCmxV-Q.js";import{D as ks}from"./DragHandleIcon.DD8FtFny.js";import{S as Ms}from"./SearchIcon.qDkSL_MV.js";import{C as Xe}from"./Select.BO5et_f4.js";import{M as Ds}from"./MarqueeText.C_DzVbgp.js";import{u as Ge}from"./i18n.BxWiIRpk.js";import"./recharts.DzmhKP_O.js";import"./rateLimitError.ByypYhRt.js";import"./CurationTypeSelector.CbUjpZdk.js";import"./curationTypeUtils.UzM-6L0y.js";import"./profileIconSlots.D8bRZ9GW.js";/* empty css                    */(function(){try{var a=typeof window<"u"?window:typeof global<"u"?global:typeof globalThis<"u"?globalThis:typeof self<"u"?self:{};a.SENTRY_RELEASE={id:"aec9389561908f1f1b5366362ca3b629220ab900"},a._sentryModuleMetadata=a._sentryModuleMetadata||{},a._sentryModuleMetadata[new a.Error().stack]=function(i){for(var u=1;u<arguments.length;u++){var n=arguments[u];if(n!=null)for(var m in n)n.hasOwnProperty(m)&&(i[m]=n[m])}return i}({},a._sentryModuleMetadata[new a.Error().stack],{"_sentryBundlerPluginAppKey:tuf-website":!0});var c=new a.Error().stack;c&&(a._sentryDebugIds=a._sentryDebugIds||{},a._sentryDebugIds[c]="b205db13-435b-4000-ba40-d4c267adac09",a._sentryDebugIdIdentifier="sentry-dbid-b205db13-435b-4000-ba40-d4c267adac09")}catch{}})();const A={CHARTER:"charter",VFXER:"vfxer",SPECIAL_THANKS:"specialThanks"},_e=[A.CHARTER,A.VFXER,A.SPECIAL_THANKS],Ps={[A.CHARTER]:"Charter",[A.VFXER]:"VFXer",[A.SPECIAL_THANKS]:"Special Thanks"},De="charter-zone",Pe="vfxer-zone",Le="specialThanks-zone",Ls=100,We=a=>a===De?A.CHARTER:a===Pe?A.VFXER:a===Le?A.SPECIAL_THANKS:null,$s=a=>_e.includes(a),W=a=>a===De||a===Pe||a===Le,J=a=>`${a.role}-${a.id}`,ve=a=>{const c=String(a),i=c.indexOf("-");if(i<0)return null;const u=c.slice(0,i),n=Number(c.slice(i+1));return!$s(u)||Number.isNaN(n)?null:{role:u,creatorId:n}},Qe=a=>{var c,i;return a?W(a.id)?a.id:((i=(c=a.data)==null?void 0:c.current)==null?void 0:i.zoneId)??null:null},Fs=a=>{var b,v;const{droppableContainers:c}=a,i=bs(a);let n=((b=(i.length>0?i:js(a)).find(p=>W(p.id)))==null?void 0:b.id)??null;if(!n){const p=c.filter(N=>W(N.id));n=((v=Be({...a,droppableContainers:p})[0])==null?void 0:v.id)??null}if(!n)return[];const m=c.filter(p=>{var N,g;return!W(p.id)&&((g=(N=p.data)==null?void 0:N.current)==null?void 0:g.zoneId)===n&&!p.disabled});if(m.length>0){const p=Be({...a,droppableContainers:m});if(p.length>0)return p}return c.find(p=>p.id===n&&!p.disabled)?[{id:n}]:[]},$e=a=>{const c={};for(const i of _e)c[i]=a.filter(u=>u.role===i);return c},Fe=a=>_e.flatMap(c=>a[c]),Ye=a=>Fe($e(Ze(a))),Os=(a,c)=>{var v,p,N;const{active:i,over:u}=c,n=ve(i.id);if(!u||!n)return{next:a,duplicate:!1};const m=n.role,x=W(u.id)?We(u.id):((v=ve(u.id))==null?void 0:v.role)??null;if(!x)return{next:a,duplicate:!1};const b=$e(a);if(m===x){const g=[...b[m]],y=g.findIndex(w=>J(w)===String(i.id));if(y<0)return{next:a,duplicate:!1};const S=W(u.id)?g.length-1:g.findIndex(w=>J(w)===String(u.id));if(S<0||S===y)return{next:a,duplicate:!1};b[m]=Es(g,y,S)}else{const g=[...b[m]],y=[...b[x]],S=g.findIndex(E=>J(E)===String(i.id));if(S<0)return{next:a,duplicate:!1};const w=g[S];if(y.some(E=>E.id===w.id))return{next:a,duplicate:!0};g.splice(S,1);let j=y.length;if(!W(u.id)){const E=y.findIndex(k=>J(k)===String(u.id));if(E>=0){const k=(p=c.over)==null?void 0:p.rect,$=(N=c.active.rect.current)==null?void 0:N.translated;j=(k&&$?$.top+$.height/2>k.top+k.height/2:!1)?E+1:E}}y.splice(j,0,{...w,role:x}),b[m]=g,b[x]=y}return{next:Fe(b),duplicate:!1}},zs=a=>a.team?{id:a.team.id,name:a.team.name}:null,Hs=a=>{const c=Array.isArray(a.currentCreators)?a.currentCreators:[],i=Array.isArray(a.levelCredits)?a.levelCredits.map(n=>{var m,x,b,v,p,N;return{id:((m=n.creator)==null?void 0:m.id)??n.creatorId??n.id,name:((x=n.creator)==null?void 0:x.name)??n.name,role:n.role||A.CHARTER,isOwner:n.isOwner,verificationStatus:n.verificationStatus||((b=n.creator)==null?void 0:b.verificationStatus)||"allowed",levelCount:n.levelCount||0,aliases:n.aliases||((v=n.creatorAliases)==null?void 0:v.map(g=>g.name))||((N=(p=n.creator)==null?void 0:p.creatorAliases)==null?void 0:N.map(g=>g.name))||[],sortOrder:n.sortOrder}}):[],u=c.length>0?c:i;return Ye(u).map((n,m)=>{var x;return{id:n.id,name:n.name,role:n.role||A.CHARTER,isOwner:n.isOwner,verificationStatus:n.verificationStatus||"allowed",levelCount:n.levelCount||0,aliases:n.aliases||((x=n.creatorAliases)==null?void 0:x.map(b=>b.name))||[],sortOrder:m}})},Vs=a=>{var u;const c=a.levelCount===1?"level":"levels",i=((u=a.aliases)==null?void 0:u.length)>0?` • Aliases: ${a.aliases.join(", ")}`:"";return`${a.name} (ID: ${a.id} • ${a.levelCount} ${c})${i}`},Je=({creator:a})=>{var n;const c=a.levelCount===1?"level":"levels",i=((n=a.aliases)==null?void 0:n.length)>0?` • Aliases: ${a.aliases.join(", ")}`:"",u=Vs(a);return e.jsxs(Ds,{className:"level-credits-edit-popup__creator-marquee",title:u,children:[e.jsx("span",{className:"level-credits-edit-popup__creator-name-primary",children:a.name}),e.jsx("span",{className:"level-credits-edit-popup__creator-name-meta",children:` (ID: ${a.id} • ${a.levelCount} ${c})${i}`})]})},Ks=(a,c)=>{var u,n;const i=c.trim().toLowerCase();return!!(!i||(u=a.name)!=null&&u.toLowerCase().includes(i)||String(a.id).includes(i)||(n=a.aliases)!=null&&n.some(m=>m.toLowerCase().includes(i)))},Us=({creator:a,role:c,zoneId:i,zoneModifier:u,dropDisabled:n,onToggleOwner:m,onRemove:x})=>{const b=J(a),{attributes:v,listeners:p,setNodeRef:N,transform:g,transition:y,isDragging:S}=Is({id:b,data:{type:"creator",role:c,zoneId:i,creator:a},disabled:{draggable:!1,droppable:n}}),w={transform:Rs.Transform.toString(g),transition:y};return e.jsxs("div",{ref:N,style:w,className:`level-credits-edit-popup__creator-item level-credits-edit-popup__creator-item--${u}${S?" is-sortable-ghost":""}`,children:[e.jsx("button",{type:"button",className:"level-credits-edit-popup__drag-handle",...v,...p,"aria-label":"Drag to reorder",children:e.jsx(ks,{})}),e.jsx("div",{className:"level-credits-edit-popup__creator-name",children:e.jsx(Je,{creator:a})}),e.jsxs("div",{className:"level-credits-edit-popup__creator-control
1s",children:[e.jsx("button",{type:"button",className:`level-credits-edit-popup__toggle-owner${a.isOwner?" is-owner":""}`,onClick:()=>m(a.id,c),children:a.isOwner?"Remove Owner":"Make Owner"}),e.jsx("button",{type:"button",className:"level-credits-edit-popup__remove",onClick:()=>x(a.id,c),children:"Remove"})]})]})},qs=({creator:a})=>e.jsx("div",{className:"level-credits-edit-popup__creator-item level-credits-edit-popup__creator-item--overlay",children:e.jsx("div",{className:"level-credits-edit-popup__creator-name",children:e.jsx(Je,{creator:a})})}),ke=({zoneId:a,role:c,credits:i,title:u,zoneModifier:n,isDropDisabled:m,onToggleOwner:x,onRemove:b,searchPlaceholder:v,noResultsLabel:p})=>{const[N,g]=l.useState(""),{active:y,over:S}=_s(),{setNodeRef:w}=As({id:a,disabled:m,data:{type:"zone",zoneId:a,role:c}}),j=l.useMemo(()=>i.filter(P=>Ks(P,N)),[i,N]),E=l.useMemo(()=>j.map(P=>J(P)),[j]),$=N.trim().length>0?`${j.length} / ${i.length}`:String(i.length),q=Qe(y),B=Qe(S),h=!!y&&!m&&!!q&&q!==a&&B===a;return e.jsxs("div",{className:`level-credits-edit-popup__credit-zone level-credits-edit-popup__credit-zone--${n}${h?" is-drag-over":""}${m?" is-drop-disabled":""}`,children:[e.jsxs("div",{className:"level-credits-edit-popup__zone-header",children:[e.jsx("span",{className:"level-credits-edit-popup__zone-title",children:u}),e.jsx("span",{className:"level-credits-edit-popup__zone-count",children:$}),m&&e.jsx("span",{className:"level-credits-edit-popup__already-exists",children:"Already exists"})]}),e.jsxs("div",{className:"level-credits-edit-popup__zone-search",children:[e.jsx(Ms,{className:"level-credits-edit-popup__zone-search-icon",size:"16px"}),e.jsx("input",{type:"search",className:"level-credits-edit-popup__zone-search-input",placeholder:v,value:N,onChange:P=>g(P.target.value),"aria-label":v})]}),e.jsxs("div",{ref:w,className:"level-credits-edit-popup__zone-list",children:[i.length===0&&e.jsx("p",{className:"level-credits-edit-popup__zone-empty",children:"Drop creators here"}),i.length>0&&j.length===0&&e.jsx("p",{className:"level-credits-edit-popup__zone-empty",children:p}),e.jsx(Ts,{items:E,strategy:ws,children:j.map(P=>e.jsx(Us,{creator:P,role:c,zoneId:a,zoneModifier:n,dropDisabled:m,onToggleOwner:x,onRemove:b},J(P)))})]})]})},Bs=({level:a,teamsList:c=[],excludeAliases:i=!1,onClose:u,onSaved:n})=>{const{t:m}=Ge(["components","common"]),[x,b]=l.useState(()=>zs(a)),[v,p]=l.useState(()=>Hs(a)),[N,g]=l.useState(null),[y,S]=l.useState(null),[w,j]=l.useState(!1),[E,k]=l.useState(null),[$,q]=l.useState(""),[B,h]=l.useState(!1),P=Cs(qe(ys,{activationConstraint:{distance:6}}),qe(Ss,{coordinateGetter:Ns})),ie=l.useCallback(()=>{w&&!window.confirm(m("levelPopups.edit.confirmations.unsavedChanges",{ns:"components"}))||u()},[w,u,m]);l.useEffect(()=>{let t;return(async()=>{try{t&&t.cancel("New search initiated"),t=T.CancelToken.source(),k(null);const f=new URLSearchParams({page:1,limit:Ls,search:$,excludeAliases:i}),C=await T.get(`${z.database.creators.root()}?${f}`,{cancelToken:t.token});k(C.data.results)}catch(f){T.isCancel(f)||(console.error("Error fetching creators:",f),k([]))}})(),()=>{t&&t.cancel("Component unmounted or search changed")}},[$,i]);const R=l.useMemo(()=>E===null?null:E.filter(t=>!v.some(d=>d.id===t.id&&d.role===t.role)),[E,v]),be=t=>{if(!t){b(null),j(!0);return}const d=c==null?void 0:c.find(C=>C.name.toLowerCase()===(t==null?void 0:t.toLowerCase())||Array.isArray(C.aliases)&&C.aliases.some(M=>String(M).toLowerCase()===(t==null?void 0:t.toLowerCase()))),f=d?{id:d.id,name:d.name}:{name:t};b(f),j(!0)},ee=t=>{const d=v.filter(C=>C.id===t.id).map(C=>C.role),f=_e.find(C=>!d.includes(C));if(!f){_.error("Creator already has all roles");return}p(C=>{var D;const M=$e(C);return M[f]=[...M[f],{id:t.id,name:t.name,isOwner:!1,role:f,verificationStatus:t.verificationStatus||"allowed",levelCount:Ke(t.credits),aliases:((D=t.creatorAliases)==null?void 0:D.map(V=>V.name))||[]}],Fe(M).map((V,ae)=>({...V,sortOrder:ae}))}),j(!0)},ce=(t,d)=>{p(f=>f.filter(C=>!(C.id===t&&C.role===d))),j(!0)},de=(t,d)=>{p(f=>f.map(C=>C.id===t&&C.role===d?{...C,isOwner:!C.isOwner}:C)),j(!0)},je=t=>{const{active:d}=t;g(d.id);const f=ve(d.id);f&&S({creatorId:f.creatorId,sourceRole:f.role})},Y=()=>{g(null),S(null)},Ae=t=>{var M;Y();const{over:d}=t;if(!d)return;const{next:f,duplicate:C}=Os(v,t);if(C){const D=W(d.id)?We(d.id):(M=ve(d.id))==null?void 0:M.role;_.error(`Creator already exists as ${Ps[D]||D}`);return}f!==v&&(p(f.map((D,V)=>({...D,sortOrder:V}))),j(!0))},ue=async()=>{var t,d,f,C,M,D,V,ae,me;h(!0);try{x?await T.put(z.levelsV3.team(a.id),{teamId:x.id,name:x.name,members:v.map(K=>K.id)}):await T.delete(z.levelsV3.team(a.id));const I=Ye(v),Z=await T.put(z.database.creators.level(a.id),{creators:I.map((K,te)=>({id:K.id,role:K.role,isOwner:!!K.isOwner,sortOrder:te}))});if(Z.status>=200&&Z.status<300){const K=((t=Z.data)==null?void 0:t.message)||"Changes saved successfully";_.success(K),await(n==null?void 0:n()),u()}else _.error(((d=Z.data)==null?void 0:d.message)||"Failed to save changes")}
1catch(I){if(console.error("Error saving level credits:",I),((f=I.response)==null?void 0:f.status)>=200&&((C=I.response)==null?void 0:C.status)<300){const Z=((M=I.response.data)==null?void 0:M.message)||"Changes saved successfully";_.success(Z),await(n==null?void 0:n()),u()}else _.error(((V=(D=I.response)==null?void 0:D.data)==null?void 0:V.message)||((me=(ae=I.response)==null?void 0:ae.data)==null?void 0:me.error)||"Failed to save changes")}finally{h(!1)}},Ne=v.filter(t=>t.role===A.CHARTER),X=v.filter(t=>t.role===A.VFXER),H=v.filter(t=>t.role===A.SPECIAL_THANKS),L=t=>!!y&&y.sourceRole!==t&&v.some(d=>d.role===t&&d.id===y.creatorId),Se=L(A.CHARTER),Te=L(A.VFXER),se=L(A.SPECIAL_THANKS),Q=l.useMemo(()=>{if(!N)return null;const t=ve(N);return t?v.find(d=>d.id===t.creatorId&&d.role===t.role)??null:null},[N,v]);return e.jsxs(Me,{onClose:ie,overlayClassName:"level-credits-edit-popup-container level-credits-edit-popup-overlay",panelClassName:"level-credits-edit-popup",ariaLabelledBy:"level-credits-edit-popup-title",children:[e.jsx(is,{variant:"floating",onClick:ie,"aria-label":"Close"}),e.jsxs("header",{className:"level-credits-edit-popup__header",children:[e.jsxs("h2",{id:"level-credits-edit-popup-title",className:"level-credits-edit-popup__title",children:["Edit credits — ",a.song]}),e.jsxs("p",{className:"level-credits-edit-popup__subtitle",children:["#",a.id," · ",a.artist]})]}),e.jsxs("div",{className:"level-credits-edit-popup__body",children:[e.jsxs("div",{className:"level-credits-edit-popup__team-section",children:[e.jsx("label",{className:"level-credits-edit-popup__label",children:"Team"}),e.jsxs("div",{className:"level-credits-edit-popup__team-input-group",children:[e.jsx(Xe,{width:"100%",options:c.map(t=>({value:t.name,label:t.name})),value:x?{value:x.name,label:x.name}:null,onChange:t=>{be((t==null?void 0:t.value)||"")},onInputChange:(t,{action:d})=>{d==="input-change"&&be(t)},isCreatable:!0,isClearable:!0,placeholder:"Enter or select team name...",className:"level-credits-edit-popup__team-select"}),x&&e.jsx("span",{className:x.id?"level-credits-edit-popup__team-badge existing":"level-credits-edit-popup__team-badge new",children:x.id?`ID: ${x.id}`:"New Team"})]})]}),e.jsxs("div",{className:"level-credits-edit-popup__credits-section",children:[e.jsxs(xs,{sensors:P,collisionDetection:Fs,onDragStart:je,onDragCancel:Y,onDragEnd:Ae,children:[e.jsxs("div",{className:"level-credits-edit-popup__credit-zones",children:[e.jsx(ke,{zoneId:De,role:A.CHARTER,credits:Ne,title:"Charters",zoneModifier:"charter",isDropDisabled:Se,onToggleOwner:de,onRemove:ce,searchPlaceholder:m("levelPopups.creditsEdit.searchPlaceholder",{ns:"components"}),noResultsLabel:m("levelPopups.creditsEdit.noResults",{ns:"components"})}),e.jsx(ke,{zoneId:Pe,role:A.VFXER,credits:X,title:"VFXers",zoneModifier:"vfxer",isDropDisabled:Te,onToggleOwner:de,onRemove:ce,searchPlaceholder:m("levelPopups.creditsEdit.searchPlaceholder",{ns:"components"}),noResultsLabel:m("levelPopups.creditsEdit.noResults",{ns:"components"})}),e.jsx(ke,{zoneId:Le,role:A.SPECIAL_THANKS,credits:H,title:"Special Thanks",zoneModifier:"specialThanks",isDropDisabled:se,onToggleOwner:de,onRemove:ce,searchPlaceholder:m("levelPopups.creditsEdit.searchPlaceholder",{ns:"components"}),noResultsLabel:m("levelPopups.creditsEdit.noResults",{ns:"components"})})]}),e.jsx(vs,{dropAnimation:null,children:Q?e.jsx(qs,{creator:Q}):null})]}),e.jsx("div",{className:"level-credits-edit-popup__add-creator",children:e.jsx(Xe,{width:"100%",options:R===null?[]:R.map(t=>{var d;return{value:t.id,label:`${t.name} (ID: ${t.id}, Charts: ${Ke(t.credits)})${((d=t.creatorAliases)==null?void 0:d.length)>0?` [${t.creatorAliases.map(f=>f.name).join(", ")}]`:""}`}}),value:null,onChange:t=>{const d=R==null?void 0:R.find(f=>f.id===(t==null?void 0:t.value));d&&ee(d)},placeholder:"Search and select creator...",onInputChange:t=>q(t),isSearchable:!0,className:"level-credits-edit-popup__creator-select",isLoading:R===null,noOptionsMessage:()=>R===null?"Loading...":"Type to search creators..."})})]})]}),e.jsxs("footer",{className:"level-credits-edit-popup__footer",children:[e.jsx("button",{type:"button",className:"btn-fill-primary",onClick:ue,disabled:!w||B,children:B?"Saving...":"Save Changes"}),e.jsx("button",{type:"button",className:"btn-fill-neutral-muted",onClick:u,disabled:B,children:"Cancel"})]})]})},ua=()=>{const{user:a}=cs(),[c,i]=l.useState([]),[u,n]=l.useState([]),[m,x]=l.useState(null),[b,v]=l.useState(decodeURIComponent(window.location.search.split("search=")[1]||"")),[p,N]=l.useState(""),[g,y]=l.useState(1),[S,w]=l.useState(1),[j,E]=l.useState("credits"),k=50,$=100,[q,B]=l.useState(null),{t:h}=Ge("pages"),P=ps(),ie=l.useMemo(()=>ds({title:h("creatorManagement.meta.title"),description:h("creatorManagement.meta.description"),pathname:P.pathname,type:"article",n
1oindex:!0}),[h,P.pathname]),[R,be]=l.useState("NAME_ASC"),[ee,ce]=l.useState(0),[de,je]=l.useState("1"),[Y,Ae]=l.useState(0),[ue,Ne]=l.useState(!0),X=l.useRef(),H=l.useRef(),[L,Se]=l.useState(!1),[Te,se]=l.useState(!1),[Q,t]=l.useState({name:"",aliases:[]}),[d,f]=l.useState(""),[C,M]=l.useState(!1),[D,V]=l.useState([]),[ae,me]=l.useState(!1),[I,Z]=l.useState(""),[K,te]=l.useState(!1),[re,pe]=l.useState(null),[G,F]=l.useState({name:"",description:"",aliases:[]}),[we,U]=l.useState(""),[ne,Oe]=l.useState(!1),[he,ze]=l.useState(!1),oe=l.useRef(),fe=async(s=!1)=>{try{s||i([]),Ne(!0);const r=new URLSearchParams({page:S,limit:$,search:p,excludeAliases:L,sort:R});X.current&&X.current.cancel("New creators request initiated"),X.current=T.CancelToken.source();const o=await T.get(`${z.database.creators.root()}?${r}`,{cancelToken:X.current.token});if(o.status!==200)throw new Error(o.data.error||"Failed to fetch creators");i(o.data.results);const O=Math.ceil(o.data.count/$);Ae(O)}catch(r){T.isCancel(r)||(_.error("Failed to load creators"),console.error(r))}finally{Ne(!1)}},ge=async(s=!1)=>{H.current&&H.current.cancel("New levels request initiated"),H.current=T.CancelToken.source(),s||n([]);try{const r=new URLSearchParams({offset:(g-1)*k,limit:k,search:b,excludeAliases:L}),o=await T.get(`${z.database.creators.levelsAudit()}?${r}`,{cancelToken:H.current.token});if(o.data){n(o.data.results);const O=Math.ceil(o.data.count/k);ce(O)}}catch(r){T.isCancel(r)||(console.error("Error fetching levels:",r),_.error("Failed to fetch levels"))}};l.useEffect(()=>(fe(),ge(),Ce(),()=>{X.current&&X.current.cancel("Component unmounted"),H.current&&H.current.cancel("Component unmounted")}),[]),l.useEffect(()=>{fe()},[S,p,R]),l.useEffect(()=>(ge(),()=>{H.current&&H.current.cancel("Dependencies changed")}),[g,b]),l.useEffect(()=>{Promise.all([fe(),ge()]).catch(console.error)},[L]);const Ce=async(s="")=>{oe.current&&oe.current.cancel("New teams request initiated");try{me(!0),oe.current=T.CancelToken.source();const r=await T.get(z.teamsV3.root(),{params:s?{search:s}:void 0,cancelToken:oe.current.token});if(r.status===200){const o=r.data;V(Array.isArray(o)?o:(o==null?void 0:o.results)??[])}}catch(r){T.isCancel(r)||(console.error("Error fetching teams:",r),_.error("Failed to load teams"))}finally{me(!1)}};l.useEffect(()=>(j==="teams"&&Ce(I),()=>{oe.current&&oe.current.cancel("Component unmounted")}),[j,I]);const es=async()=>{var s,r;if(!G.name.trim()){_.error("Team name is required");return}Oe(!0);try{await T.post(z.teamsV3.root(),G),await Ce(I),te(!1),F({name:"",description:"",aliases:[]}),U(""),_.success("Team created successfully")}catch(o){_.error(((r=(s=o.response)==null?void 0:s.data)==null?void 0:r.error)||"Failed to create team")}finally{Oe(!1)}},ss=async()=>{var s,r;if(!re||!G.name.trim()){_.error("Team name is required");return}ze(!0);try{await T.patch(z.teamsV3.byId(re.id),G),await Ce(I),pe(null),F({name:"",description:"",aliases:[]}),U(""),_.success("Team updated successfully")}catch(o){_.error(((r=(s=o.response)==null?void 0:s.data)==null?void 0:r.error)||"Failed to update team")}finally{ze(!1)}},as=async s=>{var r,o;if(window.confirm("Are you sure you want to delete this team? This action cannot be undone."))try{await T.delete(z.teamsV3.byId(s)),await Ce(I),_.success("Team deleted successfully")}catch(O){const xe=((o=(r=O.response)==null?void 0:r.data)==null?void 0:o.error)||"Failed to delete team";_.error(xe)}},ts=s=>{pe(s),F({name:s.name||"",description:s.description||"",aliases:Array.isArray(s.aliases)?s.aliases.filter(Boolean):[]}),U("")},He=s=>{x(s)},Ve=c,ye=s=>y(s),Ee=s=>w(s),rs=s=>{var r;return e.jsxs("div",{className:"level-item",onClick:()=>He(s),role:"button",tabIndex:0,onKeyDown:o=>{(o.key==="Enter"||o.key===" ")&&(o.preventDefault(),He(s))},children:[e.jsx("div",{className:"level-header",children:e.jsx("h3",{children:s.song})}),e.jsxs("p",{children:["Artist: ",s.artist]}),e.jsxs("p",{children:["ID: ",s.id]}),s.team&&e.jsxs("p",{className:"team-info",children:["Team: ",s.team.name,((r=s.team.members)==null?void 0:r.length)>0&&` (${s.team.members.length} members)`]}),e.jsx("div",{className:"current-creators",children:Ze(s.currentCreators).map(o=>
1e.jsxs("span",{className:"creator-tag",children:[o.name," (",o.role,")",o.aliases&&o.aliases.length>0&&e.jsxs("span",{className:"creator-aliases",children:[" [",o.aliases.join(", "),"]"]})]},`${o.role}-${o.id}`))})]},s.id)},ns=s=>{B(s)},os=()=>{B(null)},ls=async()=>{await fe(!0),await ge()},le=s=>{be(s)};return a.permissionFlags===void 0?e.jsxs("div",{className:"creator-management-page",children:[e.jsx(Ue,{...ie}),e.jsx("div",{className:"creator-management-container page-content",children:e.jsx("div",{className:"loader-shell loader-shell--tall",children:e.jsx("div",{className:"loader loader-relative"})})})]}):us(a,ms.SUPER_ADMIN)?e.jsxs(e.Fragment,{children:[e.jsx(Ue,{...ie}),e.jsx("div",{className:"creator-management-page",children:e.jsxs("div",{className:"creator-management-container page-content",children:[e.jsx("h1",{children:"Creator Management"}),e.jsxs("div",{className:"tabs",children:[e.jsx("button",{className:`tab ${j==="credits"?"active":""}`,onClick:()=>E("credits"),children:"Credit Management"}),e.jsx("button",{className:`tab ${j==="creators"?"active":""}`,onClick:()=>E("creators"),children:"Creator Management"}),e.jsx("button",{className:`tab ${j==="teams"?"active":""}`,onClick:()=>E("teams"),children:"Team Management"})]}),j==="credits"?e.jsx(e.Fragment,{children:e.jsxs("section",{className:"manage-levels-section",children:[e.jsx("h2",{children:"Manage Level Credits"}),e.jsxs("div",{className:"levels-controls",children:[e.jsx("div",{className:"search-box",children:e.jsx("input",{type:"text",placeholder:"Search levels by song, artist, or creator...",value:b,onChange:s=>v(s.target.value)})}),e.jsx("div",{className:"filter-options",children:e.jsxs("label",{className:L?"active":"",children:[e.jsx("input",{type:"checkbox",checked:L,onChange:s=>Se(s.target.checked)}),"Exclude Aliases from Search"]})}),e.jsxs("div",{className:"pagination",children:[e.jsx("button",{onClick:()=>{ye(g-1),g<=2&&je("1")},disabled:g===1,children:"Previous"}),e.jsxs("div",{className:"page-controls",children:[e.jsx("span",{children:"Page "}),e.jsx("input",{type:"number",min:"1",max:ee,value:g===1&&de===""?"":g,onChange:s=>{const r=s.target.value;if(je(r),r===""){ye(1);return}const o=parseInt(r);o>=1&&o<=ee&&ye(o)}}),e.jsxs("span",{children:[" of ",ee]})]}),e.jsx("button",{onClick:()=>ye(g+1),disabled:g===ee,children:"Next"})]})]}),e.jsx("div",{className:"levels-list",children:u.map(s=>rs(s))}),ue&&e.jsx("div",{className:"new-loader"})]})}):j==="creators"?e.jsxs(e.Fragment,{children:[e.jsxs("div",{className:"sort-controls",children:[e.jsx("button",{className:"add-creator-button",onClick:()=>se(!0),children:h("creatorManagement.buttons.addCreator")}),e.jsxs("div",{className:"sort-group",children:[e.jsx("p",{children:h("creatorManagement.sort.byName")}),e.jsxs("div",{className:"sort-buttons",children:[e.jsx("button",{className:`sort-button ${R==="NAME_ASC"?"active":""}`,onClick:()=>le("NAME_ASC"),title:h("creatorManagement.sort.byName"),children:e.jsx(Ie,{color:"#aaa"})}),e.jsx("button",{className:`sort-button ${R==="NAME_DESC"?"active":""}`,onClick:()=>le("NAME_DESC"),title:h("creatorManagement.sort.byName"),children:e.jsx(Re,{color:"#aaa"})})]})]}),e.jsxs("div",{className:"sort-group",children:[e.jsx("p",{children:h("creatorManagement.sort.byId")}),e.jsxs("div",{className:"sort-buttons",children:[e.jsx("button",{className:`sort-button ${R==="ID_ASC"?"active":""}`,onClick:()=>le("ID_ASC"),title:"Sort by ID ascending",children:e.jsx(Ie,{color:"#aaa"})}),e.jsx("button",{className:`sort-button ${R==="ID_DESC"?"active":""}`,onClick:()=>le("ID_DESC"),title:"Sort by ID descending",children:e.jsx(Re,{color:"#aaa"})})]})]}),e.jsxs("div",{className:"sort-group",children:[e.jsx("p",{children:h("creatorManagement.sort.byCharts")}),e.jsxs("div",{className:"sort-buttons",children:[e.jsx("button",{className:`sort-button ${R==="CHARTS_ASC"?"active":""}`,onClick:()=>le("CHARTS_ASC"),title:"Sort by number of charts ascending",children:e.jsx(Ie,{color:"#aaa"})}),e.jsx("button",{className:`sort-button ${R==="CHARTS_DESC"?"active":""}`,onClick:()=>le("CHARTS_DESC"),title:"Sort by number of charts descending",children:e.jsx(Re,{color:"#aaa"})})]})]})]}),e.jsxs("section",{className:"manage-creators-section",children:[e.jsxs("div",{className:"creators-controls",children:[e.jsx("div",{className:"search-box",children:e.jsx("input",{type:"text",placeholder:h("creatorManagement.filters.searchPlaceholder"),value:p,onChange:s=>{N(s.target.value),w(1)}})}),e.jsx("div",{className:"filter-options",children:e.jsxs("label",{className:L?"active":"",children:[e.jsx("input",{type:"checkbox",checked:L,onChange:s=>Se(s.target.checked)}),h("creatorManagement.filters.excludeAliases")]})}),e.jsxs("div",{className:"pagination",children:[e.jsx("button",{onClick:()=>Ee(S-1),disabled:S===1,children:"Previous"}
1),e.jsxs("div",{className:"page-controls",children:[e.jsx("span",{children:"Page "}),e.jsx("input",{type:"number",min:"1",max:Y,value:S,onChange:s=>{const r=parseInt(s.target.value);r>=1&&r<=Y&&Ee(r)}}),e.jsxs("span",{children:[" of ",Y]})]}),e.jsx("button",{onClick:()=>Ee(S+1),disabled:S>=Y,children:"Next"})]})]}),e.jsx("div",{className:"creators-list",children:!ue&&Ve.length===0?e.jsx("div",{className:"no-results-message",children:p?h("creatorManagement.messages.noResultsSearch",{query:p}):h("creatorManagement.messages.noResults")}):Ve.map(s=>{var r,o;return e.jsxs("div",{className:`creator-item creator-status-${s.verificationStatus||"allowed"}`,children:[e.jsxs("div",{className:"creator-info",children:[e.jsxs("h3",{children:[s.name," (",h("creatorManagement.creatorInfo.id"),": ",s.id,")",e.jsx(gs,{status:s.verificationStatus||"allowed",size:"small",className:"creator-item-status"})]}),e.jsxs("p",{children:[h("creatorManagement.creatorInfo.charts"),": ",((r=s.credits)==null?void 0:r.length)||0]}),((o=s.creatorAliases)==null?void 0:o.length)>0&&e.jsxs("p",{children:[h("creatorManagement.creatorInfo.aliases"),": ",s.creatorAliases.map(O=>O.name).join(", ")]})]}),e.jsx("div",{className:"creator-actions",children:e.jsx("button",{onClick:()=>ns(s),className:"action-button",children:h("creatorManagement.buttons.manageCreator")})})]},`${s.role}-${s.id}`)})}),ue&&e.jsx("div",{className:"new-loader"})]})]}):j==="teams"?e.jsxs("section",{className:"manage-teams-section",children:[e.jsx("h2",{children:"Manage Teams"}),e.jsxs("div",{className:"teams-controls",children:[e.jsx("div",{className:"search-box",children:e.jsx("input",{type:"text",placeholder:"Search teams by name or alias...",value:I,onChange:s=>Z(s.target.value)})}),e.jsx("button",{className:"add-team-button",onClick:()=>{pe(null),F({name:"",description:"",aliases:[]}),U(""),te(!0)},children:"Add Team"})]}),ae?e.jsx("div",{className:"new-loader"}):e.jsx("div",{className:"teams-list",children:D.length===0?e.jsx("div",{className:"no-results-message",children:I?`No teams found matching "${I}"`:"No teams found"}):D.map(s=>e.jsxs("div",{className:"team-item",children:[e.jsxs("div",{className:"team-info",children:[e.jsxs("h3",{children:[s.name," (ID: ",s.id,")"]}),s.description&&e.jsx("p",{className:"team-description",children:s.description}),Array.isArray(s.aliases)&&s.aliases.length>0&&e.jsxs("p",{className:"team-aliases",children:["Aliases: ",s.aliases.filter(Boolean).join(", ")]}),s.members&&s.members.length>0&&e.jsxs("p",{className:"team-members",children:["Members: ",s.members.map(r=>r.name).join(", ")]})]}),e.jsxs("div",{className:"team-actions",children:[e.jsx("button",{onClick:()=>ts(s),className:"edit-button",children:"Edit"}),e.jsx("button",{onClick:()=>as(s.id),className:"delete-button btn-fill-danger",children:"Delete"})]})]},s.id))})]}):null]})}),q&&e.jsx(hs,{creator:q,onClose:os,onUpdate:ls}
1),m&&e.jsx(Bs,{level:m,teamsList:D,excludeAliases:L,onClose:()=>x(null),onSaved:ge}),Te&&e.jsxs(Me,{onClose:()=>{se(!1),t({name:"",aliases:[]}),f("")},closeDisabled:C,overlayClassName:"add-creator-form-overlay",panelClassName:"add-creator-form",children:[e.jsx("h3",{children:h("creatorManagement.form.title")}),e.jsxs("div",{className:"form-group",children:[e.jsx("label",{children:h("creatorManagement.form.labels.creatorName")}),e.jsx("input",{type:"text",value:Q.name,onChange:s=>t(r=>({...r,name:s.target.value})),placeholder:h("creatorManagement.form.placeholders.enterName")})]}),e.jsxs("div",{className:"form-group",children:[e.jsx("label",{children:h("creatorManagement.form.labels.aliases")}),e.jsxs("div",{className:"alias-input-group",children:[e.jsx("input",{type:"text",value:d,onChange:s=>f(s.target.value),placeholder:h("creatorManagement.form.placeholders.enterAlias")}),e.jsx("button",{onClick:()=>{d.trim()&&(t(s=>({...s,aliases:[...s.aliases,d.trim()]})),f(""))},children:h("creatorManagement.form.buttons.addAlias")})]}),e.jsx("div",{className:"aliases-list",children:Q.aliases.map((s,r)=>e.jsxs("div",{className:"alias-tag",children:[s,e.jsx("button",{onClick:()=>t(o=>({...o,aliases:o.aliases.filter((O,xe)=>xe!==r)})),children:"×"})]},r))})]}),e.jsxs("div",{className:"form-actions",children:[e.jsx("button",{className:`submit-button btn-fill-primary ${C?"loading":""}`,onClick:async()=>{var s,r;if(!Q.name.trim()){_.error(h("creatorManagement.messages.nameRequired"));return}M(!0);try{await T.post(z.database.creators.root(),Q),await fe(),se(!1),t({name:"",aliases:[]}),_.success(h("creatorManagement.messages.creatorCreated"))}catch(o){_.error(((r=(s=o.response)==null?void 0:s.data)==null?void 0:r.error)||h("creatorManagement.errors.createFailed"))}finally{M(!1)}},disabled:C||!Q.name.trim(),children:C?h("loading.creating",{ns:"common"}):h("buttons.create",{ns:"common"})}),e.jsx("button",{className:"cancel-button btn-fill-ghost",onClick:()=>{se(!1),t({name:"",aliases:[]}),f("")},children:h("buttons.cancel",{ns:"common"})})]})]}),(K||re)&&e.jsxs(Me,{onClose:()=>{te(!1),pe(null),F({name:"",description:"",aliases:[]}),U("")},closeDisabled:ne||he,overlayClassName:"add-creator-form-overlay",panelClassName:"add-creator-form",children:[e.jsx("h3",{children:re?"Edit Team":"Add Team"}),e.jsxs("div",{className:"form-group",children:[e.jsx("label",{children:"Team Name"}),e.jsx("input",{type:"text",value:G.name,onChange:s=>F(r=>({...r,name:s.target.value})),placeholder:"Enter team name"})]}),e.jsxs("div",{className:"form-group",children:[e.jsx("label",{children:"Description (Optional)"}),e.jsx("textarea",{value:G.description,onChange:s=>F(r=>({...r,description:s.target.value})),placeholder:"Enter team description",rows:3})]}),e.jsxs("div",{className:"form-group",children:[e.jsx("label",{children:"Aliases"}),e.jsxs("div",{className:"alias-input-group",children:[e.jsx("input",{type:"text",value:we,onChange:s=>U(s.target.value),placeholder:"Enter alias",onKeyPress:s=>{if(s.key==="Enter"){s.preventDefault();const r=we.trim();if(!r)return;F(o=>o.aliases.some(O=>O.toLowerCase()===r.toLowerCase())?o:{...o,aliases:[...o.aliases,r]}),U("")}}}),e.jsx("button",{onClick:()=>{const s=we.trim();s&&(F(r=>r.aliases.some(o=>o.toLowerCase()===s.toLowerCase())?r:{...r,aliases:[...r.aliases,s]}),U(""))},children:"Add Alias"})]}),e.jsx("div",{className:"aliases-list",children:G.aliases.map((s,r)=>e.jsxs("div",{className:"alias-tag",children:[s,e.jsx("button",{onClick:()=>F(o=>({...o,aliases:o.aliases.filter((O,xe)=>xe!==r)})),children:"×"})]},r))})]}),e.jsxs("div",{className:"form-actions",children:[e.jsx("button",{className:`submit-button btn-fill-primary ${ne||he?"loading":""}`,onClick:re?ss:es,disabled:ne||he||!G.name.trim(),children:ne||he?ne?"Creating...":"Updating...":re?"Update":"Create"}),e.jsx("button",{className:"cancel-button btn-fill-ghost",onClick:()=>{te(!1),pe(null),F({name:"",description:"",aliases:[]}),U("")},disabled:ne||he,children:"Cancel"})]})]})]}):e.jsx(fs,{metaTitle:"Creator Management",metaDescription:"Manage creators and level credits"})};export{ua 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.