PageSourceSearch

https://www.hiver.co.kr/_next/static/chunks/5863-3af0e1a571788f9d.js

js hiver.co.kr collected 2026-10-05 18:42:03 UTC 16,676 bytes, 168 lines download raw bytes

1"use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[5863],{2221:(e,t,n)=>{n.d(t,{A:()=>h});var l=n(18153),a=n(38993),r=n(47740),i=n(89099),o=n(14232),d=n(64427),s=n(98854),c=n(75656),u=n(80638),m=n(18162);let p=({id:e,title:t,text:n,redirectPath:a,memberEntryPath:p="/",closePop:h,onClose:g})=>{let w=(0,i.useRouter)(),x=function(){let e=(0,s.d4)(m.fG),t=(0,o.useMemo)(()=>new u.A({token:e??d.CM}),[e]),{data:n}=(0,c.Ay)([u.A.versionPath,u.A.HOME_TABS_VERSION],()=>t.getVersions({version:u.A.HOME_TABS_VERSION}),{refreshInterval:6e5,dedupingInterval:6e4,revalidateOnFocus:!1,revalidateOnReconnect:!0,onError:()=>void 0,shouldRetryOnError:!1});return n?.data?.service_configs?.signup_text}(),b=t??x?.modal_title?.trim()??"로그인 후 이용할 수 있어요.",v=n??x?.modal_text?.trim()??"로그인하면 더 많은 혜택과\n편리한 쇼핑을 즐길 수 있어요!",y=(0,o.useCallback)(()=>{g?.(),h(e)},[e,h,g]),C=(0,o.useCallback)(()=>{let e=new URL(p,`${d.aO}/`);e.searchParams.set("redirect",a??w.asPath),window.location.href=e.toString()},[p,a,w.asPath]);return(0,l.Y)(r.wAQ,{onClose:y,css:f,footer:(0,l.Y)(r.$nd,{className:"cta",size:"md",theme:"fill",onClick:C,children:"로그인 \xb7 회원가입"}),isOpen:!0,children:(0,l.FD)(r.KAU,{children:["string"==typeof b||"number"==typeof b?(0,l.Y)("p",{className:"title",children:b}):b,"string"==typeof v||"number"==typeof v?(0,l.Y)("p",{className:"text",children:v}):v]})})},f=(0,a.AH)`
2  .modal-main-text {
3    margin-top: 4px;
4
5    .title {
6      font-weight: 700;
7    }
8    .text {
9      margin-top: 8px;
10      font-size: 14px;
11      color: #6c727a;
12      /* "\n" 줄바꿈 그대로 노출 */
13      white-space: pre-line;
14    }
15  }
16  .footer-row {
17    display: flex;
18    flex-direction: column;
19    align-items: stretch;
20    gap: 8px;
21
22    .cta {
23      width: 100%;
24    }
25    .close-text {
26      align-self: flex-end;
27    }
28  }
29  /* brandi-ds PopupModal footer 안에서 .cta 버튼이 좁게 정렬되는 케이스 — 모달 footer 영역을 풀폭 + 자식 가운데 정렬 (작업 43) */
30  .modal-footer {
31    width: 100%;
32    display: flex;
33    flex-direction: column;
34    align-items: stretch;
35  }
36  .modal-footer .cta {
37    width: 100%;
38    display: block;
39  }
40  .cta {
41    width: 100%;
42  }
43`;p.displayName="LoginRequiredModal";let h=(0,o.memo)(p)},11637:(e,t,n)=>{n.d(t,{A:()=>y});var l=n(18153),a=n(38695),r=n(47740),i=n(14232),o=n(98854),d=n(89099),s=n(43977),c=n(18583),u=n(66091),m=n(2221),p=n(4704),f=n(64427),h=n(39611),g=n(90920),w=n(63709),x=n(18162),b=n(2296);let v=({id:e,onAdd:t,onInappWriteSuccess:n,inappIsLoggedIn:a,fallbackProfile:v,initialValue:y="",initialToken:k=f.CM})=>{let A=(0,o.wA)(),I=(0,d.useRouter)(),[E,N]=(0,i.useState)(!1),{token:Y,profile:_}=(0,o.d4)(({session:{token:e,profile:t}})=>({token:e,profile:t}),o.bN),M=(0,x.jd)(Y,k),P=!!(_?.id||v?.id)||M!==f.CM,S="inapp"===(0,b.kW)(I.pathname),L=S&&"boolean"==typeof a?a:P,D=(0,i.useMemo)(()=>new s.A({token:M}),[M]),R=(0,i.useMemo)(()=>new c.A({token:M}),[M]),{pushToastByErrorCode:F}=(0,h.O)(),[z,W]=(0,i.useState)(y),O=(0,i.useCallback)(({target:{value:e}})=>{W(e)},[W]),U=(0,i.useCallback)(()=>{let t=()=>A((0,g.zz)(m.A,{text:(0,l.FD)("p",{className:"center",children:["로그인 후 댓글 작성이 가능해요.",(0,l.Y)("br",{}),"로그인 또는 가입 후 이용해 주세요."]})}));"inapp"===(0,b.kW)(I.pathname)&&(0,p.WP)()?(0,p._i)({action:"login",source:"comment",contextId:e}).then(e=>{e.ok&&e.handled||t()}):t()},[I.pathname,A,e]);return(0,l.FD)("div",{className:"comment-form",children:[E&&(0,l.Y)(u.A,{}),(0,l.FD)(C,{onClick:L?void 0:U,children:[(0,l.Y)(r.o1C,{placeholder:L?"댓글을 입력하세요":"로그인 후 댓글을 작성할 수 있어요",value:z,onChange:O,maxLength:500,radiusType:"default",readOnly:!L}),(0,l.Y)("div",{className:z.trim()?"active":"",children:(0,l.Y)(r.QWc,{size:"rg",onClick:()=>{if(L){if(N(!0),S)return void(0,p._i)({action:"writeEventComment",source:"comment",contextId:e,payload:{text:z}}).then(async e=>{let t=e.result;if(e.ok&&e.handled&&t?.didWrite===!0){W(""),A((0,w.v8)("댓글이 등록되었어요."));try{await n?.()}catch(e){A((0,w.v8)("목록을 새로고침 해주세요."))}}else t?.reason==="login_required"||A((0,w.v8)("일시적인 오류가 발생하였습니다."))}).finally(()=>N(!1));D.writeComment(e,z).then(async({data:{data:e,meta:n}})=>{if(n.code){if(W(""),A((0,w.v8)("댓글이 등록되었어요.")),t){let{event_comment_id:n}=e,l=_??v??(M!==f.CM?await R.getProfile().then(e=>e.data.data).catch(()=>null):null);t({id:n.toString(),user:{id:l?.id??"",image_url:l?.image_url??"",name:l?.name??""},text:z,created_time:Math.floor(Date.now()/1e3).toString()})}}else F(n)}).catch(F).finally(()=>N(!1))}},disabled:L&&!z.trim(),children:"등록"})})]})]})};v.displayName="CommentForm";let y=(0,i.memo)(v),C=a.A.div`
44  padding: 16px 16px 20px;
45  display: flex;
46  align-items: center;
47  gap: 10px;
48  width: 100%;
49  .input {
50    flex: 1;
51    width: auto;
52
53    input {
54      height: 44px;
55      padding: 0 14px;
56      border-color: #e4e6e9;
57      border-radius: 6px;
58      background: #fafafb;
59      font-size: 14px;
60      font-weight: 500;
61      line-height: 20px;
62
63      &::placeholder {
64        color: #b7bbbf;
65      }
66
67      &:focus {
68        border-color: #7a7f86;
69        background: #fff;
70      }
71    }
72  }
73  button {
74    min-width: 52px;
75    height: 44px;
76    border-radius: 6px;
77    background: #f2f3f5;
78    .text {
79      color: #cfd2d7;
80      font-size: 14px;
81      font-weight: 700;
82    }
83  }
84  .active {
85    button {
86      background: #202429;
87      .text {
88        color: #fff;
89      }
90    }
91  }
92`},15863:(e,t,n)=>{n.d(t,{Ay:()=>E,F0:()=>C});var l=n(18153),a=n(38695),r=n(47740),i=n(14232),o=n(98854),d=n(89099),s=n(75656),c=n(43977),u=n(18583),m=n(4704),p=n(25323),f=n(64427),h=n(63709),g=n(18162),w=n(2296),x=n(11914),b=n(11637),v=n(55194);let y=3,C={limit:1,"is-first":!0},k=({id:e,useAddition:t=!1,displaySize:n,limit:a=y,hideForm:k=!1,initialToken:E=f.CM,onTotalCountChange:N,onCommentChange:Y,refreshSignal:_,onInitialLoaded:M,bottomAnchored:P=!1})=>{let S=(0,o.wA)(),L=(0,d.useRouter)(),D=(0,o.d4)(g.TF),R=(0,o.d4)(e=>e.session.profile),F=R?.id,z=(0,g.jd)(D,E),W=(0,p.rd)("community-v2"),O=(0,i.useMemo)(()=>new c.A((0,p.BD)({token:z},W)),[z,W]),U=(0,i.useMemo)(()=>new u.A({token:z}),[z]),[$,T]=(0,i.useState)([]),[B,j]=(0,i.useState)(!1),[H,V]=(0,i.useState)(null),[q,Q]=(0,i.useState)(0),G=(0,i.useRef)(null),K=(0,i.useCallback)(()=>{P&&Q(e=>e+1)},[P]),X=(0,i.useRef)(!1),Z="inapp"===(0,w.kW)(L.pathname),J=z!==f.CM,ee=!Z&&J&&(!F||"production"!==f.Gu),{data:et}=(0,s.Ay)(ee?[u.A.profilePath,"event-comment-owner",z]:null,()=>U.getProfile().then(e=>e.data.data).catch(()=>null)),en=R??et??null,el=en?.id,[ea,er]=(0,i.useState)(!1),{data:ei,mutate:eo}=(0,s.Ay)([(0,x.r)(c.A.commmentPath,{id:e}),{query:C}],()=>O.getCommentList(e,C)),ed=(0,i.useRef)(null),es=(0,i.useRef)(null),ec=(0,i.useRef)(_);(0,i.useEffect)(()=>{let t=!0,n=()=>
92{if(!Z||!(0,m.WP)()){t&&V(null);return}(0,m._i)({action:"getInappAuthState",source:"comment",contextId:e}).then(e=>{if(!t||!0!==e.ok||!0!==e.handled)return;let n=(e=>{if(!e||"object"!=typeof e||"boolean"!=typeof e.isLoggedIn)return null;let t="string"==typeof e.userId&&e.userId.trim()?e.userId:null,n="string"==typeof e.name&&e.name.trim()?e.name:null,l="string"==typeof e.imageUrl&&e.imageUrl.trim()?e.imageUrl:null;return{isLoggedIn:e.isLoggedIn,userId:t,name:n,imageUrl:l}})(e.result);n&&V(n)})};return n(),Z&&(window.addEventListener("flutterInAppWebViewPlatformReady",n),window.addEventListener("pageshow",n)),()=>{t=!1,Z&&(window.removeEventListener("flutterInAppWebViewPlatformReady",n),window.removeEventListener("pageshow",n))}},[e,Z]);let eu=(0,i.useCallback)(t=>{let n=t?.reset===!0,l=n?null:ed.current,r={limit:t?.limit??a,"is-first":!1};return l&&(r.lt=l),j(!0),O.getCommentList(e,r).then(e=>{let{data:t}=e.data;T(e=>{if(n)return t;let l=new Set(e.map(e=>e.id)),a=t.filter(e=>!l.has(e.id));return a.length?[...e,...a]:e})}).finally(()=>{j(!1),er(!0)})},[O,e,a,ed,j,T]);(0,i.useEffect)(()=>{let e=$[$.length-1];e&&(ed.current=e.id)},[$,ed]),(0,i.useEffect)(()=>{if("production"===f.Gu||X.current)return;let e=$.find(e=>e.user?.id)?.user.id;e&&(Z||!ee||void 0!==et)&&(X.current=!0,console.log("[commentIdSpace]",{isInapp:Z,tokenQualifies:J,nativeUserId:H?.userId??null,reduxProfileId:F??null,fetchedWebProfileId:et?.id??null,webCurrentUserId:el??null,commentUserId:e}))},[$,et,H?.userId,Z,F,ee,J,el]);let em=(0,i.useCallback)(e=>{let t=e(ei?.data.data.total_count);return N?.(t),eo(e=>e?{...e,data:{...e.data,data:{...e.data.data,total_count:t}}}:e,!1),t},[ei?.data.data.total_count,eo,N]),ep=(0,i.useCallback)(e=>{T(t=>[e,...t]),P?K():n||window.scrollTo({top:0}),em(e=>(e??$.length)+1),Y?.()},[T,n,em,$.length,Y,P,K]),ef=(0,i.useCallback)(async()=>{ed.current=null,es.current=e;let[t,l]=await Promise.allSettled([eu({reset:!0}),eo()]);if("rejected"===t.status)throw t.reason;if("fulfilled"===l.status){let e=l.value?.data.data.total_count;"number"==typeof e&&N?.(e)}P?K():n||window.scrollTo({top:0})},[n,eu,e,eo,N,P,K]),eh=(0,i.useCallback)(async()=>{await ef(),Y?.()},[Y,ef]),eg=(0,i.useCallback)(t=>{let l=()=>{let e=$.filter(e=>e.id!==t),l=e.length!==$.length,a=em(e=>Math.max((e??$.length)-1,0)),r=n?Math.min(n,a??n):0,i=l&&n?r-e.length:0;T(e),S((0,h.v8)("댓글이 삭제되었어요.")),Y?.(),P&&K(),i>0&&eu({reset:!0,limit:r}).catch(()=>void 0)},a=()=>S((0,h.v8)("일시적인 오류가 발생하였습니다."));"inapp"===(0,w.kW)(L.pathname)&&(0,m.WP)()?(0,m._i)({action:"deleteEventComment",source:"comment",contextId:e,payload:{commentId:t}}).then(e=>{e.ok&&e.handled?l():a()}):O.deleteComment(e,t).then(l).catch(a)},[O,e,S,L.pathname,$,n,eu,em,Y,P,K]),ew=(0,i.useMemo)(()=>n?$.slice(0,n).reverse():[...$].reverse(),[$,n]),ex=$.length<(ei?.data.data.total_count??0),eb=(0,i.useCallback)(()=>{eu()},[eu,ed]);(0,i.useEffect)(()=>{T([]),er(!1),ed.current=null,es.current=null},[e]),(0,i.useEffect)(()=>{es.current!==e&&(es.current=e,eu())},[e,eu]),(0,i.useEffect)(()=>{void 0===_||ec.current===_||(ec.current=_,es.current===e&&ef().catch(()=>void 0))},[e,ef,_]),(0,i.useEffect)(()=>{ea&&M?.()},[ea,M]);let ev=(0,i.useCallback)(()=>{let e=G.current?.parentElement??null;for(;e&&e!==document.body;){let{overflowY:t}=window.getComputedStyle(e);if(("auto"===t||"scroll"===t||"overlay"===t)&&e.scrollHeight>e.clientHeight)return e;e=e.parentElement}return null},[]);return(0,i.useEffect)(()=>{P&&ea&&K()},[P,ea,K]),(0,i.useEffect)(()=>{if(!P||0===q)return;let e=requestAnimationFrame(()=>{let e=ev();e&&e.scrollTo({top:e.scrollHeight})});return()=>cancelAnimationFrame(e)},[P,q,ev]),(0,l.FD)(l.FK,{children:[t&&ex&&(0,l.Y)(A,{children:(0,l.Y)(r.QWc,{onClick:eb,size:"xs",disabled:B,children:"댓글 더 보기"})}),ea?0===ew.length?(0,l.Y)(I,{className:"comment-empty",children:"첫 댓글을 남겨보세요"}):ew.map(({id:e,text:t,created_time:n,user:a})=>{let r=Z?H?H.userId??"":void 0:el;return(0,l.Y)(v.A,{id:e,text:t,createdAt:n,user:{id:a.id,name:a.name},onDelete:eg,currentUserId:r},e)}):(0,l.Y)(I,{className:"comment-loading",children:"댓글을 불러오는 중..."}
92),(0,l.Y)("div",{ref:G,"aria-hidden":!0,className:"comment-list-end",style:{height:0}}),!k&&(0,l.Y)(b.A,{id:e,onAdd:ep,onInappWriteSuccess:eh,inappIsLoggedIn:Z&&H?H.isLoggedIn:void 0,initialToken:E,fallbackProfile:Z?void 0:en})]})},A=a.A.div`
93  margin: 0 16px;
94  border-bottom: 1px solid #f2f3f5;
95  button {
96    padding: 14px 0 18px;
97    width: 100%;
98    justify-content: start;
99
100    .text {
101      color: #5b6166;
102      font-size: 14px;
103      font-weight: 700;
104      line-height: 20px;
105    }
106  }
107`,I=a.A.div`
108  margin: 0 16px;
109  padding: 32px 0;
110  border-bottom: 1px solid #f2f3f5;
111  text-align: center;
112  color: #989ca1;
113`;k.displayName="CommentList";let E=(0,i.memo)(k)},25323:(e,t,n)=>{n.d(t,{BD:()=>r,rd:()=>a});let l=/^\d{1,3}$/,a=e=>((e,t,n)=>{if(("development"===t||"staging"===t)&&(e=>{let t=e.toLowerCase();if("localhost"===t||"127.0.0.1"===t)return!0;let n=t.split(".");return 4===n.length&&n.every(e=>l.test(e)&&255>=Number(e))})(n))return`/api/hybrid-pdp-proxy/${e}`})(e,"production",window.location.hostname),r=(e,t)=>t?{...e,baseURL:t}:e},39611:(e,t,n)=>{n.d(t,{O:()=>o});var l=n(14232),a=n(98854),r=n(63709),i=n(18466);function o(){let e=(0,a.wA)();return{pushToastByErrorCode:(0,l.useCallback)((t,n)=>{let l=(0,i.SU)(t)??n;l&&e((0,r.v8)(l))},[e])}}},39833:(e,t,n)=>{n.d(t,{A:()=>c});var l=n(18153),a=n(38695),r=n(47740),i=n(14232);let o=(0,a.A)(r.wAQ)`
114  .modal-header {
115    display: ${e=>e.title?"block":"none"};
116  }
117  .modal-body-footer button {
118    padding: 0;
119  }
120`,d=[],s=({id:e,closePop:t,onConfirm:n,onCancel:a,afterOnConfirm:s,asPath:c,title:u,contents:m,showCloseButton:p=!1,confirmText:f="확인",cancelText:h="취소",style:g,...w})=>{let[x,b]=(0,i.useState)(!1),v=(0,i.useRef)(!1),y=(0,i.useRef)(!1),C=(0,i.useCallback)(()=>{t(e)},[e,t]),k=(0,i.useCallback)(async()=>{if(!v.current&&!y.current){v.current=!0,b(!0);try{n&&await n(w),s&&s(),y.current=!0,C()}catch(e){throw v.current=!1,b(!1),e}}},[s,w,C,n]),A=(0,i.useCallback)(async()=>{if(!v.current&&!y.current){y.current=!0;try{a&&await a()}finally{C()}}},[C,a]);return(0,i.useEffect)(()=>{d.push(e);let t=t=>{"Escape"!==t.key||d.at(-1)===e&&(t.preventDefault(),A())};return document.addEventListener("keydown",t),()=>{document.removeEventListener("keydown",t);let n=d.lastIndexOf(e);n>=0&&d.splice(n,1)}},[A,e]),(0,l.Y)(o,{isOpen:!0,onClose:()=>void A(),className:"modalWrap",title:u,css:g,showCloseButton:p,footer:(0,l.FD)(r.e2v,{count:2,gap:"8px",children:[(0,l.Y)(r.$nd,{size:"md",theme:"line",disabled:x,onClick:A,children:h}),(0,l.Y)(r.$nd,{size:"md",theme:"fill",disabled:x,onClick:k,children:f})]}),children:m})};s.displayName="ConfirmModal";let c=s},43977:(e,t,n)=>{n.d(t,{A:()=>o});var l=n(64427),a=n(11914),r=n(12336);class i extends r.A{static{this.commmentPath="/events/{id}/comments"}static{this.commentDetailPath="/events/{id}/comments/{comment-id}"}constructor(e){super({baseURL:l.Er,...e})}getCommentList(e,t){return this.axios.get((0,a.r)(i.commmentPath,{id:e}),{params:t})}writeComment(e,t){return this.axios.post((0,a.r)(i.commmentPath,{id:e}),{text:t})}deleteComment(e,t){return this.axios.delete((0,a.r)(i.commentDetailPath,{id:e,"comment-id":t}))}}let o=i},55194:(e,t,n)=>{n.d(t,{A:()=>f});var l=n(18153),a=n(38695),r=n(47740),i=n(14232),o=n(98854),d=n(39833),s=n(60980),c=n(90920),u=n(58353);let m=e=>null==e?"":String(e).trim().toUpperCase(),p=({id:e,user:t,text:n,createdAt:a,onDelete:p,currentUserId:f})=>{var w,x;let b,v,y=(0,o.wA)(),C=(0,o.d4)(e=>e.session.profile),k=(w=void 0!==f?f:C?.id,x=t.id,b=m(w),v=m(x),!!(b&&v&&b===v)),A=(0,i.useMemo)(()=>{let e=parseInt(a,10);return Number.isNaN(e)?Date.now():e*s.Z2},[a]),I=(0,i.useCallback)(()=>{y((0,c.zz)(d.A,{title:"댓글 삭제",contents:(0,l.Y)(r.KAU,{children:(0,l.Y)("p",{children:"이 댓글을 삭제하시겠어요?"})}),confirmText:"삭제",onConfirm:()=>{p?.(e)}}))},[e,p,y]);return(0,l.Y)(h,{className:"comment-item",children:(0,l.FD)(g,{className:"info",children:[(0,l.FD)("p",{children:[(0,l.Y)("em",{className:"body3 bold",children:t.name||"익명"}),(0,l.Y)("small",{className:"body4",children:(0,u.A)(A)})]}),(0,l.FD)("p",{children:[(0,l.Y)("span",{className:"body3",children:n}),k&&(0,l.Y)("i",{onClick:I,className:"del",children:(0,l.Y)(r.Br_,{width:"18px"})})]})]})})};p.displayName="CommentItem";let f=(0,i.memo)(p),h=a.A.div`
121  margin: 0 16px;
122  padding: 18px 0;
123  border-bottom: 1px solid #f2f3f5;
124  position: relative;
125`,g=a.A.div`
126  p {
127    display: flex;
128    align-items: flex-start;
129    justify-content: space-between;
130    gap: 12px;
131
132    em {
133      flex: 1;
134      min-width: 0;
135      color: #202429;
136      font-style: normal;
137      font-size: 14px;
138      line-height: 20px;
139    }
140
141    small {
142      flex: none;
143      color: #7a7f86;
144      line-height: 20px;
145      white-space: nowrap;
146    }
147
148    span {
149      color: #202429;
150      font-size: 14px;
151      line-height: 21px;
152      word-break: break-word;
153    }
154
155    i {
156      flex: none;
157      cursor: pointer;
158
159      path {
160        stroke: #989ca1;
161      }
162    }
163
164    & ~ p {
165      margin-top: 8px;
166    }
167  }
168`},58353:(e,t,n)=>{n.d(t,{$:()=>d,A:()=>
168o});var l=n(58953),a=n(60980);let r=[a.pY,a.dp,a.d_,a.V8,a.Lp,a.UX],i=["분 전","시간 전","일 전","주 전","개월 전","년 전"];function o(e){let t=Date.now()-e;if(t<a.pY)return"방금 전";let n=r.length;for(let e=0;e<n;e++)if(!r[e+1]||t<r[e+1]){let n=Math.floor(t/r[e]);return`${n}${i[e]}`}let l=r[n-1],o=i[n-1];return`${Math.floor(t/l)}${o}`}let d=(e,t="yyyyMMdd")=>e?(0,l.A)(new Date(e||""),t):""}}]);

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.