PageSourceSearch

https://naemo.ai/_next/static/chunks/600.6731d7b9fa985050.js

js naemo.ai collected 2026-09-24 14:30:32 UTC 2,727 bytes, 1 lines download raw bytes

1"use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[600],{30600:function(e,t,a){a.d(t,{generateFilledPdf:function(){return o}});var n=a(3323),r=a(20041);let c=null;async function s(){if(c)return c;let e=await fetch("/fonts/NotoSansKR-Regular.ttf");if(!e.ok)throw Error("Failed to load Korean font");return c=await e.arrayBuffer()}async function o(e,t,a,c){let o=await n.PDFDocument.load(e);o.registerFontkit(r.Z);let i=await s(),u=await o.embedFont(i),l=o.getPages();for(let e of t){let t=e.page;if(t<0||t>=l.length)continue;let r=l[t],s=function(e,t,a){var n,r,c;switch(e){case"studentName":return t.name;case"grade":return(null===(n=t.grade)||void 0===n?void 0:n.toString())||"";case"classNum":return(null===(r=t.classNum)||void 0===r?void 0:r.toString())||"";case"number":return(null===(c=t.number)||void 0===c?void 0:c.toString())||"";case"absenceType":return a.type||"";case"reason":return a.reason||"";case"startDate":{let e=new Date(a.startDate);return"".concat(e.getFullYear(),"년 ").concat(e.getMonth()+1,"월 ").concat(e.getDate(),"일")}case"startMonth":return String(new Date(a.startDate).getMonth()+1);case"startDay":return String(new Date(a.startDate).getDate());case"endDate":{let e=new Date(a.endDate||a.startDate);return"".concat(e.getFullYear(),"년 ").concat(e.getMonth()+1,"월 ").concat(e.getDate(),"일")}case"endMonth":return String(new Date(a.endDate||a.startDate).getMonth()+1);case"endDay":return String(new Date(a.endDate||a.startDate).getDate());case"details":return a.details||"";case"duration":{let e=new Date(a.startDate),t=a.endDate?new Date(a.endDate):e,n=0,r=new Date(e);for(;r<=t;){let e=r.getDay();0!==e&&6!==e&&n++,r.setDate(r.getDate()+1)}return"".concat(n,"일")}case"check-결석":return"결석"===a.type?"V":"";case"check-지각":return"지각"===a.type?"V":"";case"check-조퇴":return"조퇴"===a.type?"V":"";case"check-결과":return"결과"===a.type?"V":"";case"check-질병":return"질병"===a.reason?"V":"";case"check-인정":return"인정"===a.reason?"V":"";case"check-미인정":return"미인정"===a.reason?"V":"";case"check-기타":return"기타"===a.reason?"V":"";default:return""}}(e.fieldType,a,c);if(!s)continue;let o=e.fieldType.startsWith("check-"),i=o?1.3*e.fontSize:e.fontSize,d=r.getHeight();if(o){let t=u.heightAtSize(i,{descender:!1}),a=d-e.y-t,c=.7*i,s=e.x,o=a+.4*c,l=.1*i;r.drawLine({start:{x:s,y:o},end:{x:s+.35*c,y:o-.35*c},thickness:l,color:(0,n.rgb)(0,0,0)}),r.drawLine({start:{x:s+.35*c,y:o-.35*c},end:{x:s+c,y:o+.45*c},thickness:l,color:(0,n.rgb)(0,0,0)})}else{let t=u.heightAtSize(i,{descender:!1}),a=d-e.y-t;r.drawText(s,{x:e.x,y:a,size:i,font:u,color:(0,n.rgb)(0,0,0)})}}return new Blob([await o.save()],{type:"application/pdf"})}}}]);

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.