1import{r as l,j as t}from"./vendor-react-D4NFYCVY.js";import{B as h,h as T,bf as A,C as P,am as U,T as X,t as d,aU as J}from"./index-Bo7vBx4r.js";import{n as W}from"./evaluationComments-BMKqDQbo.js";import{C as V,b as Y}from"./neisAutofillPayload-Cgs2KaME.js";import{e as q,p as Q,a as Z}from"./behaviorCommentExport-lHogX4rW.js";import{C as O}from"./ConversionBanner-CICNx5Ak.js";import{c as ee,d as w}from"./demoLimits-C0sGsMbz.js";import{r as te,w as se}from"./behaviorStore-8AbtiiNv.js";import{t as re,D as ae}from"./tryBehaviorGenerate-bmOOGbKQ.js";import{D as ne}from"./download-2uolYGOU.js";import"./vendor-data-DiuZHwsT.js";import"./vendor-state-mPENyaSF.js";import"./vendor-firebase-BXtaSaVx.js";import"./vendor-ui-DW-ZtMoV.js";import"./vendor-utils-CBGDym6X.js";import"./vendor-motion-LReuCgk7.js";import"./vendor-tiptap-DOlczfgE.js";function oe(c=new Date){const o=c.getMonth()+1;return o>=3&&o<=8?1:2}const F=[{key:"learning",label:"íìµÂ·íë"},{key:"character",label:"ì¸ì±Â·íë"},{key:"peer",label:"êµì°ê´ê³"},{key:"talent",label:"í¹ê¸°Â·ì§ë¡"},{key:"etc",label:"기í"}],le=[{value:"short",label:"ì§§ê²"},{value:"normal",label:"ë³´íµ"},{value:"long",label:"길ê²"}],g=c=>
1({num:c,name:"",keywords:q(),comment:"",confirmed:!1}),L=c=>F.reduce((o,b)=>{var i;return o+(((i=c[b.key])==null?void 0:i.length)??0)},0);function Ce(){const c=l.useRef(te()).current,[o,b]=l.useState((c==null?void 0:c.grade)??ee),i=l.useRef({}),[,_]=l.useState(0),[N,v]=l.useState({}),x=l.useRef({}),[y,C]=l.useState(!1),[u,G]=l.useState("normal"),[I,S]=l.useState(!1),[R,D]=l.useState(null),f=l.useRef(o),p=l.useRef(u);if(Object.keys(i.current).length===0){const e={};((c==null?void 0:c.rows)??[]).forEach(s=>{s.num&&(e[s.num]={...g(s.num),...s})});for(let s=1;s<=w;s++)e[s]||(e[s]=g(s));i.current=e}const m=[];for(let e=1;e<=w;e++)m.push(i.current[e]??g(e));const $=W(m.map(e=>e.comment??"")),E=m.filter(e=>(e.comment??"").trim()).length;f.current=o,p.current=u,l.useEffect(()=>{se({grade:o,rows:m})});const k=(e,s)=>{i.current[e]={...i.current[e]??g(e),...s},_(r=>r+1)},z=e=>Object.values(i.current).filter(s=>s.num!==e&&(s.comment??"").trim()).map(s=>s.comment.trim()),B=async e=>{const s=i.current[e];if(!s)return"ok";if(L(s.keywords)===0)return d.error(`${e}ë²: í¤ìë를 ì
ë ¥íì¸ì`),"ok";if(x.current[e])return"ok";const r={comment:(s.comment??"").trim(),keywords:JSON.stringify(s.keywords),grade:o,length:u};x.current[e]=!0,v(a=>({...a,[e]:!0}));try{const{text:a}=await re({grade:o,keywords:s.keywords,length:u,avoid:z(e)}),n=i.current[e];return((n==null?void 0:n.comment)??"").trim()!==r.comment||JSON.stringify(n==null?void 0:n.keywords)!==r.keywords||f.current!==r.grade||p.current!==r.length?(d.info(`${e}ë²ì ê·¸ ì¬ì´ ë´ì©ì´ ë°ëì´ ì 문ì¥ì ë£ì§ ììì´ì`),"ok"):(k(e,{comment:a}),D(null),"ok")}catch(a){return a instanceof ae?(D(a.message),"limit"):(d.error(`${e}ë² ìì± ì¤í¨: ${a instanceof Error?a.message:String(a)}`),"failed")}finally{x.current[e]=!1,v(a=>({...a,[e]:!1}))}},M=async()=>{var a;const e=m.filter(n=>L(n.keywords)>0&&!(n.comment??"").trim()).map(n=>n.num);if(e.length===0){d.error("í¤ìë를 ì
ë ¥í ë¹ íìì´ ììµëë¤");return}const s={grade:o,length:u};let r=0;C(!0);try{for(const n of e){if((((a=i.current[n])==null?void 0:a.comment)??"").trim()||x.current[n])continue;if(f.current!==s.grade||p.current!==s.length){d.info("ì¤ì ì´ ë°ëì´ ì ì²´ ìì±ì ë©ì·ì´ì. ë¤ì ëë¬ ì£¼ì¸ì.");break}const j=await B(n);if(j==="limit")break;if(r=j==="failed"?r+1:0,r>=2){d.error("ì°ìì¼ë¡ ì¤í¨í´ ì ì²´ ìì±ì ë©ì·ì´ì. ì ì ë¤ ë¤ì ìëí´ ì£¼ì¸ì.");break}}}finally{C(!1)}},H=async()=>{const e=Y(m.map(s=>({num:s.num,comment:s.comment??""})));try{await navigator.clipboard.writeText(e),S(!0),setTimeout(()=>S(!1),2e3),d.success("ë³µì¬ëì´ì. NEIS íë©´ìì Alt+S 를 ë르ì¸ì.")}catch{d.error("ë³µì¬ì ì¤í¨íìµëë¤")}},K=()=>{Z({year:J(),semester:oe(),grade:o,classNum:1,rows:m})};return t.jsx("div",{className:"px-4 py-6 sm:p-8",children:t.jsxs("div",{className:"mx-auto max-w-4xl space-y-5",children:[t.jsxs("div",{children:[t.jsx("h1",{className:"text-xl font-bold tracking-tight sm:text-2xl",children:"íëí¹ì± ë° ì¢
í©ì견"}),t.jsx("p",{className:"mt-2 break-keep text-sm text-muted-foreground",children:"í¤ìë를 ì¼íë¡ ì ê³ ìì±ì ëë¬ë³´ì¸ì. ì íìë¤ ë¬¸ì¥ì í¼í´ì ì°ê³ , ê·¸ëë ë¹ì·í´ì§ë©´ íìí´ ë¡ëë¤."})]}),t.jsxs("div",{className:"flex flex-wrap items-center gap-2 rounded-xl border bg-card p-3",children:[t.jsxs("label",{className:"flex items-center gap-2 text-sm",children:[t.jsx("span",{className:"text-muted-foreground",children:"íë
"}),t.jsx("select",{value:o,onChange:e=>{f.current=Number(e.target.value),b(Number(e.target.value))},className:"h-8 rounded-md border bg-background px-2 text-sm",children:[1,2,3,4,5,6].map(e=>t.jsxs("option",{value:e,children:[e,"íë
"]},e))})]}),t.jsxs("label",{className:"flex items-center gap-2 text-sm",children:[t.jsx("span",{className:"text-muted-foreground",children:"길ì´"}),t.jsx("select",{value:u,onChange:e=>{p.current=e.target.value,G(e.target.value)},className:"h-8 rounded-md border bg-background px-2 text-sm",children:le.map(e=>t.jsx("option",{value:e.value,children:e.label},e.value))})]}),t.jsx("div",{className:"flex-1"}),t.jsxs(h,{size:"sm",onClick:M,disabled:y,children:[y?t.jsx(T,{className:"mr-1.5 h-4 w-4 animate-spin"}):t.jsx(A,{className:"mr-1.5 h-4 w-4"}),"ì ì²´ ìì±"]}),t.jsxs(h,{size:"sm",variant:"outline",onClick:H,disabled:E===0,children:[I?t.jsx(P,{className:"mr-1.5 h-4 w-4"}):t.jsx(V,{className:"mr-1.5 h-4 w-4"}),"NEIS ë³µì¬"]}),t.jsxs(h,{size:"sm",variant:"outline",onClick:K,disabled:E===0,children:[t.jsx(ne,{className:"mr-1.5 h-4 w-4"}),"ìì
"]})]}),R&&t.jsx(O,{title:R,description:"íêµë¥¼ ë±ë¡íìë©´ íì ìë íìë ì ë§íëë¤."}),t.jsx("div",{className:"space-y-3",children:m.map((e,s)=>t.jsxs("div",{className:"rounded-xl border bg-card p-4",children:[t.jsxs("div",{className:"flex items-center gap-2",children:[t.jsx("span",{className:"flex h-6 w-6 shrink-0 items-center justify-center rounded-full bg-sub/10 text-xs font-bold text-sub",children:e.num}
1),$[s]&&t.jsxs("span",{className:"inline-flex items-center gap-1 rounded-full border border-warn/50 bg-warn/20 px-2 py-0.5 text-[11px] font-medium text-warn-foreground",children:[t.jsx(U,{className:"h-3 w-3"}),"ë¤ë¥¸ íìê³¼ ë¹ì·í¨"]}),t.jsx("div",{className:"flex-1"}),t.jsxs(h,{size:"sm",variant:"ghost",onClick:()=>B(e.num),disabled:!!N[e.num]||y,children:[N[e.num]?t.jsx(T,{className:"mr-1.5 h-3.5 w-3.5 animate-spin"}):t.jsx(A,{className:"mr-1.5 h-3.5 w-3.5"}),"ìì±"]})]}),t.jsx("div",{className:"mt-3 grid gap-2 sm:grid-cols-2 lg:grid-cols-3",children:F.map(r=>t.jsxs("label",{className:"min-w-0",children:[t.jsx("span",{className:"mb-1 block text-[11px] font-medium text-muted-foreground",children:r.label}),t.jsx("input",{defaultValue:(e.keywords[r.key]??[]).join(", "),onChange:a=>k(e.num,{keywords:{...e.keywords,[r.key]:Q(a.target.value)}}),placeholder:"ì¼íë¡ êµ¬ë¶",className:"h-8 w-full rounded-md border bg-background px-2 text-sm"})]},r.key))}),t.jsx(X,{value:e.comment??"",onChange:r=>k(e.num,{comment:r.target.value}),placeholder:"ìì±ì ë르거ë ì§ì ì°ì
ë ë©ëë¤",className:"mt-3 min-h-[92px] text-sm"})]},e.num))}),t.jsx(O,{title:`ì²´íì ${w}ëª
ê¹ì§ë§ ë©ëë¤`,description:"í ë°ì´ë©´ ë³´íµ ì¤ë¬¼ëª ëª
ì´ì£ . íêµë¥¼ ë±ë¡íìë©´ ë° ì 체를 í íìì íê³ , ì¤ë³µ íì¸ë ë° ì ì²´ë¡ ë´
ëë¤."})]})})}export{Ce 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.