1"use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[2360],{84519:function(e,t,r){r.d(t,{H:function(){return i}});var n=r(57437),a=r(48013),s=r(93448);function i(e){let{children:t,className:r}=e;return t?(0,n.jsxs)("div",{className:(0,s.cn)("flex items-center gap-2.5 px-4 py-3 rounded-xl text-[13px] text-zinc-700 dark:text-zinc-300 bg-zinc-50 dark:bg-zinc-900 border border-zinc-200 dark:border-zinc-800 animate-in fade-in duration-200",r),children:[(0,n.jsx)(a.Rj,{size:18,className:"shrink-0"}),(0,n.jsx)("span",{className:"whitespace-pre-line leading-relaxed",children:t})]}):null}},35596:function(e,t,r){r.d(t,{Z:function(){return x}});var n=r(57437),a=r(2265),s=r(59717),i=r(81906),o=r(33728),l=r(57586),d=r(13100),c=r(93448),u=r(21652);let h=0;function x(e){let{isOpen:t,onClose:r,title:x,children:m,footer:b,className:p}=e,f=(0,s.o)(),w=(0,i.c)(0);(0,a.useEffect)(()=>{t&&w.set(0)},[t,w]);let v=(0,o.H)(w,[0,240],[1,0]),k=(0,a.useRef)(r),g=(0,a.useRef)(!1);(0,a.useEffect)(()=>{k.current=r},[r]),(0,a.useEffect)(()=>{if(!t)return;h++,document.body.style.overflow="hidden";let e=(0,u.UM)(),r=window.history.state||{};!e||g.current||r.isBottomSheet||(window.history.pushState({...r,isBottomSheet:!0},""),g.current=!0);let n=()=>{g.current&&(g.current=!1,k.current())};return window.addEventListener("popstate",n),()=>{window.removeEventListener("popstate",n),--h<=0&&(h=0,document.body.style.overflow="")}},[t]);let y=(0,a.useCallback)(()=>{g.current&&(g.current=!1,window.history.back()),r()},[r]),z=(0,a.useCallback)((e,t)=>{(t.velocity.y>500||t.offset.y>100)&&y()},[y]),j=(0,a.useRef)(null),N=(0,a.useRef)(null);return(0,a.useEffect)(()=>{if(!t)return;let e=j.current;if(!e)return;let r=[],n=function(t){let r=!(arguments.length>1)||void 0===arguments[1]||arguments[1];if(!e||!e.contains(t))return;let n=e.getBoundingClientRect(),a=t.getBoundingClientRect(),s=a.top-n.top,i=Math.min(24,Math.max(12,(e.clientHeight-a.height)/2)),o=e.scrollTop+s-i;e.scrollTo({top:Math.max(0,o),behavior:r?"smooth":"auto"})},a=e=>{let t=e.target;t&&("INPUT"===t.tagName||"TEXTAREA"===t.tagName||"SELECT"===t.tagName||t.isContentEditable)&&(N.current=t,n(t,!1),r.push(setTimeout(()=>n(t,!0),120)),r.push(setTimeout(()=>n(t,!0),300)),r.push(setTimeout(()=>n(t,!0),500)))},s=()=>{N.current=null},i=()=>{N.current&&n(N.current,!0)};e.addEventListener("focusin",a),e.addEventListener("focusout",s);let o=window.visualViewport;return null==o||o.addEventListener("resize",i),()=>{r.forEach(clearTimeout),e.removeEventListener("focusin",a),e.removeEventListener("focusout",s),null==o||o.removeEventListener("resize",i)}},[t]),(0,n.jsx)(l.M,{children:t&&(0,n.jsxs)("div",{className:"md:hidden fixed inset-x-0 z-[100] flex items-end",role:"dialog","aria-modal":"true","aria-label":x,style:{top:"var(--vv-offset-top, 0px)",height:"var(--app-height)"},children:[(0,n.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,n.jsx)(d.E.div,{style:{opacity:v},onClick:y,className:"absolute inset-0 bg-black/50 backdrop-blur-sm"})}),(0,n.jsxs)(d.E.div,{style:{y:w,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:f,dragConstraints:{top:0},dragElastic:{top:.12,bottom:.75},onDragEnd:z,role:"dialog","aria-modal":"true",className:(0,c.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",p),children:[(0,n.jsx)("div",{onPointerDown:e=>f.start(e),className:"flex justify-center pt-3 pb-2 shrink-0 cursor-grab active:cursor-grabbing touch-none select-none",children:(0,n.jsx)("div",{className:"w-9 h-1 rounded-full bg-zinc-300 dark:bg-zinc-700"})}),x&&(0,n.jsx)("div",{className:"px-4 pb-3 border-b border-zinc-200/40 dark:border-zinc-800/60 shrink-0",children:(0,n.jsx)("h3",{className:"text-[var(--mobile-font-h2)] font-semibold text-zinc-900 dark:text-zinc-100",children:x})}),(0,n.jsx)("div",{ref:j,className:"flex-1 overflow-y-auto overflow-x-hidden px-4 pt-3 pb-2 mobile-scroll mobile-sheet-scroll",children:m}),b&&(0,n.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:b})]})]})})}},67650:function(e,t,r){r.d(t,{h:function(){return p},k:function(){return f}});var n=r(57437),a=r(2265),s=r(92934),i=r(88501),o=r(32489),l=r(73247),d=r(51817),c=r(60850),u=r(83008),h=r(67920),x=r(93448),m=r(84519);function b(e){let{item:t}=e;return t.endDate&&t.endDate!==t.date?(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)("span",{children:t.date}),(0,n.jsxs)("span",{children:["~ ",t.endDate]})]}):(0,n.jsx)("span",{children:t.date})}function p(e){let{count:t,onClose:r,className:i}=e;return(0,a.useEffect)(()=>{let e=window.setTimeout(r,3500);return()=>window.clearTimeout(e)},[r]),(0,a.useEffect)(()=>{let e=e=>{"Escape"===e.key&&r()};return window.addEventListener("keydown",e),()=>window.removeEventListener("keydown",e)},[r]),(0,n.jsx)("div",{className:(0,x.cn)("pointer-events-none z-[120000] flex justify-center px-4",i),children:(0,n.jsxs)("div",{className:"academic-schedule-import-toast pointer-events-auto flex min-h-12 max-w-[calc(100vw-2rem)] items-center gap-2 rounded-full border border-zinc-300 bg-white px-4 py-3 text-sm font-semibold text-zinc-950 shadow-[0_18px_50px_rgba(0,0,0,0.18)] dark:border-white/15 dark:bg-[#1C1C1E] dark:text-white dark:shadow-black/40",role:"status","aria-live":"polite",children:[(0,n.jsx)(s.Z,{size:17,className:"shrink-0 text-zinc-700 dark:text-zinc-200"}),(0,n.jsxs)("span",{className:"truncate",children:["ì ê· ",t,"ê° ì¼ì ì ê°ì ¸ììµëë¤."]})]})})}function f(e){let{isOpen:t,onClose:r,onImported:p}=e,f=(0,h.XC)(),w=(0,a.useRef)(null),[v,k]=(0,a.useState)(""),[g,y]=(0,a.useState)([]),[z,j]=(0,a.useState)(null),[N,E]=(0,a.useState)(!1),[C,S]=(0,a.useState)(!1),[T,_]=(0,a.useState)(!1),[L,I]=(0,a.useState)(!1),[D,R]=(0,a.useState)(null),[M,Z]=(0,a.useState)(()=>new Set),[A,H]=(0,a.useState)(null);(0,a.useEffect)(()=>{if(!t)return;let e=!1;return k(""),y([]),j(null),R(null),Z(new Set),H(null),E(!0),(async()=>{try{let t=await (0,c.T9)(),r=t.success?t.data:null;if(!e&&(null==r?void 0:r.neisSchoolCode)&&(null==r?void 0:r.neisOfficeCode)){let e={schoolName:r.schoolName||"ì ì¥ë íêµ",schoolCode:r.neisSchoolCode,officeCode:r.neisOfficeCode};j(e),k(e.schoolName)}}finally{e||(E(!1),setTimeout(()=>{var e;return null===(e=w.current)||void 0===e?void 0:e.focus()},80))}})(),()=>{e=!0}},[t]),(0,a.useEffect)(()=>{if(!t)return;let e=e=>{"Escape"===e.key&&r()};return window.addEventListener("keydown",e),()=>window.removeEventListener("keydown",e)},[t,r]),(0,a.useEffect)(()=>{if(!t)return;let e=v.trim();if(e.length<2||z&&e===z.schoolName){y([]);return}let r=setTimeout(async()=>{S(!0);try{let t=await (0,c.R2)(e);y(t.success?t.data:[])}catch(e){y([])}finally{S(!1)}},300);return()=>clearTimeout(r)},[t,v,z]);let B=(0,a.useMemo)(()=>z?{schoolCode:z.schoolCode,officeCode:z.officeCode,schoolName:z.schoolName,startDate:null==D?void 0:D.summary.startDate,endD
1ate:null==D?void 0:D.summary.endDate,excludedExternalIds:Array.from(M)}:null,[M,D,z]),X=(0,a.useMemo)(()=>(null==D?void 0:D.items.filter(e=>"new"===e.status))||[],[D]),P=X.filter(e=>!M.has(e.externalId)).length,F=(null==D?void 0:D.summary.duplicateCount)||0,O=X.length>0&&P>0,U=e=>{j(e),k(e.schoolName),y([]),R(null),Z(new Set),H(null)},V=async()=>{if(z){_(!0),R(null),H(null);try{let e=await (0,u.X)("previewAcademicScheduleImport",{schoolCode:z.schoolCode,officeCode:z.officeCode,schoolName:z.schoolName},f,{timeout:9e4});e.success&&e.data?(R(e.data),Z(new Set)):H(e.error||"미리보기를 ë¶ë¬ì¤ì§ 못íìµëë¤.")}finally{_(!1)}}},q=async()=>{if(B&&D&&z){I(!0),H(null);try{let e=await (0,u.X)("commitAcademicScheduleImport",B,f,{timeout:9e4});if(e.success&&e.data){let{schoolCode:t,officeCode:n}=z;(0,c.fk)(t,n).then(e=>{e.success&&window.dispatchEvent(new CustomEvent("school-settings-updated"))}).catch(e=>console.warn("[AcademicScheduleImportModal] Failed to sync school:",e)),r(),p(e.data.createdCount)}else H(e.error||"íì¬ì¼ì ì ê°ì ¸ì¤ì§ 못íìµëë¤.")}finally{I(!1)}}},G=e=>{Z(t=>{let r=new Set(t);return r.has(e)?r.delete(e):r.add(e),r})};return t?(0,n.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:r,children:(0,n.jsxs)("div",{className:"w-full max-w-2xl overflow-hidden rounded-2xl border border-zinc-200 bg-white shadow-2xl dark:border-white/10 dark:bg-[#1C1C1E]",onClick:e=>e.stopPropagation(),children:[(0,n.jsxs)("div",{className:"flex items-start justify-between px-6 py-5",children:[(0,n.jsx)("div",{children:(0,n.jsxs)("div",{className:"flex items-center gap-2 text-zinc-950 dark:text-white",children:[(0,n.jsx)(i.Z,{size:18}),(0,n.jsx)("h2",{className:"text-lg font-bold",children:"ì°ë¦¬íêµ íì¬ì¼ì ê°ì ¸ì¤ê¸°"})]})}),(0,n.jsx)("button",{type:"button",onClick:r,className:"rounded-lg p-1.5 text-zinc-400 transition-colors hover:bg-zinc-100 hover:text-zinc-900 dark:text-[#8E8E93] dark:hover:bg-white/10 dark:hover:text-white","aria-label":"ë«ê¸°",children:(0,n.jsx)(o.Z,{size:18})})]}),(0,n.jsxs)("div",{className:"space-y-4 px-6 py-5",children:[(0,n.jsxs)("div",{children:[(0,n.jsx)("label",{className:"mb-2 block text-xs font-medium text-zinc-500 dark:text-[#8E8E93]",children:"íêµ ê²ì"}),(0,n.jsxs)("div",{className:"relative",children:[(0,n.jsx)(l.Z,{size:15,className:"pointer-events-none absolute left-3.5 top-1/2 -translate-y-1/2 text-zinc-400 dark:text-[#8E8E93]"}),(0,n.jsx)("input",{ref:w,value:v,onChange:e=>{k(e.target.value),j(null),R(null),Z(new Set)},placeholder:N?"ì ì¥ë íêµë¥¼ íì¸íë ì¤...":"íêµ ì´ë¦ì ì
ë ¥íì¸ì",className:"h-11 w-full rounded-xl border border-zinc-200 bg-zinc-50 pl-9 pr-10 text-sm text-zinc-950 outline-none transition-colors placeholder:text-zinc-400 focus:border-zinc-400 dark:border-white/10 dark:bg-[#111113] dark:text-white dark:placeholder:text-[#5C5C5E] dark:focus:border-white/30"}),(C||N)&&(0,n.jsx)(d.Z,{size:15,className:"absolute right-3.5 top-1/2 -translate-y-1/2 animate-spin text-zinc-400 dark:text-[#8E8E93]"})]}),g.length>0&&(0,n.jsx)("div",{className:"mt-2 max-h-52 overflow-y-auto rounded-xl border border-zinc-200 bg-white custom-scrollbar dark:border-white/10 dark:bg-[#111113]",children:g.map(e=>(0,n.jsxs)("button",{type:"button",onMouseDown:t=>{t.preventDefault(),U(e)},className:"w-full border-b border-zinc-100 px-4 py-3 text-left transition-colors last:border-none hover:bg-zinc-50 dark:border-white/5 dark:hover:bg-white/5",children:[(0,n.jsx)("p",{className:"text-sm font-semibold text-zinc-950 dark:text-white",children:e.schoolName}),(0,n.jsx)("p",{className:"mt-0.5 text-xs text-zinc-500 dark:text-[#8E8E93]",children:e.address||e.schoolCode})]},"".concat(e.officeCode,"-").concat(e.schoolCode)))}),z&&(0,n.jsxs)("div",{className:"mt-2 flex items-center gap-2 rounded-xl border border-zinc-200 bg-zinc-50 px-3 py-2 text-xs text-zinc-700 dark:border-white/10 dark:bg-white/[0.03] dark:text-[#E0E0E0]",children:[(0,n.jsx)(s.Z,{size:14,className:"text-emerald-400"}),(0,n.jsx)("span",{className:"font-semibold",children:z.schoolName}),(0,n.jsx)("span",{className:"text-zinc-500 dark:text-[#8E8E93]",children:z.schoolCode})]})]}),D&&(0,n.jsxs)("div",{className:"rounded-xl border border-zinc-200 bg-zinc-50 dark:border-white/10 dark:bg-[#111113]",children:[(0,n.jsxs)("div",{className:"grid grid-cols-[7rem_minmax(0,1fr)_3rem] gap-3 border-b border-zinc-200 px-4 py-3 text-xs text-zinc-500 dark:border-white/10 dark:text-[#8E8E93] sm:grid-cols-[9rem_minmax(0,1fr)_3rem]",children:[(0,n.jsxs)("span",{className:"col-span-2 min-w-0 truncate",children:[P,"ê° ì¼ì ì´ ì¶ê°ë©ëë¤",F>0?" \xb7 ì¤ë³µ ".concat(F,"ê°ë ìë ì ì¸"):""]}),(0,n.jsx)("button",{type:"button",onClick:()=>{0!==X.length&&Z(e=>X.some(t=>!e.has(t.externalId))?new Set(X.map(e=>e.externalId)):new Set)},className:"pr-3 text-center font-semibold transition-colors hover:text-zinc-900 dark:hover:text-white","aria-label":O?"ì ì²´ ì í í´ì ":"ì ì²´ ì í",children:"ì í"})]}),(0,n.jsx)("div",{className:"max-h-72 overflow-y-auto py-1 custom-scrollbar",children:0===X.length?(0,n.jsx)("p",{className:"py-8 text-center text-sm text-zinc-500 dark:text-[#8E8E93]",children:"ìë¡ ê°ì ¸ì¬ íì¬ì¼ì ì´ ììµëë¤."}):X.map(e=>(0,n.jsxs)("div",{className:(0,x.cn)("grid grid-cols-[7rem_minmax(0,1fr)_3rem] items-center gap-3 px-4 py-2 text-sm transition-colors hover:bg-white","dark:hover:bg-white/[0.03] sm:grid-cols-[9rem_minmax(0,1fr)_3rem]"),children:[(0,n.jsx)("span",{className:(0,x.cn)("flex flex-col text-xs leading-tight text-zinc-500 dark:text-[#8E8E93]",M.has(e.externalId)&&"opacity-45"),children:(0,n.jsx)(b,{item:e})}),(0,n.jsx)("span",{className:(0,x.cn)("min-w-0 truncate font-medium text-zinc-900 dark:text-white",M.has(e.externalId)&&"opacity-45"),children:e.title}),(0,n.jsx)("label",{className:"flex items-center justify-center",children:(0,n.jsx)("input",{type:"checkbox",checked:!M.has(e.externalId),onChange:()=>
1G(e.externalId),className:"h-4 w-4 rounded border-zinc-300 accent-zinc-900 focus:ring-zinc-400 dark:border-zinc-600 dark:bg-zinc-900 dark:accent-white","aria-label":"".concat(e.title," ì í")})})]},e.externalId))})]}),A&&(0,n.jsx)(m.H,{children:A})]}),(0,n.jsxs)("div",{className:"flex items-center justify-end gap-2 border-t border-zinc-200 px-6 py-4 dark:border-white/10",children:[(0,n.jsx)("button",{type:"button",onClick:r,className:"rounded-xl px-4 py-2 text-sm font-semibold text-zinc-500 transition-colors hover:bg-zinc-100 hover:text-zinc-950 dark:text-[#8E8E93] dark:hover:bg-white/10 dark:hover:text-white",children:"ë«ê¸°"}),D?(0,n.jsx)("button",{type:"button",onClick:q,disabled:0===P||L||T,className:"academic-schedule-import-primary rounded-xl border border-zinc-950 bg-zinc-950 px-4 py-2 text-sm font-bold text-white transition-colors hover:bg-zinc-800 disabled:cursor-not-allowed disabled:opacity-40 dark:border-white dark:bg-white dark:text-black dark:hover:bg-white/90",children:L?(0,n.jsx)(d.Z,{size:16,className:"animate-spin"}):"ê°ì ¸ì¤ê¸°"}):(0,n.jsx)("button",{type:"button",onClick:V,disabled:!z||T||L,className:"academic-schedule-import-primary rounded-xl border border-zinc-950 bg-zinc-950 px-4 py-2 text-sm font-bold text-white transition-colors hover:bg-zinc-800 disabled:cursor-not-allowed disabled:opacity-40 dark:border-white dark:bg-white dark:text-black dark:hover:bg-white/90",children:T?(0,n.jsx)(d.Z,{size:16,className:"animate-spin"}):"미리보기"})]})]})}):null}}}]);
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.