import{j as e,r as xe}from"./vendor-react-C630P38J.js";import{i as fe,d as X,r as ve}from"./vendor-utils-Cb1MAKRV.js";import{P as pe}from"./vendor-overlay-B61Jbn6n.js";import{u as L,C as je,c as Z}from"./vendor-rhf-CXRF5ML7.js";import{u as ge,b as be,f as Ne}from"./vendor-query-BjC2S-sR.js";import{H as T,dp as Re,c4 as _,bw as Ce,c as _e,ak as A,af as E,x as Se,ar as I,bB as ee,bz as Me,aJ as te,d as m,aK as se,aa as Te,u as ye,c0 as we,dq as k,Y as ze,bT as ke,c8 as Ae,ab as Ee,ac as Ie,ah as Le}from"./feature-order-C2we0F5o.js";import{u as h}from"./vendor-i18n-D_F5k183.js";import{h as Be}from"./index-DOpJRihs.js";import{k as Oe}from"./useBrandInfoByBrandNo-DQa2NbIq.js";const De=t=>{const{t:a}=h(),{openDialog:o}=T(),i=ge();return be({mutationFn:async s=>{const{action:n,boardNo:l,articleNo:r}=s;switch(n){case"recommend":return _.recommendArticle(l,r);case"cancelRecommend":return _.cancelArticleRecommend(l,r);case"report":return _.reportArticle(l,r,s.data);case"cancelReport":return _.cancelReportArticle(l,r)}},onSuccess:(s,{boardNo:n})=>{i.invalidateQueries({queryKey:[...Re.replies(),n,t],refetchType:"all"})},onError:s=>{var n,l;o({message:a(fe(s)?(l=(n=s.response)==null?void 0:n.data)==null?void 0:l.message:"알 수 없는 오류가 발생했습니다.")})}})};var Pe="_1t9vvaz0",qe="_1t9vvaz1",Fe="_1t9vvaz2",Ve="_1t9vvaz3",He="_1t9vvaz4",We="_1t9vvaz5",Ue="_1t9vvaz6",Ye="_1t9vvaz7",Ke="_1t9vvaz8",W="_1t9vvaz9",Qe="_1t9vvaza",Ge="_1t9vvazb",$e="_1t9vvazc",Je="_1t9vvazd",Xe="_1t9vvaze",Ze="_1t9vvazf",U="_1t9vvazg",et="_1en03zc0",tt="_1en03zc1",st="_1en03zc2",at="_1en03zc3";const Y=[{value:"COPYRIGHT",label:"저작권 침해"},{value:"SLANDER",label:"비방"},{value:"ETC",label:"기타사유"}],K=1e3,ae=({articleNo:t,boardNo:a,className:o,close:i,formId:s,isMobile:n,onReport:l})=>{var C;const{t:r}=h(),{openDialog:v}=T(),{report:p}=Ce(),{register:j,control:g,handleSubmit:x,watch:u,formState:{errors:c}}=L({defaultValues:{reportReasonType:void 0,content:""}}),N=((C=u("content"))==null?void 0:C.length)??0,S=()=>{i(),v({message:r("신고가 접수되었습니다.")})},R=x(async b=>{if(!a||!t){v({message:r("신고할 게시글 정보를 찾을 수 없습니다.")});return}if(l){await l(b)&&S();return}p.mutate({boardNo:a,articleNo:t,data:b},{onSuccess:S,onError:()=>{v({message:r("신고 처리에 실패했습니다.")})}})});return e.jsxs("form",{className:_e(Me,o),id:s,onSubmit:R,children:[e.jsxs("p",{className:et,children:[r("신고 사유를 선택해주세요."),e.jsx("br",{}),r("신고 내용은 이용약관 및 정책에 의하여 처리됩니다.")]}),e.jsxs(A,{children:[e.jsx(E,{isRequired:!0,children:r("신고 사유")}),e.jsx(je,{name:"reportReasonType",control:g,rules:{required:r("신고 사유를 선택해 주세요.")},render:({field:{onChange:b,value:M,...y}})=>e.jsx(Se,{...y,isMobile:n,placeholder:r("사유를 선택해 주세요."),options:Y,value:Y.find(f=>f.value===M)??null,onChange:f=>{f&&b(f.value)}})}),e.jsx(I,{name:"reportReasonType",errors:c})]}),e.jsxs(A,{children:[e.jsx(E,{isRequired:!0,children:r("상세 사유")}),e.jsxs("div",{className:at,children:[e.jsx(ee,{placeholder:r("상세 사유를 입력해 주세요."),...j("content",{required:r("상세 사유를 입력해 주세요.")}),maxLength:K,style:{height:"120px",paddingBottom:"30px"}}),e.jsxs("span",{className:st,children:[N," / ",K]})]}),e.jsx(I,{name:"content",errors:c})]}),e.jsx("p",{className:tt,children:r("※ 허위 신고일 경우, 신고자의 서비스 활동이 제한될 수 있으니 유의하시어 신중하게 신고해주세요.")})]})},Q="board-report-bottom-sheet-form",nt=({...t})=>{const{close:a,boardNo:o,articleNo:i,isMobile:s=!0,onReport:n,...l}=t,{t:r}=h();return e.jsx(te,{...l,close:a,type:"fullscreen",title:r("신고하기"),footerButtonList:[e.jsx(m,{type:"button",tone:"dark",variant:"outline",onClick:a,children:e.jsx("span",{children:r("취소")})},"cancel"),e.jsx(m,{form:Q,type:"submit",tone:"dark",children:e.jsx("span",{children:r("등록")})},"submit")],children:e.jsx(ae,{articleNo:i,boardNo:o,close:a,formId:Q,isMobile:s,onReport:n})})},G="board-report-modal-form",rt=({close:t,boardNo:a,articleNo:o,onReport:i,...s})=>{const{t:n}=h();return e.jsx(se,{...s,isMobile:s.isMobile??!1,close:t,width:"500px",title:n("신고하기"),isDeskTopUsable:!0,footerButtonList:[e.jsx(m,{type:"button",tone:"dark",variant:"outline",onClick:t,children:e.jsx("span",{children:n("취소")})},"cancel"),e.jsx(m,{form:G,type:"submit",tone:"dark",children:e.jsx("span",{children:n("등록")})},"submit")],children:e.jsx(ae,{articleNo:o,boardNo:a,close:t,formId:G,isMobile:!1,onReport:i})})};X.extend(ve);const ot=({control:t})=>{const a=Z({control:t,name:"content",defaultValue:"",exact:!0});return e.jsxs("span",{className:Xe,children:[a.length," / 500"]})},ct=({control:t,isSubmitting:a,onCancel:o})=>{const{t:i}=h(),s=Z({control:t,name:"content",defaultValue:"",exact:!0});return e.jsxs("div",{className:Ze,children:[e.jsx(m,{className:U,type:"button",tone:"dark",variant:"outline",onClick:o,disabled:a,children:i("취소")}),e.jsx(m,{className:U,type:"submit",tone:"dark",disabled:a||!s.trim(),children:i("저장")})]})},jt=({reply:t,articleNo:a,boardNo:o,memberNo:i,categoryNo:s,currentPageNumber:n,direction:l="DESC",isReplyFormOpen:r=!1,isNested:v=!1,isRepliesOpen:p=!1,onReplyAction:j,onToggleReplies:g,replyCount:x=0,replyToName:u})=>{const{t:c}=h(),N=Te(),{isMobile:S}=ye(),{openDialog:R,openAsyncDialog:C,openLoginDialog:b}=T(),{update:M,delete:y}=we({articleNo:a,currentPageNumber:n,direction:l,includeRecommended:N}),f=De(a),re=i!==void 0&&t.registerNo===i,oe=X(t.registerYmdt).locale("ko").fromNow(),[w,B]=xe.useState(!1),{control:O,register:ce,handleSubmit:ie,formState:D}=L({defaultValues:{content:t.content}}),P=()=>{B(d=>!d)},le=async d=>{var z;try{const H={articleTitle:d.content.length>50?d.content.slice(0,50):d.content,articleContent:d.content,secreted:t.secreted??!1,postSearchTags:((z=t.tags)==null?void 0:z.filter(he=>typeof he=="string"))||[],...s&&{boardCategoryNo:s}};await M.mutateAsync({boardNo:o,articleNo:t.articleNo,data:H}),R({message:c("댓글이 수정되었습니다.")}),B(!1)}catch{}},de=async()=>{if(await C({type:"confirm",message:c("댓글을 삭제하시겠습니까?"),onConfirmReturnValue:!0,onCloseReturnValue:!1}))try{await y.mutateAsync({boardNo:o,articleNo:t.articleNo}),R({message:c("댓글이 삭제되었습니다.")})}catch{}},me=async()=>{if(!N){b();return}try{await f.mutateAsync({action:t.recommended?"cancelRecommend":"recommend",boardNo:o,articleNo:t.articleNo}),R({message:c(t.recommended?"추천이 취소되었습니다.":"추천되었습니다.")})}catch{return}},q=async d=>{try{return await f.mutateAsync({action:"report",boardNo:o,articleNo:t.articleNo,data:d}),!0}catch{return!1}},ue=async()=>{if(!N){b();return}if(t.reported){if(!await C({message:c("신고를 취소하시겠습니까?"),iconType:"warning",onConfirmReturnValue:!0,onCloseReturnValue:!1}))return;try{await f.mutateAsync({action:"cancelReport",boardNo:o,articleNo:t.articleNo}),R({message:c("신고가 취소되었습니다.")})}catch{return}return}pe.open(d=>S?e.jsx(nt,{...d,boardNo:o,articleNo:t.articleNo,isMobile:!0,onReport:q}):e.jsx(rt,{...d,boardNo:o,articleNo:t.articleNo,isMobile:!1,onReport:q}))},F=[...j?[{id:"reply",label:c(r?"답글 작성 취소":"답글 작성"),onSelect:j}]:[],...re?[{id:"edit",label:c("수정"),onSelect:P},{id:"delete",label:c("삭제"),onSelect:()=>void de(),tone:"danger"}]:[{id:"recommend",label:c(t.recommended?"추천 취소":"추천"),onSelect:()=>void me()},{id:"report",label:c(t.reported?"신고 취소":"신고"),onSelect:()=>void ue(),tone:t.reported?"default":"danger"}]],V=Be({nickname:t.memberNickname,memberId:t.memberId,registerName:t.registerName});return e.jsxs("article",{className:Pe,"data-comment-depth":v?"nested":"root",children:[e.jsxs(k,{className:qe,children:[e.jsxs(k,{className:Fe,children:[e.jsx("span",{className:Ve,children:V}),e.jsx("time",{className:He,dateTime:t.registerYmdt,children:oe})]}),e.jsx(k,{className:We,children:N&&!w&&F.length>0&&e.jsx(ze,{ariaLabel:c("{{authorName}} 댓글 작업",{authorName:V}),items:F})})]}),u&&e.jsx("span",{className:Ue,children:c("{{authorName}}님에게 답글",{authorName:u})}),w?e.jsxs("form",{className:Ge,onSubmit:ie(le),children:[e.jsxs("div",{className:$e,children:[e.jsx(ee,{...ce("content",{required:c("댓글 내용을 입력해주세요."),maxLength:{value:500,message:c("댓글은 500자 이하로 입력해주세요.")}}),className:Je,disabled:D.isSubmitting,maxLength:500}),e.jsx(ot,{control:O})]}),e.jsx(ct,{control:O,isSubmitting:D.isSubmitting,onCancel:P})]}):e.jsx("div",{className:Ye,dangerouslySetInnerHTML:{__html:t.content.replace(/\n/g,"
")}}),!w&&e.jsxs("div",{className:Ke,children:[e.jsxs("span",{className:W,"data-active":t.recommended,children:[e.jsx(ke,{"aria-hidden":!0,size:13,strokeWidth:1.8}),e.jsx("strong",{children:t.recommendCount??0})]}),e.jsxs("span",{className:W,"data-active":t.reported,children:[e.jsx(Ae,{"aria-hidden":!0,size:13,strokeWidth:1.8}),e.jsx("strong",{children:t.reportCount??0})]}),g&&x>0&&e.jsxs(m,{className:Qe,tone:"light",variant:"soft","aria-expanded":p,"aria-label":c(p?"답글 {{count}}개 닫기":"답글 {{count}}개 보기",{count:x}),onClick:g,children:[c("답글 {{count}}개",{count:x}),p?e.jsx(Ee,{"aria-hidden":!0,size:14}):e.jsx(Ie,{"aria-hidden":!0,size:14})]})]})]})};var it="_1h928m50";const ne=({boardData:t,close:a,formId:o,onConfirm:i})=>{const{t:s}=h(),{openAsyncDialog:n}=T(),{register:l,handleSubmit:r,formState:{errors:v}}=L({defaultValues:{password:""}}),p=r(async({password:j})=>{var g,x;try{await _.getArticle((t==null?void 0:t.boardNo)||"",(t==null?void 0:t.articleNo)||0,{password:j}),i(j),a()}catch(u){a(),await n({message:u instanceof Error&&(((x=(g=u==null?void 0:u.response)==null?void 0:g.data)==null?void 0:x.message)||u.message)||s("비밀번호가 일치하지 않습니다.")})}});return e.jsxs("form",{id:o,onSubmit:p,children:[e.jsx("p",{className:it,children:s("글 작성 시 설정한 비밀번호를 입력해 주세요.")}),e.jsxs(A,{children:[e.jsx(E,{isRequired:!0,children:s("비밀번호")}),e.jsx(Le,{type:"password",placeholder:s("비밀번호 입력"),...l("password",{required:s("비밀번호를 입력해 주세요.")}),maxLength:20}),e.jsx(I,{name:"password",errors:v})]})]})},$="board-password-bottom-sheet-form",gt=({...t})=>{const{close:a,boardData:o,onConfirm:i,...s}=t,{t:n}=h();return e.jsx(te,{...s,close:a,footerButtonList:[e.jsx(m,{type:"button",tone:"dark",variant:"outline",onClick:a,children:n("취소")},"cancel"),e.jsx(m,{form:$,type:"submit",tone:"dark",children:n("확인")},"submit")],children:e.jsx(ne,{boardData:o,close:a,formId:$,onConfirm:i})})},J="board-password-modal-form",bt=({close:t,onConfirm:a,isOpen:o=!0,boardData:i,...s})=>{const{t:n}=h();return e.jsx(se,{...s,isMobile:s.isMobile??!1,isDeskTopUsable:!0,isOpen:o,close:t,width:"400px",title:n("비밀번호 인증"),footerButtonList:[e.jsx(m,{type:"button",tone:"dark",variant:"outline",onClick:t,children:n("취소")},"cancel"),e.jsx(m,{form:J,type:"submit",tone:"dark",children:n("확인")},"submit")],children:e.jsx(ne,{boardData:i,close:t,formId:J,onConfirm:a})})},Nt=({options:t}={})=>Ne(Oe({options:t}));export{jt as C,gt as P,nt as R,bt as a,rt as b,Nt as u};