1"use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[3369,6214],{73369:function(t,e,a){a.d(e,{Kw:function(){return v},N:function(){return I},Xs:function(){return m},bs:function(){return f},ic:function(){return w},tH:function(){return g},wh:function(){return y}});var n=a(71632),s=a(29827),r=a(21770),u=a(83008),i=a(67920),o=a(27526),d=a(2265),c=a(54392),l=a(54696);let m=(t,e)=>{let a=(Number(t.grade)||0)-(Number(e.grade)||0);if(0!==a)return a;let n=(Number(t.classNum)||0)-(Number(e.classNum)||0);return 0!==n?n:(Number(t.number)||0)-(Number(e.number)||0)},f={all:["students"],lists:()=>[...f.all,"list"],list:t=>[...f.lists(),t],details:()=>[...f.all,"detail"],detail:t=>[...f.details(),t]},w={all:["classes"]};function y(t){var e,a,s,r;let{data:w,status:y}=(0,o.kP)(),g=(0,i.XC)(),I=(0,l.Dv)(),v=(0,d.useRef)(null==w?void 0:null===(e=w.user)||void 0===e?void 0:e.id);return(null==w?void 0:null===(a=w.user)||void 0===a?void 0:a.id)&&(v.current=w.user.id),(0,n.a)({queryKey:[...f.lists(),{userId:I?"guest":null!==(r=null==w?void 0:null===(s=w.user)||void 0===s?void 0:s.id)&&void 0!==r?r:v.current,...t}],enabled:"loading"!==y,staleTime:3e5,gcTime:6e5,refetchOnWindowFocus:!1,queryFn:async()=>{if(I){let e=(await c.Jb()).sort(m);if((null==t?void 0:t.take)!==void 0){let a=t.skip||0;return e.slice(a,a+t.take)}return e}let e={...t},a=await (0,u.X)("listStudents",e,g);if(a.success&&a.data)return a.data.sort(m);if("Session Expired"===a.message)throw Error("Session Expired");throw Error(a.error||a.message||"Failed to load students")}})}function g(){var t,e,a,s;let{data:r,status:m}=(0,o.kP)(),f=(0,i.XC)(),y=(0,l.Dv)(),g=(0,d.useRef)(null==r?void 0:null===(t=r.user)||void 0===t?void 0:t.id);return(null==r?void 0:null===(e=r.user)||void 0===e?void 0:e.id)&&(g.current=r.user.id),(0,n.a)({queryKey:[...w.all,{userId:y?"guest":null!==(s=null==r?void 0:null===(a=r.user)||void 0===a?void 0:a.id)&&void 0!==s?s:g.current}],enabled:"loading"!==m,staleTime:3e5,gcTime:6e5,refetchOnWindowFocus:!1,queryFn:async()=>{if(y)return await c.CI();let t=await (0,u.X)("getClasses",{},f);if(t.success&&t.data)return t.data;throw Error(t.error||"Failed to load classes")}})}function I(){let t=(0,s.NL)(),e=(0,i.XC)(),a=(0,l.Dv)(),n=()=>{t.invalidateQueries({queryKey:f.all})},o=(0,r.D)({mutationFn:async t=>{if(a)return await c.av(t);let n=await (0,u.X)("createStudent",{number:t.number,name:t.name,memo:t.memo,homeClassId:t.homeClassId,customClassIds:t.customClassIds||[],grade:t.grade,classNum:t.classNum},e);if(!n.success)throw Error(n.error||"Failed to create student");return n.data},onSuccess:n}),d=(0,r.D)({mutationFn:async t=>{let{id:n,...s}=t;if(a){let t=await c.Jb(),e=t.findIndex(t=>t.id===n);if(-1!==e)return t[e]={...t[e],...s},await c.Vt(t),t[e];throw Error("Student not found locally")}let r=await (0,u.X)("updateStudent",{studentId:n,...s},e);if(!r.success)throw Error(r.error||"Failed to update student");return r.data},onSuccess:e=>{if(!e||"object"!=typeof e||!("id"in e)){n();return}t.setQueriesData({queryKey:f.lists()},t=>null==t?void 0:t.map(t=>t.id===e.id?{...t,...e}:t))}});return{createStudent:o,updateStudent:d,deleteStudent:(0,r.D)({mutationFn:async t=>{if(a){let e=(await c.Jb()).filter(e=>e.id!==t);return await c.Vt(e),{success:!0}}let n=await (0,u.X)("deleteStudent",{studentId:t,confirm:!0},e);if(!n.success)throw Error(n.error||"Failed to delete student");return n.data},onSuccess:n}),bulkCreateStudents:(0,r.D)({mutationFn:async t=>{let{students:n}=t;if(a)return await c.JY(n.map(t=>{var e;return{...t,homeClassId:null!==(e=t.homeClassId)&&void 0!==e?e:void 0,customClassIds:t.customClassIds||[],grade:t.grade||1,classNum:t.classNum,number:t.number,name:t.name}})),{success:!0,count:n.length,results:[]};let s=await (0,u.X)("bulkCreateStudents",{students:n.map(t=>({number:t.number,name:t.name,grade:t.grade,classNum:t.classNum,homeClassId:t.homeClassId,customClassIds:t.customClassIds||[],memo:t.memo}))},e);if(!s.success)throw Error(s.error||"Failed to bulk create students");return s.data},onSuccess:n}),clearClassStudents:(0,r.D)({mutationFn:async t=>{let{homeClassId:n}=t;if(a){let t=(await c.Jb()).filter(t=>{var e;return t.homeClassId!==n&&!(null===(e=t.customClassIds)||void 0===e?void 0:e.includes(n))});return await c.Vt(t),{success:!0}}let s=await (0,u.X)("clearClassStudents",{homeClassId:n},e);if(!s.success)throw Error(s.error||"Failed to clear students");return s.data},onSuccess:n})}}function v(){let t=(0,s.NL)(),e=(0,i.XC)(),a=(0,l.Dv)(),n=()=>{t.invalidateQueries({queryKey:w.all})},o=(0,r.D)({mutationFn:async t=>{if(a)return await c.QM(t),{success:!0};let n=await (0,u.X)("createClass",{name:t},e);if(!n.success)throw Error(n.error||"Failed to create class");return n.data},onSuccess:n});return{addClass:o,removeClass:(0,r.D)({mutationFn:async t=>{if(a){let e=(await c.CI()).filter(e=>e!==t);return await c.fh(e),{success:!0}}let n=await (0,u.X)("deleteClass",{name:t},e);if(!n.success)throw Error(n.error||"Failed to delete class");return n.data},onSuccess:n}),renameClass:(0,r.D)({mutationFn:async t=>{let{oldName:n,newName:s}=t;if(a){let t=await c.CI(),e=t.indexOf(n);-1!==e&&(t[e]=s,await c.fh(t));let a=(await c.KO()).students.map(t=>{var e;let a={...t};return t.homeClassId===n&&(a.homeClassId=s),(null===(e=t.customClassIds)||void 0===e?void 0:e.includes(n))&&(a.customClassIds=t.customClassIds.map(t=>t===n?s:t)),a});return await c.Ww("students",a),{success:!0}}let r=await (0,u.X)("renameClass",{oldName:n,newName:s},e);if(!r.success)throw Error(r.error||"Failed to rename class");return r.data},onSuccess:()=>{n(),t.invalidateQueries({queryKey:f.all})}}),updateClassOrder:(0,r.D)({mutationFn:async t=>{if(a){let e=["ë´ì íê¸",...t.filter(t=>"ë´ì íê¸"!==t)];return await c.fh(e),{success:!0}}let n=await (0,u.X)("updateClassOrder",{orderedClassNames:t},e);if(!n.success)throw Error(n.error||"Failed to update class order");return n.data},onSuccess:n})}}},54392:function(t,e,a){a.d(e,{CI:function(){return c},JY:function(){return l},Jb:function(){return s},KO:function(){return n.getGuestData},LI:function(){return w},QM:function(){return d},Qn:function(){return y},Vt:function(){return r},Ww:function(){return n.saveGuestData},av:function(){return u},fh:function(){return o},iT:function(){return m}});var n=a(96214);let s=async()=>(await (0,n.getGuestData)()).students||[],r=async t=>{await (0,n.saveGuestData)("students",t)},u=async t=>{let e=await s(),a={...t,id:crypto.randomUUID()};return e.push(a),await r(e),a},i=async()=>{let t=await s(),e=new Set(["ë´ì íê¸"]);return t.forEach(t=>{t.homeClassId&&e.add(t.homeClassId),t.customClassIds&&t.customClassIds.forEach(t=>e.add(t))}),Array.from(e)},o=async t=>{await (0,n.saveGuestData)("classes",t)},d=async t=>{let e=(await (0,n.getGuestData)()).classes||[];if(!e.includes(t)){let a=[...e,t];await (0,n.saveGuestData)("classes",a)}},c=async()=>Array.from(new Set([...await i(),...(await (0,n.getGuestData)()).classes||[]])),l=async t=>{let e=[...await s(),...t.map(t=>({...t,id:crypto.randomUUID()}))];await r(e)},m=async()=>{let t=await (0,n.getGuestData)();return[...(t.autonomousActivities||[]).map(t=>({id:t.id,studentId:t.studentId,category:"autonomous",activityName:t.title||t.activityName,details:t.content||t.details||"",createdAt:t.date||t.createdAt||new Date().toISOString()})),...(t.careerActivities||[]).map(t=>({id:t.id,studentId:t.studentId,category:"career",activityName:t.title||t.activityName,details:t.content||t.details||"",createdAt:t.date||t.createdAt||new Date().toISOString()}))]},f=async t=>{let e=t.filter(t=>"autonomous"===t.category).map(t=>({id:t.id,studentId:t.studentId,title:t.activityName,content:t.details,date:t.createdAt})),a=t.filter(t=>"career"===t.category).map(t=>({id:t.id,studentId:t.studentId,title:t.activityName,content:t.details,date:t.createdAt}));await (0,n.saveGuestData)("autonomousActivities",e),await (0,n.saveGuestData)("careerActivities",a)},w=async t=>{let e=await m(),a=e.findIndex(e=>e.id===t.id);a>=0?e[a]=t:e.push(t),await f(e)},y=async t=>{let e=(await m()).filter(e=>e.id!==t);await f(e)}},96214:function(t,e,a){a.r(e),a.d(e,{DEMO_DATA_VERSION:function(){return r},DEMO_NAMETAG_CONFIG:function(){return I},STORAGE_KEY:function(){return n},VERSION_KEY:function(){return s},generateMockCleaningZones:function(){return c},generateMockData:function(){return d},getGuestCleaningZones:function(){return f},getGuestData:function(){return l},getGuestWorkNotes:function(){return y},saveGuestCleaningZones:function(){return w},saveGuestData:function(){return m},saveGuestWorkNotes:function(){return g}});let n="saemo-guest-data",s="saemo-guest-data-version",r="2.1",u=t=>{let e=t.getFullYear(),a=String(t.getMonth()+1).padStart(2,"0"),n=String(t.getDate()).padStart(2,"0");return"".concat(e,"-").concat(a,"-").concat(n)},i=t=>new Date("".concat(t,"T00:00:00")),o=t=>{if(!Array.isArray(t)||0===t.length)return t;let e=t.map(t=>i(t.date).getTime()).filter(t=>Number.isFinite(t));if(0===e.length)return t;let a=Math.min(...e),n=Math.max(...e)-a,s=new Date;s.setHours(0,0,0,0);let r=s.getDate(),o=r>=10?r-1:20,d=s.getTime()-864e5*o,c=t=>{let e=i(t).getTime();return Number.isFinite(e)?u(new Date(Math.min(d+864e5*Math.round((0===n?1:(e-a)/n)*o),s.getTime()))):t};return t.map(t=>{let e=c(t.date),a={...t,date:e};if(t.endDate){let n=Math.max(0,Math.round((i(t.endDate).getTime()-i(t.date).getTime())/864e5)),r=Math.min(i(e).getTime()+864e5*n,s.getTime());a.endDate=u(new Date(r))}return"string"==typeof t.createdAt&&t.createdAt.length>=10&&(a.createdAt="".concat(e).concat(t.createdAt.slice(10))),a})},d=async()=>{try{let t=await fetch("/demo-data.json"),e=(await t.json()).DEMO_GUEST_DATA;return e.students&&Array.isArray(e.students)&&(e.students=e.students.map(t=>{var e;return{...t,homeClassId:null!==(e=t.homeClassId)&&void 0!==e?e:t.classId}})),e.attendanceRecords&&(e.attendanceRecords=o(e.attendanceRecords)),e}catch(t){return console.error("Failed to fetch demo data",t),{students:[]}}},c=async()=>[{id:"zone-1",name:"êµì¤ ì¸ê¸°",studentIds:["mock-student-1","mock-student-2","mock-student-11","mock-student-12"],order:0,locked:!1,columnId:0,capacity:4},{id:"zone-2",name:"êµì¤ ë°ë¥ (ë¤)",studentIds:["mock-student-3"],order:1,locked:!1,columnId:0,capacity:2},{id:"zone-3",name:"ë³µë ì¸ê¸°",studentIds:["mock-student-4","mock-student-13"],order:2,locked:!1,columnId:1,capacity:3},{id:"zone-4",name:"ì¹ í/êµí",studentIds:["mock-student-5"],order:3,locked:!1,columnId:1,capacity:2},{id:"zone-5",name:"ì°½í/창문",studentIds:["mock-student-6","mock-student-14"],order:4,locked:!1,columnId:2,capacity:2},{id:"zone-6",name:"í¹ë³ 구ì",studentIds:["mock-student-7"],order:5,locked:!1,columnId:2,capacity:2},{id:"zone-7",name:"ë¶ë¦¬ìê±°",studentIds:["mock-student-8","mock-student-15"],order:6,locked:!1,columnId:3,capacity:2},{id:"zone-8",name:"ì¬ë¬¼í¨ ì",studentIds:["mock-student-9"],order:7,locked:!1,columnId:3,capacity:2},{id:"zone-9",name:"ê¸ìì¤ ëì°ë¯¸",studentIds:["mock-student-10"],order:8,locked:!1,columnId:3,capacity:2}],l=async()=>{let t=localStorage.getItem(n),e=localStorage.getItem(s);if(t&&e===r)try{return JSON.parse(t)}catch(t){console.error("Failed to parse guest data",t)}let a=await d();return localStorage.setItem(n,JSON.stringify(a)),localStorage.setItem(s,r),a},m=async(t,e)=>{let a={...await l(),[t]:e};localStorage.setItem(n,JSON.stringify(a))},f=async()=>{let t=await l();if(t.cleaningZones)return t.cleaningZones;let e=await c();return await m("cleaningZones",e),e},w=async t=>{await m("cleaningZones",t)},y=async()=>(await l()).workNotes||[],g=async t=>{await m("workNotes",t)},I={paperSize:"A4",rows:8,cols:4,showNumber:!0,showName:!0,fontSize:40,gap:2,padding:10,orientation:"horizontal",numberFormat:"2-digit",numberPosition:"above",borderRadius:4,fontFamily:"sans",backgroundColor:"#ffffff"}}}]);
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.