var Re=Object.defineProperty;var Se=(s,t,a)=>t in s?Re(s,t,{enumerable:!0,configurable:!0,writable:!0,value:a}):s[t]=a;var D=(s,t,a)=>Se(s,typeof t!="symbol"?t+"":t,a);import{r as M,j as e,c as ke,u as _e,a as Pe,b as Le}from"./vendor-react-C630P38J.js";import{d as Te}from"./vendor-utils-Cb1MAKRV.js";import{P as G}from"./vendor-overlay-B61Jbn6n.js";import{aa as Q,H as O,c0 as de,c1 as ee,bB as ue,L as he,c2 as E,d as j,ae as pe,c3 as W,bL as se,c4 as Be,N as Ie,bj as Fe,a6 as Ee,u as Ue,aO as $e,bx as qe,bw as Me,c5 as Oe,bO as ze,c6 as Ye,c7 as Ae,bT as Ve,c8 as He,bD as Ge}from"./feature-order-C2we0F5o.js";import{u as ge,C as Ne,c as xe}from"./vendor-rhf-CXRF5ML7.js";import{C as te,u as We,R as Qe,b as Xe,P as Je,a as Ke}from"./index.css.ts.vanilla-CskxOPcC.js";import{a as Ze,f as De}from"./vendor-query-BjC2S-sR.js";import{g as es,h as ss}from"./useBrandInfoByBrandNo-DQa2NbIq.js";import{h as je}from"./index-DOpJRihs.js";import{P as fe}from"./event-B2tWEq9c.js";import{u as U}from"./vendor-i18n-D_F5k183.js";import{p as ae,i as ts,t as as,f as ns,q as rs}from"./vendor-fxts-IS4CCBC4.js";import{a as os}from"./product-a1hBxOTz.js";import{B as is}from"./useMyReviewableList-DavuWkI1.js";import"./vendor-swiper-CwUwDtZu.js";import"./index-DzLEDbEg.js";import"./index-BuHG-EMz.js";import"./vendor-runtime-BrGgGswE.js";import"./vendor-hooks-D-WB61cZ.js";import"./vendor-cookie-BFUm5jHE.js";import"./vendor-state-BxLZOG0B.js";import"./vendor-form-ui-C6F7344s.js";import"./vendor-date-XKm2J5pk.js";import"./vendor-zod-BNDLCzeL.js";import"./vendor-meta-D6H5T8-B.js";const ve=({boardNo:s,articleNo:t,searchParams:a,options:o})=>Ze(es({boardNo:s,articleNo:t,searchParams:a,options:{enabled:!!s&&t>0,...o}}));var cs="_12w7j3i0",ls="_12w7j3i1",ms="_12w7j3i2",ds="_12w7j3i3",us="_12w7j3i4",hs="_12w7j3i5",ps="_12w7j3i6",gs="_12w7j3i7",Ns="_12w7j3i8",ne="_12w7j3i9",xs="_12w7j3ia",js="_12w7j3ib",fs="_12w7j3ic",vs="_12w7j3id";const bs=({control:s,isSubmitting:t,onCancel:a})=>{const{t:o}=U(),r=xe({control:s,name:"content",defaultValue:"",exact:!0});return e.jsxs("div",{className:Ns,children:[e.jsx(j,{className:ne,type:"button",tone:"dark",variant:"outline",disabled:t,onClick:a,children:o("취소")}),e.jsx(j,{className:ne,type:"submit",tone:"dark",disabled:t||!r.trim(),children:o("등록")})]})},ys=({reply:s,rootArticleNo:t,boardNo:a,memberNo:o,categoryNo:r,currentPageNumber:l,direction:u})=>{const{t:N}=U(),c=Q(),{openDialog:x,openLoginDialog:b}=O(),[h,p]=M.useState(!1),[m,n]=M.useState(!1),[y,C]=M.useState(1),$={page:y,...E,...c&&{includeRecommended:!0}},{data:v,isLoading:T}=ve({boardNo:a,articleNo:s.articleNo,searchParams:$,options:{enabled:m}}),R=(v==null?void 0:v.items)??[],S=(v==null?void 0:v.totalCount)??s.repliedCnt??0,F=S>0,{register:k}=de({articleNo:s.articleNo,currentPageNumber:y}),{control:B,formState:d,handleSubmit:_,reset:P}=ge({defaultValues:{content:""}}),I=je({nickname:s.memberNickname,memberId:s.memberId,registerName:s.registerName}),z=()=>{p(g=>!g)},Y=()=>{P(),p(!1)},A=()=>{n(g=>!g)},V=async({content:g})=>{if(!c){b();return}try{await k.mutateAsync({boardNo:a,data:{articleTitle:g.slice(0,50),articleContent:g,parentBoardArticleNo:s.articleNo,secreted:!1,postSearchTags:[],...r&&{boardCategoryNo:r}}}),n(!0),p(!1),P(),x({message:N("답글이 등록되었습니다.")})}catch{}};return e.jsxs("li",{className:cs,children:[e.jsx(te,{reply:s,articleNo:t,boardNo:a,memberNo:o,categoryNo:r,currentPageNumber:l,direction:u,isReplyFormOpen:h,isRepliesOpen:m,onReplyAction:c?z:void 0,onToggleReplies:F?A:void 0,replyCount:S}),h&&e.jsxs("form",{className:ls,onSubmit:_(V),children:[e.jsxs("div",{className:ms,children:[e.jsx(ee,{"aria-hidden":!0,className:ds,size:18,strokeWidth:1.8}),e.jsx("strong",{className:us,children:N("{{authorName}}님에게 답글 작성",{authorName:I})})]}),e.jsx(Ne,{name:"content",control:B,rules:{required:!0,maxLength:500},render:({field:g})=>e.jsxs("div",{className:hs,children:[e.jsx(ue,{...g,className:ps,placeholder:N("답글을 입력하세요."),disabled:d.isSubmitting,maxLength:500}),e.jsxs("span",{className:gs,children:[g.value.length," / 500"]})]})}),e.jsx(bs,{control:B,isSubmitting:d.isSubmitting,onCancel:Y})]}),m&&e.jsxs(he,{isLoading:T,children:[e.jsx("ul",{className:xs,children:R.map(g=>e.jsxs("li",{className:js,children:[e.jsx(ee,{"aria-hidden":!0,className:fs,size:18,strokeWidth:1.8}),e.jsx(te,{reply:g,articleNo:s.articleNo,boardNo:a,memberNo:o,categoryNo:r,currentPageNumber:y,isNested:!0,replyToName:I})]},g.articleNo))}),S>E.pageSize&&e.jsx("div",{className:vs,children:e.jsx(fe,{totalCount:S,currentPage:y,onPageClick:C,pageSize:E.pageSize})})]})]})};var Cs="xqd6kc0",ws="xqd6kc1",Rs="xqd6kc2",re="xqd6kc3",Ss="xqd6kc4",ks="xqd6kc5",_s="xqd6kc6",Ps="xqd6kc7",oe="xqd6kc8",Ls="xqd6kc9",Ts="xqd6kca",Bs="xqd6kcb",Is="xqd6kcc",Fs="xqd6kcd",Es="xqd6kce";const Us=({control:s,isSubmitting:t,onCancel:a})=>{const{t:o}=U(),r=xe({control:s,name:"content",defaultValue:"",exact:!0});return e.jsxs("div",{className:Ps,children:[e.jsx(j,{className:oe,type:"button",tone:"dark",variant:"outline",disabled:t||!r,onClick:a,children:o("취소")}),e.jsx(j,{className:oe,type:"submit",tone:"dark",disabled:t||!r.trim(),children:o("등록")})]})},$s=({boardNo:s,articleNo:t,categoryNo:a,memberNo:o,currentPageNumber:r,direction:l,onDirectionChange:u,onPageClick:N})=>{const{t:c}=U(),x=Q(),{openDialog:b,openLoginDialog:h}=O(),p={page:r,...E,direction:l,...x&&{includeRecommended:!0}},{data:m,isLoading:n}=ve({boardNo:s,articleNo:t,searchParams:p}),y=(m==null?void 0:m.items)||[],C=(m==null?void 0:m.totalCount)||0,{register:$}=de({articleNo:t,currentPageNumber:r}),{handleSubmit:v,reset:T,control:R,formState:S}=ge({defaultValues:{content:""}}),F=async d=>{if(!x){h();return}try{await $.mutateAsync({boardNo:s,data:{articleTitle:d.content.slice(0,50),articleContent:d.content,parentBoardArticleNo:t,secreted:!1,postSearchTags:[],...a&&{boardCategoryNo:a}}}),b({message:c("댓글이 등록되었습니다.")}),T()}catch{}},k=M.useRef(null),B=d=>{N(d);const _=k.current;if(!_)return;const P=(Number.parseFloat(getComputedStyle(document.documentElement).getPropertyValue("--header-height"))||0)+16;if(se){se.scrollTo(_,{offset:-P,immediate:!0});return}const I=_.getBoundingClientRect().top+window.scrollY-P;window.scrollTo({behavior:"instant",top:I})};return e.jsxs(pe,{className:Cs,children:[e.jsxs("div",{className:Is,children:[e.jsxs("div",{className:ws,children:[e.jsxs("h2",{className:Rs,ref:k,children:[c("댓글")," ",e.jsx("span",{children:C})]}),e.jsx(os,{ariaLabel:c("댓글 정렬"),desktopVariant:"expanded",options:ae(W,ns(d=>d.id!=="READ_COUNT"),as),selectedOption:ae(W,ts(d=>d.id===l)),type:"query",onChange:d=>u(d.id)})]}),x?e.jsxs("form",{className:re,onSubmit:v(F),children:[e.jsx(Ne,{name:"content",control:R,rules:{required:!0,maxLength:500},render:({field:d})=>e.jsxs("div",{className:Ss,children:[e.jsx(ue,{...d,className:ks,placeholder:c("댓글을 입력하세요."),disabled:S.isSubmitting,maxLength:500}),e.jsxs("span",{className:_s,children:[d.value.length," / 500"]})]})}),e.jsx(Us,{control:R,isSubmitting:S.isSubmitting,onCancel:()=>T()})]}):e.jsx("div",{className:re,children:e.jsxs("div",{className:Ls,children:[e.jsx("p",{className:Ts,children:c("댓글을 작성하려면 로그인이 필요합니다.")}),e.jsx(j,{className:Bs,type:"button",tone:"dark",onClick:h,children:c("로그인")})]})}),e.jsx(he,{isLoading:n,children:!rs(y)&&e.jsx("ul",{className:Fs,children:y.map(d=>e.jsx(ys,{reply:d,rootArticleNo:t,boardNo:s,memberNo:o,categoryNo:a,currentPageNumber:r,direction:l},d.articleNo))})})]}),m&&C>E.pageSize&&e.jsx("div",{className:Es,children:e.jsx(fe,{totalCount:C,currentPage:r,onPageClick:B,pageSize:E.pageSize})})]})};class qs extends Error{constructor(a){super("Failed to download board attachment");D(this,"cause");this.name="BoardAttachmentDownloadError",this.cause=a}}const ie=s=>{const t=s.split("/").filter(Boolean);return t[t.length-1]},Ms=s=>{try{const t=new URL(s).pathname,a=ie(t);return a?decodeURIComponent(a):s}catch{return ie(s.split("?")[0])??s}},Os=s=>{try{return["http:","https:"].includes(new URL(s,window.location.origin).protocol)}catch{return!1}},zs=async({boardNo:s,articleNo:t,uploadedFileName:a,downloadFileUrl:o})=>{if(Os(o)){const l=await fetch(o);if(!l.ok)throw new Error("Failed to fetch attachment");return l.blob()}const{data:r}=await Be.downloadFile(s,t,{uploadedFileName:Ms(a)},{responseType:"blob"});return r},Ys=async({boardNo:s,articleNo:t,uploadedFileName:a,downloadFileUrl:o,fileName:r})=>{let l,u;try{const N=await zs({boardNo:s,articleNo:t,uploadedFileName:a,downloadFileUrl:o});l=URL.createObjectURL(N),u=document.createElement("a"),u.href=l,u.download=r,document.body.appendChild(u),u.click()}catch(N){throw new qs(N)}finally{u==null||u.remove(),l&&URL.revokeObjectURL(l)}};var As="_1dhu19x0",Vs="_1dhu19x1",Hs="_1dhu19x2",Gs="_1dhu19x3",Ws="_1dhu19x4",Qs="_1dhu19x5",Xs="_1dhu19x6",Js="_1dhu19x7",Ks="_1dhu19x8",ce="_1dhu19x9";const Zs=/\.(?:avif|bmp|gif|jpe?g|png|webp)(?:[?#].*)?$/i,Ds=/^[0-9a-f]{8}-(?:[0-9a-f]{4}-){3}[0-9a-f]{12}(?:\.[a-z0-9]+)?$/i,et=s=>[s.fileName,s.uploadedFileName,s.downloadFileUrl].some(t=>Zs.test(t)),st=(s,t,a)=>{var r;if(!Ds.test(s))return s;const o=((r=s.match(/\.[a-z0-9]+$/i))==null?void 0:r[0])??"";return`${a} ${t+1}${o}`},tt=({boardNo:s,articleNo:t,contents:a,attachments:o})=>{const{t:r}=U(),{openDialog:l}=O(),u=c=>{G.open(x=>e.jsx(Ee,{...x,imageUrl:c}))},N=async c=>{try{await Ys({boardNo:s,articleNo:t,uploadedFileName:c.uploadedFileName,downloadFileUrl:c.downloadFileUrl,fileName:c.fileName})}catch{l({message:r("파일 다운로드에 실패했습니다.")})}};return e.jsx("div",{className:As,children:e.jsxs("div",{className:Vs,children:[a?e.jsx("div",{className:Hs,dangerouslySetInnerHTML:{__html:a.replace(/\n/g,"
")}}):e.jsx(Ie,{text:r("상세 내용이 없습니다.")}),!!o.length&&e.jsxs("section",{className:Gs,children:[e.jsxs("h2",{className:Ws,children:[r("첨부파일"),e.jsx("span",{children:o.length})]}),e.jsx("ul",{className:Qs,children:o.map((c,x)=>{const b=et(c),h=st(c.fileName,x,r(b?"첨부 이미지":"첨부파일"));return e.jsxs("li",{className:Xs,children:[e.jsx("span",{className:Ks,title:h,children:h}),e.jsxs("span",{className:Js,children:[b&&e.jsx(j,{className:ce,tone:"light",variant:"soft","aria-label":r("{{fileName}} 미리보기",{fileName:h}),onClick:()=>u(c.downloadFileUrl),children:r("미리보기")}),e.jsxs(j,{className:ce,tone:"light",variant:"soft","aria-label":r("{{fileName}} 다운로드",{fileName:h}),onClick:()=>void N({...c,fileName:h}),children:[e.jsx(Fe,{"aria-hidden":!0,size:15,strokeWidth:1.8}),r("다운로드")]})]})]},c.downloadFileUrl)})})]})]})})};var at="_1btgse50",nt="_1btgse51",rt="_1btgse54",ot="_1btgse55",le="_1btgse56",me="_1btgse57",it="_1btgse58",ct="_1btgse59",H="_1btgse5a",lt="_1btgse5b _1btgse5a",mt="_1btgse5c",dt="_1btgse5d",ut="_1btgse5e";const ht=({boardNo:s,articleNo:t,searchParams:a,options:o})=>De(ss({boardNo:s,articleNo:t,searchParams:a,options:o})),pt=()=>{var J,K;const{boardId:s,articleNo:t}=ke(),{t:a}=U(),{isMobile:o}=Ue(),r=_e(),{openDialog:l,openAsyncDialog:u,openLoginDialog:N}=O(),{state:c}=Pe(),[x,b]=Le(),h=Q(),{data:p}=We({options:{select:i=>Ge(i,s)}}),m=p!=null&&p.boardNo?p.boardNo.toString():"",{data:n}=ht({boardNo:m,articleNo:Number(t??0),searchParams:{password:(c==null?void 0:c.password)??""},options:{select:i=>{var f;return{title:i.title??"",registerDisplayName:je({nickname:i.memberNickname,memberId:i.memberId,registerName:i.registerName}),registerYmdt:i.registerYmdt??"",content:i.content??"",attachments:i.attachments??[],categoryNo:i.categoryNo,recommendable:i.recommendable??!1,reported:i.reported??!1,recommendCount:i.recommendCount??0,registerNo:i.registerNo,registerType:((f=i.registerType)==null?void 0:f.toString().toUpperCase())??""}}}}),y=(p==null?void 0:p.replyUsed)===!0,C=(n==null?void 0:n.registerType)==="GUEST",$=h&&!C,{data:v}=$e({options:{select:i=>i.memberNo??0,enabled:$}}),T=v??0,R=qe(n,T),F=!((n==null?void 0:n.recommendable)??!1),k=(n==null?void 0:n.reported)??!1,B=(n==null?void 0:n.recommendCount)??0,d=Number(x.get("pageNumber")||1),_=((J=W.find(i=>i.id===x.get("direction")))==null?void 0:J.id)??"DESC",P=(K=p==null?void 0:p.categories.find(i=>i.categoryNo===(n==null?void 0:n.categoryNo)))==null?void 0:K.label,{delete:I,recommend:z,cancelRecommend:Y,cancelReport:A,checkEditable:V}=Me(),g=(i,f)=>{const w={boardNo:m,articleNo:f},Z=async(L,q)=>{if((n==null?void 0:n.registerType)!=="GUEST")return l({message:a("회원이 작성한 게시글은 비밀번호로 수정/삭제할 수 없습니다.")}),!1;try{return await V.mutateAsync({boardNo:m,articleNo:Number(f),data:{password:L}})?i==="edit"?(r({pathname:`/boards/${s}/${f}/modify`},{state:{password:L}}),!0):(I.mutate({boardNo:m,articleNo:Number(f),data:{password:L}},{onSuccess:async()=>{q.close(),await u({message:a("게시글이 삭제되었습니다.")}),r(`/boards/${s}`)}}),!1):!1}catch{return!1}};G.open(L=>o?e.jsx(Je,{...L,isMobile:o,boardData:w,onConfirm:q=>Z(q,L)}):e.jsx(Ke,{...L,isMobile:o,boardData:w,onConfirm:q=>Z(q,L)}))},X=()=>{if(R){r({pathname:`/boards/${s}/${t}/modify`});return}if(C){g("edit",Number(t));return}l({message:a("수정 권한이 없습니다.")})},be=async()=>{if(await u({message:a("게시글을 삭제하시겠습니까?"),iconType:"warning",onConfirmReturnValue:!0,onCloseReturnValue:!1})){if(R){I.mutate({boardNo:m,articleNo:Number(t)},{onSuccess:async()=>{await u({message:a("게시글이 삭제되었습니다.")}),r(`/boards/${s}`,{replace:!0})}});return}if((n==null?void 0:n.registerType)==="GUEST"){g("delete",Number(t));return}l({message:a("삭제 권한이 없습니다.")})}},ye=()=>{if(!h){N();return}if(!(n!=null&&n.recommendable)){Y.mutate({boardNo:m,articleNo:Number(t)},{onSuccess:()=>{l({message:a("추천이 취소되었습니다.")})},onError:()=>{l({message:a("추천 취소에 실패했습니다.")})}});return}z.mutate({boardNo:m,articleNo:Number(t)},{onSuccess:()=>{l({message:a("추천되었습니다.")})},onError:()=>{l({message:a("추천에 실패했습니다.")})}})},Ce=async()=>{if(!h){N();return}if(k){if(!await u({message:a("신고를 취소하시겠습니까?"),iconType:"warning",onConfirmReturnValue:!0,onCloseReturnValue:!1}))return;A.mutate({boardNo:m,articleNo:Number(t)},{onSuccess:()=>l({message:a("신고가 취소되었습니다.")})});return}G.open(i=>o?e.jsx(Qe,{...i,isMobile:o,boardNo:m,articleNo:Number(t)}):e.jsx(Xe,{...i,isMobile:o,boardNo:m,articleNo:Number(t)}))},we=R||C&&!h;return e.jsxs(pe,{className:at,children:[e.jsxs("header",{className:nt,children:[e.jsx("h1",{className:rt,children:n==null?void 0:n.title}),e.jsxs("p",{className:ot,children:[e.jsxs("span",{className:le,children:[e.jsx(Oe,{"aria-hidden":!0,size:14,strokeWidth:1.8}),n==null?void 0:n.registerDisplayName]}),e.jsx("span",{className:me,"aria-hidden":!0,children:"·"}),e.jsxs("time",{className:le,dateTime:n==null?void 0:n.registerYmdt,children:[e.jsx(ze,{"aria-hidden":!0,size:14,strokeWidth:1.8}),Te(n==null?void 0:n.registerYmdt).format("YYYY.MM.DD HH:mm")]}),P&&e.jsxs(e.Fragment,{children:[e.jsx("span",{className:me,"aria-hidden":!0,children:"·"}),e.jsx(is,{size:"sm",tone:"gray",variant:"soft",children:P})]})]})]}),e.jsx("div",{className:it,children:e.jsx(tt,{boardNo:m,articleNo:Number(t),contents:(n==null?void 0:n.content)??"",attachments:n.attachments})}),e.jsx("div",{className:ct,children:we?e.jsxs(e.Fragment,{children:[e.jsxs(j,{className:H,tone:"light",variant:"soft",onClick:X,children:[e.jsx(Ye,{"aria-hidden":!0,size:15}),a("수정")]}),e.jsxs(j,{className:H,tone:"orange",variant:"soft",onClick:be,children:[e.jsx(Ae,{"aria-hidden":!0,size:15}),a("삭제")]})]}):e.jsxs(e.Fragment,{children:[e.jsxs(j,{className:lt,tone:F?"primary":"light",variant:"soft",onClick:ye,"data-recommended":F?"true":"false",children:[e.jsx(Ve,{"aria-hidden":!0,size:15}),a("추천"),B>0&&e.jsx("span",{className:mt,children:B})]}),e.jsxs(j,{className:H,tone:k?"orange":"light",variant:"soft",onClick:Ce,children:[e.jsx(He,{"aria-hidden":!0,size:15}),a(k?"신고 취소":"신고")]})]})}),y&&e.jsx("section",{className:dt,children:e.jsx($s,{boardNo:m,articleNo:Number(t),categoryNo:(n==null?void 0:n.categoryNo)??void 0,memberNo:T,currentPageNumber:d,direction:_,onDirectionChange:i=>{b(f=>{const w=new URLSearchParams(f);return w.set("direction",i),w.set("pageNumber","1"),w})},onPageClick:i=>{b(f=>{const w=new URLSearchParams(f);return w.set("pageNumber",i.toString()),w})}})}),e.jsx(j,{className:ut,tone:"gray",variant:"outline",onClick:()=>{r(`/boards/${s}`)},children:a("목록으로")})]})},At=()=>e.jsx(pt,{});export{At as default};