PageSourceSearch

https://naemo.ai/_next/static/chunks/3917-d5a30bcdd6fcc3c7.js

js naemo.ai collected 2026-09-24 14:30:14 UTC 78,276 bytes, 1 lines download raw bytes

1"use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[3917],{12172:function(e,t,n){n.d(t,{Z:function(){return eg}});var a=n(57437),r=n(2265),i=n(54887),l=n(32489),s=n(98319),c=n(85328);let d=[{key:"all",label:"전교과"},{key:"kemt",label:"국영수사과"},{key:"kems",label:"국영수사"},{key:"kemg",label:"국영수과"}],o="사회(역사/도덕 포함)",u=["국어","수학","영어"],x={all:null,kemt:e=>u.includes(e)||e===o||"과학"===e,kems:e=>u.includes(e)||e===o,kemg:e=>u.includes(e)||"과학"===e};function m(e,t){let n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},a=x[t],r=new Map;for(let t of e){var i;if(t.examType&&"final"!==t.examType||a&&!a(t.subjectCategory)||null===t.gradeLevel||void 0===t.gradeLevel)continue;let e=n.toNine?function(e,t){let n=(0,c.wK)({...e,gradingSystem:t});if(!n)return null;for(let e=0;e<9;e++)if(n.estimatedPercentile<=c.rx[e+1])return e+1;return 9}(t,n.gradingSystem):t.gradeLevel;if(null===e)continue;let l="".concat(t.year,"-").concat(t.semester),s=null!==(i=r.get(l))&&void 0!==i?i:[];s.push(e),r.set(l,s)}let l=Array.from(r.values()).map(e=>e.reduce((e,t)=>e+t,0)/e.length);return 0===l.length?null:l.reduce((e,t)=>e+t,0)/l.length}let h=["교과","종합","논술"],p={half:"50% 안",seventy:"70% 안",below50:"50% 밖",out:"70% 밖"},f=e=>"half"===e||"seventy"===e,g=e=>Math.round(100*e)/100;function b(e,t){var n;let a=["cut80","cut85","cut90"].filter(t=>null!=e[t]&&Number.isFinite(e[t])&&e[t]>=1&&e[t]<=9),r=null!=t&&Number.isFinite(t),i=r?null!==(n=a.find(n=>g(t)<=g(e[n])))&&void 0!==n?n:a[a.length-1]:a[0];return i?{metric:i,value:e[i],inside:r?g(t)<=g(e[i]):null}:null}var v=n(61858),y=n(93448),k=n(23927),j=n(99397);let z=e=>null==e?"–":e.toFixed(2),w="w-[64px]";function N(e){var t,n;let{year:r,row:i,grade:l,withYear:s}=e,c=!!i&&(null!=i.cut50||null!=i.cut70),d=i&&!c?b(i,l):null,o=d?"".concat(d.metric.slice(3),"%"):"",u=!d&&(null==i?void 0:i.meanGrade)!=null,x=c?function(e,t,n){if(null===e||!Number.isFinite(e))return null;let a=g(e);return null!==t&&a<=g(t)?"half":null!==n?a<=g(n)?"seventy":"out":null!==t?"below50":null}(l,i.cut50,i.cut70):null,m=!c&&u?(n=i.meanGrade,null!=l&&null!=n&&Number.isFinite(l)&&Number.isFinite(n)?g(l)<=g(n):null):null,h=f(x)||(null==d?void 0:d.inside)===!0||!0===m,v="half"===x||!0===m,k=!c&&!d&&!u,j=c?x?p[x]:z(null!==(t=i.cut50)&&void 0!==t?t:i.cut70):d?null===d.inside?"".concat(o,"ì»· ").concat(z(d.value)):"".concat(o," ").concat(d.inside?"안":"밖"):u?null===m?"평균 등급 ".concat(z(i.meanGrade)):m?"평균 안":"평균 밖":"자료 없음",N=c?"".concat(r," \xb7 50%ì»· ").concat(z(i.cut50)," \xb7 70%ì»· ").concat(z(i.cut70)):d?"".concat(r," \xb7 ").concat(o,"ì»· ").concat(z(d.value)):u?"".concat(r," \xb7 평균 등급 ").concat(z(i.meanGrade)," \xb7 평균 안: 학생 등급 숫자가 평균 이하 \xb7 평균 밖: 평균 초과"):"".concat(r," \xb7 자료 없음");return(0,a.jsxs)("span",{title:N,"aria-label":"".concat(r,"년 ").concat(j),className:(0,y.cn)("flex shrink-0 flex-col items-center justify-center rounded-lg text-center font-medium leading-tight tabular-nums transition-colors duration-300",w,s?"py-1.5":"h-7",k?"text-zinc-500 dark:text-zinc-400":v?"bg-emerald-100 text-emerald-900 dark:bg-emerald-400/[0.22] dark:text-emerald-100":h?"bg-teal-50 text-teal-800 dark:bg-teal-400/10 dark:text-teal-200":"bg-zinc-100 text-zinc-500 dark:bg-white/[0.05] dark:text-zinc-400"),children:[s&&(0,a.jsx)("span",{className:"text-[10px] font-normal opacity-70",children:r}),d&&null===d.inside?(0,a.jsxs)(a.Fragment,{children:[(0,a.jsxs)("span",{className:"whitespace-nowrap text-[10px]",children:[o,"ì»·"]}),(0,a.jsx)("span",{className:"text-[12px]",children:z(d.value)})]}):u&&!c&&null===m?(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)("span",{className:"whitespace-nowrap text-[10px]",children:"평균 등급"}),(0,a.jsx)("span",{className:"text-[12px]",children:z(i.meanGrade)})]}):k?(0,a.jsx)("span",{className:"whitespace-nowrap text-[11px] font-normal",children:j}):(0,a.jsx)("span",{className:"text-[12px]",children:j})]})}function C(e){let{years:t,data:n,grade:r,withYear:i,className:l}=e;return(0,a.jsx)("div",{className:(0,y.cn)("flex gap-1.5",l),children:t.map(e=>(0,a.jsx)(N,{year:e,row:n.find(t=>t.year===e),grade:r,withYear:i},e))})}var E=n(30401),S=n(40875),M=n(73247),R=n(35596);let L=["서울","경기","인천","강원","충북","충남","대전","세종","전북","전남","광주","경북","경남","대구","부산","울산","제주"];Object.entries({서울:["감리교신대","강서대","건국대","경희대","고려대","광운대","국민대","덕성여대","동국대","동덕여대","명지대","삼육대","상명대","서강대","서경대","서울과학기술대","서울교대","서울기독대","서울대","서울시립대","서울여대","서울한영대","성공회대","성균관대","성신여대","세종대","숙명여대","숭실대","연세대","이화여대","장로회신대","중앙대","추계예대","총신대","한국성서대","한국외대","한국체대","한성대","한양대","홍익대"],경기:["가천대","가톨릭대","강남대","경기대","단국대","대진대","루터대","서울신대","서울장신대","성결대","수원가톨릭대","수원대","신한대","아신대","아주대","안양대","용인대","을지대","중앙대(안성)","차의과학대","칼빈대","평택대","한경국립대","한국공학대","한국외대(글로벌)","한국항공대","한세대","한신대","한양대(ERICA)","협성대","화성의과학대"],인천:["경인교대","인천가톨릭대","인천대","인하대"],강원:["가톨릭관동대","강릉원주대","강원대","강원대(삼척)","경동대","상지대","연세대(미래)","춘천교대","한라대","한림대"],충북:["건국대(글로컬)","극동대","서원대","세명대","유원대","중원대","청주교대","청주대","충북대","한국교원대","한국교통대","가톨릭꽃동네대","유덕대"],충남:["건양대","공주교대","공주대","금강대","나사렛대","남서울대","단국대(천안)","백석대","상명대(천안)","선문대","순천향대","중부대","청운대","한국기술교대","한서대","호서대"],ë
1Œ€ì „:["KAIST","대전대","대전신대","목원대","배재대","우송대","충남대","한국침례신대","한남대","한밭대"],세종:["고려대(세종)","홍익대(세종)","대전가톨릭대"],전북:["군산대","예수대","예원예대","우석대","원광대","전북대","전주교대","전주대","한일장신대","호원대"],전남:["광주가톨릭대","동신대","목포가톨릭대","목포대","목포해양대","세한대","순천대","영산선학대","전남대(여수)","초당대"],광주:["광신대","광주교대","광주대","광주여대","남부대","송원대","전남대","조선대","호남대","호남신대"],경북:["POSTECH","경국대","경운대","경일대","금오공대","김천대","대구가톨릭대","대구대","대구예술대","대구한의대","대신대","동국대(WISE)","동양대","신경주대","안동대","영남대","위덕대","한동대"],경남:["가야대","경남대","경상국립대","부산장신대","영산대","인제대","진주교대","창신대","창원대"],대구:["경북대","계명대","대구교대"],부산:["경성대","고신대","동명대","동서대","동아대","동의대","부경대","부산가톨릭대","부산교대","부산대","부산외대","신라대","한국해양대"],울산:["UNIST","울산대"],제주:["제주국제대","제주대"]}).flatMap(e=>{let[t,n]=e;return n.map(e=>[e,t])});let T="grid grid-cols-[1fr_0.8fr_1.3fr_1fr_1fr] items-center gap-x-2";function F(e){let{row:t}=e,n=[["평균",t.meanGrade],["최고",t.bestGrade],["80%ì»·",t.cut80],["85%ì»·",t.cut85],["90%ì»·",t.cut90],["합격자 평균",t.admittedMeanGrade]];return(0,a.jsxs)("div",{className:"space-y-1 pb-2 text-[11px] leading-relaxed text-zinc-600 dark:text-zinc-400",children:[(0,a.jsx)("div",{className:"flex flex-wrap gap-x-3 gap-y-1",children:n.map(e=>{let[t,n]=e;return null!=n?(0,a.jsxs)("span",{children:[t," ",(0,a.jsx)("strong",{className:"font-medium",children:z(n)})]},t):null})}),null!=t.meanGrade&&(0,a.jsx)("p",{children:"평균은 50%ì»·ê³¼ 다른 지표예요. 평균 안은 학생 등급 숫자가 평균 이하, 평균 밖은 평균 초과를 뜻해요."})]})}function _(e){let{rows:t}=e;return t.length?(0,a.jsxs)("div",{role:"table","aria-label":"연도별 입결",className:"w-full max-w-xl rounded-xl bg-zinc-50 px-3 py-2 text-[13px] tabular-nums dark:bg-white/[0.03]",children:[(0,a.jsx)("div",{role:"row",className:"".concat(T," py-1.5 text-[11px] font-medium text-zinc-600 dark:text-zinc-400"),children:["연도","모집","경쟁률","50%ì»·","70%ì»·"].map((e,t)=>(0,a.jsx)("span",{role:"columnheader",className:t?"text-right":"",children:e},e))}),t.map(e=>{var t;return(0,a.jsxs)(r.Fragment,{children:[(0,a.jsxs)("div",{role:"row",className:"".concat(T," border-t border-zinc-200/70 py-2 text-zinc-600 dark:border-white/[0.06] dark:text-zinc-300"),children:[(0,a.jsx)("span",{role:"cell",children:e.year}),(0,a.jsx)("span",{role:"cell",className:"text-right",children:null!==(t=e.capacity)&&void 0!==t?t:"–"}),(0,a.jsx)("span",{role:"cell",className:"text-right",children:null===e.competitionRate?"–":"".concat(e.competitionRate.toFixed(1).replace(/\.0$/,"")," : 1")}),(0,a.jsx)("span",{role:"cell",className:"text-right font-semibold text-zinc-900 dark:text-zinc-50",children:z(e.cut50)}),(0,a.jsx)("span",{role:"cell",className:"text-right",children:z(e.cut70)})]}),(0,a.jsx)("div",{role:"row",children:(0,a.jsx)("div",{role:"cell","aria-colspan":5,children:(0,a.jsx)(F,{row:e})})})]},e.year)})]}):(0,a.jsx)("p",{className:"text-xs text-zinc-500 dark:text-zinc-400",children:"연도별 자료가 없어요."})}let A=e=>{var t;return(null===(t=e.detailType)||void 0===t?void 0:t.startsWith("".concat(e.admissionType,"(")))?e.detailType:[e.admissionType,e.detailType].filter(Boolean).join(" \xb7 ")};function B(e){let{added:t,busy:n,onAdd:r,onRemove:i,large:l}=e,s=t?"후보에서 빼기":"후보에 담기";return(0,a.jsx)("button",{type:"button",onClick:e=>{e.stopPropagation(),t?i():r()},disabled:n,"aria-label":s,title:t?"담음 \xb7 누르면 빼요":s,className:(0,y.cn)("flex shrink-0 items-center justify-center rounded-lg transition disabled:pointer-events-none disabled:opacity-40",l?"h-10 w-10":"h-8 w-8",t?"bg-zinc-100 text-zinc-900 hover:bg-zinc-200 dark:bg-white/[0.08] dark:text-zinc-50 dark:hover:bg-white/[0.12]":"text-zinc-400 hover:bg-zinc-100 hover:text-zinc-900 dark:text-zinc-500 dark:hover:bg-white/[0.06] dark:hover:text-zinc-50"),children:t?(0,a.jsx)(E.Z,{size:16,strokeWidth:2.25}):(0,a.jsx)(j.Z,{size:17})})}function G(e,t){return t.regions.length?"지역을 '전국'으로 바꿔 보세요.":t.admissionType?"전형을 '전체'로 바꿔 보세요.":e.trim()?"검색어를 줄이거나 초ì„
1±(예: ㅊㅂㄷ)으로 찾아보세요.":"조건을 바꿔 보세요."}let D="grid grid-cols-[minmax(64px,1fr)_minmax(90px,1.2fr)_minmax(110px,1.6fr)_auto_40px]";function I(e){let{value:t,onChange:n,fill:i}=e,l=[{key:null,label:"전체"},...h.map(e=>({key:e,label:e}))],s=Math.max(0,l.findIndex(e=>e.key===t)),c=(0,r.useRef)(null),d=(0,r.useRef)([]),[o,u]=(0,r.useState)(null),[x,m]=(0,r.useState)(!1);return(0,r.useLayoutEffect)(()=>{let e=()=>{let e=d.current[s];e&&u({x:e.offsetLeft,w:e.offsetWidth})};e();let t=c.current;if(!t||"undefined"==typeof ResizeObserver)return;let n=new ResizeObserver(e);return n.observe(t),()=>n.disconnect()},[s]),(0,r.useEffect)(()=>{if(!o||x)return;let e=requestAnimationFrame(()=>m(!0));return()=>cancelAnimationFrame(e)},[o,x]),(0,a.jsxs)("div",{ref:c,role:"group","aria-label":"전형",className:(0,y.cn)("relative flex shrink-0 border border-zinc-200 p-0.5 dark:border-white/10",i?"h-10 min-w-0 flex-1 rounded-lg":"h-9 rounded-md"),children:[o&&(0,a.jsx)("span",{"aria-hidden":!0,className:(0,y.cn)("absolute bottom-0.5 left-0 top-0.5 bg-zinc-900 motion-reduce:!transition-none dark:bg-white",i?"rounded-md":"rounded-[5px]"),style:{width:o.w,transform:"translateX(".concat(o.x,"px)"),transition:x?"transform 260ms cubic-bezier(0.32, 0.72, 0, 1), width 260ms cubic-bezier(0.32, 0.72, 0, 1)":void 0}}),l.map((e,t)=>{let r=t===s;return(0,a.jsx)("button",{ref:e=>{d.current[t]=e},type:"button","aria-pressed":r,onClick:()=>n(e.key),className:(0,y.cn)("segment-btn relative font-medium transition-colors duration-200",i?"min-w-0 flex-1 rounded-md px-1 text-[14px]":"rounded-[5px] px-3 text-[13px]",r?(0,y.cn)("text-zinc-50 dark:text-zinc-900",!o&&"bg-zinc-900 dark:bg-white"):"text-zinc-600 hover:text-zinc-900 dark:text-zinc-300 dark:hover:text-zinc-50"),children:e.label},e.label)})]})}let P=e=>0===e.length?"전국":1===e.length?e[0]:"".concat(e[0]," 외 ").concat(e.length-1,"ê³³");function Z(e){let{value:t,onChange:n}=e,[i,l]=(0,r.useState)(!1),s=(0,r.useRef)(null);(0,r.useEffect)(()=>{if(!i)return;let e=e=>{var t;(null===(t=s.current)||void 0===t?void 0:t.contains(e.target))||l(!1)},t=e=>"Escape"===e.key&&l(!1);return document.addEventListener("mousedown",e),document.addEventListener("keydown",t),()=>{document.removeEventListener("mousedown",e),document.removeEventListener("keydown",t)}},[i]);let c=e=>n(t.includes(e)?t.filter(t=>t!==e):L.filter(n=>n===e||t.includes(n)));return(0,a.jsxs)("div",{ref:s,className:"relative shrink-0",children:[(0,a.jsxs)("button",{type:"button","aria-expanded":i,"aria-haspopup":"dialog",onClick:()=>l(e=>!e),className:(0,y.cn)("inline-flex h-9 items-center gap-1.5 rounded-md border px-3 text-[13px] transition",i?"border-zinc-400 dark:border-white/30":"border-zinc-200 hover:border-zinc-300 dark:border-white/10 dark:hover:border-white/20"),children:[(0,a.jsx)("span",{className:"text-zinc-400 dark:text-zinc-500",children:"지역"}),(0,a.jsx)("span",{className:"font-medium text-zinc-800 dark:text-zinc-100",children:P(t)}),(0,a.jsx)(S.Z,{size:14,className:(0,y.cn)("text-zinc-400 transition-transform",i&&"rotate-180")})]}),i&&(0,a.jsx)("div",{role:"dialog","aria-label":"지역 고르기",className:"absolute right-0 top-full z-30 mt-1.5 w-[296px] rounded-lg border border-zinc-200 bg-white p-3 shadow-lg dark:border-white/10 dark:bg-[#1f1f23]",children:(0,a.jsxs)("div",{className:"grid grid-cols-4 gap-1",children:[(0,a.jsx)(q,{on:0===t.length,onClick:()=>n([]),children:"전국"}),L.map(e=>(0,a.jsx)(q,{on:t.includes(e),onClick:()=>c(e),children:e},e))]})})]})}function q(e){let{on:t,onClick:n,children:r,large:i}=e;return(0,a.jsx)("button",{type:"button","aria-pressed":t,onClick:n,className:(0,y.cn)("rounded-md font-medium transition",i?"h-11 rounded-lg text-[15px]":"h-8 text-[13px]",t?"bg-zinc-900 text-white dark:bg-white dark:text-zinc-900":i?"bg-zinc-100 text-zinc-700 active:bg-zinc-200 dark:bg-white/[0.06] dark:text-zinc-200":"text-zinc-600 hover:bg-zinc-100 hover:text-zinc-900 dark:text-zinc-300 dark:hover:bg-white/[0.06] dark:hover:text-zinc-50"),children:r})}function O(e){return(0,a.jsxs)("section",{className:"mx-3.5 pt-12",children:[(0,a.jsx)("h3",{className:"text-[15px] font-semibold tracking-tight text-zinc-900 dark:text-zinc-50",children:"대학 찾기"}),(0,a.jsxs)("div",{className:"mt-4 flex flex-wrap items-center gap-2",children:[(0,a.jsxs)("div",{className:"relative min-w-[260px] flex-1",children:[(0,a.jsx)(M.Z,{size:15,className:"pointer-events-none absolute left-3 top-1/2 -translate-y-1/2 text-zinc-400"}),(0,a.jsx)("input",{type:"search",value:e.query,onChange:t=>e.onQueryChange(t.target.value),placeholder:"대학\xb7학과 검색 (예: 서울 교육)",className:"h-9 w-full rounded-md border border-zinc-200 bg-white pl-9 pr-8 text-[14px] text-zinc-900 outline-none transition [&::-webkit-search-cancel-button]:appearance-none placeholder:text-zinc-400 hover:border-zinc-300 focus:border-zinc-400 dark:border-white/10 dark:bg-transparent dark:text-zinc-100 dark:focus:border-white/30"}),e.query&&(0,a.jsx)("button",{type:"button",onClick:()=>e.onQueryChange(""),"aria-label":"검색어 지우기",className:"absolute right-1.5 top-1/2 flex h-6 w-6 -translate-y-1/2 items-center justify-center rounded text-zinc-400 hover:text-zinc-600 dark:hover:text-zinc-200",children:(0,a.jsx)(l.Z,{size:14})})]}
1),(0,a.jsx)(I,{value:e.filters.admissionType,onChange:t=>e.onFiltersChange({...e.filters,admissionType:t})}),(0,a.jsx)(Z,{value:e.filters.regions,onChange:t=>e.onFiltersChange({...e.filters,regions:t})}),(0,a.jsxs)("label",{className:"inline-flex h-9 shrink-0 cursor-pointer items-center gap-2 px-1 text-[13px] text-zinc-600 dark:text-zinc-300",title:"기회균형\xb7농어촌 등",children:[(0,a.jsx)("input",{type:"checkbox",checked:e.filters.excludeSpecial,onChange:t=>e.onFiltersChange({...e.filters,excludeSpecial:t.target.checked}),className:"h-4 w-4 rounded border-zinc-300 accent-zinc-900 dark:accent-white"}),"특수전형 빼기"]})]}),(0,a.jsxs)("div",{className:"".concat(D," mt-5 items-center gap-3 border-b border-zinc-100 px-2 pb-2 text-[12px] text-zinc-400 dark:border-white/[0.06] dark:text-zinc-500"),children:[(0,a.jsx)("span",{children:"대학"}),(0,a.jsx)("span",{children:"학과"}),(0,a.jsx)("span",{children:"전형"}),(0,a.jsx)("span",{className:"flex gap-1.5",children:e.years.map(e=>(0,a.jsx)("span",{className:(0,y.cn)(w,"text-center tabular-nums"),children:e},e))}),(0,a.jsx)("span",{})]}),(0,a.jsx)("ul",{className:"pt-1",children:e.items.map(t=>{let n=e.addedIds.has(t.id),r=e.expandedId===t.id;return(0,a.jsxs)("li",{children:[(0,a.jsxs)("div",{role:"button",tabIndex:0,"aria-expanded":r,onClick:()=>e.onToggleExpand(t.id),onKeyDown:n=>{n.target===n.currentTarget&&("Enter"===n.key||" "===n.key)&&(n.preventDefault(),e.onToggleExpand(t.id))},className:(0,y.cn)(D,"cursor-pointer items-center gap-3 rounded-md px-2 py-2.5 outline-none transition hover:bg-zinc-50 focus-visible:bg-zinc-50 dark:hover:bg-white/[0.03] dark:focus-visible:bg-white/[0.04]",r&&"bg-zinc-50 dark:bg-white/[0.03]"),children:[(0,a.jsx)("span",{className:"truncate text-[14px] font-semibold text-zinc-900 dark:text-zinc-50",children:t.name}),(0,a.jsx)("span",{className:"truncate text-[14px] text-zinc-700 dark:text-zinc-200",children:t.department}),(0,a.jsx)("div",{className:"min-w-0",children:(0,a.jsx)("p",{className:"truncate text-[13px] text-zinc-600 dark:text-zinc-300",title:A(t),children:A(t)})}),(0,a.jsx)(C,{years:e.years,data:t.years,grade:e.grade}),(0,a.jsx)("div",{className:"flex justify-end",children:(0,a.jsx)(B,{added:n,busy:e.busyIds.has(t.id)||e.locked,onAdd:()=>e.onAdd(t),onRemove:()=>e.onRemoveByUniversity(t.id)})})]}),r&&(0,a.jsx)("div",{className:"px-2 pb-4 pt-1",children:(0,a.jsx)(_,{rows:t.years})})]},t.id)})}),e.loading&&(0,a.jsx)("div",{className:"space-y-2 py-3",children:Array.from({length:e.items.length?2:5}).map((e,t)=>(0,a.jsx)("div",{className:"h-11 animate-pulse rounded-md bg-zinc-100 dark:bg-white/[0.04]"},t))}),!e.loading&&e.error&&(0,a.jsxs)("div",{className:"flex flex-col items-center gap-3 py-10 text-center",children:[(0,a.jsx)("p",{className:"text-sm text-zinc-500 dark:text-zinc-400",children:e.error}),(0,a.jsx)("button",{type:"button",onClick:e.onRetry,className:"h-9 rounded-md border border-zinc-200 px-3 text-sm font-medium dark:border-white/10",children:"다시 시도"})]}),!e.loading&&!e.error&&0===e.items.length&&(0,a.jsxs)("div",{className:"py-10 text-center",children:[(0,a.jsx)("p",{className:"text-sm font-medium text-zinc-700 dark:text-zinc-200",children:"조건에 맞는 전형이 없어요"}),(0,a.jsx)("p",{className:"mt-1 text-[13px] text-zinc-500 dark:text-zinc-400",children:G(e.query,e.filters)})]}),!e.loading&&!e.error&&e.items.length<e.total&&(0,a.jsx)("div",{className:"flex justify-center pt-4",children:(0,a.jsx)("button",{type:"button",onClick:e.onMore,className:"h-9 rounded-md border border-zinc-200 px-4 text-[13px] font-medium text-zinc-700 transition hover:bg-zinc-50 dark:border-white/10 dark:text-zinc-200 dark:hover:bg-white/[0.04]",children:"20개 더 보기"})})]})}function U(e){return"narrow"===e.layout?(0,a.jsx)(W,{...e}):(0,a.jsx)(O,{...e})}function W(e){let[t,n]=(0,r.useState)(!1),{filters:i}=e,s=t=>e.onFiltersChange({...i,regions:i.regions.includes(t)?i.regions.filter(e=>e!==t):L.filter(e=>e===t||i.regions.includes(e))}),c=(0,a.jsxs)("label",{className:"flex cursor-pointer items-center gap-2.5 text-[14px] text-zinc-700 dark:text-zinc-200",children:[(0,a.jsx)("input",{type:"checkbox",checked:i.excludeSpecial,onCh
1ange:t=>e.onFiltersChange({...i,excludeSpecial:t.target.checked}),className:"h-[18px] w-[18px] rounded border-zinc-300 accent-zinc-900 dark:accent-white"}),"특수전형 빼기",(0,a.jsx)("span",{className:"text-[12px] text-zinc-400 dark:text-zinc-500",children:"기회균형\xb7농어촌 등"})]});return(0,a.jsxs)("section",{className:"pt-10",children:[(0,a.jsx)("h3",{className:"text-[16px] font-semibold tracking-tight text-zinc-900 dark:text-zinc-50",children:"대학 찾기"}),(0,a.jsxs)("div",{className:"relative mt-3",children:[(0,a.jsx)(M.Z,{size:16,className:"pointer-events-none absolute left-3.5 top-1/2 -translate-y-1/2 text-zinc-400"}),(0,a.jsx)("input",{type:"search",value:e.query,onChange:t=>e.onQueryChange(t.target.value),placeholder:"대학\xb7학과 검색 (예: 서울 교육)",enterKeyHint:"search",className:"h-11 w-full rounded-xl border border-zinc-200 bg-white pl-10 pr-10 text-[15px] text-zinc-900 outline-none transition [&::-webkit-search-cancel-button]:appearance-none placeholder:text-zinc-400 focus:border-zinc-400 dark:border-white/10 dark:bg-white/[0.03] dark:text-zinc-100 dark:focus:border-white/30"}),e.query&&(0,a.jsx)("button",{type:"button",onClick:()=>e.onQueryChange(""),"aria-label":"검색어 지우기",className:"absolute right-1 top-1/2 flex h-9 w-9 -translate-y-1/2 items-center justify-center rounded-full text-zinc-400 active:text-zinc-600 dark:active:text-zinc-200",children:(0,a.jsx)(l.Z,{size:16})})]}),(0,a.jsxs)("div",{className:"mt-2 flex gap-2",children:[(0,a.jsx)(I,{fill:!0,value:i.admissionType,onChange:t=>e.onFiltersChange({...i,admissionType:t})}),e.sheets?(0,a.jsxs)("button",{type:"button","aria-haspopup":"dialog",onClick:()=>n(!0),className:"inline-flex h-10 max-w-[44%] shrink-0 items-center gap-1 rounded-lg border border-zinc-200 pl-3 pr-2 text-[14px] transition active:bg-zinc-50 dark:border-white/10 dark:active:bg-white/[0.04]",children:[(0,a.jsx)("span",{className:"shrink-0 text-zinc-400 dark:text-zinc-500",children:"지역"}),(0,a.jsx)("span",{className:"truncate font-medium text-zinc-800 dark:text-zinc-100",children:P(i.regions)}),(0,a.jsx)(S.Z,{size:15,className:"shrink-0 text-zinc-400"})]}):(0,a.jsx)(Z,{value:i.regions,onChange:t=>e.onFiltersChange({...i,regions:t})})]}),!e.sheets&&(0,a.jsx)("div",{className:"mt-3",children:c}),(0,a.jsx)("ul",{className:"mt-2",children:e.items.map(t=>{let n=e.addedIds.has(t.id),r=e.expandedId===t.id;return(0,a.jsxs)("li",{className:"-mx-2",children:[(0,a.jsxs)("div",{role:"button",tabIndex:0,"aria-expanded":r,onClick:()=>e.onToggleExpand(t.id),onKeyDown:n=>{n.target===n.currentTarget&&("Enter"===n.key||" "===n.key)&&(n.preventDefault(),e.onToggleExpand(t.id))},className:"grid cursor-pointer grid-cols-[minmax(0,1fr)_auto] gap-x-2 rounded-xl px-2 py-3 outline-none transition-colors active:bg-zinc-100/70 focus-visible:bg-zinc-50 dark:active:bg-white/[0.05] dark:focus-visible:bg-white/[0.04]",children:[(0,a.jsxs)("div",{className:"min-w-0",children:[(0,a.jsxs)("p",{className:"text-[15px] leading-snug text-zinc-900 dark:text-zinc-50",children:[(0,a.jsx)("span",{className:"font-semibold",children:t.name})," ",(0,a.jsx)("span",{className:"text-zinc-700 dark:text-zinc-200",children:t.department})]}),(0,a.jsx)("p",{className:"mt-0.5 truncate text-[13px] text-zinc-500 dark:text-zinc-400",children:A(t)}),(0,a.jsx)(C,{className:"mt-2.5",years:e.years,data:t.years,grade:e.grade,withYear:!0})]}),(0,a.jsx)("div",{className:"-mr-1 -mt-1.5",children:(0,a.jsx)(B,{large:!0,added:n,busy:e.busyIds.has(t.id)||e.locked,onAdd:()=>e.onAdd(t),onRemove:()=>e.onRemoveByUniversity(t.id)})})]}),r&&(0,a.jsx)("div",{className:"px-2 pb-3",children:(0,a.jsx)(_,{rows:t.years})})]},t.id)})}),e.loading&&(0,a.jsx)("div",{className:"space-y-3 py-3",children:Array.from({length:e.items.length?2:4}).map((e,t)=>(0,a.jsx)("div",{className:"h-[88px] animate-pulse rounded-xl bg-zinc-100 dark:bg-white/[0.04]"},t))}),!e.loading&&e.error&&(0,a.jsxs)("div",{className:"flex flex-col items-center gap-3 py-10 text-center",children:[(0,a.jsx)("p",{className:"text-sm text-zinc-500 dark:text-zinc-400",children:e.error}),(0,a.jsx)("button",{type:"button",onClick:e.onRetry,className:"h-10 rounded-lg border border-zinc-200 px-4 text-sm font-medium dark:border-white/10",children:"다시 시도"})]}),!e.loading&&!e.error&&0===e.items.length&&(0,a.jsxs)("div",{className:"py-10 text-center",children:[(0,a.jsx)("p",{className:"text-sm font-medium text-zinc-700 dark:text-zinc-200",children:"조건에 맞는 전형이 없어요"}),(0,a.jsx)("p",{className:"mt-1 text-[13px] text-zinc-500 dark:text-zinc-400",children:G(e.query,i)})]}),!e.loading&&!e.error&&e.items.length<e.total&&(0,a.jsx)("button",{type:"button",onClick:e.onMore,className:"mt-3 h-11 w-full rounded-xl border border-zinc-200 text-[14px] font-medium text-zinc-700 transition active:bg-zinc-50 dark:border-white/10 dark:text-zinc-200 dark:active:bg-white/[0.04]",children:"20개 더 보기"}),e.sheets&&(0,a.jsx)(R.Z,{isOpen:t,onClose:()=>n(!1),title:"찾기 조건",footer:(0,a.jsx)("button",{type:"button",onClick:()=>n(!1),className:"btn-primary-solid h-12 w-full rounded-xl text-[15px] font-semibold",children:e.loading?"찾는 중…":"".concat(e.total.toLocaleStr
1ing(),"개 전형 보기")}),children:(0,a.jsxs)("div",{className:"px-1 pb-2 pt-1",children:[(0,a.jsx)("p",{className:"pb-2.5 text-[13px] text-zinc-500 dark:text-zinc-400",children:"지역 \xb7 여러 곳을 고를 수 있어요"}),(0,a.jsxs)("div",{className:"grid grid-cols-4 gap-1.5",children:[(0,a.jsx)(q,{large:!0,on:0===i.regions.length,onClick:()=>e.onFiltersChange({...i,regions:[]}),children:"전국"}),L.map(e=>(0,a.jsx)(q,{large:!0,on:i.regions.includes(e),onClick:()=>s(e),children:e},e))]}),(0,a.jsx)("div",{className:"mt-5 border-t border-zinc-100 pt-4 dark:border-white/[0.06]",children:c})]})})]})}function J(e){let{label:t,onClick:n,disabled:r,children:i}=e;return(0,a.jsx)("button",{type:"button","aria-label":t,title:t,onClick:n,disabled:r,className:"flex h-8 w-8 items-center justify-center rounded-md text-zinc-400 transition hover:bg-zinc-100 hover:text-zinc-800 disabled:pointer-events-none disabled:opacity-30 dark:text-zinc-500 dark:hover:bg-white/[0.06] dark:hover:text-zinc-100",children:i})}function Q(e){let{items:t,loading:n,error:r,grade:i,years:s,busy:c,onRemove:d,onCompare:o}=e;return(0,a.jsxs)("section",{className:"mx-3.5 pt-9",children:[(0,a.jsxs)("div",{className:"flex items-center justify-between gap-2",children:[(0,a.jsxs)("h3",{className:"flex items-baseline gap-1.5 text-[15px] font-semibold tracking-tight text-zinc-900 dark:text-zinc-50",children:["지원 후보",t.length>0&&(0,a.jsx)("span",{className:"font-medium tabular-nums text-zinc-400",children:t.length})]}),t.length>0&&(0,a.jsxs)("button",{type:"button",onClick:o,className:"inline-flex items-center gap-1.5 rounded-md px-2 py-1.5 text-[13px] font-medium text-zinc-600 transition hover:bg-zinc-100 hover:text-zinc-900 dark:text-zinc-300 dark:hover:bg-white/[0.06] dark:hover:text-zinc-50",children:[(0,a.jsx)(k.Z,{size:14}),"상세 보기"]})]}),n?(0,a.jsx)("div",{className:"mt-4 space-y-2",children:[0,1].map(e=>(0,a.jsx)("div",{className:"h-11 animate-pulse rounded-md bg-zinc-100 dark:bg-white/[0.04]"},e))}):r?(0,a.jsx)("p",{className:"mt-4 text-sm text-zinc-500 dark:text-zinc-400",children:r}):0===t.length?(0,a.jsxs)("p",{className:"mt-3 text-[13px] text-zinc-500 dark:text-zinc-400",children:["아직 담은 대학이 없어요. 아래 대학 찾기에서 ",(0,a.jsx)(j.Z,{size:13,className:"-mt-0.5 inline","aria-label":"담기"})," 를 눌러 담아 보세요."]}):(0,a.jsxs)(a.Fragment,{children:[(0,a.jsxs)("div",{className:"".concat(D," mt-3 items-center gap-3 border-b border-zinc-100 px-2 pb-2 text-[12px] text-zinc-400 dark:border-white/[0.06] dark:text-zinc-500"),children:[(0,a.jsx)("span",{className:"pl-7",children:"대학"}),(0,a.jsx)("span",{children:"학과"}),(0,a.jsx)("span",{children:"전형"}),(0,a.jsx)("span",{className:"flex gap-1.5",children:s.map(e=>(0,a.jsx)("span",{className:(0,y.cn)(w,"text-center tabular-nums"),children:e},e))}),(0,a.jsx)("span",{})]}),(0,a.jsx)("ol",{className:"pt-1",children:t.map((e,t)=>(0,a.jsxs)("li",{children:[6===t&&(0,a.jsx)("p",{className:"px-2 pb-1 pt-5 text-[12px] text-zinc-400 dark:text-zinc-500",children:"수시 6곳 밖"}),(0,a.jsxs)("div",{className:"".concat(D," items-center gap-3 px-2 py-2.5"),children:[(0,a.jsxs)("span",{className:"flex min-w-0 items-baseline gap-2",children:[(0,a.jsx)("span",{className:"w-5 shrink-0 text-right text-[13px] font-medium tabular-nums text-zinc-400",children:t+1}),(0,a.jsx)("span",{className:"truncate text-[14px] font-semibold text-zinc-900 dark:text-zinc-50",children:e.track.name})]}),(0,a.jsx)("span",{className:"truncate text-[14px] text-zinc-700 dark:text-zinc-200",children:e.track.department}),(0,a.jsx)("div",{className:"min-w-0",children:(0,a.jsx)("p",{className:"truncate text-[13px] text-zinc-600 dark:text-zinc-300",title:A(e.track),children:A(e.track)})}),(0,a.jsx)(C,{years:s,data:e.track.years,grade:i}),(0,a.jsx)("div",{className:"flex justify-end",children:(0,a.jsx)(J,{label:"후보에서 빼기",onClick:()=>d(e),disabled:c,children:(0,a.jsx)(l.Z,{size:15})})})]})]},e.planId))})]})]})}function X(e){return"narrow"===e.layout?(0,a.jsx)($,{...e}):(0,a.jsx)(Q,{...e})}function $(e){let{items:t,loading:n,error:r,grade:i,years:s,busy:c,onRemove:d,onCompare:o}=e;return(0,a.jsxs)("section",{className:"pt-8",children:[(0,a.jsxs)("div",{className:"flex min-h-9 items-center justify-between gap-2",children:[(0,a.jsxs)("h3",{className:"flex items-baseline gap-1.5 text-[16px] font-semibold tracking-tight text-zinc-900 dark:text-zinc-50",children:["지원 후보",t.length>0&&(0,a.jsx)("span",{className:"font-medium tabular-nums text-zinc-400",children:t.length})]}),t.length>0&&(0,a.jsxs)("button",{type:"button",onClick:o,className:"-mr-2 inline-flex h-9 items-center gap-1.5 rounded-lg px-2.5 text-[14px] font-medium text-zinc-600 transition active:bg-zinc-100 dark:text-zinc-300 dark:active:bg-white/[0.06]",children:[(0,a.jsx)(k.Z,{size:15}),"상세 보기"]})]}),n?(0,a.jsx)("div",{className:"mt-3 space-y-3",children:[0,1].map(e=>(0,a.jsx)("div",{className:"h-[88px] animate-pulse rounded-xl bg-zinc-100 dark:bg-white/[0.04]"},e))}):r?(0,a.jsx)("p",{className:"mt-3 text-sm text-zinc-500 dark:text-zinc-400",children:r}):0===t.length?(0,a.jsxs)("p",{className:"mt-2 text-[14px] leading-relaxed text-zinc-500 dark:text-zinc-400",children:["아직 담은 대학이 없어요. 아래 대학 찾기에서 ",(0,a.jsx)(j.Z,{size:14,className:"-mt-0.5 inline","aria-label":"담기"})," 를 눌러 담아 보세요."]}):(0,a.jsx)("ol",{className:"mt-1",children:t.map((e,t)=>(0,a.jsxs)("li",{children:[6===t&&(0,a.jsx)("p",{className:"pb-1 pt-5 text-[12px] font-medium text-zinc-400 dark:text-zinc-500",children:"수시 6곳 밖"}),(0,a.jsxs)("div",{className:"grid grid-cols-[20px_minmax(0,1fr)_auto] gap-x-2 py-3",children:[(0,a.jsx)("span",{className:"pt-0.5 text-right text-[13px] font-medium tabular-nums text-zinc-400",children:t+1}),(0,a.jsxs)("div",{className:"min-w-0",children:[(0,a.jsxs)("p",{className:"text-[15px] leading-snug text-zinc-900 dark:text-zinc-50",children:[(0,a.jsx)("span",{className:"font-semibold",children:e.track.name})," ",(0,a.jsx)("span",{className:"text-zinc-700 dark:text-zinc-200",children:e.track.department})]}),(0,a.jsx)("p",{className:"mt-0.5 truncate text-[13px] text-zinc-500 dark:text-zinc-400",children:A(e.track)}),(0,a.jsx)(C,{className:"mt-2.5",years:s,data:e.track.years,grade:i,withYear:!0})]}),(0,a.jsx)("button",{type:"button","aria-label":"후보에서 빼기",onClick:()=>
1d(e),disabled:c,className:"-mr-2 -mt-2 flex h-10 w-10 items-center justify-center rounded-lg text-zinc-400 transition active:bg-zinc-100 disabled:pointer-events-none disabled:opacity-30 dark:text-zinc-500 dark:active:bg-white/[0.06]",children:(0,a.jsx)(l.Z,{size:17})})]})]},e.planId))})]})}let H=e=>Math.round(100*e)/100,K=e=>null!=e&&Number.isFinite(e)&&e>=1&&e<=9,Y=e=>Math.abs(e).toFixed(2),V=[22,56,22],ee=e=>Math.min(98.5,Math.max(1.5,e));var et=n(17689),en=n(45884);let ea="cubic-bezier(0.32, 0.72, 0, 1)";function er(e){let{basis:t,onBasisChange:n,gradesByBasis:i,grade:l,quiet:s,stacked:c}=e,o=d.findIndex(e=>e.key===t),{groupRef:u,btnRefs:x,thumb:m,ready:h}=function(e){let t=(0,r.useRef)(null),n=(0,r.useRef)([]),[a,i]=(0,r.useState)(null),[l,s]=(0,r.useState)(!1);return(0,r.useLayoutEffect)(()=>{let a=()=>{let t=n.current[e];t&&i({x:t.offsetLeft,y:t.offsetTop,w:t.offsetWidth,h:t.offsetHeight})};if(a(),"undefined"==typeof ResizeObserver)return;let r=new ResizeObserver(a);return t.current&&r.observe(t.current),n.current.forEach(e=>e&&r.observe(e)),()=>r.disconnect()},[e]),(0,r.useEffect)(()=>{if(!a||l)return;let e=requestAnimationFrame(()=>s(!0));return()=>cancelAnimationFrame(e)},[a,l]),{groupRef:t,btnRefs:n,thumb:a,ready:l}}(o);return(0,a.jsxs)("div",{ref:u,role:"group","aria-label":"기준 등급 교과",className:(0,y.cn)("relative gap-0.5",c?"grid grid-cols-4":"flex flex-wrap"),children:[m&&(0,a.jsx)("span",{"aria-hidden":!0,className:(0,y.cn)("absolute left-0 top-0 motion-reduce:!transition-none",s?(0,y.cn)(c?"rounded-lg":"rounded-md","bg-white shadow-sm ring-1 ring-zinc-900/[0.06] dark:bg-white/[0.12] dark:shadow-none dark:ring-0"):(0,y.cn)(c?"rounded-xl":"rounded-lg","bg-zinc-900 dark:bg-white")),style:{width:m.w,height:m.h,transform:"translate(".concat(m.x,"px, ").concat(m.y,"px)"),transition:h?"transform 260ms ".concat(ea,", width 260ms ").concat(ea):void 0}}),d.map((e,r)=>{var d;let u=null!==(d=null==i?void 0:i[e.key])&&void 0!==d?d:t===e.key?l:null,h=r===o,p=null===u?"–":u.toFixed(2);return(0,a.jsx)("button",{ref:e=>{x.current[r]=e},type:"button","aria-pressed":h,onClick:()=>n(e.key),className:(0,y.cn)("segment-btn relative flex items-center transition-colors duration-200",c?(0,y.cn)("min-w-0 flex-col justify-center px-1",s?"h-12 rounded-lg":"h-14 roun
1ded-xl"):s?"h-8 rounded-md px-2.5":"h-9 rounded-lg px-3",s?h?(0,y.cn)("text-zinc-900 dark:text-zinc-50",!m&&"bg-white dark:bg-white/[0.12]"):"text-zinc-500 hover:text-zinc-800 dark:text-zinc-400 dark:hover:text-zinc-100":h?(0,y.cn)("text-zinc-50 dark:text-zinc-900",!m&&"bg-zinc-900 dark:bg-white"):(0,y.cn)("text-zinc-600 dark:text-zinc-300",!c&&"hover:bg-zinc-200/60 hover:text-zinc-900 dark:hover:bg-white/[0.06] dark:hover:text-zinc-50")),children:(0,a.jsxs)("span",{className:(0,y.cn)("flex",c?"max-w-full flex-col items-center gap-0.5":(0,y.cn)("items-baseline",s?"gap-1.5":"gap-2")),children:[(0,a.jsx)("span",{className:(0,y.cn)("font-medium",c&&"max-w-full truncate",s||c?"text-[12px]":"text-[13px]"),children:e.label}),h?(0,a.jsx)("span",{className:(0,y.cn)("tabular-nums duration-150 motion-safe:animate-in motion-safe:fade-in motion-safe:slide-in-from-bottom-1",s?"text-[13px] font-semibold":c?"text-[16px] font-bold":"text-[14px] font-bold"),children:p},p):(0,a.jsx)("span",{className:(0,y.cn)("font-medium tabular-nums text-zinc-400 transition-colors duration-200 dark:text-zinc-500",s?"text-[13px]":c?"text-[16px]":"text-[14px]"),children:p})]})},e.key)})]})}function ei(e){let{toNine:t,onToNineChange:n,quiet:r}=e,i=r?"font-semibold":"font-bold";return(0,a.jsx)("div",{role:"group","aria-label":"등급 단위",className:(0,y.cn)("flex items-center",r?"text-[12px]":"text-[13px]"),children:[!1,!0].map((e,r)=>(0,a.jsxs)("span",{className:"flex items-center",children:[r>0&&(0,a.jsx)("span",{"aria-hidden":!0,className:"text-zinc-300 dark:text-zinc-700",children:"\xb7"}),(0,a.jsxs)("button",{type:"button","aria-pressed":t===e,"aria-label":e?"9등급으로 환산":void 0,onClick:()=>n(e),className:(0,y.cn)("segment-btn grid h-8 px-1.5 transition-colors",t===e?(0,y.cn)(i,"text-zinc-900 dark:text-zinc-50"):"font-normal text-zinc-400 hover:text-zinc-600 dark:text-zinc-500 dark:hover:text-zinc-300"),children:[(0,a.jsx)("span",{"aria-hidden":!0,className:(0,y.cn)("invisible col-start-1 row-start-1",i),children:e?"9등급":"5등급"}),(0,a.jsx)("span",{className:"col-start-1 row-start-1 self-center",children:e?"9등급":"5등급"})]})]},String(e)))})}function el(e){let{grade:t,loading:n,basis:r,onBasisChange:i,isFiveGrade:l,toNine:s,onToNineChange:c,onExpand:o,gradesByBasis:u,onUploadGrades:x}=e,m=!n&&(u?d.every(e=>null===u[e.key]):null===t);return(0,a.jsxs)("section",{className:"mx-3.5 mt-1 flex min-h-12 flex-wrap items-center gap-x-1 gap-y-1 rounded-xl bg-zinc-100/70 p-1.5 dark:bg-white/[0.04]",children:[(0,a.jsx)("h3",{className:"px-2.5 text-[13px] font-medium text-zinc-500 dark:text-zinc-400",children:"기준 등급"}),n?(0,a.jsx)("div",{className:"h-9 w-80 animate-pulse rounded-lg bg-zinc-200/60 dark:bg-white/[0.06]"}):m?(0,a.jsxs)("div",{className:"flex items-center gap-3",children:[(0,a.jsx)("p",{className:"text-[13px] text-zinc-500 dark:text-zinc-400",children:"내신 기록이 없어요"}),x&&(0,a.jsxs)("button",{type:"button",onClick:x,className:"btn-primary-solid inline-flex h-8 items-center gap-1.5 rounded-md px-3 text-[13px] font-semibold",children:[(0,a.jsx)(et.Z,{size:14}),"성적 파일 업로드"]})]}):(0,a.jsx)(er,{basis:r,onBasisChange:i,gradesByBasis:u,grade:t}),(0,a.jsxs)("div",{className:"ml-auto flex items-center gap-1",children:[l&&!m&&!n&&(0,a.jsx)(ei,{toNine:s,onToNineChange:c}),o&&(0,a.jsx)("button",{type:"button",onClick:o,"aria-label":"전체화면",title:"전체화면",className:"ml-1 flex h-9 w-9 items-center justify-center rounded-lg text-zinc-500 transition hover:bg-zinc-200/60 hover:text-zinc-900 dark:text-zinc-400 dark:hover:bg-white/[0.06] dark:hover:text-zinc-100",children:(0,a.jsx)(en.Z,{size:16})})]})]})}function es(e){return e.compact?(0,a.jsx)(ec,{...e}):(0,a.jsx)(el,{...e})}function ec(e){let{grade:t,loading:n,basis:r,onBasisChange:i,isFiveGrade:l,toNine:s,onToNineChange:c,onExpand:o,gradesByBasis:u,onUploadGrades:x}=e,m=!n&&(u?d.every(e=>null===u[e.key]):null===t);return(0,a.jsxs)("section",{className:"rounded-2xl bg-zinc-100/70 p-1.5 dark:bg-white/[0.04]",children:[(0,a.jsxs)("div",{className:"flex min-h-9 items-center gap-1 pl-2.5",children:[(0,a.jsx)("h3",{className:"text-[13px] font-medium text-zinc-500 dark:text-zinc-400",children:"기준 등급"}),(0,a.jsxs)("div",{className:"ml-auto flex items-center",children:[l&&!m&&!n&&(0,a.jsx)(ei,{toNine:s,onToNineChange:c}),o&&(0,a.jsx)("button",{type:"button",onClick:o,"aria-label":"전체화면",title:"전체화면",className:"flex h-8 w-8 items-center justify-center rounded-lg text-zinc-500 transition hover:bg-zinc-200/60 hover:text-zinc-900 dark:text-zinc-400 dark:hover:bg-white/[0.06] dark:hover:text-zinc-100",children:(0,a.jsx)(en.Z,{size:15})})]})]}),n?(0,a.jsx)("div",{className:"h-14 animate-pulse rounded-xl bg-zinc-200/60 dark:bg-white/[0.06]"}):m?(0,a.jsxs)("div",{className:"flex min-h-14 flex-wrap items-center gap-x-3 gap-y-2 px-2.5 pb-1.5",children:[(0,a.jsx)("p",{className:"text-[14px] text-zinc-500 dark:text-zinc-400",children:"내신 기록이 없어요"}),x&&(0,a.jsxs)("button",{type:"button",onClick:x,className:"btn-primary-solid inline-flex h-9 items-center gap-1.5 rounded-lg px-3 text-[13px] font-semibold",children:[(0,a.jsx)(et.Z,{size:14}),"성적 파일 업로드"]})]}):(0,a.jsx)(er,{stacked:!0,basis:r,onBasisChange:i,gradesByBasis:u,grade:t})]})}let ed=e=>"".concat(e.toFixed(1).replace(/\.0$/,""),":1"),eo={strong:"bg-emerald-200 font-semibold text-emerald-900 dark:bg-emerald-400/30 dark:text-emerald-100",inside:"bg-teal-100 font-semibold text-teal-900 dark:bg-teal-400/20 dark:text-teal-100",out:"bg-zinc-200 font-semibold text-zinc-800 dark:bg-white/[0.14] dark:text-zinc-100"};function eu(e){let{layout:t,grade:n,year:r}=e;if(!t)return(0,a.jsx)("span",{className:"text-[11px] text-zinc-500 dark:text-zinc-400",children:"자료 없음"});let{zones:i,bounds:l,active:s,marker:c}=t,d=["".concat(r,"년"),null!==s?i[s].label:null,null!=n&&null!==c?"기준 등급 ".concat(z(n)):null,...l.map(e=>
1"".concat(e.label," ").concat(z(e.value)))].filter(Boolean).join(", ");return(0,a.jsxs)("div",{role:"img","aria-label":d,className:"relative py-[18px]",children:[(0,a.jsx)("div",{className:"flex h-6 gap-0.5",children:i.map((e,t)=>{let n=i.slice(0,t).reduce((e,t)=>e+t.width,0),r=s===t&&null!==c?(c-n)/e.width:null;return(0,a.jsx)("span",{style:{width:"".concat(e.width,"%")},className:(0,y.cn)("flex items-center overflow-hidden whitespace-nowrap text-[11px] transition-colors duration-300",null===r?"justify-center":r<.5?"justify-end pr-2.5":"justify-start pl-2.5",0===t&&"rounded-l-md",t===i.length-1&&"rounded-r-md",s===t?eo[e.tone]:"bg-zinc-100/70 text-zinc-400 dark:bg-white/[0.04] dark:text-zinc-500"),children:e.label},e.label)})}),l.map(e=>(0,a.jsx)("span",{className:"absolute bottom-0 -translate-x-1/2 text-[11px] tabular-nums text-zinc-500 dark:text-zinc-400",style:{left:"".concat(e.pct,"%")},children:z(e.value)},e.pct)),null!=n&&null!==c&&(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)("span",{"aria-hidden":!0,className:"absolute top-[14px] h-8 w-0.5 -translate-x-1/2 rounded-full bg-zinc-900 dark:bg-white",style:{left:"".concat(c,"%")}}),(0,a.jsx)("span",{"aria-hidden":!0,className:"absolute top-0 -translate-x-1/2 text-[11px] font-semibold tabular-nums text-zinc-900 dark:text-zinc-50",style:{left:"".concat(c,"%")},children:z(n)})]})]})}function ex(e){let{lines:t}=e;return t.length?(0,a.jsx)("div",{className:"text-[12px] leading-relaxed tabular-nums text-zinc-500 dark:text-zinc-400",children:t.map((e,t)=>(0,a.jsx)("p",{className:(0,y.cn)("whitespace-nowrap",0===t&&"font-medium text-zinc-800 dark:text-zinc-100"),children:e},e))}):null}function em(e){var t;let{row:n}=e;return n&&(null!=n.capacity||null!=n.competitionRate)?(0,a.jsxs)("div",{className:"text-[12px] leading-relaxed tabular-nums text-zinc-500 dark:text-zinc-400",children:[(0,a.jsxs)("p",{children:["모집 ",null!==(t=n.capacity)&&void 0!==t?t:"–"]}),(0,a.jsxs)("p",{children:["경쟁률 ",null==n.competitionRate?"–":ed(n.competitionRate)]})]}):null}function eh(e){let{open:t,onClose:n,layout:s,items:c,grade:o,years:u,basis:x,onBasisChange:m,gradesByBasis:h,isFiveGrade:p,toNine:f,onToNineChange:g}=e;(0,r.useEffect)(()=>{if(!t)return;let e=e=>"Escape"===e.key&&n();return window.addEventListener("keydown",e),()=>window.removeEventListener("keydown",e)},[t,n]);let v=(0,r.useMemo)(()=>c.map(e=>u.map(t=>{let n=e.track.years.find(e=>e.year===t),a=function(e,t){if(!e)return[];let n=[];if(K(e.cut50)&&n.push({key:"cut50",label:"50%컷",short:"50%",value:e.cut50}),K(e.cut70)&&n.push({key:"cut70",label:"70%컷",short:"70%",value:e.cut70}),!n.length){let a=b(e,t);if(a){let e=a.metric.slice(3);n.push({key:a.metric,label:"".concat(e,"%컷"),short:"".concat(e,"%"),value:a.value})}else K(e.meanGrade)&&n.push({key:"mean",label:"평균",short:"평균",value:e.meanGrade})}return n.sort((e,t)=>e.value-t.value)}(n,o);return{year:t,row:n,layout:function(e,t){if(!t.length)return null;let n=null!=e&&Number.isFinite(e)?H(e):null,a=t[0],r=t[t.length-1],i="cut50"===a.key||"mean"===a.key?"strong":"inside",l=H(a.value),s=H(r.value);if(2===t.length&&l<s){let[e,t,c]=V,d=null,o=null;return null!==n&&(n<=l?[d,o]=[0,e-Math.min((l-n)/.5,1)*e]:n<=s?[d,o]=[1,e+(n-l)/(s-l)*t]:[d,o]=[2,e+t+Math.min((n-s)/.5,1)*c]),{zones:[{label:"".concat(a.short," 안"),tone:i,width:e},{label:"".concat(r.short," 안"),tone:"inside",width:t},{label:"".concat(r.short," 밖"),tone:"out",width:c}],bounds:[{pct:e,value:a.value,label:a.label},{pct:e+t,value:r.value,label:r.label}],active:d,marker:null===o?null:ee(o)}}let c=null,d=null;return null!==n&&(n<=l?[c,d]=[0,50-50*Math.min((l-n)/.5,1)]:[c,d]=[1,50+50*Math.min((n-l)/.5,1)]),{zones:[{label:"".concat(a.short," 안"),tone:i,width:50},{label:"".concat(r.short," 밖"),tone:"out",width:50}],bounds:[{pct:50,value:a.value,label:a.label}],active:c,marker:null===d?null:ee(d)}}(o,a),gap:function(e,t){if(null==e||!Number.isFinite(e)||!t.length)return[];let n=H(e),a=e=>n===H(e.value)?"".concat(e.label,"과 같음"):"".concat(e.label," 안쪽 ").concat(Y(H(e.value)-n)),r=t[0];if(n<=H(r.value))return[a(r)];let i=t.find(e=>n<=H(e.value)),l=[...t].reverse().find(e=>H(e.value)<n),s="".concat(l.label,"까지 ").concat(Y(n-H(l.value)));return i?[s,a(i)]:[s]}(o,a)}})),[c,u,o]);if(!t||"undefined"==typeof document)return null;let k="narrow"===s,j=h?d.every(e=>null===h[e.key]):null===o,w=(0,a.jsx)("p",{className:"pb-1 pt-6 text-[12px] font-medium text-zinc-400 dark:text-zinc-500",children:"수시 6곳 밖"}),N=(e,t)=>(0,a.jsxs)("div",{className:"flex min-w-0 gap-2.5",children:[(0,a.jsx)("span",{className:"w-4 shrink-0 pt-px text-right text-[13px] font-medium tabular-nums text-zinc-400",children:t+1}),(0,a.jsxs)("div",{className:"min-w-0",children:[k?(0,a.jsxs)("p",{className:"text-[15px] leading-snug text-zinc-900 dark:text-zinc-50",children:[(0,a.jsx)("span",{className:"font-semibold",children:e.track.name})," ",(0,a.jsx)("span",{className:"text-zinc-700 dark:text-zinc-200",children:e.track.department})]}):(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)("p",{className:"text-[15px] font-semibold leading-snug text-zinc-900 dark:text-zinc-50",children:e.track.name}),(0,a.jsx)("p",{className:"text-[14px] leading-snug text-zinc-700 dark:text-zinc-200",children:e.track.department})]}),(0,a.jsx)("p",{className:(0,y.cn)("text-zinc-500 dark:text-zinc-400",k?"mt-0.5 text-[13px]":"mt-1 text-[12px] leading-snug"),children:A(e.track)})]})]}),C=e=>e>0&&6!==e&&"border-t border-zinc-100 dark:border-white/[0.06]",E=k?(0,a.jsx)("div",{className:"px-4 pt-1",children:c.map((e,t)=>(0,a.jsxs)("div",{children:[6===t&&w,(0,a.jsxs)("section",{className:(0,y.cn)("py-4",C(t)),children:[N(e,t),(0,a.jsx)("div",{className:"mt-2 space-y-1",children:v[t].map(e=>{let{year:t,row:n,layout:r,gap:i}=e,l=[...i,(null==n?void 0:n.capacity)!=null?"모집 ".concat(n.capacity):null,(null==n?void 0:n.competitionRate)!=null?"경쟁률 ".concat(ed(n.competitionRate)):null].filter(
1Boolean);return(0,a.jsxs)("div",{className:"grid grid-cols-[40px_minmax(0,1fr)] items-center gap-x-3",children:[(0,a.jsx)("span",{className:"text-[12px] tabular-nums text-zinc-500 dark:text-zinc-400",children:t}),(0,a.jsxs)("div",{className:"min-w-0 py-1",children:[(0,a.jsx)(eu,{layout:r,grade:o,year:t}),l.length>0&&(0,a.jsx)("p",{className:"mt-1 text-[12px] tabular-nums text-zinc-500 dark:text-zinc-400",children:l.join(" \xb7 ")})]})]},t)})})]})]},e.planId))}):(0,a.jsx)("div",{className:"min-w-[860px] px-6 pt-2",children:c.map((e,t)=>(0,a.jsxs)("div",{children:[6===t&&w,(0,a.jsxs)("section",{className:(0,y.cn)("grid grid-cols-[212px_44px_minmax(260px,1fr)_148px_104px] gap-x-6","gap-y-1 py-4",C(t)),children:[(0,a.jsx)("div",{style:{gridRow:"span ".concat(Math.max(1,u.length))},children:N(e,t)}),v[t].map(e=>{let{year:t,row:n,layout:r,gap:i}=e;return(0,a.jsxs)("div",{className:"contents",children:[(0,a.jsx)("span",{className:(0,y.cn)("flex items-center text-[13px] tabular-nums text-zinc-500 dark:text-zinc-400",r?"min-h-[60px]":"min-h-9"),children:t}),(0,a.jsx)("div",{className:"flex items-center",title:function(e){if(!e)return;let t=[["평균",e.meanGrade],["최고",e.bestGrade],["80%컷",e.cut80],["85%컷",e.cut85],["90%컷",e.cut90],["합격자 평균",e.admittedMeanGrade]].filter(e=>{let[,t]=e;return null!=t}).map(e=>{let[t,n]=e;return"".concat(t," ").concat(z(n))});return t.length?"".concat(e.year," \xb7 ").concat(t.join(" \xb7 ")):void 0}(n),children:(0,a.jsx)("div",{className:"w-full max-w-[440px]",children:(0,a.jsx)(eu,{layout:r,grade:o,year:t})})}),(0,a.jsx)("div",{className:"flex items-center",children:(0,a.jsx)(ex,{lines:i})}),(0,a.jsx)("div",{className:"flex items-center",children:(0,a.jsx)(em,{row:n})})]},t)})]})]},e.planId))});return(0,i.createPortal)((0,a.jsx)("div",{className:"fixed inset-0 z-[80] flex items-stretch justify-center bg-black/40 motion-safe:animate-in motion-safe:fade-in motion-safe:duration-200 sm:items-center sm:p-6",onClick:n,role:"presentation",children:(0,a.jsxs)("div",{role:"dialog","aria-modal":"true","aria-label":"지원 후보 상세",onClick:e=>e.stopPropagation(),className:(0,y.cn)("flex w-full flex-col bg-white dark:bg-[#18181b]",k?"h-full pt-[env(safe-area-inset-top)] pb-[env(safe-area-inset-bottom)]":"max-h-[90vh] max-w-6xl rounded-2xl shadow-2xl motion-safe:animate-in motion-safe:fade-in motion-safe:slide-in-from-bottom-2 motion-safe:duration-300"),children:[(0,a.jsxs)("header",{className:(0,y.cn)("flex flex-wrap items-center gap-x-5 gap-y-2 border-b border-zinc-100 dark:border-white/[0.06]",k?"px-4 py-3":"px-6 py-3.5"),children:[(0,a.jsx)("h2",{className:"text-[17px] font-bold tracking-tight text-zinc-900 dark:text-zinc-50",children:"지원 후보 상세"}),(0,a.jsx)("div",{className:(0,y.cn)("flex min-w-0 flex-wrap items-center gap-x-4 gap-y-2",k&&"order-last w-full"),children:j?(0,a.jsx)("p",{className:"text-[13px] text-zinc-500 dark:text-zinc-400",children:"내신 기록이 없어 컷 숫자만 보여 줘요"}):(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)("div",{className:(0,y.cn)("rounded-lg bg-zinc-100/80 p-0.5 dark:bg-white/[0.04]",k&&"w-full"),children:(0,a.jsx)(er,{quiet:!0,stacked:k,basis:x,onBasisChange:m,gradesByBasis:h,grade:o})}),p&&!k&&(0,a.jsx)(ei,{quiet:!0,toNine:f,onToNineChange:g})]})}),p&&k&&!j&&(0,a.jsx)("div",{className:"ml-auto",children:(0,a.jsx)(ei,{quiet:!0,toNine:f,onToNineChange:g})}),(0,a.jsx)("button",{type:"button",onClick:n,"aria-label":"닫기",className:(0,y.cn)(p&&k&&!j?"-mr-2":"ml-auto","flex h-9 w-9 shrink-0 items-center justify-center rounded-full text-zinc-500 transition hover:bg-zinc-100 hover:text-zinc-900 dark:text-zinc-400 dark:hover:bg-white/[0.06] dark:hover:text-zinc-50"),children:(0,a.jsx)(l.Z,{size:18})})]}),(0,a.jsxs)("div",{className:"flex-1 overflow-auto",children:[E,(0,a.jsx)("p",{className:(0,y.cn)("pb-6 pt-2 text-[12px] leading-relaxed text-zinc-400 dark:text-zinc-500",k?"px-4":"px-6"),children:"칸 경계는 그 해 합격해 등록한 학생의 50%\xb770%컷이고, 검은 표시는 기준 등급이에요. 양옆 칸은 컷에서 0.5등급까지만 그려요. 두 컷이 없으면 80~90%컷, 평균 순으로 견줘요."})]})]})}),document.body)}let ep=e=>e>0?e<640:window.innerWidth<640,ef=e=>e instanceof Error&&e.message?e.message:"잠시 후 다시 시도해 주세요.";function eg(e){let{api:t,studentGrade:n,variant:c,isGuest:o=!1,onUploadGrades:u}=e,{showToast:x}=(0,s.p)(),[h,p]=function(){let[e,t]=(0,r.useState)(null),[n,a]=(0,r.useState)(0);return(0,r.useLayoutEffect)(()=>
1{if(!e)return;let t=()=>a(e.getBoundingClientRect().width);t();let n=new ResizeObserver(t);return n.observe(e),()=>n.disconnect()},[e]),[t,n]}(),f=ep(p),g=f?"narrow":"medium",b=function(){let[e,t]=(0,r.useState)(!1);return(0,r.useEffect)(()=>{if("function"!=typeof window.matchMedia)return;let e=window.matchMedia("(max-width: 767px)"),n=()=>t(e.matches);return n(),e.addEventListener("change",n),()=>e.removeEventListener("change",n)},[]),e}(),k=n>0?(0,v.RQ)((0,v.Bz)(n)):"9-GRADE",j="5-GRADE"===k,[z,w]=(0,r.useState)(null),[N,C]=(0,r.useState)("kemt"),[E,S]=(0,r.useState)(!1),[M,R]=(0,r.useState)(0);(0,r.useEffect)(()=>{if(o)return;let e=!0;return 0===M&&w(null),t.loadGradeRecords().then(t=>e&&w(t)).catch(()=>e&&w([])),()=>{e=!1}},[t,o,M]);let L=(0,r.useMemo)(()=>u?()=>u(()=>R(e=>e+1)):void 0,[u]),T=(0,r.useMemo)(()=>{if(!z)return;let e={toNine:j&&E,gradingSystem:k};return Object.fromEntries(d.map(t=>[t.key,m(z,t.key,e)]))},[z,E,j,k]),F=(0,r.useMemo)(()=>z?m(z,N,{toNine:j&&E,gradingSystem:k}):null,[z,N,E,j,k]),[_,A]=(0,r.useState)(""),[B,G]=(0,r.useState)(""),[D,I]=(0,r.useState)({admissionType:null,regions:[],excludeSpecial:!0}),[P,Z]=(0,r.useState)([]),[q,O]=(0,r.useState)(0),[W,J]=(0,r.useState)([]),[Q,$]=(0,r.useState)(!0),[H,K]=(0,r.useState)(null),[Y,V]=(0,r.useState)(0),ee=(0,r.useRef)(0);(0,r.useEffect)(()=>{let e=setTimeout(()=>G(_.trim()),250);return()=>clearTimeout(e)},[_]);let et=(0,r.useMemo)(()=>{var e;return{q:B||void 0,admissionType:null!==(e=D.admissionType)&&void 0!==e?e:void 0,regions:D.regions.length?D.regions:void 0,excludeSpecial:D.excludeSpecial,grade:F}},[B,D,F]),en=null!==z;(0,r.useEffect)(()=>{if(o||!en)return;let e=++ee.current;$(!0),K(null),t.find({...et,offset:0,limit:20}).then(t=>{e===ee.current&&(Z(t.items),O(t.total),J(t.years))}).catch(t=>e===ee.current&&K(ef(t)||"대학 목록을 불러오지 못했어요.")).finally(()=>e===ee.current&&$(!1))},[t,et,en,o,Y]);let ea=(0,r.useCallback)(()=>{let e=++ee.current;$(!0),t.find({...et,offset:P.length,limit:20}).then(t=>{e===ee.current&&(Z(e=>[...e,...t.items.filter(t=>!e.some(e=>e.id===t.id))]),O(t.total))}).catch(t=>e===ee.current&&x(ef(t),"error")).finally(()=>e===ee.current&&$(!1))},[t,et,P.length,x]),[er,ei]=(0,r.useState)(null),el=(0,r.useCallback)(e=>{ei(t=>t===e?null:e)},[]),[ec,ed]=(0,r.useState)([]),[eo,eu]=(0,r.useState)(!0),[ex,em]=(0,r.useState)(null),[eg,eb]=(0,r.useState)(!1),[ev,ey]=(0,r.useState)(new Set),ek=(0,r.useRef)(0),ej=(0,r.useCallback)((e,t)=>{e===ek.current&&ed(t)},[]);(0,r.useEffect)(()=>{if(o)return;let e=!0;return eu(!0),em(null),t.listCandidates().then(t=>e&&ed(t)).catch(()=>e&&em("지원 후보를 불러오지 못했어요.")).finally(()=>e&&eu(!1)),()=>{e=!1}},[t,o]);let ez=(0,r.useMemo)(()=>new Set(ec.map(e=>e.track.id)),[ec]),ew=(0,r.useCallback)(async(e,n)=>{ey(t=>new Set(t).add(e.id));let a=++ek.current;try{ej(a,await t.addCandidate(e.id,n))}catch(e){x(ef(e),"error")}finally{ey(t=>{let n=new Set(t);return n.delete(e.id),n})}},[t,ej,x]),eN=(0,r.useCallback)(async e=>{let n=ec.findIndex(t=>t.planId===e.planId);ed(t=>t.filter(t=>t.planId!==e.planId)),eb(!0);let a=++ek.current;try{ej(a,await t.removeCandidate(e.planId)),f&&x("후보에서 뺐어요 \xb7 ".concat(e.track.name," ").concat(e.track.department),"info",{label:"되돌리기",onClick:()=>void ew(e.track,n)})}catch(e){a===ek.current&&ed(ec),x(ef(e),"error")}finally{eb(!1)}},[t,ec,ew,ej,x,f]),eC=(0,r.useCallback)(e=>{let t=ec.find(t=>t.track.id===e);t&&eN(t)},[ec,eN]),[eE,eS]=(0,r.useState)(!1),eM=(0,r.useCallback)(()=>eS(!0),[]),eR=(0,r.useMemo)(()=>W.length?W:Array.from(new Set(ec.flatMap(e=>e.track.years.map(e=>e.year)))).sort((e,t)=>t-e).slice(0,3).reverse(),[W,ec]),[eL,eT]=(0,r.useState)(!1);if((0,r.useEffect)(()=>{if(!eL)return;let e=e=>"Escape"===e.key&&!eE&&eT(!1);return window.addEventListener("keydown",e),()=>window.removeEventListener("keydown",e)},[eL,eE]),o)return(0,a.jsxs)("div",{className:"rounded-2xl border border-zinc-200/80 bg-white px-6 py-12 text-center dark:border-white/[0.06] dark:bg-[#18181b]",children:[(0,a.jsx)("p",{className:"text-[15px] font-semibold text-zinc-900 dark:text-zinc-50",children:"로그인하면 대학을 찾아볼 수 있어요"}),(0,a.jsx)("p",{className:"mt-1 text-[13px] text-zinc-500 dark:text-zinc-400",children:"학생 성적과 수시 입결을 나란히 놓고 지원 후보를 정리합니다."}),(0,a.jsx)("button",{type:"button",onClick:()=>window.dispatchEvent(new CustomEvent("open-login-modal")),className:"btn-primary-solid mt-5 rounded-xl px-5 py-2.5 text-sm font-semibold",children:"로그인"})]});let eF=(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(es,{compact:f,grade:F,loading:null===z,basis:N,onBasisChange:C,isFiveGrade:j,toNine:E,onToNineChange:S,onExpand:"teacher"!==c||eL||b?void 0:()=>eT(!0),gradesByBasis:T,onUploadGrades:"teacher"===c?L:void 0}),(0,a.jsx)(X,{layout:g,items:ec,loading:eo,error:ex,grade:F,years:eR,busy:eg||ev.size>0,onRemove:eN,onCompare:eM})]}),e_=(0,a.jsx)(U,{layout:g,sheets:b,query:_,onQueryChange:A,filters:D,onFiltersChange:I,items:P,total:q,loading:Q||!en,error:H,onRetry:()=>V(e=>e+1),onMore:ea,grade:F,addedIds:ez,busyIds:ev,locked:eg,onAdd:e=>void ew(e),onRemoveByUniversity:eC,expandedId:er,onToggleExpand:el,years:eR}),eA=(0,a.jsxs)("div",{ref:h,className:(0,y.cn)("w-full text-zinc-900 dark:text-zinc-50",f?"pb-8 pt-1.5":"bg-white pb-4 dark:bg-[#18181b]"),children:[eF,e_,(0,a.jsx)(eh,{open:eE,onClose:()=>eS(!1),layout:g,items:ec,grade:F,years:eR,basis:N,onBasisChange:C,gradesByBasis:T,isFiveGrade:j,toNine:E,onToNineChange:S})]});return eL&&"undefined"!=typeof document?(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)("div",{className:"rounded-2xl border border-dashed border-zinc-200 px-6 py-10 text-center text-sm text-zinc-400 dark:border-white/10",children:"전체화면으로 보고 있어요."}),(0,i.createPortal)((0,a.jsx)("div",{className:"fixed inset-0 z-[70] overflow-y-auto bg-zinc-50 dark:bg-[#0f0f11]",children:(0,a.jsxs)("div",{className:"mx-auto max-w-[1400px] px-6 pb-10 pt-5",children:[(0,a.jsx)("div",{className:"mb-4 flex justify-end",children:(0,a.jsxs)("button",{type:"button",onClick:()=>eT(!1),className:"inline-flex items-center gap-1.5 rounded-md border border-zinc-200 bg-white px-3 py-2 text-sm font-medium text-zinc-700 dark:border-white/10 dark:bg-[#18181b] dark:text-zinc-200",children:[(0,a.jsx)(l.Z,{size:15}),"전체화면 닫기"]})}),eA]})}),document.body)]}):eA}},98881:function(e,t,n){n.d(t,{Q:function(){return c},u:function(){return l}});var a=n(83008);let r=e=>"number"==typeof e&&Number.isFinite(e)?e:null;async function i(e){let t=await e;if(!t.success)throw Error(t.error||"잠시 후 다시 시도해 주세요.");return t.data}function l(e,t){return{async loadGradeRecords(){let n=await i((0,a.X)("getGradeRecordsByStudent",{studentId:e},t));return(null!=n?n:[]).map(e=>{var t;return{year:e.year,semester:e.semester,subjectCategory:e.subjectCategory,examType:"final",gradeLevel:r(e.gradeLevel),studentsCount:r(e.studentsCount),gradeRank:r(e.gradeRank),achievement:null!==(t=e.achievement)&&void 0!==t?t:null,rawScore:r(e.rawScore),subjectAverage:r(e.subjectAverage),standardDeviation:r(e.standardDeviation),distA:r(e.distA),distB:r(e.distB),distC:r(e.distC),distD:r(e.distD),distE:r(e.distE)}})},find:e=>i((0,a.X)("findAdmissionTracks",e,t)),listCandidates:()=>i((0,a.X)("getAdmissionCandidates",{studentId:e},t)),addCandidate:(n,r)=>i((0,a.X)("addAdmissionCandidate",{studentId:e,universityId:n,atIndex:r},t)),removeCandidate:n=>i((0,a.X)("removeAdmissionCandidate",{studentId:e,planId:n},t)),moveCandidate:(n,r)=>i((0,a.X)("moveAdmissionCandidate",{studentId:e,planId:n,dir:r},t))}}async function s(e,t){let n=await fetch(e,t),a=await n.json().catch(()=>({}));if(!n.ok)throw Error((null==a?void 0:a.error)||"잠시 후 다시 시도해 주세요.");return a}function c(e,t){let n="/api/report/".concat(e,"/admission"),a=e=>s("".concat(n,"/plans"),{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(e)}).then(e=>e.items);return{loadGradeRecords:async()=>(null!=t?t:[]).map(e=>{var t,n;return{year:e.year,semester:e.semester,subjectCategory:e.subject_type,examType:null!==(t=e.exam_type)&&void 0!==t?t:"final",gradeLevel:r(e.grade_level),studentsCount:r(e.total_students),gradeRank:r(e.rank),achievement:null!==(n=e.achievement)&&void 0!==n?n:null,rawScore:r(e.score),subjectAverage:r(e.subject_average),standardDeviation:r(e.standard_deviation),distA:r(e.distA),distB:r(e.distB),distC:r(e.distC),distD:r(e.distD),distE:r(e.distE)}}),find(e){var t,a,r;let i=new URLSearchParams;return e.q&&i.set("q",e.q),e.admissionType&&i.set("admissionType",e.admissionType),(null===(t=e.regions)||void 0===t?void 0:t.length)&&i.set("regions",e.regions.join(",")),e.excludeSpecial&&i.set("excludeSpecial","1"),null!==e.grade&&void 0!==e.grade&&i.set("grade",String(e.grade)),i.set("offset",String(null!==(a=e.offset)&&void 0!==a?a:0)),i.set("limit",String(null!==(r=e.limit)&&void 0!==r?r:20)),s("".concat(n,"/finder?").concat(i.toString()))},listCandidates:()=>s("".concat(n,"/plans")).then(e=>e.items),addCandidate:(e,t)=>
1a({op:"add",universityId:e,atIndex:t}),removeCandidate:e=>a({op:"remove",planId:e}),moveCandidate:(e,t)=>a({op:"move",planId:e,dir:t})}}},35596:function(e,t,n){n.d(t,{Z:function(){return m}});var a=n(57437),r=n(2265),i=n(59717),l=n(81906),s=n(33728),c=n(57586),d=n(13100),o=n(93448),u=n(21652);let x=0;function m(e){let{isOpen:t,onClose:n,title:m,children:h,footer:p,className:f}=e,g=(0,i.o)(),b=(0,l.c)(0);(0,r.useEffect)(()=>{t&&b.set(0)},[t,b]);let v=(0,s.H)(b,[0,240],[1,0]),y=(0,r.useRef)(n),k=(0,r.useRef)(!1);(0,r.useEffect)(()=>{y.current=n},[n]),(0,r.useEffect)(()=>{if(!t)return;x++,document.body.style.overflow="hidden";let e=(0,u.UM)(),n=window.history.state||{};!e||k.current||n.isBottomSheet||(window.history.pushState({...n,isBottomSheet:!0},""),k.current=!0);let a=()=>{k.current&&(k.current=!1,y.current())};return window.addEventListener("popstate",a),()=>{window.removeEventListener("popstate",a),--x<=0&&(x=0,document.body.style.overflow="")}},[t]);let j=(0,r.useCallback)(()=>{k.current&&(k.current=!1,window.history.back()),n()},[n]),z=(0,r.useCallback)((e,t)=>{(t.velocity.y>500||t.offset.y>100)&&j()},[j]),w=(0,r.useRef)(null),N=(0,r.useRef)(null);return(0,r.useEffect)(()=>{if(!t)return;let e=w.current;if(!e)return;let n=[],a=function(t){let n=!(arguments.length>1)||void 0===arguments[1]||arguments[1];if(!e||!e.contains(t))return;let a=e.getBoundingClientRect(),r=t.getBoundingClientRect(),i=r.top-a.top,l=Math.min(24,Math.max(12,(e.clientHeight-r.height)/2)),s=e.scrollTop+i-l;e.scrollTo({top:Math.max(0,s),behavior:n?"smooth":"auto"})},r=e=>{let t=e.target;t&&("INPUT"===t.tagName||"TEXTAREA"===t.tagName||"SELECT"===t.tagName||t.isContentEditable)&&(N.current=t,a(t,!1),n.push(setTimeout(()=>a(t,!0),120)),n.push(setTimeout(()=>a(t,!0),300)),n.push(setTimeout(()=>a(t,!0),500)))},i=()=>{N.current=null},l=()=>{N.current&&a(N.current,!0)};e.addEventListener("focusin",r),e.addEventListener("focusout",i);let s=window.visualViewport;return null==s||s.addEventListener("resize",l),()=>{n.forEach(clearTimeout),e.removeEventListener("focusin",r),e.removeEventListener("focusout",i),null==s||s.removeEventListener("resize",l)}},[t]),(0,a.jsx)(c.M,{children:t&&(0,a.jsxs)("div",{className:"md:hidden fixed inset-x-0 z-[100] flex items-end",role:"dialog","aria-modal":"true","aria-label":m,style:{top:"var(--vv-offset-top, 0px)",height:"var(--app-height)"},children:[(0,a.jsx)(d.E.div,{initial:{opacity:0}
1,animate:{opacity:1},exit:{opacity:0},transition:{duration:.22,ease:[.22,1,.36,1]},className:"absolute inset-0",children:(0,a.jsx)(d.E.div,{style:{opacity:v},onClick:j,className:"absolute inset-0 bg-black/50 backdrop-blur-sm"})}),(0,a.jsxs)(d.E.div,{style:{y:b,maxHeight:"90%"},initial:{y:"100%"},animate:{y:0},exit:{y:"100%"},transition:{type:"spring",damping:30,stiffness:320,mass:.8},drag:"y",dragListener:!1,dragControls:g,dragConstraints:{top:0},dragElastic:{top:.12,bottom:.75},onDragEnd:z,role:"dialog","aria-modal":"true",className:(0,o.cn)("relative w-full bg-white dark:bg-[#18181b] border-t border-transparent dark:border-white/[0.08] rounded-t-2xl","flex flex-col overflow-hidden mobile-sheet-pad shadow-2xl",f),children:[(0,a.jsx)("div",{onPointerDown:e=>g.start(e),className:"flex justify-center pt-3 pb-2 shrink-0 cursor-grab active:cursor-grabbing touch-none select-none",children:(0,a.jsx)("div",{className:"w-9 h-1 rounded-full bg-zinc-300 dark:bg-zinc-700"})}),m&&(0,a.jsx)("div",{className:"px-4 pb-3 border-b border-zinc-200/40 dark:border-zinc-800/60 shrink-0",children:(0,a.jsx)("h3",{className:"text-[var(--mobile-font-h2)] font-semibold text-zinc-900 dark:text-zinc-100",children:m})}),(0,a.jsx)("div",{ref:w,className:"flex-1 overflow-y-auto overflow-x-hidden px-4 pt-3 pb-2 mobile-scroll mobile-sheet-scroll",children:h}),p&&(0,a.jsx)("div",{className:"shrink-0 px-4 pt-2.5 pb-1 border-t border-zinc-100 dark:border-zinc-800/80 bg-white/95 dark:bg-[#18181b]/95 backdrop-blur-md",children:p})]})]})})}},91455:function(e,t,n){n.d(t,{s:function(){return l}});var a=n(57437),r=n(2265),i=n(93448);function l(e){let{options:t,value:n,onChange:l,className:s,itemClassName:c,activeItemClassName:d,inactiveItemClassName:o,indicatorClassName:u,variant:x="pill",underlineThickness:m=2,disabled:h=!1,equalWidth:p=!1,"aria-label":f}=e,g=(0,r.useRef)(null),b=(0,r.useRef)({}),[v,y]=(0,r.useState)(null),[k,j]=(0,r.useState)(!1),z=t.map(e=>e.key).join("\0"),w=(0,r.useCallback)(()=>{let e=g.current,t=b.current[n];if(!e||!t||0===t.offsetWidth){y(e=>null===e?e:null);return}let a={left:t.offsetLeft,top:t.offsetTop,width:t.offsetWidth,height:t.offsetHeight};y(e=>e&&e.left===a.left&&e.top===a.top&&e.width===a.width&&e.height===a.height?e:a)},[n]);(0,r.useLayoutEffect)(()=>{w()},[w,z,x]),(0,r.useEffect)(()=>{if(!v||k)return;let e=requestAnimationFrame(()=>j(!0));return()=>cancelAnimationFrame(e)},[v,k]),(0,r.useEffect)(()=>{let e=g.current;if(!e||"undefined"==typeof ResizeObserver)return;let t=new ResizeObserver(()=>w());return t.observe(e),Object.values(b.current).forEach(e=>{e&&t.observe(e)}),()=>t.disconnect()},[w,z]),(0,r.useEffect)(()=>{let e=document.fonts;if(!(null==e?void 0:e.ready))return;let t=!1;return e.ready.then(()=>{t||w()}).catch(()=>{}),()=>{t=!0}},[w]);let N=!!v&&!h;return(0,a.jsxs)("div",{ref:g,role:"group","aria-label":f,className:(0,i.cn)("relative flex items-center",s),children:[(0,a.jsx)("div",{"aria-hidden":!0,className:(0,i.cn)("absolute left-0 top-0 pointer-events-none","pill"===x?"rounded-lg":"rounded-full",k&&"transition-[transform,width,opacity] duration-300 ease-out motion-reduce:transition-none",N?"opacity-100":"opacity-0",u),style:v?{transform:"translate3d(".concat(v.left,"px, ").concat("underline"===x?v.top+v.height-m:v.top,"px, 0)"),width:v.width,height:"underline"===x?m:v.height}:void 0}),t.map(e=>{let t=e.key===n;return(0,a.jsx)("button",{ref:t=>{b.current[e.key]=t},type:"button","aria-pressed":t,title:e.title,"aria-label":e.ariaLabel,disabled:h,onClick:()=>l(e.key),className:(0,i.cn)("relative z-10 flex items-center justify-center transition-colors duration-200 motion-reduce:transition-none",p&&"flex-1",c,t?d:o,e.className),children:e.label},e.key)})]})}},85328:function(e,t,n){n.d(t,{rx:function(){return r},wK:function(){return o}});let a=[0,10,34,66,90,100],r=[0,4,11,23,40,60,77,89,96,100],i=["A","B","C","D","E"],l=(e,t,n)=>Math.min(n,Math.max(t,e)),s=e=>"number"==typeof e&&Number.isFinite(e);function c(e,t){return t?"5-GRADE"===t?a:r:e<=2?a:r}function d(e,t){let n=l(e,0,100);for(let e=0;e<t.length-1;e++)if(n<=t[e+1]){let a=t[e],r=t[e+1];if(r===a)return e+1;return e+1+(n-a)/(r-a)}return t.length-1}function o(e){let t,n,o,u,x;let m=e.studentsCount,h=s(e.gradeRank)&&e.gradeRank>0,p=function(e){var t,n,a,r,c,d;let o=null===(t=e.achievement)||void 0===t?void 0:t.trim().toUpperCase();if(!s(e.distA)||!o||!i.includes(o))return{min:0,max:100,hasDistribution:!1,boundaries:[]};let u={A:null!==(n=e.distA)&&void 0!==n?n:0,B:null!==(a=e.distB)&&void 0!==a?a:0,C:null!==(r=e.distC)&&void 0!==r?r:0,D:null!==(c=e.distD)&&void 0!==c?c:0,E:null!==(d=e.distE)&&void 0!==d?d:0},x=0,m=[];for(let e of i){if(e===o){let t=l(x+u[e],0,100);return{min:l(x,0,100),max:t,hasDistribution:!0,boundaries:m}}(x+=u[e])<100&&m.push(l(x,0,100))}return{min:0,max:100,hasDistribution:!0,boundaries:m}}(e),f=function(e){let t=c(e.year,e.gradingSystem),n=e.gradeLevel;return!s(n)||n<1||n>=t.length?{min:0,max:100,hasGradeLevel:!1}:{min:t[n-1],max:t[n],hasGradeLevel:!0}}(e);
1if(!m||!h&&!p.hasDistribution&&!f.hasGradeLevel)return null;let g=Math.max(p.min,f.min),b=Math.min(p.max,f.max),v=g<=b;if(v?(t=g,n=b):f.hasGradeLevel?(t=f.min,n=f.max):(t=p.min,n=p.max),h)o=l(e.gradeRank/m*100,0,100),u=n===t?.5:l((o-t)/(n-t),0,1),x="rank";else{let a=function(e){let t=e.rawScore,n=e.subjectAverage,a=e.standardDeviation;if(s(t)&&s(n)&&s(a)&&a>0)return{position:.5,source:"z-score",zPercentile:l((1-.5*(1+function(e){let t=Math.abs(e),n=1/(1+.3275911*t);return(e<0?-1:1)*(1-((((1.061405429*n-1.453152027)*n+1.421413741)*n-.284496736)*n+.254829592)*n*Math.exp(-t*t))}((t-n)/a/Math.SQRT2)))*100,0,100)};if(s(t)&&s(n)){let e=l((t-n)/30,-1,1);return{position:l(.5-.3*e,.2,.8),source:"score-average",zPercentile:null}}return{position:.5,source:"midpoint",zPercentile:null}}(e);x=a.source,null!==a.zPercentile?(o=l(a.zPercentile,t,n),u=n===t?.5:l((o-t)/(n-t),0,1)):o=t+(n-t)*(u=a.position)}return{achMin:p.min,achMax:p.max,gradeMin:f.min,gradeMax:f.max,interMin:t,interMax:n,hasValidIntersection:v,hasGradeLevel:f.hasGradeLevel,hasDistribution:p.hasDistribution,estimatedPercentile:o,intervalPosition:u,percentileSource:x,estimatedGrade9:d(o,r),estimatedGrade5:d(o,a),estimatedIntegerGrade9:function(e,t){let n=l(e,0,100);for(let e=0;e<t.length-1;e++)if(n<=t[e+1])return e+1;return t.length-1}(o,r),gradeBoundaries:Array.from(c(e.year,e.gradingSystem)).slice(1,-1),achBoundaries:p.boundaries}}},92609:function(e,t,n){n.d(t,{_:function(){return s}});var a=n(1406);let r=e=>Math.round(10*e)/10,i=["국어","수학","영어","탐구1","탐구2"];function l(e){let t=e.filter(e=>null!==e.primary).map(e=>({subject:e.label,value:r(e.primary)}));if(t.length<2)return{strongest:null,weakest:null};let n=t.reduce((e,t)=>t.value<e.value?t:e),a=t.reduce((e,t)=>t.value>e.value?t:e);return n.value===a.value?{strongest:null,weakest:null}:{strongest:n,weakest:a}}function s(e){var t,n;let s=null!==(t=e.today)&&void 0!==t?t:new Date,c=function(e){let t=(0,a.r7)(e),n=Array.from(new Set(t.map(e=>"".concat(e.year,"-").concat(e.semester)))).sort((e,t)=>{let[n,a]=e.split("-").map(Number),[r,i]=t.split("-").map(Number);return n-r||a-i}),r=new Map;for(let e of t){let t=(0,a.zl)(e.subject_type);if(!t||!(0,a.J4)(e.grade_level))continue;let n="".concat(e.year,"-").concat(e.semester,"|").concat(t);r.has(n)||r.set(n,[]),r.get(n).push(e.grade_level)}let i=n.map(e=>{let[n,a]=e.split("-"),r=t.filter(t=>"".concat(t.year,"-").concat(t.semester)===e);return{key:e,label:"".concat(n,"학년 ").concat(a,"학기"),shortLabel:e,midtermOnly:r.every(e=>"midterm"===(e.exam_type||"final"))}}).filter(e=>a.UW.some(t=>r.has("".concat(e.key,"|").concat(t))));if(0===i.length)return null;let l=a.UW.map(e=>({subject:e,values:i.map(t=>{var n;return(0,a.M$)(null!==(n=r.get("".concat(t.key,"|").concat(e)))&&void 0!==n?n:[])})})).filter(e=>e.values.some(e=>null!==e)),s=i.map(e=>(0,a.M$)(a.UW.flatMap(t=>{var n;return null!==(n=r.get("".concat(e.key,"|").concat(t)))&&void 0!==n?n:[]})));return{columns:i,rows:l,average:s}}(e.grades),d=function(e){var t;let n=new Map;for(let t of e){let e="".concat(t.year,"-").concat(t.month);n.has(e)||n.set(e,{year:t.year,month:t.month,items:[]}),n.get(e).items.push(t)}let r=Array.from(n.entries()).sort((e,t)=>{let[,n]=e,[,a]=t;return n.year-a.year||n.month-a.month}).slice(-5);if(0===r.length)return null;let l=null===(t=r[r.length-1][1].items[0])||void 0===t?void 0:t.grade,s=1===l||2===l,c=i.map(e=>({key:e,label:s?"탐구1"===e?"사회":"탐구2"===e?"과학":e:e})),d=new Set(r.map(e=>{let[,t]=e;return t.year})).size>1;return{columns:c,exams:r.map(e=>{let[t,n]=e,r=new Map;for(let e of n.items){var l;r.set("탐구1"===(l=e.subject)||"사회"===l?"탐구1":"탐구2"===l||"과학"===l?"탐구2":l,e)}let s=i.map(e=>{let t=r.get(e);if(!t)return null;let n=1===t.grade||2===t.grade;return{grade:(0,a.J4)(t.gradeLevel)?t.gradeLevel:null,detail:n||"탐구1"!==e&&"탐구2"!==e?null:t.subjectDetail||null}}),c={};for(let e of n.items){if(!(0,a.J4)(e.gradeLevel))continue;let t=e.subject;(1===e.grade||2===e.grade)&&("탐구1"===t&&(t="사회"),"탐구2"===t&&(t="과학")),c[t]=e.gradeLevel}return{key:t,label:"".concat(n.year,"년 ").concat(n.month,"월"),shortLabel:d?"".concat(String(n.year).slice(2),".").concat(n.month):"".concat(n.month,"월"),cells:s,average:(0,a.Jf)(c)}})}}(e.mockExams),o=null,u=null;if(c){let e=c.average.map((e,t)=>({value:e,idx:t})).filter(e=>null!==e.value),t=e[e.length-1];if(t){let n=c.columns[t.idx],{strongest:i,weakest:s}=l(u=a.UW.map(n=>{let r=c.rows.find(e=>e.subject===n),i=r?r.values.filter(e=>null!==e):[];return{label:n,primary:(0,a.M$)(i),secondary:e.length>1&&r?r.values[t.idx]:null}}));o={overall:r((0,a.M$)(e.map(e=>e.value))),semesterCount:e.length,latestLabel:"".concat(n.label).concat(n.midtermOnly?" 중간고사":""),latestValue:r(t.value),strongest:i,weakest:s}}}let x=null,m=null;if(d){let e=d.exams.filter(e=>null!==e.average),t=e[e.length-1],i=e[e.length-2];t&&(m=d.columns.map((e,n)=>{var r,i,l;let s=d.exams.map(e=>{var t,a;return null!==(a=null===(t=e.cells[n])||void 0===t?void 0:t.grade)&&void 0!==a?a:null}).filter(e=>null!==e);return{label:(null===(r=t.cells[n])||void 0===r?void 0:r.detail)||e.label,primary:null!==(l=null===(i=t.cells[n])||void 0===i?void 0:i.grade)&&void 0!==l?l:null,secondary:d.exams.length>1?(0,a.M$)(s):null}}),x={...function(e,t){let n=r(e);
1if(null===t)return{value:n,previous:null,change:null,diff:null};let a=r(t),i=r(Math.abs(a-n));return{value:n,previous:a,change:0===i?"same":n<a?"up":"down",diff:i}}(t.average,null!==(n=null==i?void 0:i.average)&&void 0!==n?n:null),periodLabel:t.label,...l(m)})}return{student:e.student,issuedLabel:"".concat(s.getFullYear(),"년 ").concat(s.getMonth()+1,"월 ").concat(s.getDate(),"일"),naesinScale:e.naesinScale,summary:{naesin:o,mock:x},radar:{naesin:u,mock:m},naesin:c,mock:d,details:function(e){let t=e=>10*e.year+e.semester,n=e.length?Math.max(...e.map(t)):null,r=e=>"".concat(e.year,"-").concat(e.semester,"-").concat(e.subject),i=new Map(e.filter(e=>"final"===(e.exam_type||"final")).map(e=>[r(e),e])),l=new Set((0,a.r7)(e)),s=new Map;for(let a of e){let e="midterm"===a.exam_type?"midterm":"final";if(!l.has(a)&&t(a)!==n)continue;let r="".concat(a.year,"-").concat(a.semester,"-").concat(e);s.has(r)||s.set(r,[]),s.get(r).push(a)}let c=Array.from(s.entries()).map(e=>{let[t,n]=e,[l,s,c]=t.split("-"),d="midterm"===c,o=[...n].sort((e,t)=>{let n="number"==typeof e.grade_level,r="number"==typeof t.grade_level;if(n!==r)return r?1:-1;let i=(0,a.vP)(e.subject_type)-(0,a.vP)(t.subject_type);if(0!==i)return i;let l="P"===e.achievement||"F"===e.achievement;return l!==("P"===t.achievement||"F"===t.achievement)?l?1:-1:(e.subject||"").localeCompare(t.subject||"")}).map(e=>{let t=d?i.get(r(e)):void 0;return{id:e.id,subject:e.subject,credits:e.credits,gradeLevel:e.grade_level,totalStudents:e.total_students,rank:e.rank,percentileLabel:(0,a.ng)((0,a.yD)(e)),scoreLabel:"number"==typeof e.grade_level&&"number"==typeof e.score?e.score.toFixed(1):null===e.score?"-":String(e.score),achievement:e.achievement,position:d&&!t?(0,a.FS)(e):null,finalResult:t?function(e,t){let n=e.grade_level,r=t.grade_level;if(!(0,a.J4)(n)||!(0,a.J4)(r))return{label:(0,a.J4)(r)?String(r):t.achievement||"-",change:null,diff:null};let i=n-r;return{label:String(r),change:i>0?"up":i<0?"down":"same",diff:Math.abs(i)}}(e,t):null}}),u=o.filter(e=>e.finalResult).length;return{key:t,title:"".concat(l,"학년 ").concat(s,"학기").concat(d?" 중간고사":""),examType:d?"midterm":"final",superseded:0===u?"none":u===o.length?"all":"some",rows:o}}),d=e=>"final"===e.examType?1:"none"===e.superseded?0:2;return c.sort((e,t)=>{let[n,a]=e.key.split("-").map(Number),[r,i]=t.key.split("-").map(Number);return r-n||i-a||d(e)-d(t)})}(e.grades)}}},1406:function(e,t,n){n.d(t,{FS:function(){return h},J4:function(){return l},Jf:function(){return d},M$:function(){return c},UW:function(){return a},ng:function(){return m},r7:function(){return s},vP:function(){return i},yD:function(){return x},zl:function(){return r}});let a=["국어","수학","영어","사회","과학"];function r(e){return e?e.includes("국어")&&!e.includes("제2외국어")?"국어":e.includes("수학")?"수학":e.includes("영어")?"영어":e.includes("사회")?"사회":e.includes("과학")?"과학":null:null}function i(e){if(!e)return 999;let t=r(e);return t?a.indexOf(t):100}function l(e){return"number"==typeof e&&e>=1&&e<=9}function s(e){let t=new Set(e.filter(e=>"final"===(e.exam_type||"final")).map(e=>"".concat(e.year,"-").concat(e.semester,"-").concat(e.subject)));return e.filter(e=>!("midterm"===(e.exam_type||"final")&&t.has("".concat(e.year,"-").concat(e.semester,"-").concat(e.subject))))}function c(e){return 0===e.length?null:e.reduce((e,t)=>e+t,0)/e.length}function d(e){let t=[];e["국어"]&&t.push(e["국어"]),e["수학"]&&t.push(e["수학"]),e["영어"]&&t.push(e["영어"]);let n=[],a=e["탐구1"]||e["사회"],r=e["탐구2"]||e["과학"];a&&n.push(a),r&&n.push(r);let i=c(n);return null!==i&&t.push(i),c(t)}let o=[0,10,34,66,90,100],u=[0,4,11,23,40,60,77,89,96,100];function x(e){let t,n,a,r;let{rank:i,total_students:l}=e;if("number"==typeof i&&"number"==typeof l&&i>0&&l>0)return Math.max(0,Math.min(100,(l-i+1)/l*100));if("number"!=typeof e.percentile)return null;let s=e.grade_level;if("number"!=typeof s)return e.percentile;let c=e.year<=2?o:u;if(s<1||s>=c.length)return e.percentile;let d=c[s-1],x=c[s],m=(t=e.percentile)>=d&&t<=x,h=(n=e.percentile,a=100-x,r=100-d,n>=a&&n<=r);return m&&!h?100-e.percentile:e.percentile}function m(e){if(null===e)return"-";let t=Math.round(10*e)/10;return Number.isInteger(t)?t.toFixed(0):t.toFixed(1)}function h(e){let t=e.total_students,n=e.rank,a=e.grade_level;if(!t||!n||!a)return null;let r=e.year<=2?o:u,i=r.length-1,l=r.map(e=>0===e?0:Math.floor(t*e/100)),s=Math.min(Math.max(a,1),i),c=l[s-1]+1,d=l[s],x=Math.max(1,s-1),m=Math.min(i,s+1),h=l[x-1],p=l[m]-h,f=[];for(let e=x;e<=m;e++){let t=l[e-1]+1,n=l[e];f.push({grade:e,startPct:p>0?(l[e-1]-h)/p*100:0,endPct:p>0?(l[e]-h)/p*100:100,count:n-t+1,rankStart:t,rankEnd:n})}let g=null,b=null;s>1&&(g=n-l[s-1],b=s-1);let v=null,y=null;return s<i&&(v=l[s]+1-n,y=s+1),{currentGrade:s,rank:n,totalStudents:t,currentStart:c,currentEnd:d,studentPosition:Math.max(0,Math.min(1,p>0?(n-.5-h)/p:.5)),segments:f,displayMin:x,displayMax:m,ranksToUp:g,upGrade:b,ranksToDown:v,downGrade:y}}},61858:function(e,t,n){n.d(t,{Bz:function(){return a},RQ:function(){return r},f6:function(){return i}});let a=e=>new Date().getFullYear()-e+1,r=e=>e>=2025?"5-GRADE":"9-GRADE",i=e=>"5-GRADE"===e?{domain:[1,6],ticks:[1,2,3,4,5],maxGrade:5}:{domain:[1,9],ticks:[1,2,3,4,5,6,7,8,9],maxGrade:9}}}]);

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.