1(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[2258],{53805:function(e,t,r){(window.__NEXT_P=window.__NEXT_P||[]).push(["/projects/showcase/[id]",function(){return r(77969)}])},8608:function(e,t,r){"use strict";var o=r(64836);t.Z=void 0,function(e,t){if((!e||!e.__esModule)&&null!==e&&("object"==typeof e||"function"==typeof e)){var r=c(void 0);if(r&&r.has(e))return r.get(e);var o={__proto__:null},n=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var a in e)if("default"!==a&&Object.prototype.hasOwnProperty.call(e,a)){var s=n?Object.getOwnPropertyDescriptor(e,a):null;s&&(s.get||s.set)?Object.defineProperty(o,a,s):o[a]=e[a]}o.default=e,r&&r.set(e,o)}}(r(67294));var n=o(r(33651)),a=r(85893);function c(e){if("function"!=typeof WeakMap)return null;var t=new WeakMap,r=new WeakMap;return(c=function(e){return e?r:t})(e)}t.Z=(0,n.default)((0,a.jsx)("path",{d:"M12 1.27a11 11 0 00-3.48 21.46c.55.09.73-.28.73-.55v-1.84c-3.03.64-3.67-1.46-3.67-1.46-.55-1.29-1.28-1.65-1.28-1.65-.92-.65.1-.65.1-.65 1.1 0 1.73 1.1 1.73 1.1.92 1.65 2.57 1.2 3.21.92a2 2 0 01.64-1.47c-2.47-.27-5.04-1.19-5.04-5.5 0-1.1.46-2.1 1.2-2.84a3.76 3.76 0 010-2.93s.91-.28 3.11 1.1c1.8-.49 3.7-.49 5.5 0 2.1-1.38 3.02-1.1 3.02-1.1a3.76 3.76 0 010 2.93c.83.74 1.2 1.74 1.2 2.94 0 4.21-2.57 5.13-5.04 5.4.45.37.82.92.82 2.02v3.03c0 .27.1.64.73.55A11 11 0 0012 1.27"}),"GitHub")},98743:function(e,t,r){"use strict";var o=r(64836);t.Z=void 0;var n=o(r(33651)),a=r(85893);t.Z=(0,n.default)((0,a.jsx)("path",{d:"M8 5v14l11-7z"}),"PlayArrow")},77969:function(e,t,r){"use strict";r.r(t),r.d(t,{default:function(){return M}});var o=r(85893),n=r(67294),a=r(11163),c=r(20702),s=r(84166),i=r(60990),l=r(97182),d=r(11032),g=r(44723),x=r(51015),h=r(93454),p=r(81873),u=r(96788),m=r(55895),j=r(68573),b=r(52857),Z=r(93535),f=r(88607),y=r(28907),v=r(56912),w=r(26541),S=r(55292),C=r(42942),F=r(62849),P=r(57105),B=r(8608),R=r(98743),k=r(48227),E=r(61053),D=r(67013),I=r(78033),W=r(77504),T=r(72482),_=r(29090);r(11329);let A=e=>{let{rating:t,size:r=22}=e,n=[1,2,3,4,5].map(e=>t>=e?"full":t>=e-.5?"half":"empty");return(0,o.jsx)(s.Z,{direction:"row",justifyContent:"center",spacing:.2,mb:.5,children:n.map((e,t)=>"full"===e?(0,o.jsx)(C.Z,{sx:{fontSize:r,color:"#F59E0B"}},t):"half"===e?(0,o.jsx)(F.Z,{sx:{fontSize:r,color:"#F59E0B"}},t):(0,o.jsx)(P.Z,{sx:{fontSize:r,color:"#F59E0B"}},t))})},z=e=>{var t;let{currentRating:r,hoverStar:n,onHover:a,onRate:c,loading:l,colors:d}=e,g=null!==(t=null!=n?n:r)&&void 0!==t?t:0,x=(e,t)=>{let r=e.currentTarget.getBoundingClientRect();return(e.touches?e.touches[0].clientX:e.clientX)-r.left<r.width/2?t-.5:t};return(0,o.jsx)(s.Z,{direction:"row",justifyContent:"center",spacing:.3,onMouseLeave:()=>a(null),children:[1,2,3,4,5].map(e=>{let t=g>=e,r=!t&&g>=e-.5,n=r?"".concat(e-.5,"ì "):"".concat(e,"ì ");return(0,o.jsx)(i.Z,{role:"button","aria-label":n,onMouseMove:t=>{let r=t.currentTarget.getBoundingClientRect();a(t.clientX-r.left<r.width/2?e-.5:e)},onClick:t=>{l||c(x(t,e))},sx:{cursor:l?"wait":"pointer",width:32,height:32,display:"flex",alignItems:"center",justifyContent:"center"},children:t?(0,o.jsx)(C.Z,{sx:{fontSize:28,color:"#F59E0B"}}):r?(0,o.jsx)(F.Z,{sx:{fontSize:28,color:"#F59E0B"}}):(0,o.jsx)(P.Z,{sx:{fontSize:28,color:"#F59E0B",opacity:.4}})},e)})})};var M=()=>{var e,t,r,F,P,M,N,H,O,U,G;let{id:X}=(0,a.useRouter)().query,L=(0,c.s0)(),{colors:Y}=(0,T.VC)(),K=Number(localStorage.getItem("typingStudentId")||localStorage.getItem("userId"))||null,q=localStorage.getItem("typingStudentName")||localStorage.getItem("username")||"",J=!!K,[V,Q]=(0,n.useState)(null),[$,ee]=(0,n.use
1State)(!0),[et,er]=(0,n.useState)(""),[eo,en]=(0,n.useState)(0),[ea,ec]=(0,n.useState)(!1),[es,ei]=(0,n.useState)(0),[el,ed]=(0,n.useState)(null),[eg,ex]=(0,n.useState)(null),[eh,ep]=(0,n.useState)(!1),[eu,em]=(0,n.useState)(""),[ej,eb]=(0,n.useState)([]),[eZ,ef]=(0,n.useState)(""),[ey,ev]=(0,n.useState)(!1),[ew,eS]=(0,n.useState)(""),eC=(0,n.useCallback)(()=>{X&&(ee(!0),_.T.getDetail(X).then(e=>{e.data.success?Q(e.data.data):er("íë¡ì í¸ë¥¼ ì°¾ì ì ììµëë¤.")}).catch(()=>er("íë¡ì í¸ë¥¼ ë¶ë¬ì¤ë ì¤ ì¤ë¥ê° ë°ìíìµëë¤.")).finally(()=>ee(!1)))},[X]),eF=(0,n.useCallback)(()=>{X&&_.T.getRatings(X).then(e=>{e.data.success&&ed(e.data.data)}).catch(()=>{})},[X]),eP=(0,n.useCallback)(()=>{X&&_.T.getComments(X).then(e=>{e.data.success&&eb(e.data.data||[])}).catch(()=>{})},[X]);(0,n.useEffect)(()=>{X&&(eC(),eF(),eP())},[X,eC,eF,eP]);let eB=async e=>{if(!J){em("ë¡ê·¸ì¸ í ë³ì ì ì¤ ì ììµëë¤.");return}ep(!0),em("");try{let t=await _.T.submitRating(X,e);t.data.success&&(ed(t.data.data),eC())}catch(e){var t,r;em((null===(r=e.response)||void 0===r?void 0:null===(t=r.data)||void 0===t?void 0:t.message)||"í¬í ì¤ ì¤ë¥ê° ë°ìíìµëë¤.")}finally{ep(!1)}},eR=async()=>{if(eZ.trim()){ev(!0),eS("");try{(await _.T.addComment(X,eZ)).data.success&&(ef(""),eP())}catch(r){var e,t;eS((null===(t=r.response)||void 0===t?void 0:null===(e=t.data)||void 0===e?void 0:e.message)||"ëê¸ ë±ë¡ ì¤ ì¤ë¥ê° ë°ìíìµëë¤.")}finally{ev(!1)}}};if($)return(0,o.jsxs)(i.Z,{sx:{minHeight:"100vh",bgcolor:Y.bgPrimary},children:[(0,o.jsx)(I.Z,{}),(0,o.jsx)(i.Z,{sx:{display:"flex",justifyContent:"center",pt:14},children:(0,o.jsx)(l.Z,{sx:{color:"#FF6B35"}})})]});if(et||!V)return(0,o.jsxs)(i.Z,{sx:{minHeight:"100vh",bgcolor:Y.bgPrimary},children:[(0,o.jsx)(I.Z,{}),(0,o.jsxs)(d.Z,{maxWidth:"md",sx:{pt:8},children:[(0,o.jsx)(g.Z,{severity:"error",children:et||"íë¡ì í¸ë¥¼ ì°¾ì ì ììµëë¤."}),(0,o.jsx)(x.Z,{onClick:()=>L("/projects/showcase"),sx:{mt:2},children:"목ë¡ì¼ë¡"})]})]});let ek=V.projectType||"PYGAME",eE=_.k[ek]||_.k.OTHER,eD=V.screenshots||[],eI=eD.length>0,eW="PYGAME"===ek,eT=K&&V.studentId===K,e_=V.wasmEnabled&&V.wasmPath?V.wasmPath:null;return(0,o.jsxs)(i.Z,{sx:{minHeight:"100vh",bgcolor:Y.bgPrimary,display:"flex",flexDirection:"column"},children:[(0,o.jsx)(I.Z,{}),(0,o.jsxs)(d.Z,{maxWidth:"lg",sx:{py:4,flexGrow:1},children:[(0,o.jsx)(x.Z,{startIcon:(0,o.jsx)(S.Z,{}),onClick:()=>L("/projects/showcase"),sx:{color:Y.textSecondary,mb:2,textTransform:"none"},children:"íë¡ì í¸ ëª©ë¡"}),(0,o.jsxs)(h.Z,{sx:{p:3,borderRadius:3,bgcolor:Y.bgSecondary,border:"1px solid ".concat(Y.cardBorder),mb:3},children:[(0,o.jsxs)(s.Z,{direction:"row",spacing:1,alignItems:"center",mb:1.5,flexWrap:"wrap",useFlexGap:!0,children:[(0,o.jsx)(p.Z,{label:"".concat(eE.icon," ").concat(eE.label),size:"small",sx:{bgcolor:eE.color,color:"#fff",fontWeight:700}}),V.cohort&&(0,o.jsx)(p.Z,{label:"".concat(V.cohort,"기"),size:"small",variant:"outlined",sx:{borderColor:Y.cardBorder,color:Y.textSecondary}})]}),(0,o.jsx)(u.Z,{variant:"h5",sx:{fontWeight:800,color:Y.textPrimary,mb:1,lineHeight:1.3},children:V.title}),(0,o.jsxs)(s.Z,{direction:"row",spacing:2,alignItems:"center",children:[(0,o.jsxs)(s.Z,{direction:"row",spacing:1,alignItems:"center",children:[(0,o.jsx)(m.Z,{sx:{width:28,height:28,fontSize:"0.75rem",bgcolor:"#FF6B35"},children:(V.nickname||V.authorName||"?")[0]}),(0,o.jsx)(u.Z,{variant:"body2",sx:{color:Y.textSecondary,fontWeight:500},children:V.nickname||V.authorName})]}),V.createdAt&&(0,o.jsx)(u.Z,{variant:"caption",sx:{color:Y.textMuted},children:new Date(V.createdAt).toLocaleDateString("ko-KR")})]})]}),(0,o.jsxs)(j.ZP,{container:!0,spacing:4,children:[(0,o.jsxs)(j.ZP,{item:!0,xs:12,md:8,children:[eW&&e_&&(0,o.jsxs)(h.Z,{sx:{borderRadius:3,overflow:"hidden",mb:3,border:"1px solid ".concat(Y.cardBorder)},children:[(0,o.jsx)(i.Z,{sx:{bgcolor:"#000",p:1},children:(0,o.jsx)(u.Z,{variant:"caption",sx:{color:"#aaa"},children:"ë¼ì´ë¸ íë ì´"})}),(0,o.jsx)(i.Z,{component:"iframe",src:e_,title:V.title,sx:{width:"100%",height:480,border:"none",display:"block"},allowFullScreen:!0})]}),eI&&(0,o.jsxs)(i.Z,{sx:{mb:3,borderRadius:3,overflow:"hidden",border:"1px solid ".concat(Y.cardBorder),bgcolor:Y.bgSecondary,position:"relative"},children:[(0,o.jsx)(i.Z,{component:"img",src:eD[eo],alt:"ì¤í¬ë¦°ì· ".concat(eo+1),loading:"lazy",onClick:()=>!eW&&ec(!0),sx:{width:"100%",maxHeight:420,objectFit:"contain",display:"block",bgcolor:"#000",cursor:eW?"default":"zoom-in"},onError:e=>{e.target.style.display="none"}}),eD.length>1&&(0,o.jsxs)(o.Fragment,{children:[(0,o.jsx)(b.Z,{"aria-label":"ì´ì ì´ë¯¸ì§",onClick:()=>en((eo-1+eD.length)%eD.length),sx:{position:"absolute",left:8,top:"45%",transform:"translateY(-50%)",bgcolor:"rgba(0,0,0,0.5)",color:"#fff","&:hover":{bgcolor:"rgba(0,0,0,0.75)"}},children:(0,o.jsx)(k.Z,{})}),(0,o.jsx)(b.Z,{"aria-label":"ë¤ì ì´ë¯¸ì§",onClick:()=>en((eo+1)%eD.length),sx:{position:"absolute",right:8,top:"45%",transform:"translateY(-50%)",bgcolor:"rgba(0,0,0,0.5)",color:"#fff","&:hover":{bgcolor:"rgba(0,0,0,0.75)"}},children:(0,o.jsx)(E.Z,{})})]}),eD.length>1&&(0,o.jsx)(s.Z,{direction:"row",spacing:1,sx:{p:1.5,overflowX:"auto"},children:eD.map((e,t)=>(0,o.jsx)(i.Z,{component:"img",src:e,onClick:()=>en(t),sx:{width:72,height:48,objectFit:"cover",borderRadius:1,cursor:"pointer",border:"2px s
1olid ".concat(t===eo?"#FF6B35":"transparent"),opacity:t===eo?1:.6,transition:"all 0.15s",flexShrink:0},onError:e=>{e.target.style.display="none"}},t))})]}),!eW&&(0,o.jsx)(Z.Z,{open:ea,onClose:()=>ec(!1),sx:{display:"flex",alignItems:"center",justifyContent:"center",p:2},children:(0,o.jsx)(i.Z,{component:"img",src:eD[eo],alt:"íë ì´ë¯¸ì§",sx:{maxWidth:"95vw",maxHeight:"90vh",objectFit:"contain",borderRadius:2,outline:"none",cursor:"pointer"},onClick:()=>ec(!1),onError:e=>{e.target.style.display="none"}})}),eW&&(0,o.jsxs)(h.Z,{sx:{borderRadius:3,bgcolor:Y.bgSecondary,border:"1px solid ".concat(Y.cardBorder),overflow:"hidden",mb:3},children:[(0,o.jsxs)(f.Z,{value:es,onChange:(e,t)=>ei(t),sx:{borderBottom:"1px solid ".concat(Y.cardBorder),px:2},children:[(0,o.jsx)(y.Z,{label:"README"}),(0,o.jsx)(y.Z,{label:"ë³´ê³ ì"})]}),(0,o.jsxs)(i.Z,{sx:{p:3,minHeight:180},children:[0===es&&(0,o.jsx)(u.Z,{variant:"body2",sx:{color:Y.textPrimary,lineHeight:1.9,whiteSpace:"pre-wrap"},children:V.readmeText||"README ë´ì©ì´ ììµëë¤."}),1===es&&(0,o.jsx)(u.Z,{variant:"body2",sx:{color:Y.textPrimary,lineHeight:1.9,whiteSpace:"pre-wrap"},children:V.reportText||"ë³´ê³ ì ë´ì©ì´ ììµëë¤."})]})]}),!eW&&(0,o.jsxs)(h.Z,{sx:{p:3,borderRadius:3,bgcolor:Y.bgSecondary,border:"1px solid ".concat(Y.cardBorder),mb:3},children:[V.techStack&&(0,o.jsxs)(i.Z,{mb:2.5,children:[(0,o.jsx)(u.Z,{variant:"subtitle2",sx:{fontWeight:700,color:Y.textPrimary,mb:1},children:"기ì ì¤í"}),(0,o.jsx)(s.Z,{direction:"row",spacing:.75,flexWrap:"wrap",useFlexGap:!0,children:V.techStack.split(",").map(e=>e.trim()).filter(Boolean).map((e,t)=>(0,o.jsx)(p.Z,{label:e,size:"small",sx:{bgcolor:"rgba(255,107,53,0.1)",color:"#FF6B35",fontWeight:600}},t))})]}),(0,o.jsx)(v.Z,{sx:{borderColor:Y.cardBorder,mb:2.5}}),V.description&&(0,o.jsxs)(i.Z,{mb:2.5,children:[(0,o.jsx)(u.Z,{variant:"subtitle2",sx:{fontWeight:700,color:Y.textPrimary,mb:1},children:"íë¡ì í¸ ìê°"}),(0,o.jsx)(u.Z,{variant:"body2",sx:{color:Y.textPrimary,lineHeight:1.9,whiteSpace:"pre-wrap"},children:V.description})]}),(0,o.jsxs)(s.Z,{direction:"row",spacing:1.5,flexWrap:"wrap",useFlexGap:!0,children:[V.githubUrl&&(0,o.jsx)(x.Z,{variant:"outlined",startIcon:(0,o.jsx)(B.Z,{}),href:V.githubUrl,target:"_blank",rel:"noopener noreferrer",sx:{borderColor:Y.cardBorder,color:Y.textPrimary,"&:hover":{borderColor:"#FF6B35",color:"#FF6B35"}},children:"GitHub"}),V.demoUrl&&(0,o.jsx)(x.Z,{variant:"contained",startIcon:(0,o.jsx)(R.Z,{}),href:V.demoUrl,target:"_blank",rel:"noopener noreferrer",sx:{bgcolor:"#FF6B35","&:hover":{bgcolor:"#e55a25"},fontWeight:700},children:"ë°ëª¨ ì¤í"})]})]}),(0,o.jsxs)(h.Z,{sx:{p:3,borderRadius:3,bgcolor:Y.bgSecondary,border:"1px solid ".concat(Y.cardBorder),mb:3},children:[(0,o.jsx)(u.Z,{variant:"subtitle1",sx:{fontWeight:700,color:Y.textPrimary,mb:2},children:"ë³ì íê°"}),(0,o.jsxs)(i.Z,{sx:{textAlign:"center",p:2,bgcolor:"rgba(245,158,11,0.06)",borderRadius:2,mb:2},children:[(0,o.jsx)(A,{rating:null!==(t=null!==(e=null==el?void 0:el.avgRating)&&void 0!==e?e:V.avgRating)&&void 0!==t?t:0,size:28}),(0,o.jsx)(u.Z,{variant:"h5",sx:{fontWeight:900,color:"#F59E0B"},children:(null!==(F=null!==(r=null==el?void 0:el.avgRating)&&void 0!==r?r:V.avgRating)&&void 0!==F?F:0).toFixed(1)}),(0,o.jsxs)(u.Z,{variant:"caption",sx:{color:Y.textSecondary},children:[null!==(M=null!==(P=null==el?void 0:el.ratingCount)&&void 0!==P?P:V.ratingCount)&&void 0!==M?M:0,"ëª
ì´ íê°"]})]}),eT?(0,o.jsx)(u.Z,{variant:"caption",sx:{display:"block",textAlign:"center",color:Y.textSecondary},children:"ë³¸ì¸ ìíìë ë³ì ì ì¤ ì ììµëë¤."}):J?(0,o.jsxs)(i.Z,{children:[(0,o.jsx)(u.Z,{variant:"caption",sx:{display:"block",textAlign:"center",color:Y.textSecondary,mb:1},children:(null==el?void 0:el.myRating)!=null?"ë´ ë³ì : ".concat(el.myRating,"ì (ìì ê°ë¥)"):"ë³ì ì ì íí´ì£¼ì¸ì (0.5 ë¨ì)"}),(0,o.jsx)(z,{currentRating:null!==(N=null==el?void 0:el.myRating)&&void 0!==N?N:null,hoverStar:eg,onHover:ex,onRate:eB,loading:eh,colors:Y}),eu&&(0,o.jsx)(g.Z,{severity:"error",sx:{mt:1},children:eu})]}):(0,o.jsx)(g.Z,{severity:"info",children:"ë¡ê·¸ì¸ í ë³ì ì ì¤ ì ììµëë¤."})]}),(0,o.jsxs)(h.Z,{sx:{p:3,borderRadius:3,bgcolor:Y.bgSecondary,border:"1px solid ".concat(Y.cardBorder)},children:[(0,o.jsxs)(u.Z,{variant:"subtitle1",sx:{fontWeight:700,color:Y.textPrimary,mb:2},children:["ëê¸ (",ej.length,")"]}),J?(0,o.jsxs)(s.Z,{direction:"row",spacing:1,mb:3,alignItems:"flex-start",children:[(0,o.jsx)(m.Z,{sx:{width:32,height:32,fontSize:"0.8rem",bgcolor:"#FF6B35",mt:.5},children:(q||"?")[0]}),(0,o.jsx)(w.Z,{value:eZ,onChange:e=>ef(e.target.value),onKeyDown:e=>{"Enter"!==e.key||e.shiftKey||(e.preventDefault(),eR())},placeholder:"ëê¸ì ì
ë ¥íì¸ì. (500ì ì´ë´)",multiline:!0,maxRows:4,fullWidth:!0,size:"small",inputProps:{maxLength:500}}),(0,o.jsx)(b.Z,{onClick:eR,disabled:!eZ.trim()||ey,sx:{bgcolor:"#FF6B35",color:"#fff",mt:.5,"&:hover":{bgcolor:"#e55a25"}
1,"&:disabled":{bgcolor:"action.disabledBackground"}},children:ey?(0,o.jsx)(l.Z,{size:20,sx:{color:"#fff"}}):(0,o.jsx)(D.Z,{})})]}):(0,o.jsx)(g.Z,{severity:"info",sx:{mb:2},children:"ë¡ê·¸ì¸ í ëê¸ì ìì±í ì ììµëë¤."}),ew&&(0,o.jsx)(g.Z,{severity:"error",sx:{mb:2},children:ew}),0===ej.length?(0,o.jsx)(u.Z,{variant:"body2",sx:{color:Y.textSecondary,textAlign:"center",py:4},children:"ìì§ ëê¸ì´ ììµëë¤. 첫 ëê¸ì ë¨ê²¨ë³´ì¸ì!"}):(0,o.jsx)(s.Z,{spacing:2,children:ej.map(e=>(0,o.jsxs)(i.Z,{children:[(0,o.jsxs)(s.Z,{direction:"row",spacing:1.5,alignItems:"flex-start",children:[(0,o.jsx)(m.Z,{sx:{width:30,height:30,fontSize:"0.75rem",bgcolor:"#FF6B35",flexShrink:0},children:(e.authorName||"?")[0]}),(0,o.jsxs)(i.Z,{flex:1,children:[(0,o.jsxs)(s.Z,{direction:"row",spacing:1,alignItems:"center",mb:.3,children:[(0,o.jsx)(u.Z,{variant:"caption",sx:{fontWeight:700,color:Y.textPrimary},children:e.authorName}),(0,o.jsx)(u.Z,{variant:"caption",sx:{color:Y.textMuted},children:new Date(e.createdAt).toLocaleDateString("ko-KR")})]}),(0,o.jsx)(u.Z,{variant:"body2",sx:{color:Y.textPrimary,lineHeight:1.7,whiteSpace:"pre-wrap"},children:e.content})]})]}),(0,o.jsx)(v.Z,{sx:{mt:2,borderColor:Y.cardBorder}})]},e.id))})]})]}),(0,o.jsx)(j.ZP,{item:!0,xs:12,md:4,children:(0,o.jsxs)(s.Z,{spacing:2.5,children:[(0,o.jsxs)(h.Z,{sx:{p:3,borderRadius:3,bgcolor:Y.bgSecondary,border:"1px solid ".concat(Y.cardBorder)},children:[(0,o.jsxs)(s.Z,{direction:"row",alignItems:"center",spacing:1.5,mb:2,children:[(0,o.jsx)(m.Z,{sx:{bgcolor:"#FF6B35",width:44,height:44},children:(V.nickname||V.authorName||"?")[0]}),(0,o.jsxs)(i.Z,{children:[(0,o.jsx)(u.Z,{variant:"body2",sx:{fontWeight:700,color:Y.textPrimary},children:V.nickname||V.authorName}),V.cohort&&(0,o.jsxs)(u.Z,{variant:"caption",sx:{color:Y.textSecondary},children:[V.cohort,"기 ìê°"]})]})]}),(0,o.jsx)(v.Z,{sx:{borderColor:Y.cardBorder,mb:2}}),(0,o.jsxs)(s.Z,{spacing:1,children:[(0,o.jsxs)(s.Z,{direction:"row",justifyContent:"space-between",children:[(0,o.jsx)(u.Z,{variant:"caption",sx:{color:Y.textSecondary},children:"íë¡ì í¸ ì í"}),(0,o.jsx)(p.Z,{label:"".concat(eE.icon," ").concat(eE.label),size:"small",sx:{bgcolor:eE.color,color:"#fff",fontWeight:600,height:20,fontSize:"0.7rem"}})]}),V.cohort&&(0,o.jsxs)(s.Z,{direction:"row",justifyContent:"space-between",children:[(0,o.jsx)(u.Z,{variant:"caption",sx:{color:Y.textSecondary},children:"기ì"}),(0,o.jsxs)(u.Z,{variant:"caption",sx:{color:Y.textPrimary,fontWeight:500},children:[V.cohort,"기"]})]}),(0,o.jsxs)(s.Z,{direction:"row",justifyContent:"space-between",children:[(0,o.jsx)(u.Z,{variant:"caption",sx:{color:Y.textSecondary},children:"ë±ë¡ì¼"}),(0,o.jsx)(u.Z,{variant:"caption",sx:{color:Y.textPrimary,fontWeight:500},children:V.createdAt?new Date(V.createdAt).toLocaleDateString("ko-KR"):"-"})]})]})]}),eW&&V.githubUrl&&(0,o.jsx)(x.Z,{variant:"outlined",fullWidth:!0,startIcon:(0,o.jsx)(B.Z,{}),href:V.githubUrl,target:"_blank",rel:"noopener noreferrer",sx:{borderColor:Y.cardBorder,color:Y.textPrimary,borderRadius:2,"&:hover":{borderColor:"#FF6B35",color:"#FF6B35"}},children:"GitHub 보기"}),(0,o.jsxs)(h.Z,{sx:{p:2.5,borderRadius:3,bgcolor:Y.bgSecondary,border:"1px solid ".concat(Y.cardBorder)},children:[(0,o.jsx)(u.Z,{variant:"subtitle2",sx:{fontWeight:700,color:Y.textPrimary,mb:1.5},children:"ë³ì ìì½"}),(0,o.jsxs)(s.Z,{direction:"row",alignItems:"center",spacing:1,children:[(0,o.jsx)(C.Z,{sx:{color:"#F59E0B"}}),(0,o.jsx)(u.Z,{variant:"h6",sx:{fontWeight:900,color:"#F59E0B"},children:(null!==(O=null!==(H=null==el?void 0:el.avgRating)&&void 0!==H?H:V.avgRating)&&void 0!==O?O:0).toFixed(1)}),(0,o.jsxs)(u.Z,{variant:"caption",sx:{color:Y.textSecondary},children:["/ 5.0 \xb7 ",null!==(G=null!==(U=null==el?void 0:el.ratingCount)&&void 0!==U?U:V.ratingCount)&&void 0!==G?G:0,"ëª
"]})]})]})]})})]})]}),(0,o.jsx)(W.Z,{})]})}},29090:function(e,t,r){"use strict";r.d(t,{T:function(){return i},k:function(){return s}});var o=r(87066),n=r(37696);let a="/api/projects",c=o.Z.create();c.interceptors.request.use(e=>{e=(0,n.c2)(e);{let t=localStorage.getItem("typingStudentId"),r=localStorage.getItem("typingStudentName")||localStorage.getItem("username");t&&(e.headers["X-User-Id"]=t),r&&(e.headers["X-Username"]=r)}return e});let s={PYGAME:{label:"íì´ê²ì",color:"#4CAF50",icon:"\uD83C\uDFAE"},PYTHON:{label:"Python ìµí©",color:"#22c55e",icon:"\uD83D\uDC0D"},SPRING_BOOT:{label:"ì¤íë§ë¶í¸",color:"#6DB33F",icon:"\uD83C\uDF43"},WEB:{label:"ì¹ íë¡ì í¸",color:"#2196F3",icon:"\uD83C\uDF10"},APP:{label:"ì± ê°ë°",color:"#FF9800",icon:"\uD83D\uDCF1"},OTHER:{label:"기í",color:"#9E9E9E",icon:"\uD83D\uDCBB"}},i={getList:e=>c.get(a,{params:e}
1),getDetail:e=>c.get("".concat(a,"/").concat(e)),getTags:()=>c.get("".concat(a,"/tags")),getCohorts:()=>c.get("".concat(a,"/cohorts")),getMyProjects:()=>c.get("".concat(a,"/my")),registerGeneral:(e,t,r)=>{let o=new FormData;return o.append("data",JSON.stringify(e)),(t||[]).forEach(e=>o.append("screenshots",e)),c.post("".concat(a,"/register/general"),o,{headers:{"Content-Type":"multipart/form-data"},onUploadProgress:r})},getRatings:e=>c.get("".concat(a,"/").concat(e,"/ratings")),submitRating:(e,t)=>c.post("".concat(a,"/").concat(e,"/rate"),{score:t}),getComments:e=>c.get("".concat(a,"/").concat(e,"/comments")),addComment:(e,t)=>c.post("".concat(a,"/").concat(e,"/comments"),{content:t}),getPortfolio:e=>c.get("".concat(a,"/portfolio/").concat(e))}},11329:function(e,t,r){"use strict";r.d(t,{N3:function(){return l},cI:function(){return i},g8:function(){return d}});var o=r(20567),n=r(14932),a=r(87066);let c="/api",s=()=>({"X-User-Id":localStorage.getItem("typingStudentId")||"","X-Username":localStorage.getItem("typingStudentName")||""}),i={getList:function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return a.Z.get("".concat(c,"/pygame/projects"),{params:e})},getDetail:e=>a.Z.get("".concat(c,"/pygame/projects/").concat(e)),getTags:()=>a.Z.get("".concat(c,"/pygame/projects/tags")),getCohorts:()=>a.Z.get("".concat(c,"/pygame/projects/cohorts")),getMyProjects:()=>a.Z.get("".concat(c,"/pygame/projects/my"),{headers:s()}),toggleCodePublic:e=>a.Z.patch("".concat(c,"/pygame/projects/").concat(e,"/code-public"),{},{headers:s()}),getRatings:e=>a.Z.get("".concat(c,"/pygame/projects/").concat(e,"/ratings"),{headers:s()}),submitRating:(e,t)=>a.Z.post("".concat(c,"/pygame/projects/").concat(e,"/rate"),{score:t},{headers:s()}),getComments:e=>a.Z.get("".concat(c,"/pygame/projects/").concat(e,"/comments")),addComment:(e,t)=>a.Z.post("".concat(c,"/pygame/projects/").concat(e,"/comments"),{content:t},{headers:s()}),deleteComment:e=>a.Z.delete("".concat(c,"/pygame/projects/comments/").concat(e),{headers:s()}),getPhoneAuthStatus:()=>a.Z.get("".concat(c,"/pygame/projects/phone-auth-status"),{headers:s()}),uploadWasm:(e,t,r)=>{let i=new FormData;return i.append("wasmZip",t),a.Z.post("".concat(c,"/pygame/projects/").concat(e,"/wasm"),i,{headers:(0,n._)((0,o._)({},s()),{"Content-Type":"multipart/form-data"}),onUploadProgress:r})},deleteWasm:e=>a.Z.delete("".concat(c,"/pygame/projects/").concat(e,"/wasm"),{headers:s()}),getPortfolio:e=>a.Z.get("".concat(c,"/pygame/projects/portfolio/").concat(encodeURIComponent(e))),getSourceCode:e=>a.Z.get("".concat(c,"/pygame/projects/").concat(e,"/source")),register:function(e,t,r,i,l){let d=arguments.length>5&&void 0!==arguments[5]?arguments[5]:{},g=new FormData;return g.append("data",JSON.stringify(e)),g.append("gamePy",t),g.append("readmeTxt",r),g.append("reportTxt",i),l.forEach(e=>g.append("screenshots",e)),Object.entries(d).forEach(e=>{let[t,r]=e;g.append("gameImages",r,t)}),a.Z.post("".concat(c,"/pygame/projects/register"),g,{headers:(0,n._)((0,o._)({},s()),{"Content-Type":"multipart/form-data"})})}},l={getHallOfFame:()=>a.Z.get("".concat(c,"/pygame/awards/hall-of-fame")),getMonthlyWinner:()=>a.Z.get("".concat(c,"/pygame/awards/monthly-winner")),getProjectAwards:e=>a.Z.get("".concat(c,"/pygame/awards/project/").concat(e)),adminSet:e=>a.Z.post("".concat(c,"/pygame/awards/admin/set"),e),adminRunMonthly:(e,t)=>a.Z.post("".concat(c,"/pygame/awards/admin/run-monthly"),{year:e,month:t}),adminRunAnnual:e=>a.Z.post("".concat(c,"/pygame/awards/admin/run-annual"),{year:e}),adminRemove:e=>a.Z.delete("".concat(c,"/pygame/awards/admin/").concat(e))},d={getProjects:function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return a.Z.get("".concat(c,"/pygame/projects/admin"),{params:e})},approve:e=>a.Z.post("".concat(c,"/pygame/projects/").concat(e,"/approve"),{},{headers:s()}),reject:(e,t)=>a.Z.post("".concat(c,"/pygame/projects/").concat(e,"/reject"),{reason:t},{headers:s()}),invalidateRatings:e=>a.Z.post("".concat(c,"/pygame/projects/admin/invalidate-ratings"),{voterId:e},{headers:s()}),setWasmEnabled:(e,t)=>
1a.Z.patch("".concat(c,"/pygame/projects/").concat(e,"/wasm-enabled"),{enabled:t},{headers:s()}),getTags:()=>a.Z.get("".concat(c,"/pygame/projects/admin/tags")),createTag:e=>a.Z.post("".concat(c,"/pygame/projects/admin/tags"),{name:e}),deleteTag:e=>a.Z.delete("".concat(c,"/pygame/projects/admin/tags/").concat(e))}}},function(e){e.O(0,[8710,5076,1873,5077,8573,9744,4235,4723,9346,3965,2421,3338,5317,8033,7504,2888,9774,179],function(){return e(e.s=53805)}),_N_E=e.O()}]);
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.