1import{j as e}from"./chunk-BUmnHJrbSQCzs.js";import{e as $,n as X}from"./chunk-DO3lF6nuWkvRY.js";import{k as Z,u as g,aO as _,em as q}from"./chunk-AX90GgQ3XWSAh.js";import{F as l}from"./chunk-CMsoSglNeCH9b.js";import{t as H}from"./chunk-CqBsQ6GQJXUzv.js";import{b as K,F as z}from"./chunk-D_UWobeBxUS7C.js";import{w as Q}from"./chunk-CddknkyK8W21F.js";import{r as I}from"./chunk-rtlSGV0HlPFTb.js";import{h as Y}from"./chunk-Jyo4XkZxQZGQ9.js";import{B as ee,F as te}from"./chunk-m3F_PFlgnim0r.js";import{T as se}from"./chunk-BEDdQHpQNtbzz.js";import{N as p}from"./chunk-CbAwB98V3irWE.js";import{u as h}from"./chunk-n8Dcc5pPs-VwA.js";import{F as ie}from"./chunk-DvTsU0AL728Mv.js";import{S as ae}from"./chunk-ByWeQZl8of_Xg.js";import{G as F}from"./chunk-DGqa8B2pns1IE.js";import{I as ne}from"./chunk-Clx-sxVJSclIP.js";import{F as oe}from"./chunk-9030flgbw6oBK.js";import{h as E}from"./chunk-D61NvIcpQGW10.js";import"./chunk-CdNFvOeCBj5AH.js";import"./chunk-QDkSH-fXqC0Pw.js";import{s as b,e as c,m as k,N as T,d as O,o,l as r,g as A,n as re,f as L}from"./chunk-D7emWm4EvAaun.js";import{r as M}from"./chunk-CyONiOkNFaPdt.js";function Be({checked:t}){return e.jsx(l,{icon:t?Z:$,className:H("h-5 w-5 shrink-0",t?"text-link":"text-bg-accent2")})}function R(){const{t}=h([p.Lists]);return e.jsxs("span",{className:"flex items-center gap-2",children:[t("lists:newListForm.whoCanSee"),e.jsx(se,{as:"button",type:"button","aria-label":t("lists:newListForm.visibilityInfo.iconLabel"),tooltipProps:{children:e.jsxs("div",{className:"flex max-w-xs flex-col gap-3 p-1 text-left text-medium text-text",children:[e.jsx("p",{children:t("lists:newListForm.visibilityInfo.intro")}),e.jsxs("div",{className:"flex gap-3",children:[e.jsx(l,{icon:g,className:"mt-0.5 h-4 w-4 shrink-0 text-text"}),e.jsx("p",{children:t("lists:newListForm.visibilityInfo.everyone")})]}),e.jsxs("div",{className:"flex gap-3",children:[e.jsx(l,{icon:_,className:"mt-0.5 h-4 w-4 shrink-0 text-text"}),e.jsx("p",{children:t("lists:newListForm.visibilityInfo.onlyMe")})]}),e.jsx("p",{children:t("lists:newListForm.visibilityInfo.changeWarning")})]})},children:e.jsx(l,{icon:X,className:"text-link"})})]})}const D={labelClassName:"mb-2 text-default-strong font-normal",optionsWrapperClassName:"grid grid-cols-2 gap-3",hideSelectedStartIcon:!0};function U(){const{t}=h([p.Lists]);return[{value:"only-me",label:e.jsxs("span",{className:"flex items-center justify-center gap-2",children:[e.jsx(l,{icon:_,className:"h-4 w-4"}),t("lists:newListForm.onlyMe")]})},{value:"everyone",label:e.jsxs("span",{className:"flex items-center justify-center gap-2",children:[e.jsx(l,{icon:g,className:"h-4 w-4"}),t("lists:newListForm.everyone")]})}]}function le({name:t}){const s=U();return e.jsx(te,{name:t,label:e.jsx(R,{}),options:s,...D})}function Pe({value:t,onChange:s}){const i=U();return e.jsx(ee,{value:t,onChange:s,label:e.jsx(R,{}),options:i,...D})}const V=/^custom_list_(?!item_)\w+$/,me=t=>V.test(t),m=b().regex(V).refine(me);c(["date_added","rank","alphabetical","avg_rating","my_play_count"]);c(["asc","desc"]);const We={rank:"asc",date_added:"desc",alphabetical:"asc",avg_rating:"desc",my_play_count:"desc"},Ge={played:"Courses played",wishlist:"Wishlist"},x=80,B=500;function Je({type:t,itemCount:s}){return t==="custom"&&s>=B}const ce="A UDisc member";function $e(t){var s,i;return((s=t==null?void 0:t.name)==null?void 0:s.trim())||((i=t==null?void 0:t.username)==null?void 0:i.trim())||ce}const C=b().transform((t,s)=>{try{return JSON.parse(t)}catch{return s.addIssue({code:k.custom,message:"Invalid JSON"}),T}}).pipe(O(m).max(100)),de=o({intent:r("apply-course-lists"),courseId:A.number().int(),addListIds:C,removeListIds:C}),w=b().transform((t,s)=>{try{return JSON.parse(t)}catch{return s.addIssue({code:k.custom,message:"Invalid JSON"}),T}}).pipe(O(re().int()).max(B)),f=o({intent:r("update-list"),listId:m,name:M("Enter a list name").max(x,`List names are limited to ${x} characters`),isNumbered:E.checkbox(),visibility:c(["only-me","everyone"])}),v=o({intent:r("update-list-visibility"),listId:m,visibility:c(["only-me","everyone"])}),ue=o({intent:r("delete-list"),listId:m}),pe=o({intent:r("save-list-edits"),listId:m,removedCourseIds:w,orderedCourseIds:w.optional()}),xe=o({intent:c(["bookmark-list","remove-bookmark"]),listId:m}),fe=o({intent:r("share-list"),listId:m}),P=o({name:M("Enter a list name").max(x,`List names are limited to ${x} characters`),isNumbered:E.checkbox(),visibility:c(["only-me","everyone"])}),n=P.extend({intent:r("create-list")}),u=P.extend({intent:r("create-list-with-course"),courseId:A.number().int()});L("intent",[n,u]);const ye=L("intent",[n,u,f,v]);L("intent",[de,n,u,f,v,ue,pe,xe,fe]);function Xe({courseId:t,list:s,fetcher:i,onCancel:W,onDelete:j}){const{t:a}=h([p.Lists,p.Common]),d=s!==void 0&&s.type!=="custom",y=K({method:"POST",action:Y("/api/course-lists"),fetcher:i,validator:Q(ye),defaultValues:d?{visibility:s.visibility}:s??{name:"",isNumbered:!0,visibility:"only-me"}}),N=I.useRef(!1);I.useEffect(()=>{i.state!=="idle"&&(N.current=!0)},[i.state]);const S=N.current&&i.state==="idle"&&i.data!=null&&"ok"in i.data?i.data.ok:null,G=S===!0,J=S===!1;return e.jsx(z,{scope:y.scope(),children:e.jsxs("form",{...y.getFormProps(),children:[e.jsx("input",{type:"hidden",name:n.keyof().Enum.intent,value:s?d?v.shape.intent.value:f.shape.intent.value:t===void 0?n.shape.intent.value:u.shape.intent.value}),s&&e.jsx("input",{type:"hidden",name:f.keyof().Enum.listId,value:s.id}),t!==void 0&&e.jsx("input",{type:"hidden",name:u.keyof().Enum.courseId,value:t}),e.jsxs("div",{className:"flex flex-col gap-5 px-6",children:[d?e.jsx(ne,{label:a("lists:newListForm.listName"),value:s.name,disabled:!0,readOnly:!0}):e.jsx(ie,{name:n.keyof().Enum.name,label:a("lists:newListForm.listName")}
1),!d&&e.jsxs("div",{className:"flex items-center justify-between gap-3",children:[e.jsxs("div",{className:"flex min-w-0 items-center gap-2",children:[e.jsx(l,{icon:q,className:"h-6 w-6 text-text"}),e.jsxs("div",{className:"flex min-w-0 flex-col",children:[e.jsx("p",{className:"text-default-strong text-text",children:a("lists:newListForm.numberedList")}),e.jsx("p",{className:"text-medium text-subtle",children:a("lists:newListForm.numberedListDescription")})]})]}),e.jsx(oe,{name:n.keyof().Enum.isNumbered,"aria-label":a("lists:newListForm.numberedList")})]}),e.jsx(le,{name:n.keyof().Enum.visibility}),J&&e.jsx("p",{role:"alert",className:"text-medium text-error",children:a(s?"lists:editList.error":"lists:newListForm.error")})]}),e.jsxs(F.Buttons,{className:"mt-5 items-center border-t border-divider px-6 py-0 pt-5 sm:p-0 sm:px-6 sm:pt-5",children:[e.jsx(ae,{color:"primary",idleText:a("common:save"),submittingText:a("common:save"),className:"w-full sm:w-auto",disabled:i.state!=="idle"||G||s!==void 0&&!y.formState.isDirty}),e.jsx(F.CancelButton,{onClose:W,disabled:i.state!=="idle",children:a("common:cancel")}),j&&!d&&e.jsx("button",{type:"button",onClick:j,className:"w-full text-button text-error sm:mr-auto sm:w-auto",children:a("lists:editList.deleteList")})]})]})})}export{Be as C,Ge as D,Pe as L,Xe as N,We as a,m as c,ue as d,$e as g,Je as i};
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.