PageSourceSearch

https://naemo.ai/_next/static/chunks/9620.3fdac2941923fb11.js

js naemo.ai collected 2026-09-24 14:32:09 UTC 21,840 bytes, 1 lines download raw bytes

1(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[9620],{39620:function(e,s,l){"use strict";l.r(s),l.d(s,{default:function(){return L}});var n=l(57437),r=l(2265),t=l(54887),a=l(32489),i=l(17625),c=l(35398),d=l(75751);l(49396);let o=e=>null===e?"-":e.toFixed(1),h=e=>{if(null===e)return"-";let s=Math.round(10*e)/10;return Number.isInteger(s)?String(s):s.toFixed(1)};function x(e){let s=[];return e.grade&&s.push("".concat(e.grade,"학년")),e.classNum&&s.push("".concat(e.classNum,"반")),e.number&&s.push("".concat(e.number,"번")),s.join(" ")}function u(e){let{delta:s}=e;return null===s.change||null===s.previous?(0,n.jsx)("p",{className:"gr-glance-note",children:"비교할 직전 시험이 아직 없어요"}):"same"===s.change?(0,n.jsxs)("p",{className:"gr-glance-note",children:["직전 시험 ",o(s.previous),"등급과 같아요"]}):(0,n.jsxs)("p",{className:"gr-glance-note",children:["직전 시험 ",o(s.previous),"등급보다"," ","up"===s.change?(0,n.jsxs)("span",{className:"is-up",children:[o(s.diff)," 올랐어요 ▲"]}):(0,n.jsxs)("span",{className:"is-down",children:[o(s.diff)," 내려갔어요 ▼"]})]})}function m(e){let{strongest:s,weakest:l,noun:r}=e;return s&&l?(0,n.jsxs)("dl",{className:"gr-picks",children:[(0,n.jsxs)("div",{children:[(0,n.jsxs)("dt",{children:["가장 좋은 ",r]}),(0,n.jsxs)("dd",{children:[s.subject," ",o(s.value)]})]}),(0,n.jsxs)("div",{children:[(0,n.jsxs)("dt",{children:["가장 아쉬운 ",r]}),(0,n.jsxs)("dd",{children:[l.subject," ",o(l.value)]})]})]}):null}function j(e){let{primary:s,secondary:l}=e;return(0,n.jsxs)("div",{className:"gr-radar-legend",children:[(0,n.jsxs)("p",{children:[(0,n.jsxs)("span",{children:[(0,n.jsx)("i",{className:"is-primary"}),s]}),l&&(0,n.jsxs)("span",{children:[(0,n.jsx)("i",{className:"is-secondary"}),l]})]}),(0,n.jsx)("p",{className:"gr-radar-hint",children:"바깥쪽일수록 좋은 등급"})]})}function g(e){var s;let{model:l,qrUrl:r}=e,{student:t,summary:a,radar:i,naesin:g,mock:p}=l,f=x(t),v=null==p?void 0:p.exams[p.exams.length-1];return(0,n.jsxs)("section",{className:"gr-sheet gr-page",children:[(0,n.jsxs)("header",{className:"gr-head",children:[(0,n.jsxs)("div",{children:[(0,n.jsxs)("p",{className:"gr-head-kicker",children:[(0,n.jsx)("b",{children:"성적 분석 자료"}),l.issuedLabel," 기준"]}),(0,n.jsxs)("h1",{className:"gr-head-name",children:[(0,n.jsx)("strong",{children:t.name}),f&&(0,n.jsx)("span",{children:f})]})]}),r&&(0,n.jsxs)("div",{className:"gr-qr",children:[(0,n.jsx)(c.t,{value:r,size:128,level:"M",fgColor:"#14171c",bgColor:"#ffffff"}),(0,n.jsx)("span",{children:"휴대폰으로 성적 보기"})]})]}),(0,n.jsxs)("div",{className:"gr-glance",children:[(0,n.jsxs)("div",{className:"gr-glance-item",children:[(0,n.jsxs)("div",{className:"gr-glance-figure",children:[(0,n.jsxs)("p",{className:"gr-glance-label",children:[(0,n.jsx)("b",{children:"내신"}),"종합 평균"]}),a.naesin?(0,n.jsxs)(n.Fragment,{children:[(0,n.jsxs)("p",{className:"gr-glance-value",children:[(0,n.jsx)("strong",{children:o(a.naesin.overall)}),(0,n.jsx)("span",{children:"등급"})]}),(0,n.jsxs)("p",{className:"gr-glance-note",children:[a.naesin.semesterCount,"개 학기 평균"]}),(0,n.jsxs)("p",{className:"gr-glance-note",children:["최근 학기 ",o(a.naesin.latestValue),"등급"]}),(0,n.jsx)(m,{strongest:a.naesin.strongest,weakest:a.naesin.weakest,noun:"교과"})]}):(0,n.jsx)("p",{className:"gr-glance-empty",children:"등록된 내신 성적이 없어요"})]}),i.naesin&&(0,n.jsxs)("figure",{className:"gr-glance-radar",children:[(0,n.jsx)(d.Kf,{axes:i.naesin,maxGrade:l.naesinScale,label:"교과별 내신 등급"}),(0,n.jsx)(j,{primary:"교과별 종합 평균",secondary:i.naesin.some(e=>null!==e.secondary)?"최근 학기":null})]})]}),(0,n.jsxs)("div",{className:"gr-glance-item",children:[(0,n.jsxs)("div",{className:"gr-glance-figure",children:[(0,n.jsxs)("p",{className:"gr-glance-label",children:[(0,n.jsx)("b",{children:"모의고사"}),"최근 평균"]}),a.mock?(0,n.jsxs)(n.Fragment,{children:[(0,n.jsxs)("p",{className:"gr-glance-value",children:[(0,n.jsx)("strong",{children:o(a.mock.value)}),(0,n.jsx)("span",{children:"등급"})]}),(0,n.jsxs)("p",{className:"gr-glance-note",children:[a.mock.peri
1odLabel," 모의고사"]}),(0,n.jsx)(u,{delta:a.mock}),(0,n.jsx)(m,{strongest:a.mock.strongest,weakest:a.mock.weakest,noun:"과목"})]}):(0,n.jsx)("p",{className:"gr-glance-empty",children:"등록된 모의고사 성적이 없어요"})]}),i.mock&&(0,n.jsxs)("figure",{className:"gr-glance-radar",children:[(0,n.jsx)(d.Kf,{axes:i.mock,maxGrade:9,label:"과목별 모의고사 등급"}),(0,n.jsx)(j,{primary:"최근 시험",secondary:i.mock.some(e=>null!==e.secondary)?"최근 ".concat(null!==(s=null==p?void 0:p.exams.length)&&void 0!==s?s:0,"회 평균"):null})]})]})]}),g&&(0,n.jsxs)("section",{className:"gr-section",children:[(0,n.jsxs)("div",{className:"gr-section-head",children:[(0,n.jsx)("h2",{children:"내신"}),(0,n.jsx)("p",{children:"국어\xb7수학\xb7영어\xb7사회\xb7과학 교과 등급 평균"})]}),(0,n.jsxs)("div",{className:"gr-section-body",children:[(0,n.jsx)(d.pQ,{title:"학기별 평균 등급",maxGrade:l.naesinScale,points:g.columns.map((e,s)=>({label:e.shortLabel,value:g.average[s]}))}),(0,n.jsxs)("table",{className:"gr-table",children:[(0,n.jsx)("colgroup",{children:(0,n.jsx)("col",{style:{width:"17mm"}})}),(0,n.jsx)("thead",{children:(0,n.jsxs)("tr",{children:[(0,n.jsx)("th",{className:"gr-col-lead",children:"교과"}),g.columns.map(e=>{let[s,l]=e.key.split("-");return(0,n.jsxs)("th",{children:[s,"학년 ",l,"학기",e.midtermOnly&&(0,n.jsx)("small",{children:"중간고사"})]},e.key)})]})}),(0,n.jsxs)("tbody",{children:[g.rows.map(e=>(0,n.jsxs)("tr",{children:[(0,n.jsx)("th",{scope:"row",children:e.subject}),e.values.map((e,s)=>(0,n.jsx)("td",{className:null===e?"is-empty":void 0,children:h(e)},g.columns[s].key))]},e.subject)),(0,n.jsxs)("tr",{className:"gr-row-avg",children:[(0,n.jsx)("th",{scope:"row",children:"평균"}),g.average.map((e,s)=>(0,n.jsx)("td",{children:o(e)},g.columns[s].key))]})]})]})]})]}),p&&(0,n.jsxs)("section",{className:"gr-section",children:[(0,n.jsxs)("div",{className:"gr-section-head",children:[(0,n.jsx)("h2",{children:"모의고사"}),(0,n.jsx)("p",{children:"과목별 등급 \xb7 평균은 국어\xb7수학\xb7영어와 탐구 평균"})]}),(0,n.jsxs)("div",{className:"gr-section-body",children:[(0,n.jsx)(d.pQ,{title:"최근 ".concat(p.exams.length,"회 평균 등급"),maxGrade:9,points:p.exams.map(e=>({label:e.shortLabel,value:e.average}))}),(0,n.jsxs)("table",{className:"gr-table gr-table--mock",children:[(0,n.jsx)("colgroup",{children:(0,n.jsx)("col",{style:{width:"21mm"}})}),(0,n.jsx)("thead",{children:(0,n.jsxs)("tr",{children:[(0,n.jsx)("th",{className:"gr-col-lead",children:"시험"}),p.columns.map((e,s)=>{var l;return(0,n.jsxs)("th",{children:[e.label,(null==v?void 0:null===(l=v.cells[s])||void 0===l?void 0:l.detail)&&(0,n.jsx)("small",{children:v.cells[s].detail})]},e.key)}),(0,n.jsx)("th",{className:"gr-col-avg",children:"평균"})]})}),(0,n.jsx)("tbody",{children:p.exams.map((e,s)=>(0,n.jsxs)("tr",{className:s===p.exams.length-1?"is-latest":void 0,children:[(0,n.jsx)("th",{scope:"row",children:e.label}),e.cells.map((e,s)=>{var l;return(0,n.jsx)("td",{className:(null==e?void 0:e.grade)==null?"is-empty":void 0,children:null!==(l=null==e?void 0:e.grade)&&void 0!==l?l:"-"},p.columns[s].key)}),(0,n.jsx)("td",{className:"gr-col-avg",children:o(e.average)})]},e.key))})]})]})]}),(0,n.jsxs)("footer",{className:"gr-foot",children:[(0,n.jsx)("span",{children:"평균 등급은 교과 등급의 단순 평균(종합 평균은 학기 평균의 평균)이라 학교에서 학점을 반영해 계산한 값과 다를 수 있어요."}),(0,n.jsx)("span",{children:"과목별 상세 성적은 다음 쪽에 이어져요"})]})]})}function p(e){let{position:s}=e;return(0,n.jsxs)("div",{className:"gr-position",children:[(0,n.jsx)(d.NX,{position:s}),(0,n.jsxs)("p",{children:[null!==s.ranksToUp&&null!==s.upGrade&&(0,n.jsxs)(n.Fragment,{children:[(0,n.jsxs)("b",{children:[Math.max(s.ranksToUp,1),"등"]})," 오르면 ",s.upGrade,"등급",(0,n.jsx)("br",{})]}),null!==s.ranksToDown&&null!==s.downGrade&&(0,n.jsxs)(n.Fragment,{children:[(0,n.jsxs)("b",{children:[Math.max(s.ranksToDown,1),"등"]})," 내려가면 ",s.downGrade,"등급"]})]})]})}function f(e){let{result:s}=e;return(0,n.jsxs)("div",{className:"gr-final-result",children:[(0,n.jsx)("b",{children:s.label}),"same"===s.change&&(0,n.jsx)("span",{children:"같아요"}),"up"===s.change&&(0,n.jsxs)("span",{className:"is-up",children:["▲ ",s.diff,"등급 올랐어요"]}),"down"===s.change&&(0,n.jsxs)("span",{className:"is-down",children:["▼ ",s.diff,"등급 내려갔어요"]})]})}let v={none:"기말고사 전 중간고사 결과",some:"일부 과목은 학기말 성적이 들어왔어요",all:"학기말 성적으로 바뀐 기록"},b={none:"등급 구간 안의 위치",some:"등급 구간 안의 위치 \xb7 학기말 등급",all:"학기말 등급"};function y(e){let{model:s}=e,l=x(s.student);return(0,n.jsx)("div",{className:"gr-sheet gr-sheet--flow",children:(0,n.jsxs)("table",{className:"gr-flow",children:[(0,n.jsx)("thead",{children:(0,n.jsx)("tr",{children:(0,n.jsx)("td",{children:(0,n.jsxs)("div",{className:"gr-flow-head",children:[(0,n.jsxs)("span",{children:[(0,n.jsx)("b",{children:"과목별 상세 성적"}),s.student.name,l&&" \xb7 ".concat(l)]}),(0,n.jsxs)("span",{children:[s.issuedLabel," 기준"]})]})})})}),(0,n.jsx)("tfoot",{children:(0,n.jsx)("tr",{children:(0,n.jsx)("td",{children:(0,n.jsx)("div",{className:"gr-flow-foot"})})})}),(0,n.jsxs)("tbody",{children:[0===s.details.length&&(0,n.jsx)("tr",{children:(0,n.jsx)("td",{children:(0,n.jsx)("p",{className:"gr-detail-empty",children:"등록된 내신 성적이 없어요."})})}),s.details.map(e=>{let s="midterm"===e.examType,l=s?"all"===e.superseded?"gr-table gr-table--detail gr-table--superseded":"gr-table gr-table--detail gr-table--midterm":"gr-table gr-table--detail";return(0,n.jsx)("tr",{children:(0,n.jsx)("td",{children:(0,n.jsxs)("div",{className:"gr-block",children:[(0,n.jsxs)("h3",{children:[e.title,s&&(0,n.jsx)("span",{children:v[e.superseded]})]}),(0,n.jsxs)("table",{className:l,children:[s?(0,n.jsxs)("colgroup",{children:[(0,n.jsx)("col",{style:{width:"38mm"}}),(0,n.jsx)("col",{style:{width:"18mm"}}),(0,n.jsx)("col",{style:{width:"11mm"}}),(0,n.jsx)("col",{style:{width:"13mm"}}),(0,n.jsx)("col",{style:{width:"13mm"}}),(0,n.jsx)("col",{})]}):(0,n.jsxs)("colgroup",{children:[(0,n.jsx)("col",{style:{width:"58mm"}}),(0,n.jsx)("col",{}),(0,n.jsx)("col",{}),(0,n.jsx)("col",{}),(0,n.jsx)("col",{}),(0,n.jsx)("col",{})]}),(0,n.jsx)("thead",{children:(0,n.jsxs)("tr",{children:[(0,n.jsx)("th",{className:"gr-col-lead",children:"과목"}),s?(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)("th",{children:"전교 석차"}),(0,n.jsx)("th",{children:"등급"}),(0,n.jsx)("th",{children:"백분위"}),(0,n.jsx)("th",{children:"원점수"}),(0,n.jsx)("th",{className:"gr-col-lead",children:b[e.superseded]})]}):(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)("th",{children:"학점"}),(0,n.jsx)("th",{children:"등급"}),(0,n.jsx)("th",{children:"수강자 수"}),(0,n.jsx)("th",{children:"원점수"}),(0,n.jsx)("th",{children:"성취도"})]})]})}),(0,n.jsx)("tbody",{children:e.rows.map(e=>{var l,r,t,a,i;return(0,n.jsxs)("tr",{children:[(0,n.jsx)("th",{scope:"row",children:e.subject}),s?(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)("td",{children:e.rank&&e.totalStudents?"".concat(e.rank," / ").concat(e.totalStudents):"-"}),(0,n.jsx)("td",{className:"is-grade",children:null!==(l=e.gradeLevel)&&void 0!==l?l:"-"}),(0,n.jsx)("td",{children:e.percentileLabel}),(0,n.jsx)("td",{children:e.scoreLabel}),(0,n.jsx)("td",{className:"gr-col-lead",children:e.finalResult?(0,n.jsx)(f,{result:e.finalResult}):e.position?(0,n.jsx)(p,{position:e.position}):"-"})]}):(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)("td",{children:null!==(r=e.credits)&&void 0!==r?r:"-"}),(0,n.jsx)("td",{className:"is-grade",children:null!==(t=e.gradeLevel)&&void 0!==t?t:"-"}),(0,n.jsx)("td",{children:null!==(a=e.totalStudents)&&void 0!==a?a:"-"}),(0,n.jsx)("td",{children:e.scoreLabel}),(0,n.jsx)("td",{children:null!==(i=e.achievement)&&void 0!==i?i:"-"})]})]},e.id)})})]})]})})},e.key)})]})]})})}function N(e){let{model:s,qrUrl:l,variant:r}=e;return(0,n.jsxs)("div",{className:"preview"===r?"grade-report grade-report--preview":"grade-report",children:[(0,n.jsx)(g,{model:s,qrUrl:l}),(0,n.jsx)(y,{model:s})]})}let k=new Map;async function w(e){var s,l;let n=await fetch("/api/admin/grade-links");if(!n.ok)throw Error("grade-links ".concat(n.status));let r=(null!==(s=(await n.json()).links)&&void 0!==s?s:[]).filter(e=>e.isActive).sort((e,s)=>new Date(s.createdAt).getTime()-new Date(e.createdAt).getTime()).flatMap(e=>e.studentPins).find(s=>s.studentId===e);return null!==(l=null==r?void 0:r.token)&&void 0!==l?l:null}async function M(e,s){let l=await w(e);if(l)return l;let n=await fetch("/api/admin/grade-links",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({label:"".concat(s," (").concat(new Date().getFullYear(),")"),studentIds:[e]})});if(!n.ok)throw Error("grade-links create ".concat(n.status));return w(e)}function L(e){let{model:s,studentId:l,isGuest:c,onClose:d}=e,o=function(e){let{studentId:s,studentName:l,enabled:n}=e,[t,a]=(0,r.useState)({url:null,status:"idle"});return(0,r.useEffect)(()=>
1{if(!n||!s){a({url:null,status:"idle"});return}let e=!1;a({url:null,status:"loading"});let r=k.get(s);return r||(r=M(s,l),k.set(s,r),r.catch(()=>void 0).finally(()=>k.delete(s))),r.then(s=>{if(!e){if(!s){a({url:null,status:"error"});return}a({url:"".concat(window.location.origin,"/report/").concat(s),status:"ready"})}}).catch(()=>{e||a({url:null,status:"error"})}),()=>{e=!0}},[s,l,n]),t}({studentId:l,studentName:s.student.name,enabled:!c}),h=(0,r.useRef)(null),[x,u]=(0,r.useState)(.8),[m,j]=(0,r.useState)(!1);(0,r.useEffect)(()=>j(!0),[]),(0,r.useLayoutEffect)(()=>{let e=h.current;if(!e)return;let s=()=>u(Math.min(1,Math.max(.4,(e.clientWidth-64)/794)));s();let l=new ResizeObserver(s);return l.observe(e),()=>l.disconnect()},[]),(0,r.useEffect)(()=>{let e=e=>{"Escape"===e.key&&d()};return window.addEventListener("keydown",e),()=>window.removeEventListener("keydown",e)},[d]),(0,r.useEffect)(()=>{let e=document.title,s=()=>{e=document.title,document.title="",document.documentElement.classList.add("gr-printing")},l=()=>{document.title=e,document.documentElement.classList.remove("gr-printing")};return window.addEventListener("beforeprint",s),window.addEventListener("afterprint",l),()=>{window.removeEventListener("beforeprint",s),window.removeEventListener("afterprint",l),document.documentElement.classList.remove("gr-printing")}},[]);let g=(0,r.useCallback)(()=>window.print(),[]),p="loading"===o.status,f=c?"둘러보기 중에는 휴대폰 성적표 QR이 빠져요":p?"휴대폰 성적표 QR을 준비하고 있어요":"error"===o.status?"QR을 만들지 못해 QR 없이 인쇄돼요":"오른쪽 위 QR로 학생이 휴대폰에서 성적을 볼 수 있어요";return(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)("div",{className:"fixed inset-0 z-[130] flex flex-col bg-zinc-950/40 backdrop-blur-[2px]",role:"dialog","aria-modal":"true","aria-label":"성적 리포트 미리보기",children:(0,n.jsxs)("div",{className:"m-4 md:m-6 flex-1 min-h-0 flex flex-col rounded-2xl overflow-hidden bg-white dark:bg-[#18181b] border border-zinc-200 dark:border-white/10 shadow-2xl",children:[(0,n.jsxs)("div",{className:"flex items-center justify-between gap-4 px-5 h-14 border-b border-zinc-200 dark:border-white/10 shrink-0",children:[(0,n.jsxs)("div",{className:"min-w-0",children:[(0,n.jsx)("h2",{className:"text-sm font-semibold text-zinc-900 dark:text-zinc-100",children:"성적 리포트 미리보기"}),(0,n.jsx)("p",{className:"text-xs text-zinc-500 dark:text-zinc-400 truncate",children:f})]}),(0,n.jsxs)("div",{className:"flex items-center gap-2 shrink-0",children:[(0,n.jsxs)("button",{type:"button",onClick:d,className:"h-9 px-3 rounded-lg text-sm font-medium text-zinc-600 dark:text-zinc-300 hover:bg-zinc-100 dark:hover:bg-white/5 transition-colors inline-flex items-center gap-1.5",children:[(0,n.jsx)(a.Z,{size:15}),"닫기"]}),(0,n.jsxs)("button",{type:"button",onClick:g,disabled:p,className:"btn-primary-solid h-9 px-4 rounded-lg text-sm font-semibold inline-flex items-center gap-1.5 transition-colors",children:[(0,n.jsx)(i.Z,{size:15}),"인쇄"]})]})]}),(0,n.jsx)("div",{ref:h,className:"flex-1 min-h-0 overflow-auto custom-scrollbar bg-zinc-100 dark:bg-[#0f0f11]",children:(0,n.jsx)("div",{className:"py-8 flex justify-center",children:(0,n.jsx)("div",{style:{zoom:x},children:(0,n.jsx)(N,{model:s,qrUrl:o.url,variant:"preview"})})})})]})}),m&&(0,t.createPortal)((0,n.jsx)("div",{className:"grade-report-print",children:(0,n.jsx)(N,{model:s,qrUrl:o.url,variant:"print"})}),document.body)]})}},75751:function(e,s,l){"use strict";l.d(s,{Kf:function(){return o},NX:function(){return h},lh:function(){return c},pQ:function(){return d}});var n=l(57437);l(2265);let r="#14171c",t="#8a919b",a="#1f3a6e",i=e=>e.toFixed(1);function c(e,s){let l=e.length?Math.max(...e):s;return s<=5?l>s?Math.min(9,Math.ceil(l)):s:Math.min(s,Math.max(5,Math.ceil(l)+1))}function d(e){let{points:s,maxGrade:l,title:d}=e,o=c(s.map(e=>e.value).filter(e=>null!==e),l),h=e=>30+(1===s.length?95:190*e/(s.length-1)),x=e=>18+102*(Math.min(e,o)-1)/(o-1),u=o<=6?Array.from({length:o},(e,s)=>s+1):Array.from({length:o},(e,s)=>s+1).filter(e=>e%2==1||e===o),m=[],j=[];
1return s.forEach((e,s)=>{if(null===e.value){j.length>1&&m.push(j.join(" ")),j=[];return}j.push("".concat(h(s).toFixed(1),",").concat(x(e.value).toFixed(1)))}),j.length>1&&m.push(j.join(" ")),(0,n.jsxs)("figure",{style:{margin:0},children:[(0,n.jsx)("p",{className:"gr-chart-title",children:d}),(0,n.jsxs)("svg",{className:"gr-chart",viewBox:"0 0 ".concat(240," ").concat(140),role:"img","aria-label":d,children:[u.map(e=>(0,n.jsxs)("g",{children:[(0,n.jsx)("line",{x1:16,x2:234,y1:x(e),y2:x(e),stroke:1===e?"#dcdfe4":"#eceef1",strokeWidth:.8}),(0,n.jsx)("text",{x:11,y:x(e)+3,fontSize:8,fill:t,textAnchor:"end",children:e})]},e)),m.map((e,s)=>(0,n.jsx)("polyline",{points:e,fill:"none",stroke:a,strokeWidth:1.8,strokeLinejoin:"round",strokeLinecap:"round"},s)),s.map((e,l)=>(0,n.jsxs)("g",{children:[(0,n.jsx)("text",{x:h(l),y:135,fontSize:8,fill:"#4a505a",textAnchor:"middle",children:e.label}),null!==e.value&&(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)("circle",{cx:h(l),cy:x(e.value),r:3.1,fill:l===s.length-1?a:"#ffffff",stroke:a,strokeWidth:1.5}),(0,n.jsx)("text",{x:h(l),y:x(e.value)-6.5,fontSize:8.5,fontWeight:650,fill:r,textAnchor:"middle",paintOrder:"stroke",stroke:"#ffffff",strokeWidth:3,children:i(e.value)})]})]},"".concat(e.label,"-").concat(l)))]})]})}function o(e){var s,l,r,t,a,d;let{axes:o,maxGrade:h,label:x,palette:u}=e,m=null!==(s=null==u?void 0:u.ink)&&void 0!==s?s:"#14171c",j=null!==(l=null==u?void 0:u.secondary)&&void 0!==l?l:"#4a505a",g=null!==(r=null==u?void 0:u.muted)&&void 0!==r?r:"#8a919b",p=null!==(t=null==u?void 0:u.rule)&&void 0!==t?t:"#dcdfe4",f=null!==(a=null==u?void 0:u.softRule)&&void 0!==a?a:"#eceef1",v=null!==(d=null==u?void 0:u.accent)&&void 0!==d?d:"#1f3a6e",b=c(o.flatMap(e=>[e.primary,e.secondary]).filter(e=>null!==e),h),y=e=>58*(.14+.86*(b-Math.min(Math.max(e,1),b))/(b-1)),N=e=>-Math.PI/2+2*Math.PI*e/o.length,k=(e,s)=>[125+s*Math.cos(N(e)),94+s*Math.sin(N(e))],w=e=>e.map((e,s)=>null===e?null:k(s,y(e))).filter(e=>null!==e),M=e=>e.map(e=>{let[s,l]=e;return"".concat(s.toFixed(1),",").concat(l.toFixed(1))}).join(" "),L=Array.from({length:b},(e,s)=>s+1).filter(e=>b<=6||e%2==1||e===b),z=w(o.map(e=>e.primary)),E=w(o.map(e=>e.secondary));return(0,n.jsxs)("svg",{className:"gr-radar",viewBox:"0 0 ".concat(250," ").concat(178),role:"img","aria-label":x,children:[L.map(e=>(0,n.jsx)("polygon",{points:M(o.map((s,l)=>k(l,y(e)))),fill:"none",stroke:1===e?p:f,strokeWidth:.8},e)),o.map((e,s)=>{let[l,r]=k(s,58);return(0,n.jsx)("line",{x1:125,y1:94,x2:l,y2:r,stroke:f,strokeWidth:.8},s)}),z.length>=3&&(0,n.jsx)("polygon",{points:M(z),fill:v,fillOpacity:.13,stroke:v,strokeWidth:1.8,strokeLinejoin:"round"}),E.length>=3&&(0,n.jsx)("polygon",{points:M(E),fill:"none",stroke:m,strokeWidth:1.1,strokeDasharray:"3.5 2.5",strokeLinejoin:"round"}),o.map((e,s)=>{if(null===e.primary)return null;let[l,r]=k(s,y(e.primary));return(0,n.jsx)("circle",{cx:l,cy:r,r:2.8,fill:v},"p".concat(s))}),o.map((e,s)=>{let[l,r]=k(s,68),t=Math.cos(N(s)),a=t>.3?"start":t<-.3?"end":"middle",c=-.9>Math.sin(N(s)),d=Math.sin(N(s))>.5,o=c?r-13:d?r+6:r-2;return(0,n.jsxs)("g",{children:[(0,n.jsx)("text",{x:l,y:o,fontSize:11,fill:j,textAnchor:a,children:e.label}),(0,n.jsx)("text",{x:l,y:o+13.5,fontSize:13,fontWeight:700,fill:null===e.primary?g:m,textAnchor:a,children:null===e.primary?"-":i(e.primary)})]},"l".concat(s))})]})}function h(e){let{position:s}=e,l=e=>120*e/100,i=Math.min(Math.max(120*s.studentPosition,1.5),118.5);return(0,n.jsxs)("svg",{viewBox:"0 0 ".concat(120," ").concat(27),"aria-hidden":"true",children:[s.segments.map(e=>{let i=e.grade===s.currentGrade;return(0,n.jsxs)("g",{children:[(0,n.jsx)("rect",{x:l(e.startPct)+.6,y:7,width:Math.max(l(e.endPct-e.startPct)-1.2,0),height:7,rx:1,fill:i?"#e6ebf3":"#f1f2f4",stroke:i?a:"none",strokeWidth:i?.8:0}),(0,n.jsxs)("text",{x:l((e.startPct+e.endPct)/2),y:26,fontSize:7.5,fill:i?r:t,fontWeight:i?700:400,textAnchor:"middle",children:[e.grade,"등급"]})]},e.grade)}),(0,n.jsx)("line",{x1:i,x2:i,y1:5,y2:15.5,stroke:r,strokeWidth:1.4}),(0,n.jsx)("path",{d:"M ".concat(i-3.2," ").concat(.5," L ").concat(i+3.2," ").concat(.5," L ").concat(i," ").concat(5.2," Z"),fill:r})]})}},49396:function(){}}]);

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.