PageSourceSearch

https://naemo.ai/_next/static/chunks/2009.c668ca8d758a6ed8.js

js naemo.ai collected 2026-09-24 14:30:42 UTC 8,739 bytes, 1 lines download raw bytes

1"use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[2009],{30401:function(e,t,n){n.d(t,{Z:function(){return r}});let r=(0,n(79205).Z)("Check",[["path",{d:"M20 6 9 17l-5-5",key:"1gmf2c"}]])},78867:function(e,t,n){n.d(t,{Z:function(){return r}});let r=(0,n(79205).Z)("Copy",[["rect",{width:"14",height:"14",x:"8",y:"8",rx:"2",ry:"2",key:"17jyea"}],["path",{d:"M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2",key:"zix9uf"}]])},54001:function(e,t,n){n.d(t,{Z:function(){return r}});let r=(0,n(79205).Z)("Key",[["circle",{cx:"7.5",cy:"15.5",r:"5.5",key:"yqb3hr"}],["path",{d:"m21 2-9.6 9.6",key:"1j0ho8"}],["path",{d:"m15.5 7.5 3 3L22 7l-3-3",key:"1rn1fs"}]])},51817:function(e,t,n){n.d(t,{Z:function(){return r}});let r=(0,n(79205).Z)("LoaderCircle",[["path",{d:"M21 12a9 9 0 1 1-6.219-8.56",key:"13zald"}]])},99397:function(e,t,n){n.d(t,{Z:function(){return r}});let r=(0,n(79205).Z)("Plus",[["path",{d:"M5 12h14",key:"1ays0h"}],["path",{d:"M12 5v14",key:"s699le"}]])},48313:function(e,t,n){n.d(t,{Z:function(){return a}});var r=n(2265),i=n(54887);function a(e){let{children:t}=e,[n,a]=(0,r.useState)(!1);return(0,r.useEffect)(()=>(a(!0),()=>a(!1)),[]),n?(0,i.createPortal)(t,document.body):null}},80664:function(e,t,n){n.d(t,{g:function(){return h}});var r=n(57437),i=n(2265),a=n(32489),l=n(54001),s=n(49322),c=n(33245),d=n(51817),o=n(30401),u=n(82023),x=n(83008),m=n(34137);function h(e){let{isOpen:t,onClose:n,onSuccess:h}=e,[f,b]=(0,i.useState)(""),[p,k]=(0,i.useState)(!1),[g,j]=(0,i.useState)(null),[w,y]=(0,i.useState)("input"),[z,v]=(0,i.useState)(null),[N,Z]=(0,i.useState)(0);if((0,i.useEffect)(()=>{if(!t){let e=setTimeout(()=>{b(""),j(null),y("input"),v(null),Z(0),k(!1)},200);return()=>clearTimeout(e)}},[t]),(0,m.j)(n,t),!t)return null;let C=async e=>{if(e.preventDefault(),f.replace(/-/g,"")){k(!0),j(null);try{let e=await (0,x.X)("redeemLicenseCode",{code:f},{});if(e.success){var t,n,r,i;v(null!==(r=null===(t=e.data)||void 0===t?void 0:t.paidUntil)&&void 0!==r?r:null),Z(null!==(i=null===(n=e.data)||void 0===n?void 0:n.bonusCredits)&&void 0!==i?i:0),y("success")}else j(e.error||"등록할 수 없는 코드입니다. 다시 확인해 주세요.")}catch(e){j("코드 등록 중 오류가 발생했습니다. 잠시 후 다시 시도해 주세요.")}finally{k(!1)}}},X=f.replace(/-/g,"").length>0;return(0,r.jsx)("div",{className:"modal-viewport z-[120000] flex items-center justify-center bg-black/60 backdrop-blur-sm p-4 animate-in fade-in duration-200",onClick:e=>e.target===e.currentTarget&&n(),children:(0,r.jsxs)("div",{className:"relative w-full max-w-[400px] bg-white dark:bg-[#121212] border border-zinc-200 dark:border-white/10 rounded-2xl shadow-2xl overflow-hidden animate-in zoom-in-95 duration-150 flex flex-col",children:[(0,r.jsx)("button",{type:"button",onClick:n,"aria-label":"닫기",className:"absolute top-4 right-4 p-1.5 text-zinc-400 hover:text-zinc-600 dark:hover:text-white rounded-lg hover:bg-zinc-100 dark:hover:bg-white/5 transition-colors",children:(0,r.jsx)(a.Z,{size:18})}),(0,r.jsx)("div",{className:"p-7",children:"input"===w?(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)("div",{className:"w-11 h-11 rounded-xl flex items-center justify-center bg-zinc-100 dark:bg-white/5 border border-zinc-200 dark:border-white/10 text-zinc-800 dark:text-zinc-100 mb-4",children:(0,r.jsx)(l.Z,{size:20})}),(0,r.jsx)("h2",{className:"text-lg font-bold tracking-tight text-zinc-900 dark:text-white mb-1.5",children:"이용권 코드 등록"}),(0,r.jsx)("p",{className:"text-sm text-zinc-500 dark:text-zinc-400 leading-relaxed mb-6",children:"전달받으신 이용권 코드를 입력하시면 유료 기능이 즉시 활성화됩니다."}),(0,r.jsxs)("form",{onSubmit:C,className:"space-y-4",children:[(0,r.jsxs)("div",{children:[(0,r.jsx)("label",{className:"block text-xs font-semibold text-zinc-700 dark:text-zinc-300 mb-2",children:"이용권 코드 (12자리)"}),(0,r.jsx)("div",{className:"relative",children:(0,r.jsx)("input",{type:"text",value:f,onChange:e=>{let t=e.target.value;/[ㄱ-ㅎㅏ-ㅣ가-힣]/.test(t)?j("이용권 코드는 영문과 숫자만 입력 가능합니다. (한/영 키를 확인해 주세요)"):g&&g.includes("한/영 키")?j(null):g&&j(null),b(function(e){let t=e.replace(/[^a-zA-Z0-9]/g,"").toUpperCase().slice(0,12),n=[];for(let e=0;e<t.length;e+=4)n.push(t.slice(e,e+4));return n.join("-")}(t))},placeholder:"XXXX-XXXX-XXXX",autoFocus:!0,autoComplete:"off",spellCheck:!1,className:["w-full bg-zinc-50 dark:bg-white/5 rounded-xl px-4 py-3.5","text-base text-zinc-900 dark:text-white font-mono tracking-widest text-center uppercase font-medium","placeholder:text-zinc-300 dark:placeholder:text-zinc-600 placeholder:tracking-widest placeholder:font-normal","border outline-none transition duration-150",g?"border-red-500/80 dark:border-red-500/80 ring-2 ring-red-500/20 bg-red-50/20 dark:bg-red-950/10":"border-zinc-200 dark:border-white/10 focus:border-zinc-900 dark:focus:border-white focus:ring-2 focus:ring-zinc-900/10 dark:focus:ring-white/10 focus:bg-white dark:focus:bg-[#181818]"].join(" ")})}),(0,r.jsx)("div",{className:"mt-2.5 min-h-[20px] flex items-start gap-1.5",children:g?(0,r.jsxs)("div",{className:"flex items-center gap-1.5 text-xs font-medium text-red-600 dark:text-red-400 animate-in fade-in duration-150",children:[(0,r.jsx)(s.Z,{size:14,className:"shrink-0 mt-0.5"}),(0,r.jsx)("span",{children:g})]}):(0,r.jsxs)("div",{className:"flex items-center gap-1.5 text-xs text-zinc-400 dark:text-zinc-500",children:[(0,r.jsx)(c.Z,{size:13,className:"shrink-0"}),(0,r.jsx)("span",{children:"학교 또는 단체에서 구매 후 발급된 코드입니다."})]})})]}),(0,r.jsx)("div",{className:"pt-2",children:(0,r.jsx)("button",{type:"submit",disabled:p||!X,className:["license-btn-primary w-full py-3.5 rounded-xl text-sm font-semibold transition duration-150 flex items-center justify-center gap-2",p||!X?"opacity-40 cursor-not-allowed":"hover:opacity-90 active:scale-[0.99] cursor-pointer"].join(" "),children:p?(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(d.Z,{size:16,className:"animate-spin"}),"코드 검증 및 등록 중..."]}):"이용권 등록하기"})})]})]}):(0,r.jsxs)("div",{className:"pt-1 text-center sm:text-left",children:[(0,r.jsx)("div",{className:"w-12 h-12 rounded-xl flex items-center justify-center bg-emerald-500/10 border border-emerald-500/20 text-emerald-600 dark:text-emerald-400 mb-4",children:(0,r.jsx)(o.Z,{size:24,strokeWidth:2.5})}),(0,r.jsx)("h2",{className:"text-lg font-bold tracking-tight text-zinc-900 dark:text-white mb-1.5",children:"이용권이 등록되었습니다!"}),(0,r.jsx)("p",{className:"text-sm text-zinc-500 dark:text-zinc-400 leading-relaxed mb-6",children:"유료 플랜이 적용되어 모든 기능을 제한 없이 이용하실 수 있습니다."}),(z||N>0)&&(0,r.jsxs)("div",{className:"bg-zinc-50 dark:bg-white/5 border border-zinc-200 dark:border-white/10 rounded-xl p-4 mb-6 space-y-3",children:[z&&(0,r.jsxs)("div",{className:"flex items-center justify-between text-sm",children:[(0,r.jsx)("span",{className:"text-zinc-500 dark:text-zinc-400 font-medium",children:"이용 만료일"}),(0,r.jsx)("span",{className:"font-semibold text-zinc-900 dark:text-white",children:new Date(z).toLocaleDateString("ko-KR",{year:"numeric",month:"long",day:"numeric"})+"까지"})]}),N>0&&(0,r.jsxs)("div",{className:"flex items-center justify-between text-sm pt-2.5 border-t border-zinc-200/60 dark:border-white/5",children:[(0,r.jsxs)("span",{className:"flex items-center gap-1.5 text-zinc-500 dark:text-zinc-400 font-medium",children:[(0,r.jsx)(u.Z,{size:14,className:"text-amber-500"}),"보너스 크레딧"]}
1),(0,r.jsxs)("span",{className:"font-bold text-blue-600 dark:text-blue-400",children:["+",N,"개 지급 완료"]})]})]}),(0,r.jsx)("button",{type:"button",onClick:()=>{null==h||h(),window.location.reload()},className:"license-btn-primary w-full py-3.5 rounded-xl text-sm font-semibold hover:opacity-90 active:scale-[0.99] transition duration-150",children:"바로 시작하기"})]})})]})})}},34137:function(e,t,n){n.d(t,{j:function(){return l}});var r=n(2265);let i=[],a=!1;function l(e){let t=!(arguments.length>1)||void 0===arguments[1]||arguments[1],n=(0,r.useRef)(e);(0,r.useEffect)(()=>{n.current=e},[e]),(0,r.useEffect)(()=>{if(!t)return;a||(a=!0,window.addEventListener("keydown",e=>{if("Escape"!==e.key)return;let t=i[i.length-1];t&&t.call()}));let e={call:()=>n.current()};return i.push(e),()=>{let t=i.lastIndexOf(e);-1!==t&&i.splice(t,1)}},[t])}},2665:function(e,t,n){n.d(t,{O:function(){return r}});function r(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:new Date,n=e?e instanceof Date?e:new Date(e):null;return!!n&&n.getTime()>t.getTime()}}}]);

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.