import{r as y,j as o,a as V}from"./react-WWJ_A68P.js";import{p as C,e as v,i as Y,E as _,l as P,b as L,t as S,j as H}from"./@fxts-cXD7MMns.js";import{a as W}from"./@tanstack-BR86rpua.js";import{i as A}from"./axios-Da_2YOEl.js";import{d as w}from"./dayjs-CZ9ViMNG.js";import{L as J}from"./react-router-dom-B4YB8MrN.js";import{d as a}from"./styled-components-BHeWolSk.js";import{f as X,a as f,g as Z,u as oo,b as to,c as eo,d as io,e as no,B as ro,K as R,R as so,h as ao,P as U,i as z,j as K,k as po}from"./index-BPJ5U2d6.js";import{u as M}from"./useCouponMutation-D3YiMlPc.js";import{g as lo,a as mo,S as uo,b as co}from"./download-completed-uzvw385i.js";import{a as xo}from"./react-router-BOGNRwMt.js";import"./call-bind-oCmkau44.js";import"./get-intrinsic-BKEvijrG.js";import"./es-errors-DzOT6E3C.js";import"./has-symbols-eVqrYdw7.js";import"./has-proto-JnoBQRdH.js";import"./function-bind-BbkWVFrm.js";import"./hasown-DYqjtFKE.js";import"./set-function-length-B5OANX0j.js";import"./define-data-property-DO9o5wXF.js";import"./es-define-property-tzmkNPou.js";import"./gopd-CEkvUycD.js";import"./has-property-descriptors-DphFXkuo.js";import"./react-dom-CvjNlBjt.js";import"./scheduler-CzFDRTuY.js";import"./@remix-run-DhIrJP8L.js";import"./@emotion-DwO3GsBP.js";import"./hoist-non-react-statics-Buxaj0Kl.js";import"./react-is-8JwjhRSi.js";import"./stylis-YPZU7XtI.js";import"./react-helmet-async-jeYtsOp6.js";import"./react-fast-compare-Dxyd5FYM.js";import"./invariant-Bm-uj-iG.js";import"./shallowequal-F1vAqOm6.js";import"./react-redux-DlpFpBQ0.js";import"./use-sync-external-store-KK8Bpy9o.js";import"./redux-persist-Cbb21slr.js";import"./redux-DITMfSWq.js";import"./usehooks-ts-CCkIaz9n.js";import"./lodash.debounce-CDHjgjOA.js";import"./framer-motion-DbOul5S8.js";import"./crypto-js-C0tVhymU.js";import"./universal-cookie-Cmu-M0pA.js";import"./react-error-boundary-DEyRbsfJ.js";import"./dompurify-CqxHTgmJ.js";import"./react-device-detect-BAEcyX2V.js";import"./ua-parser-js-BBZA8f28.js";import"./qs-LNWgR29u.js";import"./side-channel-CpYS7sho.js";import"./object-inspect-CL2AiSqO.js";import"./@reduxjs-DYPsSoVN.js";import"./immer-DqxjFn0G.js";import"./redux-thunk-ClJT1hhx.js";import"./redux-logger-B8JP_rc7.js";import"./qrcode.react-CJWQPexu.js";import"./swiper-DLv7ejQn.js";import"./@hookform-Dc6jS12O.js";import"./react-hook-form-BJXGuiwr.js";import"./@marsidev-F19kFZ1X.js";import"./currency.js-9OAR_aOO.js";import"./react-select-CI241hL_.js";import"./@babel-CabbEptY.js";import"./@floating-ui-NvD4EidW.js";import"./use-isomorphic-layout-effect-MPmsYcaj.js";import"./memoize-one-BdPwpGay.js";import"./styled-reset-B7ZXsPC1.js";/* empty css */const fo=a.ul` padding: 20px; display: flex; flex-direction: column; gap: 12px; height: 100%; max-height: 60vh; overflow: hidden scroll; `,ho=a.li` border-radius: 16px; border: 1px solid #e9eaef; display: flex; `,Co=a.div` flex: 1; padding: 16px 16px 16px 20px; position: relative; min-width: 240px; max-width: 80%; * { color: ${({$isDownloadable:n})=>n?"initial":"#D4D5DA !important"}; } &::after { content: ''; display: block; height: calc(100% - 32px); border-right: 1px solid #e9eaef; position: absolute; top: 16px; right: 0; } `,go=a.button` ${X}; flex-direction: column; gap: 4px; flex-shrink: 0; padding: 0 16px; margin: 0 auto; font-size: 1.4rem; ${f.medium}; color: ${({$isDownloadable:n})=>n?"#232634":"#D4D5DA"}; `,bo=a.p` font-size: 1.6rem; ${f.bold}; color: var(--color-main); `,Do=a.p` font-size: 1.6rem; ${f.bold}; color: var(--color-text); `,yo=a.p` font-size: 1.2rem; ${f.regular}; color: var(--color-textDarkGray); `,vo=a(J)` display: block; position: relative; /* padding-bottom: 0px; */ padding-bottom: ${Z(80,335)}%; img { position: absolute; top: 0; left: 0; width: 100%; height: 100%; } `,wo=a.div` display: flex; flex-direction: column; gap: 12px; `,jo=a.p` font-size: 1.2rem; ${f.regular}; text-align: left; color: var(--color-textLightGray); `,No=a.div` display: flex; flex-direction: column; gap: 2px; `,Bo=a.div` padding: 12px 20px 45px; `,Eo=a.button` width: 100%; padding: 15px; background: ${n=>n.$isDisable?"#e9eaef":"#007afb"}; border-radius: 100px; font-size: 1.5rem; ${f.bold}; color: ${n=>n.$isDisable?"#b3b4b9":"var(--color-white)"}; `,s={CouponList:fo,CouponListItem:ho,CouponInfoContainer:Co,CouponDownloadButton:go,Discount:bo,DiscountContainer:wo,Name:Do,Constraint:yo,CouponDiscriptionContainer:No,BannerLink:vo,EndDate:jo,ButtonContainer:Bo,AllCouponDownloadButton:Eo},Ot=n=>{const j=W(),{isLogin:k}=oo(),[O,N]=y.useState(new Set),I=xo(),{openDialog:d}=to(),{data:B}=eo(),E="productNo"in n?n.productNo:0,{data:c}=io({productNo:E,memberNo:(B==null?void 0:B.memberNo)||0,options:{enabled:E!==0}}),g=y.useMemo(()=>"couponData"in n?n.couponData:[],[n]),$=y.useMemo(()=>{if(c)return C(c,v(e=>e.downloadable&&w().isBefore(e.dateInfo.issueEndYmdt)),P);if(g)return C(g,v(e=>e.downloadable&&w().isBefore(e.dateInfo.issueEndYmdt)),P)},[g,c]),{issue:{mutate:F}}=M(),q=async e=>{if(!k){await d("로그인이 필요합니다."),I(`${U.AUTH.LOGIN}?returnUrl=${window.location.pathname}`);return}F({couponNo:e},{onSuccess:async({data:m})=>{await d(`${m.couponName} 쿠폰을 발급받았습니다.`),j.invalidateQueries({predicate:i=>L(i.queryKey[0],[...z.all,...K.all]),refetchType:"all"})},onError:m=>{var i,r;if(A(m)){const p=(i=m.response)==null?void 0:i.data.code;(p==="C1004"||p==="C1005")&&N(l=>{const t=new Set(l);return t.add(e),t}),d(((r=m.response)==null?void 0:r.data.message)??"알 수 없는 오류가 발생했습니다.")}}})},{issueByEventNo:{mutate:G},issueByProudctNo:{mutate:Q}}=M(),T=async(e,m)=>{if(!k&&await d("로그인이 필요합니다.")){I(`${U.AUTH.LOGIN}?returnUrl=${window.location.pathname}`);return}if(e==="event"){G({eventNo:Number(m)},{onSuccess:async({data:i})=>{const{issueFailCoupons:r,issuedCoupons:p}=i,l=r.filter(t=>t.errorCode==="C1004"||t.errorCode==="C1005").map(t=>t.couponNo);if(l.length>0&&N(t=>{const u=new Set(t);return l.forEach(h=>u.add(h)),u}),p.length>0){await d("쿠폰을 다운로드 받았습니다."),j.invalidateQueries({predicate:t=>L(t.queryKey[0],[...z.all]),refetchType:"all"});return}if(r.length>0){d("이미 모든 쿠폰을 다운로드 받았습니다.");return}},onError(i){var r;d(A(i)?((r=i.response)==null?void 0:r.data.message)??"알 수 없는 오류가 발생했습니다.":"알 수 없는 오류가 발생했습니다.")}});return}e==="product"&&Q({productNo:E},{onSuccess:async({data:i})=>{const{issueFailCoupons:r,issuedCoupons:p}=i,l=r.filter(t=>t.errorCode==="C1004"||t.errorCode==="C1005").map(t=>t.couponNo);if(l.length>0&&N(t=>{const u=new Set(t);return l.forEach(h=>u.add(h)),u}),p.length>0){await d("쿠폰을 다운로드 받았습니다."),j.invalidateQueries({predicate:t=>L(t.queryKey[0],[...K.all]),refetchType:"all"});return}if(r.length>0){d("이미 모든 쿠폰을 다운로드 받았습니다.");return}},onError:i=>{var r;alert(A(i)?(r=i.response)==null?void 0:r.data.message:"쿠폰 다운로드에 실패했습니다.")}})},{data:b}=no({banners:[po.PRODCUT_DETAIL_COUPON_BANNER]}),x=y.useMemo(()=>!b||!b[0]?[]:C(b[0].accounts[0].banners,H(e=>e.bannerNo),S),[b]),D=!Y(c)&&!_(c)?C(c,v(e=>w().isBefore(e.dateInfo.issueEndYmdt)),S):C(g,v(e=>w().isBefore(e.dateInfo.issueEndYmdt)),S);return o.jsxs(ro,{id:"couponBottomSheet",title:"쿠폰받기",isVisible:n.isVisible,setIsVisible:n.setIsVisible,children:[o.jsx(s.CouponList,{children:D&&D.map(({couponNo:e,couponName:m,discountInfo:i,useConstraint:r,downloadable:p,couponStatus:l},t)=>{const u=!p&&(O.has(e)||l.myIssuedCnt===0&&l.issuableCnt===0);return o.jsxs(V.Fragment,{children:[o.jsxs(s.CouponListItem,{children:[o.jsx(s.CouponInfoContainer,{$isDownloadable:p,children:o.jsxs(s.DiscountContainer,{children:[o.jsxs(s.CouponDiscriptionContainer,{children:[o.jsxs("div",{children:[o.jsx(s.Discount,{children:i.fixedAmt?R(i.discountAmt).format():so(i.discountRate).format()+` (최대 ${R(i.maxDiscountAmt).format()} 할인)`}),o.jsx(s.Name,{children:m})]}),o.jsx(s.Constraint,{children:lo(r.minSalePrice,r.maxSalePrice)})]}),o.jsx(s.EndDate,{children:mo(r)})]})}),o.jsx(s.CouponDownloadButton,{$isDownloadable:p,onClick:()=>q(e),children:p?o.jsxs(o.Fragment,{children:[o.jsx(uo,{}),o.jsx("span",{children:"쿠폰받기"})]}):o.jsxs(o.Fragment,{children:[o.jsx(co,{}),o.jsx("span",{children:u?"소진완료":"받기완료"})]})})]}),x[0]&&(D.length>1&&t===1||D.length===1&&t===0)&&o.jsx(s.BannerLink,{to:x[0].landingUrl,target:ao(x[0].browerTargetType),onClick:h=>{x[0].landingUrl==="/"&&h.preventDefault()},children:o.jsx("img",{src:x[0].imageUrl,alt:x[0].name})})]},e)})}),o.jsx(s.ButtonContainer,{children:o.jsxs(s.AllCouponDownloadButton,{onClick:()=>"couponData"in n?T("event",n.eventNo):T("product",n.productNo),disabled:$==0,$isDisable:$==0,children:[$,"개 전체받기"]})})]})};export{Ot as default};