1"use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[9531],{69531:function(e,t,n){n.r(t),n.d(t,{default:function(){return K}});var r=n(57437),s=n(71666),a=n(90982),l=n(78529),i=n(28691),o=n(36013),c=n(2265),d=n(27526),u=n(54696),x=n(46078),m=n(86909),h=n.n(m),b=n(67920),p=n(4908),f=n(83008),v=n(25997),g=n(29804),z=n(80726),w=n(9244);async function k(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:z.hI;if((0,w.cz)()){let{Browser:t}=await n.e(9090).then(n.bind(n,49090));await t.open({url:e});return}window.open(e,"_blank","noopener,noreferrer")}function y(){return(0,r.jsxs)("div",{"data-testid":"native-roster-setup-banner",className:"mx-3 mt-3 md:mx-0 md:mt-0 mb-3 rounded-2xl border border-zinc-200 dark:border-zinc-800 bg-white dark:bg-zinc-900 px-4 py-3 flex items-center gap-3",children:[(0,r.jsx)("p",{className:"flex-1 min-w-0 text-[13px] leading-5 text-zinc-600 dark:text-zinc-300",children:"íê¸\xb7ëª
ë¨ì PC/ì¹ìì ì¤ì "}),(0,r.jsx)("button",{type:"button","data-testid":"native-roster-setup-cta",onClick:()=>{k(z.hI)},className:"shrink-0 h-9 px-3 rounded-xl bg-[#007AFF] dark:bg-[#2883DE] text-white text-[13px] font-medium hover:opacity-90 transition-opacity",children:"ì¹ìì ì¤ì í기"})]})}function j(e){let{onStart:t,phone:n=!1}=e;return(0,r.jsxs)("div",{"data-testid":"web-roster-setup-banner",className:"mx-3 mt-3 md:mx-0 md:mt-0 mb-3 rounded-2xl border border-zinc-200 dark:border-zinc-800 bg-white dark:bg-zinc-900 px-4 py-3 flex flex-wrap items-center gap-3",children:[(0,r.jsxs)("div",{className:"flex-1 min-w-[180px]",children:[(0,r.jsx)("p",{className:"text-[14px] font-semibold leading-5 text-zinc-900 dark:text-zinc-100",children:"ìì§ ë±ë¡ë íìì´ ìì´ì"}),(0,r.jsx)("p",{className:"mt-0.5 text-[13px] leading-5 text-zinc-500 dark:text-zinc-400",children:n?"PCìì ë´ëª¨ì ë¡ê·¸ì¸íë©´ ì°ìë ëª
ë¨ íì¼ì ë°ë¡ ì¬ë¦´ ì ìì´ì.":"ì°ìë ëª
ë¨ íì¼ì ì¬ë¦¬ë©´ ì¶ê²°\xb7ìë´\xb7ì±ì ì ë°ë¡ ì¸ ì ìì´ì."})]}),(0,r.jsx)("button",{type:"button","data-testid":"web-roster-setup-cta",onClick:t,className:"btn-primary-solid shrink-0 h-9 px-4 rounded-xl text-[13px] font-semibold",children:n?"í°ìì ë±ë¡í기":"íì ëª
ë¨ ë±ë¡í기"})]})}var N=n(39561),C=n(15563),S=n(21652),E=n(58819),L=n(32489),D=n(45007),M=n(60850),R=n(79205);let Z=(0,R.Z)("UtensilsCrossed",[["path",{d:"m16 2-2.3 2.3a3 3 0 0 0 0 4.2l1.8 1.8a3 3 0 0 0 4.2 0L22 8",key:"n7qcjb"}],["path",{d:"M15 15 3.3 3.3a4.2 4.2 0 0 0 0 6l7.3 7.3c.7.7 2 .7 2.8 0L15 15Zm0 0 7 7",key:"d0u48b"}],["path",{d:"m2.1 21.8 6.4-6.3",key:"yn04lh"}],["path",{d:"m19 5-7 7",key:"194lzd"}]]),I=(0,R.Z)("NotebookPen",[["path",{d:"M13.4 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2v-7.4",key:"re6nr2"}],["path",{d:"M2 6h4",key:"aawbzj"}],["path",{d:"M2 10h4",key:"l0bgd4"}],["path",{d:"M2 14h4",key:"1gsvsf"}],["path",{d:"M2 18h4",key:"1bu2t1"}],["path",{d:"M18.4 2.6a2.17 2.17 0 0 1 3 3L16 11l-4 1 1-4Z",key:"1dba1m"}]]);var W=n(73247),A=n(51817),F=n(92934);function T(e){let{isOpen:t,onClose:n,onWantSchedule:s}=e,a=(0,c.useRef)(null),[l,i]=(0,c.useState)(""),[o,d]=(0,c.useState)([]),[u,x]=(0,c.useState)(null),[m,h]=(0,c.useState)(!1),[b,p]=(0,c.useState)(!1),[f,v]=(0,c.useState)(null),[g,z]=(0,c.useState)(null),[w,k]=(0,c.useState)(!1),y=parseInt(new Date().toLocaleString("en-US",{timeZone:"Asia/Seoul",hour:"2-digit",hour12:!1}))>=14?"3":"2";(0,c.useEffect)(()=>{t&&(i(""),d([]),x(null),v(null),z(null),k(!1),setTimeout(()=>{var e;return null===(e=a.current)||void 0===e?void 0:e.focus()},80))},[t]),(0,c.useEffect)(()=>{if(!t)return;let e=e=>{"Escape"===e.key&&n()};return window.addEventListener("keydown",e),()=>window.removeEventListener("keydown",e)},[t,n]),(0,c.useEffect)(()=>{if(!t||g)return;let e=l.trim();if(e.length<2||u&&e===u.schoolName){d([]);return}let n=setTimeout(async()=>{h(!0);try{let t=await (0,M.R2)(e);d(t.success?t.data:[])}catch(e){d([])}finally{h(!1)}},300);return()=>clearTimeout(n)},[t,l,u,g]);let j=e=>{x(e),i(e.schoolName),d([]),v(null)},N=async()=>{if(u){p(!0),v(null);try{if(!(await (0,M.fk)(u.schoolCode,u.officeCode)).success){v("íêµ ì ì¥ì ì¤í¨íì´ì. ë¤ì ìëí´ ì£¼ì¸ì.");return}window.dispatchEvent(new CustomEvent("school-settings-updated")),k(!0);
1let e=await (0,M.mK)(u.officeCode,u.schoolCode,y);z(e.success?e.data:[e.error||"ê¸ì ì 보를 ë¶ë¬ì¤ì§ 못íì´ì."])}catch(e){v("ì¤ë¥ê° ë°ìíì´ì. ë¤ì ìëí´ ì£¼ì¸ì.")}finally{p(!1),k(!1)}}};if(!t)return null;let C=null!==g||w;return(0,r.jsx)("div",{className:"modal-viewport z-[120000] flex items-center justify-center bg-black/40 p-4 backdrop-blur-sm dark:bg-black/60",onClick:n,children:(0,r.jsxs)("div",{className:"w-full max-w-sm overflow-hidden rounded-2xl border border-zinc-200 bg-white shadow-2xl animate-in zoom-in-95 duration-200 dark:border-zinc-800 dark:bg-zinc-900",onClick:e=>e.stopPropagation(),children:[(0,r.jsxs)("div",{className:"flex items-start justify-between px-7 pb-5 pt-7",children:[(0,r.jsxs)("div",{children:[(0,r.jsxs)("div",{className:"flex items-center gap-2",children:[C?(0,r.jsx)(Z,{size:18,className:"text-zinc-900 dark:text-zinc-100"}):(0,r.jsx)(I,{size:18,className:"text-zinc-900 dark:text-zinc-100"}),(0,r.jsx)("h2",{className:"text-[18px] font-black tracking-tight text-zinc-900 dark:text-white",children:C?"ì¤ëì ê¸ì":"íêµ ë±ë¡"})]}),(0,r.jsx)("p",{className:"mt-1 text-[13px] text-zinc-500 dark:text-zinc-400",children:C?null==u?void 0:u.schoolName:"ë§¤ì¼ ê¸ì ì 보를 ë³´ì¬ëë ¤ì"})]}),(0,r.jsx)("button",{onClick:n,"aria-label":"ë«ê¸°",className:"rounded-md p-1 text-zinc-400 transition-colors hover:text-zinc-600 dark:hover:text-zinc-300",children:(0,r.jsx)(L.Z,{size:18})})]}),(0,r.jsx)("div",{className:"space-y-3 px-7 pb-7",children:C?(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)("div",{className:"min-h-[120px] rounded-2xl border border-zinc-200 bg-zinc-50 p-4 dark:border-zinc-800 dark:bg-zinc-800/40",children:w?(0,r.jsx)("div",{className:"flex h-[120px] items-center justify-center text-zinc-400",children:(0,r.jsx)(A.Z,{className:"animate-spin"})}):(0,r.jsx)("ul",{className:"space-y-1.5",children:null==g?void 0:g.map((e,t)=>(0,r.jsx)("li",{className:"break-keep text-[14px] font-medium text-zinc-700 dark:text-zinc-200",children:e.trim()},t))})}),!w&&(0,r.jsxs)("div",{className:"flex items-center gap-1.5 pt-1 text-[12px] font-semibold text-zinc-600 dark:text-zinc-400",children:[(0,r.jsx)(F.Z,{size:14,className:"text-zinc-700 dark:text-zinc-300"}),"íêµê° ë±ë¡ëì´ì. ì´ì ë§¤ì¼ ê¸ìì´ íìë©ëë¤."]}),(0,r.jsxs)("div",{className:"space-y-2 pt-2",children:[(0,r.jsx)("button",{onClick:s,className:"school-meal-primary w-full rounded-xl py-2.5 text-[14px] font-bold transition-colors",children:"íì¬ì¼ì ë ë¶ë¬ì¤ê¸°"}),(0,r.jsx)("button",{onClick:n,className:"w-full rounded-xl py-2 text-[13px] font-semibold text-zinc-500 transition-colors hover:bg-zinc-100 hover:text-zinc-800 dark:text-zinc-400 dark:hover:bg-zinc-800 dark:hover:text-zinc-200",children:"ëì¤ì í ê²ì"})]})]}):(0,r.jsxs)(r.Fragment,{children:[(0,r.jsxs)("div",{className:"relative",children:[(0,r.jsx)(W.Z,{size:15,className:"pointer-events-none absolute left-3.5 top-1/2 -translate-y-1/2 text-zinc-400"}),(0,r.jsx)("input",{ref:a,type:"text",value:l,onChange:e=>{i(e.target.value),x(null)},placeholder:"íêµ ì´ë¦ì ì
ë ¥íì¸ì",className:"w-full rounded-xl border-2 border-zinc-200 bg-white py-2.5 pl-9 pr-4 text-[14px] text-zinc-900 outline-none transition-colors placeholder:text-zinc-400 focus:border-zinc-900 dark:border-zinc-700 dark:bg-zinc-800/60 dark:text-white dark:placeholder:text-zinc-600 dark:focus:border-zinc-400"}),m&&(0,r.jsx)(A.Z,{size:13,className:"absolute right-3.5 top-1/2 -translate-y-1/2 animate-spin text-zinc-400"})]}),o.length>0&&(0,r.jsx)("div",{className:"max-h-[200px] overflow-y-auto overflow-hidden rounded-xl border border-zinc-200 dark:border-zinc-700",children:o.map(e=>(0,r.jsxs)("button",{onMouseDown:t=>{t.preventDefault(),j(e)},className:"w-full border-b border-zinc-100 px-4 py-2.5 text-left transition-colors last:border-none hover:bg-zinc-50 dark:border-zinc-800 dark:hover:bg-zinc-800",children:[(0,r.jsx)("p",{className:"text-[13px] font-semibold text-zinc-900 dark:text-white",children:e.schoolName}),(0,r.jsx)("p",{className:"mt-0.5 text-[11px] text-zinc-400 dark:text-zinc-500",children:e.address||e.schoolCode})]},"".concat(e.officeCode,"-").concat(e.schoolCode)))}),f&&(0,r.jsx)("p",{className:"text-right text-[12px] text-red-500 dark:text-red-400",children:f}),(0,r.jsx)("button",{onClick:N,disabled:!u||b,className:"school-meal-primary flex w-full items-center justify-center gap-2 rounded-xl py-2.5 text-[14px] font-bold transition-colors",children:b?(0,r.jsx)(A.Z,{size:15,className:"animate-spin"}):(0,r.jsx)(r.Fragment,{children:"ì¤ëì ê¸ì 보기"})})]})})]})})}var _=n(67650);let V="schoolRegisterBannerDismissed";function P(e){let{isGuest:t=!1,hasStudents:n=!1,onImported:s}=e,[a,l]=(0,c.useState)(!1),[i,o]=(0,c.useState)("closed");return((0,c.useEffect)(()=>
1{if(t||!n){l(!1);return}if(sessionStorage.getItem(V))return;let e=!1,r=async()=>{try{var t;let n=await (0,M.T9)(),r=n.success&&!!(null===(t=n.data)||void 0===t?void 0:t.neisSchoolCode);e||l(!r)}catch(t){e||l(!1)}};r();let s=()=>r();return window.addEventListener("school-settings-updated",s),()=>{e=!0,window.removeEventListener("school-settings-updated",s)}},[t,n]),a||"closed"!==i)?(0,r.jsxs)(r.Fragment,{children:[a&&(0,r.jsx)("div",{className:"fixed bottom-[calc(1.5rem+env(safe-area-inset-bottom,0px))] left-1/2 z-50 -translate-x-1/2 px-4 animate-in slide-in-from-bottom-4 fade-in duration-300",children:(0,r.jsxs)("div",{className:"flex w-max min-w-[390px] max-w-[calc(100vw-2rem)] items-center gap-3.5 rounded-2xl border border-zinc-300 bg-white px-5 py-3.5 shadow-[0_8px_30px_rgba(0,0,0,0.18)] dark:border-zinc-700 dark:bg-zinc-900 dark:shadow-[0_8px_30px_rgba(0,0,0,0.55)]",children:[(0,r.jsx)("div",{className:"shrink-0 flex items-center justify-center -my-1",children:(0,r.jsx)(D.w,{src:"/lordicons/school.json",size:28,trigger:"loop",originalColors:!0})}),(0,r.jsxs)("p",{className:"text-[13px] leading-snug text-zinc-900 dark:text-zinc-100",children:["íêµë¥¼ ë±ë¡íë©´",(0,r.jsx)("br",{}),(0,r.jsx)("b",{className:"font-bold",children:"ì¤ëì ê¸ì\xb7íì¬ì¼ì "}),"ì ë³¼ ì ìì´ì"]}),(0,r.jsx)("button",{type:"button",onClick:()=>o("meal"),className:"ml-auto shrink-0 whitespace-nowrap rounded-lg bg-blue-600 px-5 py-2 text-[12px] font-extrabold text-white transition-colors hover:bg-blue-700 dark:bg-blue-500 dark:hover:bg-blue-600",children:"ë±ë¡"}),(0,r.jsx)("button",{type:"button",onClick:()=>{sessionStorage.setItem(V,"1"),l(!1)},"aria-label":"ë°°ë ë«ê¸°",className:"shrink-0 rounded-md p-0.5 text-zinc-400 transition-colors hover:text-zinc-600 dark:text-zinc-500 dark:hover:text-zinc-300",children:(0,r.jsx)(L.Z,{size:16})})]})}),(0,r.jsx)(T,{isOpen:"meal"===i,onClose:()=>o("closed"),onWantSchedule:()=>o("schedule")}),(0,r.jsx)(_.k,{isOpen:"schedule"===i,onClose:()=>o("closed"),onImported:e=>{l(!1),null==s||s(e)}})]}):null}var H=n(96214),O=n(93448),X=n(22606),B=n(98319),U=n(10136),Y=n(99397),G=n(40875),q=n(69076),J=n(30401);function Q(e){let{className:t,size:n=15}=e;return(0,r.jsx)("svg",{xmlns:"http://www.w3.org/2000/svg",width:n,height:n,viewBox:"0 0 24 24",fill:"currentColor",className:t,children:(0,r.jsx)("path",{fillRule:"evenodd",clipRule:"evenodd",d:"M9.25 15c.966 0 1.75.784 1.75 1.75v2.5A1.75 1.75 0 0 1 9.25 21h-4.5A1.75 1.75 0 0 1 3 19.25v-2.5c0-.966.784-1.75 1.75-1.75zm-4.5 1.5a.25.25 0 0 0-.25.25v2.5c0 .138.112.25.25.25h4.5a.25.25 0 0 0 .25-.25v-2.5a.25.25 0 0 0-.25-.25zm14.5-5.5c.966 0 1.75.784 1.75 1.75v6.5A1.75 1.75 0 0 1 19.25 21h-4.5A1.75 1.75 0 0 1 13 19.25v-6.5c0-.966.784-1.75 1.75-1.75zm-4.5 1.5a.25.25 0 0 0-.25.25v6.5c0 .138.112.25.25.25h4.5a.25.25 0 0 0 .25-.25v-6.5a.25.25 0 0 0-.25-.25zM9.252 3A1.75 1.75 0 0 1 11 4.751v6.498A1.75 1.75 0 0 1 9.252 13H4.748A1.75 1.75 0 0 1 3 11.249V4.75C3 3.786 3.78 3 4.748 3zM4.748 4.5a.25.25 0 0 0-.248.251v6.498c0 .14.113.251.248.251h4.504a.25.25 0 0 0 .248-.251V4.75a.25.25 0 0 0-.248-.251zM19.25 3c.966 0 1.75.784 1.75 1.75v2.5A1.75 1.75 0 0 1 19.25 9h-4.5A1.75 1.75 0 0 1 13 7.25v-2.5c0-.966.784-1.75 1.75-1.75zm-4.5 1.5a.25.25 0 0 0-.25.25v2.5c0 .138.112.25.25.25h4.5a.25.25 0 0 0 .25-.25v-2.5a.25.25 0 0 0-.25-.25z"})})}function K(e){let{onNavigateToStudent:t}=e,{data:n}=(0,d.kP)(),{students:m,isLoaded:z}=(0,p.AF)(),k=(0,b.XC)(),{openSettings:D}=(0,v.Y)(),{showToast:M}=(0,B.pm)(),R=(0,U.N)(),Z=(0,u.Dv)(),I=(0,E.d)(),W=!!(null==n?void 0:n.user)||(0,u.YY)(),[A,F]=(0,c.useState)(!1),T=(0,X.Ln)(e=>e.layouts),V=(0,X.Ln)(e=>e.visibleWidgets),K=(0,X.Ln)(e=>e.setConfig),[$,ee]=(0,c.useState)(T),[et,en]=(0,c.useState)(V),[er,es]=(0,c.useState)(!1),[ea,el]=(0,c.useState)(!1),[ei,eo]=(0,c.useState)(!1),ec=(0,c.useRef)(null),[ed,eu]=(0,c.useState)(!1),[ex,em]=(0,c.useState)("my"),[eh,eb]=(0,c.useState)(""),ep=(0,c.useRef)(null),ef=(0,c.useRef)(null),ev=(0,c.useRef)(""),[eg,ez]=(0,c.useState)({}),[ew,ek]=(0,c.useState)([]),[ey,ej]=(0,c.useState)([]),[eN,eC]=(0,c.useState)([]),[eS,eE]=(0,c.useState)([]),[eL,eD]=(0,c.useState)(null),[eM,eR]=(0,c.useState)([]),[eZ,eI]=(0,c.useState)(!1),eW=(0,N.g)(),eA=(0,C.a8)({nativeShell:(0,w.Ig)(),previewQuery:"1"===new URLSearchParams(window.location.search).get("previewRosterWizard")}),eF=!!localStorage.getItem("rosterWizardCompleted"),eT=(0,C.vh)({nativeShell:eW,isGuest:Z,studentCount:m.length,rosterWizardCompleted:eF}),e_=(0,c.useMemo)(()=>Z?eM:m.filter(e=>"ë´ì íê¸"===e.homeClassId),[m,Z,eM]),eV=(0,c.useMemo)(()=>
1{let e=new Date(new Date().toLocaleString("en-US",{timeZone:"Asia/Seoul"})),t=Z?new Date("".concat(o.b,"T12:00:00")).getDay():e.getDay();return{index:t,key:["sun","mon","tue","wed","thu","fri","sat"][t]}},[Z]),eP=(0,c.useRef)(0),eH=(0,c.useRef)(!0);(0,c.useEffect)(()=>(eH.current=!0,()=>{eH.current=!1}),[]);let eO=(0,X.Ln)(e=>e.initFromData),eX=(0,X.Ln)(e=>e.setLoaded),[eB,eU]=(0,c.useState)(!0),[eY,eG]=(0,c.useState)(!1),[eq,eJ]=(0,c.useState)(!1),eQ=(0,c.useRef)(0);(0,c.useEffect)(()=>()=>{eQ.current++},[]);let eK=(0,c.useCallback)(async()=>{let e=++eQ.current;eU(!0),eJ(!1);try{if(Z){let t=await (0,i.W)(()=>(0,H.getGuestData)());if(!eH.current||e!==eQ.current)return;eR(t.students),ej(t.attendanceRecords),eC(t.roleAssignments),ek(t.scheduleEvents),eE(t.gradeRecords);let n="my"===ex?t.teacherTimetable:t.classTimetable;ez(n||{}),eG(!0);return}let t=(0,O.RJ)(),n=new Date(new Date().toLocaleString("en-US",{timeZone:"Asia/Seoul"}));n.setMonth(n.getMonth()+3);let r=(0,O.FB)(n),s=await (0,i.W)(()=>(0,f.X)("getDashboardData",{startDate:t,endDate:r},k));if(!eH.current||e!==eQ.current)return;if(s.success&&s.data){let{attendance:e,schedules:t,teacherTimetable:n,classTimetable:r,rolesTimetable:a,memo:l,students:i,gradeRecords:o=[],schoolInfo:c,dashboardConfig:d}=s.data;ej(null!=e?e:[]),ek(t),eb(l),ev.current=l,ez("my"===ex?n:r),eE(o),c&&eD(c),X.Ln.getState().isLoaded||(d?eO(d.layouts,d.visibleWidgets,d.widgetConfig||void 0):eX(!0));let u=[];(null==a?void 0:a.assignments)&&i.forEach(e=>{let t=a.assignments[e.id];t&&Object.entries(t).forEach(t=>{let[n,r]=t;r&&u.push({id:"".concat(e.id,"-").concat(n),studentId:e.id,studentName:e.name,role:r.toString()})})}),eC(u),eG(!0)}else throw Error("ëìë³´ë ì¡°í ì¤í¨")}catch(t){eH.current&&e===eQ.current&&eJ(!0)}finally{eH.current&&e===eQ.current&&eU(!1)}},[Z,ex,k,eO,eX]);(0,c.useEffect)(()=>{let e=!0,t=()=>{e&&(eP.current=Date.now(),eK())};t();let n=()=>{"visible"===document.visibilityState&&(Date.now()-eP.current<6e4||t())};return window.addEventListener("visibilitychange",n),window.addEventListener("focus",n),()=>{e=!1,window.removeEventListener("visibilitychange",n),window.removeEventListener("focus",n)}},[eK]),(0,c.useEffect)(()=>{if(!ed||!z)return;let e=(0,w.Ig)()||eW;if(e){eI(!1);return}(0,C.sg)({nativeShell:e,isGuest:Z,hasSession:!!(null==n?void 0:n.user),studentCount:m.length,rosterWizardCompleted:!!localStorage.getItem("rosterWizardCompleted"),wizardInProgress:!!(0,C.Ys)(),snoozed:(0,C.f9)(),deferredOnPhone:(0,S.UM)()&&(0,C.Li)()})&&eI(!0)},[ed,z,Z,null==n?void 0:n.user,m.length,eW]);let[e$,e0]=(0,c.useState)(null),e1=(0,c.useCallback)(e=>{e0(e),eK()},[eK]),e5=(0,c.useCallback)(async e=>{W&&e!==ev.current&&(await (0,f.X)("saveDashboardMemo",{content:e},k)).success&&(ev.current=e)},[W,k]);(0,c.useEffect)(()=>()=>{ep.current&&clearTimeout(ep.current)},[]),(0,c.useEffect)(()=>{if(Z){let e=localStorage.getItem("dashboard-memo");e&&(eb(e),ev.current=e)}},[Z]);let e2=(0,c.useMemo)(()=>{let e=Z?o.b:(0,O.RJ)(),t=ey.filter(t=>{let n=t.endDate||t.date;return e>=t.date&&e<=n});return{absent:t.filter(e=>"ê²°ì"===e.type).length,late:t.filter(e=>"ì§ê°"===e.type).length,early:t.filter(e=>"ì¡°í´"===e.type).length,passing:t.filter(e=>"ê²°ê³¼"===e.type).length}},[ey,Z]),e4=(0,c.useCallback)(()=>{if(window.innerWidth<768){D("dashboard-layout");return}ee(T),en(V),es(!1),F(!0)},[D,T,V]),e7=(0,c.useCallback)(async()=>{(!er||await R({title:"ëìë³´ë í¸ì§ì ì·¨ìí ê¹ì?",description:"ì ì¥íì§ ìì ë³ê²½ì¬íì 모ë ì·¨ìë©ëë¤.",confirmLabel:"ì·¨ìíê³ ëê°ê¸°",cancelLabel:"ê³ì í¸ì§",tone:"default"}))&&(ee(T),en(V),es(!1),F(!1),eo(!1))},[er,R,T,V]),e3=(0,c.useCallback)(async()=>{await R({title:"기본 ì¤ì ì¼ë¡ ëë릴ê¹ì?",description:"ìì ¯ êµ¬ì± ë° ë°°ì¹ê° 기본 ìíë¡ ëìê°ëë¤.",confirmLabel:"ëë리기",tone:"default"})&&(ee(X.Gj),en(X.h4),es(!0))},[R]),e9=(0,c.useCallback)(e=>{en(t=>t.filter(t=>t!==e)),es(!0);let t=X.DV[e];M("".concat((null==t?void 0:t.label)||e," ìì ¯ì´ ì¨ê²¨ì¡ìµëë¤."),"info")},[M]),e8=(0,c.useCallback)(e=>{en(t=>t.includes(e)?t:[...t,e]),ee(t=>{let n={...t},r=X.DV[e];return["lg","md","sm"].forEach(t=>{let s=n[t]?[...n[t]]:[];if(!s.some(t=>t.i===e)&&r){let t=s.reduce((e,t)=>
1Math.max(e,(t.y||0)+(t.h||0)),0);s.push({i:e,x:0,y:t,w:r.defaultW,h:r.defaultH,minW:r.minW,minH:r.minH,maxW:r.maxW,maxH:r.maxH})}n[t]=s}),n}),es(!0),eo(!1);let t=X.DV[e];M("".concat((null==t?void 0:t.label)||e," ìì ¯ì´ ì¶ê°ëììµëë¤."),"success")},[M]),e6=(0,c.useCallback)(e=>{ee(e),es(!0)},[]),te=(0,c.useCallback)(async()=>{el(!0);try{if(Z){K($,et),es(!1),F(!1),eo(!1),M("ì²´í 모ëììë íì¬ ë¸ë¼ì°ì ì ìì ì ì¥ëììµëë¤.","info");return}let e=await (0,f.X)("saveDashboardConfig",{layouts:$,visibleWidgets:et},k);if(!e.success){M(e.error||"ì ì¥ì ì¤í¨íìµëë¤. ë¤ì ìëí´ì£¼ì¸ì.","error");return}K($,et),es(!1),F(!1),eo(!1),M("ëìë³´ë ë°°ì¹ê° ì±ê³µì ì¼ë¡ ì ì¥ëììµëë¤.","success")}catch(e){console.error("Failed to save dashboard config:",e),M("ì ì¥ ì¤ ì¤ë¥ê° ë°ìíìµëë¤.","error")}finally{el(!1)}},[Z,$,et,k,K,M]);(0,c.useEffect)(()=>{if(!A||!er)return;let e=e=>{e.preventDefault(),e.returnValue=""};return window.addEventListener("beforeunload",e),()=>window.removeEventListener("beforeunload",e)},[A,er]),(0,c.useEffect)(()=>{if(!A)return;let e=e=>{"Escape"===e.key&&(ei?eo(!1):e7())};return window.addEventListener("keydown",e),()=>window.removeEventListener("keydown",e)},[A,ei,e7]),(0,c.useEffect)(()=>{if(!ei)return;let e=e=>{ec.current&&!ec.current.contains(e.target)&&eo(!1)};return document.addEventListener("mousedown",e),()=>document.removeEventListener("mousedown",e)},[ei]);let tt=(0,c.useMemo)(()=>{let e=new Set(et);return Object.keys(X.DV).filter(t=>!e.has(t)).map(e=>X.DV[e])},[et]),tn=(0,c.useCallback)(e=>{window.dispatchEvent(new CustomEvent("navigate-view",{detail:e}))},[]);return((0,c.useEffect)(()=>{eu(!0)},[]),ed)?(0,r.jsxs)("div",{className:"".concat(h().scrollbars," h-full bg-[#FBFBF9] md:bg-zinc-50 dark:bg-black md:p-4 p-0 overflow-y-auto custom-scrollbar"),"data-pull-scroll":!0,children:[(0,r.jsxs)("div",{className:"mx-auto w-full min-h-full",children:[eT&&(0,r.jsx)(y,{}),(0,C.D5)({nativeShell:eW||ed&&(0,w.Ig)(),isGuest:Z,hasSession:!!(null==n?void 0:n.user),loaded:ed&&z,studentCount:m.length,wizardOpen:eZ||eA})&&(0,r.jsx)(j,{phone:I,onStart:()=>eI(!0)}),A&&(0,r.jsxs)("div",{className:"sticky top-1.5 z-50 hidden md:flex items-center justify-between bg-white/95 dark:bg-[#18181b]/95 backdrop-blur-md border border-zinc-200 dark:border-[#27272a] shadow-lg rounded-2xl px-4 py-2 mx-auto max-w-2xl -mt-1.5 mb-3.5 animate-in fade-in slide-in-from-top-2 duration-200",children:[(0,r.jsx)("div",{className:"flex items-center gap-2",children:(0,r.jsxs)("div",{className:"relative",ref:ec,children:[(0,r.jsxs)("button",{type:"button",onClick:()=>eo(e=>!e),className:"flex items-center gap-1.5 px-2.5 py-1 rounded-lg text-xs font-medium text-zinc-700 dark:text-zinc-300 hover:bg-zinc-100 dark:hover:bg-zinc-800 transition-colors border border-zinc-200 dark:border-zinc-700 cursor-pointer",children:[(0,r.jsx)(Y.Z,{size:13,className:"text-blue-500"}),(0,r.jsx)("span",{children:"ìì ¯ ì¶ê°"}),(0,r.jsx)(G.Z,{size:12,className:"text-zinc-400"})]}),ei&&(0,r.jsxs)("div",{className:"absolute left-0 top-[calc(100%+6px)] z-50 w-60 bg-white dark:bg-[#222225] rounded-xl shadow-xl border border-zinc-200 dark:border-zinc-700 py-1.5 overflow-hidden animate-in fade-in zoom-in-95 duration-150",children:[(0,r.jsx)("div",{className:"px-3 py-1.5 text-[11px] font-semibold text-zinc-400 uppercase tracking-wider",children:"ì¶ê° ê°ë¥í ìì ¯"}),0===tt.length?(0,r.jsx)("div",{className:"px-3 py-3 text-xs text-zinc-400 text-center",children:"모ë ìì ¯ì´ ì¶ê°ëì´ ììµëë¤."}):(0,r.jsx)("div",{className:"max-h-60 overflow-y-auto custom-scrollbar",children:tt.map(e=>(0,r.jsxs)("button",{type:"button",onClick:()=>e8(e.id),className:"w-full flex items-center justify-between px-3 py-2 text-xs text-left text-zinc-800 dark:text-zinc-200 hover:bg-zinc-100 dark:hover:bg-zinc-800 transition-colors cursor-pointer",children:[(0,r.jsxs)("div",{className:"flex items-center gap-2",children:[(0,r.jsx)("span",{className:"font-medium",children:e.label}),(0,r.jsxs)("span",{className:"text-[10px] text-zinc-400 font-mono bg-zinc-100 dark:bg-zinc-800 px-1 py-0.5 rounded",children:[e.defaultW,"\xd7",e.defaultH]})]}),(0,r.jsx)(Y.Z,{size:13,className:"text-blue-500 shrink-0"})]},e.id))})]})]})}),(0,r.jsxs)("div",{className:"flex items-center gap-1.5",children:[(0,r.jsxs)("button",{type:"button",onClick:e3,className:"flex items-center gap-1 px-2.5 py-1.5 rounded-lg text-xs text-zinc-500 hover:text-zinc-900 dark:text-zinc-400 dark:hover:text-zinc-100 hover:bg-zinc-100 dark:hover:bg-zinc-800 transition-colors cursor-pointer",title:"기본 ë°°ì¹ë¡ ë³µì",children:[(0,r.jsx)(q.Z,{size:13}),(0,r.jsx)("span",{className:"hidden sm:inline",children:"ì´ê¸°í"})]}),(0,r.jsxs)("button",{type:"button",onClick:e7,className:"flex items-center gap-1 px-2.5 py-1.5 rounded-lg text-xs text-zinc-600 dark:text-zinc-400 hover:bg-zinc-100 dark:hover:bg-zinc-800 transition-colors cursor-pointer",children:[(0,r.jsx)(L.Z,{size:13}),(0,r.jsx)("span",{children:"ì·¨ì"})]}),(0,r.jsxs)("button",{type:"button",onClick:te,disabled:ea,className:"flex items-center gap-1 px-3 py-1.5 rounded-lg text-xs font-semibold bg-[#007AFF] hover:bg-[#0062cc] dark:bg-[#2883DE] dark:hover:bg-[#1f6dbb] text-white shadow-sm transition-colors disabled:opacity-50 cursor-pointer",children:[(0,r.jsx)(J.Z,{size:14}),(0,r.jsx)("span",{children:ea?"ì ì¥ ì¤...":"ì ì¥ ìë£"})]})]})]}),(0,r.jsx)(P,{isGuest:Z,hasStudents:m.length>0,onImported:e1}),eq&&(0,r.jsx)(l.A,{message:s.l.loadError,onRetry:()=>void eK()}),eB&&eY&&(0,r.jsx)(a.Q,{label:s.l.loading,slowLabel:s.l.slow,className:"px-4 py-2"}),(0,r.jsx)(x.Z,{data:{loading:eB&&!eY,loadError:eq&&!eY,timetableView:ex,setTimetableView:em,timetableData:eg,todayInfo:eV,memo:eh,onMemoChange:e=>{let t=e.target.value;eb(t),W?(ep.current&&clearTimeout(ep.current),ef.current=t,ep.current=setTimeout(()=>{ep.current=null;let e=ef.current;ef.current=null,null!==e&&e5(e)},700)):localStorage.setItem("dashboard-memo",t)},onMemoBlur:()=>{if(!W||null===ef.current)return;ep.current&&(clearTimeout(ep.current),ep.current=null);let e=ef.current;ef.current=null,e5(e)},scheduleEvents:ew,isGuest:Z,attendanceStats:e2,attendanceRecords:ey,homeroomStudents:e_,roleAssignments:eN,schoolInfo:eL,onReload:()=>eK(),onNavigateToStudent:t,onOpenSettings:D,onNavigate:tn},isEditing:A,customLayouts:A?$:void 0,customVisibleWidgets:A?et:void 0,onLayoutChangeOverride:e6,onRemoveWidget:e9}),!A&&(0,r.jsx)("div",{className:"flex justify-center pt-6 pb-12",children:(0,r.jsxs)("button",{type:"button",onClick:e4,className:"flex items-center gap-2 px-5 py-2.5 rounded-xl border border-dashed border-zinc-300 dark:border-zinc-700 bg-white/50 dark:bg-zinc-900/30 text-zinc-500 dark:text-zinc-400 hover:text-blue-600 dar
1k:hover:text-blue-400 hover:border-blue-400 dark:hover:border-blue-500 hover:bg-blue-50/40 dark:hover:bg-blue-950/20 transition-all duration-200 text-xs font-medium group shadow-xs cursor-pointer",children:[(0,r.jsx)(Q,{size:15,className:"text-zinc-400 group-hover:text-blue-500 transition-colors"}),(0,r.jsx)("span",{children:"ìì ¯ ì¶ê° ë° ë°°ì¹ í¸ì§"})]})})]}),"number"==typeof e$&&(0,r.jsx)("div",{className:"fixed inset-x-0 bottom-[calc(1.5rem+env(safe-area-inset-bottom,0px))] z-[120000] flex justify-center",children:(0,r.jsx)(_.h,{count:e$,onClose:()=>e0(null)})}),(0,C.fL)((0,w.Ig)()||eW)&&(eZ||eA)&&(0,r.jsx)(g.V,{onClose:()=>{(0,C.X9)(),(0,C.CX)(),eI(!1)},onDeferToPc:()=>{(0,C.qr)(),eI(!1)},onComplete:()=>{localStorage.setItem("rosterWizardCompleted","true"),(0,C.X9)(),eI(!1)}})]}):(0,r.jsx)(a.ContentLoadingState,{variant:"cards",label:s.l.loading,slowLabel:s.l.slow})}}}]);
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.