@anker-in/headless-ui 1.1.97 → 1.1.98

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (26) hide show
  1. package/dist/cjs/biz-components/LotteryShared/WinnerModal.d.ts +1 -1
  2. package/dist/cjs/biz-components/LotteryShared/WinnerModal.js +1 -1
  3. package/dist/cjs/biz-components/LotteryShared/WinnerModal.js.map +3 -3
  4. package/dist/cjs/biz-components/LotteryShared/types.d.ts +5 -0
  5. package/dist/cjs/biz-components/LotteryShared/types.js +1 -1
  6. package/dist/cjs/biz-components/LotteryShared/types.js.map +2 -2
  7. package/dist/cjs/biz-components/ProductLottery/index.js +1 -1
  8. package/dist/cjs/biz-components/ProductLottery/index.js.map +2 -2
  9. package/dist/cjs/biz-components/WheelLottery/WinnerModal.d.ts +1 -1
  10. package/dist/cjs/biz-components/WheelLottery/WinnerModal.js +1 -1
  11. package/dist/cjs/biz-components/WheelLottery/WinnerModal.js.map +3 -3
  12. package/dist/cjs/biz-components/WheelLottery/index.js +1 -1
  13. package/dist/cjs/biz-components/WheelLottery/index.js.map +2 -2
  14. package/dist/esm/biz-components/LotteryShared/WinnerModal.d.ts +1 -1
  15. package/dist/esm/biz-components/LotteryShared/WinnerModal.js +1 -1
  16. package/dist/esm/biz-components/LotteryShared/WinnerModal.js.map +3 -3
  17. package/dist/esm/biz-components/LotteryShared/types.d.ts +5 -0
  18. package/dist/esm/biz-components/LotteryShared/types.js.map +2 -2
  19. package/dist/esm/biz-components/ProductLottery/index.js +1 -1
  20. package/dist/esm/biz-components/ProductLottery/index.js.map +2 -2
  21. package/dist/esm/biz-components/WheelLottery/WinnerModal.d.ts +1 -1
  22. package/dist/esm/biz-components/WheelLottery/WinnerModal.js +1 -1
  23. package/dist/esm/biz-components/WheelLottery/WinnerModal.js.map +3 -3
  24. package/dist/esm/biz-components/WheelLottery/index.js +1 -1
  25. package/dist/esm/biz-components/WheelLottery/index.js.map +2 -2
  26. package/package.json +1 -1
@@ -1,2 +1,2 @@
1
- "use client";import{jsx as t,jsxs as m}from"react/jsx-runtime";import{useState as s,useCallback as N,useRef as Ze,useEffect as Y,useImperativeHandle as qe,forwardRef as et}from"react";import{cn as u}from"../../helpers/index.js";import{DEFAULT_WHEEL_CONFIG as J,DEFAULT_CHANCE_METHODS as tt,INITIAL_WHEEL_STATE as ot}from"./types.js";import{Grid as rt,GridItem as Q}from"../../components/grid.js";import{Wheel as nt}from"./Wheel.js";import{PrizePool as st}from"../LotteryShared/PrizePool.js";import{ChanceMethods as it}from"../LotteryShared/ChanceMethods.js";import{WinnerModal as at}from"../LotteryShared/WinnerModal.js";import{RulesModal as lt}from"../LotteryShared/RulesModal.js";import{MyRewardsModal as pt}from"../LotteryShared/MyRewardsModal.js";import{ErrorModal as X}from"../LotteryShared/ErrorModal.js";import{ShareModal as dt}from"../LotteryShared/ShareModal.js";import{withLayout as ct}from"../../shared/Styles.js";const Z=et(({prizes:l,theme:i,winningPrizeId:v,spinDuration:L=J.spinDuration,wheelBackgroundImage:q,pointerImage:ee,chanceMethods:A=tt,chanceTitle:te=J.chanceTitle,chanceSubtitle:oe,chanceFooterNote:re,chanceMethodsText:P,mechanismType:ne,inputConfig:se,winningInfos:ie=[],winnerNameTemplate:ae,prizesTitle:le,onSpinStart:C,onSpinEnd:R,onSpinError:D,winnerModalConfig:r,rulesModalConfig:pe={},myRewardsModalConfig:de={},errorModalConfig:f={},shareModalConfig:x={},userData:p,onLoginRequired:z,onCopyCode:ce,opportunitiesText:F=["Number of draws remaining today:"],className:me},fe)=>{const{rulesData:h,rulesText:B="Rules"}=pe,{rewardsData:I,myRewardsText:U="My Rewards",codeText:ue="CODE:",copyText:O="COPY",copiedText:j="COPIED",prizeText:xe="Prize time:",emptyText:he,copyError:we,availableText:ge,usedStatusText:ye,expiredText:Te,notFoundText:be}=de,Me=P?.completedText,Se=P?.usedText,w=p?.isLoggedIn??!1,G=p?.availableChances??0,We=w&&G<=0,[o,d]=s(ot),[Pe,g]=s(!1),[ze,y]=s(!1),[Ee,T]=s(!1),[Ne,b]=s(!1),[ve,M]=s(!1),[Ce,S]=s(!1),[Re,H]=s(""),[Ie,ke]=s(),[Le,Ae]=s(),[De,Fe]=s(),[Be,Ue]=s(),[Oe,je]=s(),[n,Ge]=s(),E=Ze(null);qe(fe,()=>({showError:({message:e,title:a,confirmText:W})=>{H(e),ke(a),Ae(W),b(!0)},hideError:()=>{b(!1)},showNoWin:e=>{Fe(e?.title),Ue(e?.message),je(e?.confirmText),M(!0)},hideNoWin:()=>{M(!1)},showWinner:(e,a)=>{d(W=>({...W,winningPrize:e})),Ge(a),g(!0)},hideWinner:()=>{g(!1)},showRules:()=>{y(!0)},hideRules:()=>{y(!1)},showRewards:()=>{T(!0)},hideRewards:()=>{T(!1)},showShare:()=>{S(!0)},hideShare:()=>{S(!1)},hideAllModals:()=>{g(!1),y(!1),T(!1),b(!1),M(!1),S(!1)}}),[]),Y(()=>{},[l,v]),Y(()=>()=>{E.current!==null&&cancelAnimationFrame(E.current)},[]);const _=N(async()=>{if(!o.isSpinning){if(!p?.isLoggedIn){z?.();return}if(!(p.availableChances<=0)){d(e=>({...e,isSpinning:!0,isButtonDisabled:!0}));try{let e=v;C&&(e=await C());const a=l.find(c=>c.prizeKey===e)||l[0],W=l.findIndex(c=>c.prizeKey===a.prizeKey),$e=360/l.length,Ve=W*$e,K=3*360+(360-Ve);await new Promise(c=>setTimeout(c,1500)),d(c=>({...c,isFinished:!0,currentRotation:0}));const Ye=Date.now(),$=()=>{const Je=Date.now()-Ye,V=Math.min(Je/L,1),Qe=1-Math.pow(1-V,3),Xe=K*Qe;d(k=>({...k,currentRotation:Xe})),V<1?E.current=requestAnimationFrame($):(d(k=>({...k,isSpinning:!1,isButtonDisabled:!0,winningPrize:a,currentRotation:K})),R?R?.(a):setTimeout(()=>{a.prizeKey==="try-again"?M(!0):g(!0)},500))};E.current=requestAnimationFrame($)}catch(e){d(a=>({...a,isSpinning:!1,isButtonDisabled:!1})),H(e.message||"An error occurred"),b(!0),D?.(e),console.error("\u62BD\u5956\u63A5\u53E3\u8C03\u7528\u5931\u8D25:",e)}}}},[o.isSpinning,l,v,L,C,R,D,p,z]),He=N(()=>{if(w){_();return}z?.()},[_,w,z]),_e=N(()=>{g(!1),d(e=>({...e,isButtonDisabled:!1,isFinished:!1}))},[]),Ke=N(()=>{M(!1),d(e=>({...e,isButtonDisabled:!1,isFinished:!1}))},[]);return m("div",{className:u("wheel-lottery-container","w-full",i==="dark"?"aiui-dark":"",me),children:[m("div",{role:"status","aria-live":"polite","aria-atomic":"true",className:"sr-only",children:[o.isSpinning&&"\u62BD\u5956\u8FDB\u884C\u4E2D...",o.winningPrize&&!o.isSpinning&&`\u5DF2\u4E2D\u5956: ${o.winningPrize.name}`]}),m(rt,{className:u("wheel-lottery-main","tablet:mb-4 mb-3"),children:[t(Q,{span:7,className:u("wheel-section","relative flex w-full flex-1 items-center justify-center overflow-hidden","rounded-box","laptop:min-h-[288px] min-h-[240px]","lg-desktop:aspect-w-[964] lg-desktop:aspect-h-[480]","desktop:aspect-w-[759] desktop:aspect-h-[384]","laptop:aspect-w-[516] laptop:aspect-h-[288]","l-tablet:col-span-12","l-tablet:mb-3",i==="dark"?"bg-[#1E2024]":"bg-[#EAEAEC]"),children:m("div",{className:u("w-full px-[16px] pt-[16px]","lg-desktop:pb-[32px] lg-desktop:px-[32px]","desktop:pt-[24px] desktop:px-[24px]","laptop:pt-[16px] laptop:px-[16px]","tablet:px-[24px]","l-tablet:absolute l-tablet:top-0 l-tablet:inset-x-0 l-tablet:z-10"),children:[m("div",{className:"tablet:max-h-[24px] relative z-10 mb-2 flex max-h-[40px] w-full flex-wrap items-center justify-between gap-3",children:[t("div",{children:w&&m("p",{className:"text-info-primary font-[700]",children:[F?.[0],t("span",{className:"ml-1 text-[#FF6B35]",children:G}),F?.[1]||""]})}),m("div",{className:"flex items-center gap-4",children:[h&&h.length>0&&t("button",{onClick:()=>y(!0),className:"cursor-pointer touch-manipulation",type:"button",children:t("span",{className:"text-info-primary font-[700] underline",children:B})}),p?.isLoggedIn&&I&&t("button",{onClick:()=>T(!0),className:"cursor-pointer touch-manipulation whitespace-nowrap",type:"button",children:t("span",{className:"text-info-primary font-[700] underline",children:U})})]})]}),t(nt,{theme:i,prizes:l,rotation:o.currentRotation,isSpinning:o.isSpinning,isFinished:o.isFinished,isButtonDisabled:o.isButtonDisabled||!w||We,userData:p,onGoClick:He,wheelBackgroundImage:q,pointerImage:ee})]})}),A.length>0&&t(Q,{span:5,className:u("info-section","rounded-box","relative flex flex-col overflow-hidden","lg-desktop:aspect-w-[684] lg-desktop:aspect-h-[480]","desktop:aspect-w-[536] desktop:aspect-h-[384]","laptop:aspect-w-[364] laptop:aspect-h-[288]","l-tablet:min-h-[280px] laptop:max-h-[320px]","w-full","l-tablet:col-span-12",i==="dark"?"bg-[#1E2024]":"bg-[#EAEAEC]"),children:t(it,{theme:i,userData:p,methods:A,title:te,subtitle:oe,footerNote:re,onOpenShareModal:()=>S(!0),chanceBadgeText:P?.chanceBadgeText,completedText:Me,usedText:Se,loadingText:P?.loadingText,mechanismType:ne,inputConfig:se})})]}),t("div",{className:u("wheel-lottery-footer","rounded-box","flex flex-col overflow-hidden",i==="dark"?"bg-[#1E2024]":"bg-[#EAEAEC]"),children:t(st,{theme:i,prizes:l,title:le,winningInfos:ie,winnerNameTemplate:ae})}),t(at,{isOpen:Pe,prize:o.winningPrize,title:n?.title||r?.title,prizeTitle:n?.prizeTitle||r?.prizeTitle,prizeImage:n?.prizeImage||r?.prizeImage,prizeDescription:n?.prizeDescription||r?.prizeDescription,winnerNote:n?.winnerNote??o.winningPrize?.winnerModalConfig?.winnerNote??r?.winnerNote,learnMoreUrl:n?.learnMoreUrl||o.winningPrize?.winnerModalConfig?.learnMoreUrl||r?.learnMoreUrl,learnMoreText:n?.learnMoreText||o.winningPrize?.winnerModalConfig?.learnMoreText||r?.learnMoreText,couponCode:n?.couponCode||r?.couponCode,expiresAt:n?.expiresAt||r?.expiresAt,couponDiscount:n?.couponDiscount||r?.couponDiscount,couponUnit:n?.couponUnit||r?.couponUnit,confirmText:n?.confirmText||o.winningPrize?.winnerModalConfig?.confirmText||r?.confirmText,confirmUrl:n?.confirmUrl||o.winningPrize?.winnerModalConfig?.confirmUrl||r?.confirmUrl,copyText:n?.copyText||r?.copyText||O,copiedText:n?.copiedText||r?.copiedText||j,onClose:_e,theme:i}),h&&h.length>0&&t(lt,{title:B,isOpen:ze,onClose:()=>y(!1),rules:h,theme:i}),I&&t(pt,{isOpen:Ee,onClose:()=>T(!1),rewards:I,onCopyCode:ce,codeText:ue,copyText:O,copiedText:j,prizeText:xe,emptyText:he,copyError:we,availableText:ge,usedStatusText:ye,expiredText:Te,notFoundText:be,theme:i,title:U}),t(X,{isOpen:Ne,onClose:()=>b(!1),title:Ie||f?.title,message:Re||f?.message,confirmText:Le||f?.confirmText,theme:i}),t(X,{isOpen:ve,onClose:Ke,title:De||f?.title,message:Be||f?.message,confirmText:Oe||f?.confirmText,theme:i}),t(dt,{isOpen:Ce,onClose:()=>S(!1),title:x?.title,subtitle:x?.subtitle,note:x?.note,platforms:x?.platforms,onShareSuccess:x?.onShareSuccess,theme:i})]})});Z.displayName="WheelLottery";var zt=ct(Z);import{WinnerModal as vt}from"../LotteryShared/WinnerModal.js";import{RulesModal as Rt}from"../LotteryShared/RulesModal.js";import{MyRewardsModal as kt}from"../LotteryShared/MyRewardsModal.js";import{ErrorModal as At}from"../LotteryShared/ErrorModal.js";import{ShareModal as Ft}from"../LotteryShared/ShareModal.js";import{BaseModal as Ut}from"../LotteryShared/BaseModal.js";export{Ut as BaseModal,At as ErrorModal,kt as MyRewardsModal,Rt as RulesModal,Ft as ShareModal,Z as WheelLottery,vt as WinnerModal,zt as default};
1
+ "use client";import{jsx as t,jsxs as m}from"react/jsx-runtime";import{useState as s,useCallback as N,useRef as Ze,useEffect as Y,useImperativeHandle as qe,forwardRef as et}from"react";import{cn as u}from"../../helpers/index.js";import{DEFAULT_WHEEL_CONFIG as J,DEFAULT_CHANCE_METHODS as tt,INITIAL_WHEEL_STATE as ot}from"./types.js";import{Grid as rt,GridItem as Q}from"../../components/grid.js";import{Wheel as nt}from"./Wheel.js";import{PrizePool as st}from"../LotteryShared/PrizePool.js";import{ChanceMethods as it}from"../LotteryShared/ChanceMethods.js";import{WinnerModal as at}from"../LotteryShared/WinnerModal.js";import{RulesModal as lt}from"../LotteryShared/RulesModal.js";import{MyRewardsModal as pt}from"../LotteryShared/MyRewardsModal.js";import{ErrorModal as X}from"../LotteryShared/ErrorModal.js";import{ShareModal as dt}from"../LotteryShared/ShareModal.js";import{withLayout as ct}from"../../shared/Styles.js";const Z=et(({prizes:l,theme:i,winningPrizeId:v,spinDuration:A=J.spinDuration,wheelBackgroundImage:q,pointerImage:ee,chanceMethods:k=tt,chanceTitle:te=J.chanceTitle,chanceSubtitle:oe,chanceFooterNote:re,chanceMethodsText:P,mechanismType:ne,inputConfig:se,winningInfos:ie=[],winnerNameTemplate:ae,prizesTitle:le,onSpinStart:C,onSpinEnd:R,onSpinError:D,winnerModalConfig:o,rulesModalConfig:pe={},myRewardsModalConfig:de={},errorModalConfig:f={},shareModalConfig:x={},userData:p,onLoginRequired:z,onCopyCode:ce,opportunitiesText:F=["Number of draws remaining today:"],className:me},fe)=>{const{rulesData:h,rulesText:B="Rules"}=pe,{rewardsData:I,myRewardsText:U="My Rewards",codeText:ue="CODE:",copyText:O="COPY",copiedText:j="COPIED",prizeText:xe="Prize time:",emptyText:he,copyError:we,availableText:ge,usedStatusText:ye,expiredText:Te,notFoundText:be}=de,Se=P?.completedText,We=P?.usedText,w=p?.isLoggedIn??!1,G=p?.availableChances??0,Me=w&&G<=0,[r,d]=s(ot),[Pe,g]=s(!1),[ze,y]=s(!1),[Ee,T]=s(!1),[Ne,b]=s(!1),[ve,S]=s(!1),[Ce,W]=s(!1),[Re,H]=s(""),[Ie,Le]=s(),[Ae,ke]=s(),[De,Fe]=s(),[Be,Ue]=s(),[Oe,je]=s(),[n,Ge]=s(),E=Ze(null);qe(fe,()=>({showError:({message:e,title:a,confirmText:M})=>{H(e),Le(a),ke(M),b(!0)},hideError:()=>{b(!1)},showNoWin:e=>{Fe(e?.title),Ue(e?.message),je(e?.confirmText),S(!0)},hideNoWin:()=>{S(!1)},showWinner:(e,a)=>{d(M=>({...M,winningPrize:e})),Ge(a),g(!0)},hideWinner:()=>{g(!1)},showRules:()=>{y(!0)},hideRules:()=>{y(!1)},showRewards:()=>{T(!0)},hideRewards:()=>{T(!1)},showShare:()=>{W(!0)},hideShare:()=>{W(!1)},hideAllModals:()=>{g(!1),y(!1),T(!1),b(!1),S(!1),W(!1)}}),[]),Y(()=>{},[l,v]),Y(()=>()=>{E.current!==null&&cancelAnimationFrame(E.current)},[]);const _=N(async()=>{if(!r.isSpinning){if(!p?.isLoggedIn){z?.();return}if(!(p.availableChances<=0)){d(e=>({...e,isSpinning:!0,isButtonDisabled:!0}));try{let e=v;C&&(e=await C());const a=l.find(c=>c.prizeKey===e)||l[0],M=l.findIndex(c=>c.prizeKey===a.prizeKey),$e=360/l.length,Ve=M*$e,K=3*360+(360-Ve);await new Promise(c=>setTimeout(c,1500)),d(c=>({...c,isFinished:!0,currentRotation:0}));const Ye=Date.now(),$=()=>{const Je=Date.now()-Ye,V=Math.min(Je/A,1),Qe=1-Math.pow(1-V,3),Xe=K*Qe;d(L=>({...L,currentRotation:Xe})),V<1?E.current=requestAnimationFrame($):(d(L=>({...L,isSpinning:!1,isButtonDisabled:!0,winningPrize:a,currentRotation:K})),R?R?.(a):setTimeout(()=>{a.prizeKey==="try-again"?S(!0):g(!0)},500))};E.current=requestAnimationFrame($)}catch(e){d(a=>({...a,isSpinning:!1,isButtonDisabled:!1})),H(e.message||"An error occurred"),b(!0),D?.(e),console.error("\u62BD\u5956\u63A5\u53E3\u8C03\u7528\u5931\u8D25:",e)}}}},[r.isSpinning,l,v,A,C,R,D,p,z]),He=N(()=>{if(w){_();return}z?.()},[_,w,z]),_e=N(()=>{g(!1),d(e=>({...e,isButtonDisabled:!1,isFinished:!1}))},[]),Ke=N(()=>{S(!1),d(e=>({...e,isButtonDisabled:!1,isFinished:!1}))},[]);return m("div",{className:u("wheel-lottery-container","w-full",i==="dark"?"aiui-dark":"",me),children:[m("div",{role:"status","aria-live":"polite","aria-atomic":"true",className:"sr-only",children:[r.isSpinning&&"\u62BD\u5956\u8FDB\u884C\u4E2D...",r.winningPrize&&!r.isSpinning&&`\u5DF2\u4E2D\u5956: ${r.winningPrize.name}`]}),m(rt,{className:u("wheel-lottery-main","tablet:mb-4 mb-3"),children:[t(Q,{span:7,className:u("wheel-section","relative flex w-full flex-1 items-center justify-center overflow-hidden","rounded-box","laptop:min-h-[288px] min-h-[240px]","lg-desktop:aspect-w-[964] lg-desktop:aspect-h-[480]","desktop:aspect-w-[759] desktop:aspect-h-[384]","laptop:aspect-w-[516] laptop:aspect-h-[288]","l-tablet:col-span-12","l-tablet:mb-3",i==="dark"?"bg-[#1E2024]":"bg-[#EAEAEC]"),children:m("div",{className:u("w-full px-[16px] pt-[16px]","lg-desktop:pb-[32px] lg-desktop:px-[32px]","desktop:pt-[24px] desktop:px-[24px]","laptop:pt-[16px] laptop:px-[16px]","tablet:px-[24px]","l-tablet:absolute l-tablet:top-0 l-tablet:inset-x-0 l-tablet:z-10"),children:[m("div",{className:"tablet:max-h-[24px] relative z-10 mb-2 flex max-h-[40px] w-full flex-wrap items-center justify-between gap-3",children:[t("div",{children:w&&m("p",{className:"text-info-primary font-[700]",children:[F?.[0],t("span",{className:"ml-1 text-[#FF6B35]",children:G}),F?.[1]||""]})}),m("div",{className:"flex items-center gap-4",children:[h&&h.length>0&&t("button",{onClick:()=>y(!0),className:"cursor-pointer touch-manipulation",type:"button",children:t("span",{className:"text-info-primary font-[700] underline",children:B})}),p?.isLoggedIn&&I&&t("button",{onClick:()=>T(!0),className:"cursor-pointer touch-manipulation whitespace-nowrap",type:"button",children:t("span",{className:"text-info-primary font-[700] underline",children:U})})]})]}),t(nt,{theme:i,prizes:l,rotation:r.currentRotation,isSpinning:r.isSpinning,isFinished:r.isFinished,isButtonDisabled:r.isButtonDisabled||!w||Me,userData:p,onGoClick:He,wheelBackgroundImage:q,pointerImage:ee})]})}),k.length>0&&t(Q,{span:5,className:u("info-section","rounded-box","relative flex flex-col overflow-hidden","lg-desktop:aspect-w-[684] lg-desktop:aspect-h-[480]","desktop:aspect-w-[536] desktop:aspect-h-[384]","laptop:aspect-w-[364] laptop:aspect-h-[288]","l-tablet:min-h-[280px] laptop:max-h-[320px]","w-full","l-tablet:col-span-12",i==="dark"?"bg-[#1E2024]":"bg-[#EAEAEC]"),children:t(it,{theme:i,userData:p,methods:k,title:te,subtitle:oe,footerNote:re,onOpenShareModal:()=>W(!0),chanceBadgeText:P?.chanceBadgeText,completedText:Se,usedText:We,loadingText:P?.loadingText,mechanismType:ne,inputConfig:se})})]}),t("div",{className:u("wheel-lottery-footer","rounded-box","flex flex-col overflow-hidden",i==="dark"?"bg-[#1E2024]":"bg-[#EAEAEC]"),children:t(st,{theme:i,prizes:l,title:le,winningInfos:ie,winnerNameTemplate:ae})}),t(at,{isOpen:Pe,prize:r.winningPrize,title:n?.title||o?.title,prizeTitle:n?.prizeTitle||o?.prizeTitle,prizeImage:n?.prizeImage||o?.prizeImage,prizeDescription:n?.prizeDescription||o?.prizeDescription,winnerNote:n?.winnerNote??r.winningPrize?.winnerModalConfig?.winnerNote??o?.winnerNote,learnMoreUrl:n?.learnMoreUrl||r.winningPrize?.winnerModalConfig?.learnMoreUrl||o?.learnMoreUrl,learnMoreText:n?.learnMoreText||r.winningPrize?.winnerModalConfig?.learnMoreText||o?.learnMoreText,couponCode:n?.couponCode||o?.couponCode,expiresAt:n?.expiresAt||o?.expiresAt,expiresAtLabel:n?.expiresAtLabel||o?.expiresAtLabel,couponDiscount:n?.couponDiscount||o?.couponDiscount,couponUnit:n?.couponUnit||o?.couponUnit,confirmText:n?.confirmText||r.winningPrize?.winnerModalConfig?.confirmText||o?.confirmText,confirmUrl:n?.confirmUrl||r.winningPrize?.winnerModalConfig?.confirmUrl||o?.confirmUrl,copyText:n?.copyText||o?.copyText||O,copiedText:n?.copiedText||o?.copiedText||j,onClose:_e,theme:i}),h&&h.length>0&&t(lt,{title:B,isOpen:ze,onClose:()=>y(!1),rules:h,theme:i}),I&&t(pt,{isOpen:Ee,onClose:()=>T(!1),rewards:I,onCopyCode:ce,codeText:ue,copyText:O,copiedText:j,prizeText:xe,emptyText:he,copyError:we,availableText:ge,usedStatusText:ye,expiredText:Te,notFoundText:be,theme:i,title:U}),t(X,{isOpen:Ne,onClose:()=>b(!1),title:Ie||f?.title,message:Re||f?.message,confirmText:Ae||f?.confirmText,theme:i}),t(X,{isOpen:ve,onClose:Ke,title:De||f?.title,message:Be||f?.message,confirmText:Oe||f?.confirmText,theme:i}),t(dt,{isOpen:Ce,onClose:()=>W(!1),title:x?.title,subtitle:x?.subtitle,note:x?.note,platforms:x?.platforms,onShareSuccess:x?.onShareSuccess,theme:i})]})});Z.displayName="WheelLottery";var zt=ct(Z);import{WinnerModal as vt}from"../LotteryShared/WinnerModal.js";import{RulesModal as Rt}from"../LotteryShared/RulesModal.js";import{MyRewardsModal as Lt}from"../LotteryShared/MyRewardsModal.js";import{ErrorModal as kt}from"../LotteryShared/ErrorModal.js";import{ShareModal as Ft}from"../LotteryShared/ShareModal.js";import{BaseModal as Ut}from"../LotteryShared/BaseModal.js";export{Ut as BaseModal,kt as ErrorModal,Lt as MyRewardsModal,Rt as RulesModal,Ft as ShareModal,Z as WheelLottery,vt as WinnerModal,zt as default};
2
2
  //# sourceMappingURL=index.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../src/biz-components/WheelLottery/index.tsx"],
4
- "sourcesContent": ["/**\n * WheelLottery - \u5927\u8F6C\u76D8\u62BD\u5956\u7EC4\u4EF6\n *\n * \u7528\u4E8E\u8425\u9500\u6D3B\u52A8\u7684\u4EA4\u4E92\u5F0F\u62BD\u5956\u8F6C\u76D8\uFF0C\u652F\u6301\u591A\u54C1\u724C\u4E3B\u9898\u548C\u54CD\u5E94\u5F0F\u5E03\u5C40\u3002\n *\n * @module WheelLottery\n * @date 2025-12-17\n */\n\n'use client'\n\nimport { useState, useCallback, useRef, useEffect, useImperativeHandle, forwardRef } from 'react'\nimport { cn } from '../../helpers/index.js'\nimport { DEFAULT_WHEEL_CONFIG, DEFAULT_CHANCE_METHODS, INITIAL_WHEEL_STATE } from './types.js'\nimport { Grid, GridItem } from '../../components/grid.js'\nimport { Wheel } from './Wheel.js'\nimport { PrizePool } from '../LotteryShared/PrizePool.js'\nimport { ChanceMethods } from '../LotteryShared/ChanceMethods.js'\nimport { WinnerModal } from '../LotteryShared/WinnerModal.js'\nimport { RulesModal } from '../LotteryShared/RulesModal.js'\nimport { MyRewardsModal } from '../LotteryShared/MyRewardsModal.js'\nimport { ErrorModal } from '../LotteryShared/ErrorModal.js'\nimport { ShareModal } from '../LotteryShared/ShareModal.js'\nimport { withLayout } from '../../shared/Styles.js'\n\nimport type { WheelLotteryProps, WheelState, WheelLotteryHandle, WinnerModalConfig } from './types.js'\n\n// ============================================================================\n// \u4E3B\u7EC4\u4EF6\n// ============================================================================\n\n/**\n * WheelLottery \u7EC4\u4EF6\n *\n * @example\n * ```tsx\n * // \u57FA\u7840\u4F7F\u7528\n * <WheelLottery\n * prizes={prizes}\n * winningPrizeId=\"prize-003\"\n * onSpinEnd={(prize) => alert(`You won ${prize.name}`)}\n * />\n *\n * // \u4F7F\u7528 ref \u63A7\u5236\u5F39\u7A97\n * const lotteryRef = useRef<WheelLotteryHandle>(null)\n *\n * <WheelLottery ref={lotteryRef} prizes={prizes} />\n *\n * // \u5916\u90E8\u89E6\u53D1\u5F39\u7A97\n * lotteryRef.current?.showError({\n * title: 'Error',\n * message: 'Something went wrong'\n * })\n * ```\n */\nexport const WheelLottery = forwardRef<WheelLotteryHandle, WheelLotteryProps>(\n (\n {\n prizes,\n theme,\n winningPrizeId,\n spinDuration = DEFAULT_WHEEL_CONFIG.spinDuration,\n wheelBackgroundImage,\n pointerImage,\n chanceMethods = DEFAULT_CHANCE_METHODS,\n chanceTitle = DEFAULT_WHEEL_CONFIG.chanceTitle,\n chanceSubtitle,\n chanceFooterNote,\n chanceMethodsText,\n mechanismType,\n inputConfig,\n winningInfos = [],\n winnerNameTemplate,\n prizesTitle,\n onSpinStart,\n onSpinEnd,\n onSpinError,\n winnerModalConfig,\n rulesModalConfig = {},\n myRewardsModalConfig = {},\n errorModalConfig = {},\n shareModalConfig = {},\n userData,\n onLoginRequired,\n onCopyCode,\n opportunitiesText = ['Number of draws remaining today:'],\n className,\n },\n ref\n ) => {\n const { rulesData, rulesText = 'Rules' } = rulesModalConfig\n const {\n rewardsData,\n myRewardsText = 'My Rewards',\n codeText = 'CODE:',\n copyText = 'COPY',\n copiedText = 'COPIED',\n prizeText = 'Prize time:',\n emptyText,\n copyError,\n availableText,\n usedStatusText,\n expiredText,\n notFoundText,\n } = myRewardsModalConfig\n const completedText = chanceMethodsText?.completedText\n const usedText = chanceMethodsText?.usedText\n const isLoggedIn = userData?.isLoggedIn ?? false\n const availableChances = userData?.availableChances ?? 0\n const isNoChancesState = isLoggedIn && availableChances <= 0\n // ==========================================================================\n // State \u7BA1\u7406\n // ==========================================================================\n\n const [wheelState, setWheelState] = useState<WheelState>(INITIAL_WHEEL_STATE)\n const [showWinnerModal, setShowWinnerModal] = useState(false)\n const [showRulesModal, setShowRulesModal] = useState(false)\n const [showRewardsModal, setShowRewardsModal] = useState(false)\n const [showErrorModal, setShowErrorModal] = useState(false)\n const [showNoWinModal, setShowNoWinModal] = useState(false)\n const [showShareModal, setShowShareModal] = useState(false)\n const [errorMessage, setErrorMessage] = useState('')\n const [errorTitle, setErrorTitle] = useState<string | undefined>()\n const [errorConfirmText, setErrorConfirmText] = useState<string | undefined>()\n const [noWinTitle, setNoWinTitle] = useState<string | undefined>()\n const [noWinMessage, setNoWinMessage] = useState<string | undefined>()\n const [noWinConfirmText, setNoWinConfirmText] = useState<string | undefined>()\n const [externalWinnerConfig, setExternalWinnerConfig] = useState<Partial<WinnerModalConfig> | undefined>()\n const animationRef = useRef<number | null>(null)\n\n // ==========================================================================\n // Imperative Handle - \u66B4\u9732\u65B9\u6CD5\u7ED9\u7236\u7EC4\u4EF6\n // ==========================================================================\n\n useImperativeHandle(\n ref,\n () => ({\n showError: ({ message, title, confirmText }) => {\n setErrorMessage(message)\n setErrorTitle(title)\n setErrorConfirmText(confirmText)\n setShowErrorModal(true)\n },\n hideError: () => {\n setShowErrorModal(false)\n },\n showNoWin: config => {\n setNoWinTitle(config?.title)\n setNoWinMessage(config?.message)\n setNoWinConfirmText(config?.confirmText)\n setShowNoWinModal(true)\n },\n hideNoWin: () => {\n setShowNoWinModal(false)\n },\n showWinner: (prize, config) => {\n setWheelState(prev => ({ ...prev, winningPrize: prize }))\n setExternalWinnerConfig(config)\n setShowWinnerModal(true)\n },\n hideWinner: () => {\n setShowWinnerModal(false)\n },\n showRules: () => {\n setShowRulesModal(true)\n },\n hideRules: () => {\n setShowRulesModal(false)\n },\n showRewards: () => {\n setShowRewardsModal(true)\n },\n hideRewards: () => {\n setShowRewardsModal(false)\n },\n showShare: () => {\n setShowShareModal(true)\n },\n hideShare: () => {\n setShowShareModal(false)\n },\n hideAllModals: () => {\n setShowWinnerModal(false)\n setShowRulesModal(false)\n setShowRewardsModal(false)\n setShowErrorModal(false)\n setShowNoWinModal(false)\n setShowShareModal(false)\n },\n }),\n []\n )\n\n // ==========================================================================\n // Props \u9A8C\u8BC1\uFF08\u5F00\u53D1\u73AF\u5883\uFF09\n // ==========================================================================\n\n useEffect(() => {\n if (process.env.NODE_ENV === 'development' && prizes) {\n if (prizes.length !== 8) {\n console.warn(\n `WheelLottery expects exactly 8 prizes, got ${prizes.length}. The component may not render correctly.`\n )\n }\n\n if (winningPrizeId && !prizes.find(p => p.prizeKey === winningPrizeId)) {\n console.warn(`WheelLottery: winningPrizeId \"${winningPrizeId}\" not found in prizes array.`)\n }\n }\n }, [prizes, winningPrizeId])\n\n // ==========================================================================\n // \u6E05\u7406\u52A8\u753B\n // ==========================================================================\n\n useEffect(() => {\n return () => {\n // \u7EC4\u4EF6\u5378\u8F7D\u65F6\u53D6\u6D88\u52A8\u753B\u5E27\n if (animationRef.current !== null) {\n cancelAnimationFrame(animationRef.current)\n }\n }\n }, [])\n\n // ==========================================================================\n // \u62BD\u5956\u903B\u8F91\n // ==========================================================================\n\n /**\n * \u5F00\u59CB\u62BD\u5956 - \u652F\u6301\u5F02\u6B65\u63A5\u53E3\u8C03\u7528\n * \u5229\u7528\u521D\u59CB\u6162\u901F\u65CB\u8F6C\uFF0C\u70B9\u51FB\u540E\u8FDB\u5165\u5FEB\u901F\u65CB\u8F6C\u72B6\u6001\uFF0C\u63A5\u53E3\u8FD4\u56DE\u540E\u51CF\u901F\u505C\u6B62\n */\n const handleSpinStart = useCallback(async () => {\n if (wheelState.isSpinning) return\n\n // \u68C0\u67E5\u7528\u6237\u662F\u5426\u5DF2\u767B\u5F55\n if (!userData?.isLoggedIn) {\n onLoginRequired?.()\n return\n }\n\n // \u2705 \u6B21\u6570\u4E3A 0 \u65F6\uFF0C\u6309\u94AE\u5DF2\u88AB\u7981\u7528\uFF0C\u8FD9\u91CC\u4E0D\u9700\u8981\u989D\u5916\u68C0\u67E5\n // \u9632\u5FA1\u6027\u7F16\u7A0B\uFF1A\u5982\u679C\u4ECD\u7136\u89E6\u53D1\uFF0C\u76F4\u63A5\u8FD4\u56DE\n if (userData.availableChances <= 0) {\n return\n }\n\n // \u8FDB\u5165\u5FEB\u901F\u65CB\u8F6C\u72B6\u6001\uFF08\u521D\u59CB\u6162\u901F\u65CB\u8F6C\u4F1A\u81EA\u52A8\u53D8\u4E3A\u5FEB\u901F\u65CB\u8F6C\uFF09\n setWheelState(prev => ({\n ...prev,\n isSpinning: true,\n isButtonDisabled: true,\n }))\n\n try {\n // \u8C03\u7528\u5916\u90E8\u63A5\u53E3\u83B7\u53D6\u4E2D\u5956\u7ED3\u679C\n let finalWinningPrizeId = winningPrizeId\n\n if (onSpinStart) {\n // \u7B49\u5F85\u63A5\u53E3\u8FD4\u56DE\u4E2D\u5956 ID\uFF08\u63A5\u53E3\u65F6\u95F4\u4E0D\u56FA\u5B9A\uFF0C1-30s\uFF09\n // \u5728\u6B64\u671F\u95F4\uFF0C\u8F6C\u76D8\u4F1A\u4FDD\u6301\u5FEB\u901F\u65CB\u8F6C\uFF08\u7531 CSS \u52A8\u753B\u63A7\u5236\uFF09\n finalWinningPrizeId = await onSpinStart()\n }\n\n // \u786E\u5B9A\u4E2D\u5956\u5956\u54C1\n const winningPrize = prizes.find(p => p.prizeKey === finalWinningPrizeId) || prizes[0]\n const winningIndex = prizes.findIndex(p => p.prizeKey === winningPrize.prizeKey)\n\n // \u8BA1\u7B97\u76EE\u6807\u89D2\u5EA6\n const degreesPerPrize = 360 / prizes.length\n const basePrizeAngle = winningIndex * degreesPerPrize\n // \u81F3\u5C11\u65CB\u8F6C 3 \u5708\uFF081080\u5EA6\uFF09+ \u76EE\u6807\u89D2\u5EA6\n const minRotations = 3\n const targetAngle = minRotations * 360 + (360 - basePrizeAngle)\n\n // \u63A5\u53E3\u8FD4\u56DE\u540E\uFF0C\u7B49\u5F85 1.5s \u518D\u5F00\u59CB\u505C\u6B62\u52A8\u753B\n await new Promise(resolve => setTimeout(resolve, 1500))\n\n // \u7ACB\u5373\u8FDB\u5165\u51CF\u901F\u72B6\u6001\uFF0C\u505C\u6B62 CSS \u5FAA\u73AF\u52A8\u753B\n setWheelState(prev => ({\n ...prev,\n isFinished: true,\n currentRotation: 0, // \u4ECE 0 \u5EA6\u5F00\u59CB\u51CF\u901F\u52A8\u753B\n }))\n\n // \u5F00\u59CB\u505C\u6B62\u65CB\u8F6C\u52A8\u753B\n const startTime = Date.now()\n\n const animate = () => {\n const now = Date.now()\n const elapsed = now - startTime\n const progress = Math.min(elapsed / spinDuration, 1)\n\n // \u5E94\u7528 ease-out \u7F13\u52A8\u51FD\u6570\n const eased = 1 - Math.pow(1 - progress, 3)\n\n // \u8BA1\u7B97\u5F53\u524D\u65CB\u8F6C\u89D2\u5EA6\n const currentRotation = targetAngle * eased\n\n // \u66F4\u65B0\u72B6\u6001\n setWheelState(prev => ({\n ...prev,\n currentRotation,\n }))\n\n // \u7EE7\u7EED\u52A8\u753B\u6216\u7ED3\u675F\n if (progress < 1) {\n animationRef.current = requestAnimationFrame(animate)\n } else {\n // \u52A8\u753B\u7ED3\u675F - \u4FDD\u6301\u6309\u94AE\u7981\u7528\u72B6\u6001,\u76F4\u5230\u5F39\u7A97\u5173\u95ED\n setWheelState(prev => ({\n ...prev,\n isSpinning: false,\n isButtonDisabled: true,\n winningPrize,\n currentRotation: targetAngle,\n }))\n\n // \u5EF6\u8FDF\u663E\u793A\u5F39\u7A97\uFF08500ms\u540E\uFF09\n if (onSpinEnd) {\n onSpinEnd?.(winningPrize)\n } else {\n setTimeout(() => {\n // \u68C0\u67E5\u662F\u5426\u672A\u4E2D\u5956\uFF08try-again\uFF09\n if (winningPrize.prizeKey === 'try-again') {\n // \u672A\u4E2D\u5956\uFF0C\u663E\u793A ErrorModal\n setShowNoWinModal(true)\n } else {\n // \u4E2D\u5956\uFF0C\u663E\u793A WinnerModal\n setShowWinnerModal(true)\n }\n }, 500)\n }\n }\n }\n\n // \u542F\u52A8\u505C\u6B62\u52A8\u753B\n animationRef.current = requestAnimationFrame(animate)\n } catch (error) {\n // \u63A5\u53E3\u62A5\u9519\uFF0C\u6062\u590D\u5230\u521D\u59CB\u6162\u901F\u65CB\u8F6C\u72B6\u6001\n setWheelState(prev => ({\n ...prev,\n isSpinning: false,\n isButtonDisabled: false,\n }))\n\n // \u663E\u793A\u9519\u8BEF\u5F39\u7A97\n setErrorMessage((error as Error).message || 'An error occurred')\n setShowErrorModal(true)\n\n // \u89E6\u53D1\u9519\u8BEF\u56DE\u8C03\n onSpinError?.(error as Error)\n\n console.error('\u62BD\u5956\u63A5\u53E3\u8C03\u7528\u5931\u8D25:', error)\n }\n }, [\n wheelState.isSpinning,\n prizes,\n winningPrizeId,\n spinDuration,\n onSpinStart,\n onSpinEnd,\n onSpinError,\n userData,\n onLoginRequired,\n ])\n\n const handleWheelGoClick = useCallback(() => {\n if (isLoggedIn) {\n void handleSpinStart()\n return\n }\n\n onLoginRequired?.()\n }, [handleSpinStart, isLoggedIn, onLoginRequired])\n\n // ==========================================================================\n // \u5F39\u7A97\u5173\u95ED\u5904\u7406\n // ==========================================================================\n\n /**\n * \u5173\u95ED\u4E2D\u5956\u5F39\u7A97\u5E76\u91CD\u7F6E\u8F6C\u76D8\u72B6\u6001\n */\n const handleCloseWinnerModal = useCallback(() => {\n setShowWinnerModal(false)\n // \u91CD\u7F6E\u8F6C\u76D8\u72B6\u6001,\u5141\u8BB8\u4E0B\u6B21\u62BD\u5956\n setWheelState(prev => ({\n ...prev,\n isButtonDisabled: false,\n isFinished: false, // \u91CD\u7F6E\u4E3A\u672A\u5B8C\u6210,\u6062\u590D\u521D\u59CB\u65CB\u8F6C\u52A8\u753B\n }))\n }, [])\n\n /**\n * \u5173\u95ED\u672A\u4E2D\u5956\u5F39\u7A97\u5E76\u91CD\u7F6E\u8F6C\u76D8\u72B6\u6001\n */\n const handleCloseNoWinModal = useCallback(() => {\n setShowNoWinModal(false)\n // \u91CD\u7F6E\u8F6C\u76D8\u72B6\u6001,\u5141\u8BB8\u4E0B\u6B21\u62BD\u5956\n setWheelState(prev => ({\n ...prev,\n isButtonDisabled: false,\n isFinished: false, // \u91CD\u7F6E\u4E3A\u672A\u5B8C\u6210,\u6062\u590D\u521D\u59CB\u65CB\u8F6C\u52A8\u753B\n }))\n }, [])\n\n // ==========================================================================\n // \u6E32\u67D3\n // ==========================================================================\n\n return (\n <div className={cn('wheel-lottery-container', 'w-full', theme === 'dark' ? 'aiui-dark' : '', className)}>\n {/* ARIA Live Region - \u5C4F\u5E55\u9605\u8BFB\u5668\u72B6\u6001\u64AD\u62A5 */}\n <div role=\"status\" aria-live=\"polite\" aria-atomic=\"true\" className=\"sr-only\">\n {wheelState.isSpinning && '\u62BD\u5956\u8FDB\u884C\u4E2D...'}\n {wheelState.winningPrize && !wheelState.isSpinning && `\u5DF2\u4E2D\u5956: ${wheelState.winningPrize.name}`}\n </div>\n\n {/* \u4E3B\u5185\u5BB9\u533A - \u54CD\u5E94\u5F0F\u4E24\u680F/\u5355\u680F\u5E03\u5C40 */}\n <Grid className={cn('wheel-lottery-main', 'tablet:mb-4 mb-3')}>\n {/* \u5DE6\u4FA7\uFF1A\u8F6C\u76D8\u533A\u57DF */}\n <GridItem\n span={7}\n className={cn(\n 'wheel-section',\n 'relative flex w-full flex-1 items-center justify-center overflow-hidden',\n 'rounded-box',\n // \u79FB\u52A8\u7AEF\uFF08<=1024px\uFF09\u4F7F\u7528min-h\uFF0C\u684C\u9762\u7AEF\u4F7F\u7528aspect ratio\n 'laptop:min-h-[288px] min-h-[240px]',\n 'lg-desktop:aspect-w-[964] lg-desktop:aspect-h-[480]',\n 'desktop:aspect-w-[759] desktop:aspect-h-[384]',\n 'laptop:aspect-w-[516] laptop:aspect-h-[288]',\n 'l-tablet:col-span-12',\n // \u79FB\u52A8\u7AEF\u5E95\u90E8\u95F4\u8DDD\n 'l-tablet:mb-3',\n theme === 'dark' ? 'bg-[#1E2024]' : 'bg-[#EAEAEC]'\n )}\n >\n <div\n className={cn(\n 'w-full px-[16px] pt-[16px]',\n 'lg-desktop:pb-[32px] lg-desktop:px-[32px]',\n 'desktop:pt-[24px] desktop:px-[24px]',\n 'laptop:pt-[16px] laptop:px-[16px]',\n 'tablet:px-[24px]',\n // \u79FB\u52A8\u7AEF(<=1024px)\u65F6\u4F7F\u7528\u7EDD\u5BF9\u5B9A\u4F4D\u8986\u76D6\u5728\u8F6C\u76D8\u80CC\u666F\u4E0A\n 'l-tablet:absolute l-tablet:top-0 l-tablet:inset-x-0 l-tablet:z-10'\n )}\n >\n {/* \u9876\u90E8\u4FE1\u606F\u680F\uFF1A\u5DE6\u4FA7\u673A\u4F1A\u8FDB\u5EA6\uFF0C\u53F3\u4FA7\u94FE\u63A5 */}\n <div className=\"tablet:max-h-[24px] relative z-10 mb-2 flex max-h-[40px] w-full flex-wrap items-center justify-between gap-3\">\n {/* \u5DE6\u4FA7\uFF1A\u673A\u4F1A\u5C55\u793A - \u4EC5\u767B\u5F55\u65F6\u663E\u793A */}\n <div>\n {isLoggedIn && (\n <p className=\"text-info-primary font-[700]\">\n {opportunitiesText?.[0]}\n <span className=\"ml-1 text-[#FF6B35]\">{availableChances}</span>\n {opportunitiesText?.[1] || ''}\n </p>\n )}\n </div>\n {/* \u53F3\u4FA7\uFF1ARules \u548C My Rewards \u6309\u94AE */}\n <div className=\"flex items-center gap-4\">\n {rulesData && rulesData.length > 0 && (\n <button\n onClick={() => setShowRulesModal(true)}\n className=\"cursor-pointer touch-manipulation\"\n type=\"button\"\n >\n <span className=\"text-info-primary font-[700] underline\">{rulesText}</span>\n </button>\n )}\n {/* My Rewards \u6309\u94AE - \u4EC5\u767B\u5F55\u65F6\u663E\u793A */}\n {userData?.isLoggedIn && rewardsData && (\n <button\n onClick={() => setShowRewardsModal(true)}\n className=\"cursor-pointer touch-manipulation whitespace-nowrap\"\n type=\"button\"\n >\n <span className=\"text-info-primary font-[700] underline\">{myRewardsText}</span>\n </button>\n )}\n </div>\n </div>\n {/* \u8F6C\u76D8\u7EC4\u4EF6 */}\n <Wheel\n theme={theme}\n prizes={prizes}\n rotation={wheelState.currentRotation}\n isSpinning={wheelState.isSpinning}\n isFinished={wheelState.isFinished}\n isButtonDisabled={wheelState.isButtonDisabled || !isLoggedIn || isNoChancesState}\n userData={userData}\n onGoClick={handleWheelGoClick}\n wheelBackgroundImage={wheelBackgroundImage}\n pointerImage={pointerImage}\n />\n </div>\n </GridItem>\n\n {/* \u53F3\u4FA7\uFF1A\u83B7\u53D6\u673A\u4F1A\u533A\u57DF */}\n {chanceMethods.length > 0 && (\n <GridItem\n span={5}\n className={cn(\n 'info-section',\n 'rounded-box',\n 'relative flex flex-col overflow-hidden',\n 'lg-desktop:aspect-w-[684] lg-desktop:aspect-h-[480]',\n 'desktop:aspect-w-[536] desktop:aspect-h-[384]',\n 'laptop:aspect-w-[364] laptop:aspect-h-[288]',\n // \u79FB\u52A8\u7AEF\u4F7F\u7528min-h\u800C\u4E0D\u662Fmax-h\uFF0C\u786E\u4FDD\u5185\u5BB9\u5B8C\u6574\u663E\u793A\n 'l-tablet:min-h-[280px] laptop:max-h-[320px]',\n 'w-full',\n 'l-tablet:col-span-12',\n theme === 'dark' ? 'bg-[#1E2024]' : 'bg-[#EAEAEC]'\n )}\n >\n <ChanceMethods\n theme={theme}\n userData={userData}\n methods={chanceMethods}\n title={chanceTitle}\n subtitle={chanceSubtitle}\n footerNote={chanceFooterNote}\n onOpenShareModal={() => setShowShareModal(true)}\n chanceBadgeText={chanceMethodsText?.chanceBadgeText}\n completedText={completedText}\n usedText={usedText}\n loadingText={chanceMethodsText?.loadingText}\n mechanismType={mechanismType}\n inputConfig={inputConfig}\n />\n </GridItem>\n )}\n </Grid>\n\n {/* \u5E95\u90E8\u533A\u57DF\uFF1A\u5956\u54C1\u6C60(\u5305\u542B\u4E2D\u5956\u4EBA\u540D\u5355) */}\n <div\n className={cn(\n 'wheel-lottery-footer',\n 'rounded-box',\n 'flex flex-col overflow-hidden',\n theme === 'dark' ? 'bg-[#1E2024]' : 'bg-[#EAEAEC]'\n )}\n >\n {/* \u5956\u54C1\u6C60(\u5305\u542B\u4E2D\u5956\u4EBA\u540D\u5355\u81EA\u52A8\u6EDA\u52A8) */}\n <PrizePool\n theme={theme}\n prizes={prizes}\n title={prizesTitle}\n winningInfos={winningInfos}\n winnerNameTemplate={winnerNameTemplate}\n />\n </div>\n\n {/* \u4E2D\u5956\u5F39\u7A97 */}\n <WinnerModal\n isOpen={showWinnerModal}\n prize={wheelState.winningPrize}\n title={externalWinnerConfig?.title || winnerModalConfig?.title}\n prizeTitle={externalWinnerConfig?.prizeTitle || winnerModalConfig?.prizeTitle}\n prizeImage={externalWinnerConfig?.prizeImage || winnerModalConfig?.prizeImage}\n prizeDescription={externalWinnerConfig?.prizeDescription || winnerModalConfig?.prizeDescription}\n winnerNote={\n externalWinnerConfig?.winnerNote ??\n wheelState.winningPrize?.winnerModalConfig?.winnerNote ??\n winnerModalConfig?.winnerNote\n }\n learnMoreUrl={\n externalWinnerConfig?.learnMoreUrl ||\n wheelState.winningPrize?.winnerModalConfig?.learnMoreUrl ||\n winnerModalConfig?.learnMoreUrl\n }\n learnMoreText={\n externalWinnerConfig?.learnMoreText ||\n wheelState.winningPrize?.winnerModalConfig?.learnMoreText ||\n winnerModalConfig?.learnMoreText\n }\n couponCode={externalWinnerConfig?.couponCode || winnerModalConfig?.couponCode}\n expiresAt={externalWinnerConfig?.expiresAt || winnerModalConfig?.expiresAt}\n couponDiscount={externalWinnerConfig?.couponDiscount || winnerModalConfig?.couponDiscount}\n couponUnit={externalWinnerConfig?.couponUnit || winnerModalConfig?.couponUnit}\n confirmText={\n externalWinnerConfig?.confirmText ||\n wheelState.winningPrize?.winnerModalConfig?.confirmText ||\n winnerModalConfig?.confirmText\n }\n confirmUrl={\n externalWinnerConfig?.confirmUrl ||\n wheelState.winningPrize?.winnerModalConfig?.confirmUrl ||\n winnerModalConfig?.confirmUrl\n }\n copyText={externalWinnerConfig?.copyText || winnerModalConfig?.copyText || copyText}\n copiedText={externalWinnerConfig?.copiedText || winnerModalConfig?.copiedText || copiedText}\n onClose={handleCloseWinnerModal}\n theme={theme}\n />\n\n {/* Rules \u5F39\u7A97 */}\n {rulesData && rulesData.length > 0 && (\n <RulesModal\n title={rulesText}\n isOpen={showRulesModal}\n onClose={() => setShowRulesModal(false)}\n rules={rulesData}\n theme={theme}\n />\n )}\n\n {/* My Rewards \u5F39\u7A97 */}\n {rewardsData && (\n <MyRewardsModal\n isOpen={showRewardsModal}\n onClose={() => setShowRewardsModal(false)}\n rewards={rewardsData}\n onCopyCode={onCopyCode}\n codeText={codeText}\n copyText={copyText}\n copiedText={copiedText}\n prizeText={prizeText}\n emptyText={emptyText}\n copyError={copyError}\n availableText={availableText}\n usedStatusText={usedStatusText}\n expiredText={expiredText}\n notFoundText={notFoundText}\n theme={theme}\n title={myRewardsText}\n />\n )}\n\n {/* \u9519\u8BEF\u5F39\u7A97 */}\n <ErrorModal\n isOpen={showErrorModal}\n onClose={() => setShowErrorModal(false)}\n title={errorTitle || errorModalConfig?.title}\n message={errorMessage || errorModalConfig?.message}\n confirmText={errorConfirmText || errorModalConfig?.confirmText}\n theme={theme}\n />\n\n {/* \u672A\u4E2D\u5956\u5F39\u7A97 */}\n <ErrorModal\n isOpen={showNoWinModal}\n onClose={handleCloseNoWinModal}\n title={noWinTitle || errorModalConfig?.title}\n message={noWinMessage || errorModalConfig?.message}\n confirmText={noWinConfirmText || errorModalConfig?.confirmText}\n theme={theme}\n />\n\n {/* \u5206\u4EAB\u5F39\u7A97 */}\n <ShareModal\n isOpen={showShareModal}\n onClose={() => setShowShareModal(false)}\n title={shareModalConfig?.title}\n subtitle={shareModalConfig?.subtitle}\n note={shareModalConfig?.note}\n platforms={shareModalConfig?.platforms}\n onShareSuccess={shareModalConfig?.onShareSuccess}\n theme={theme}\n />\n </div>\n )\n }\n)\n\n// \u8BBE\u7F6E displayName \u7528\u4E8E\u8C03\u8BD5\nWheelLottery.displayName = 'WheelLottery'\n\n// ============================================================================\n// \u5BFC\u51FA\n// ============================================================================\n\nexport default withLayout(WheelLottery)\nexport { WinnerModal } from '../LotteryShared/WinnerModal.js'\nexport { RulesModal } from '../LotteryShared/RulesModal.js'\nexport { MyRewardsModal } from '../LotteryShared/MyRewardsModal.js'\nexport { ErrorModal } from '../LotteryShared/ErrorModal.js'\nexport { ShareModal } from '../LotteryShared/ShareModal.js'\nexport { BaseModal } from '../LotteryShared/BaseModal.js'\nexport type {\n WheelLotteryProps,\n WheelLotteryHandle,\n Prize,\n ChanceMethod,\n ChanceMethodStatus,\n WinningInfo,\n WheelProps,\n PrizePoolProps,\n ChanceMethodsProps,\n WinnerModalProps,\n WinnerModalConfig,\n UserData,\n ShareModalConfig,\n SocialPlatform,\n SharePlatformConfig,\n} from './types.js'\nexport type { RulesModalProps, RuleItem } from '../LotteryShared/RulesModal.js'\nexport type { MyRewardsModalProps, Reward, RewardStatus } from '../LotteryShared/MyRewardsModal.js'\nexport type { ErrorModalProps } from '../LotteryShared/ErrorModal.js'\nexport type { ShareModalProps } from '../LotteryShared/ShareModal.js'\nexport type { BaseModalProps } from '../LotteryShared/BaseModal.js'\nexport type { ContainerProps } from '../../shared/Styles.js'\n"],
5
- "mappings": "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",
4
+ "sourcesContent": ["/**\n * WheelLottery - \u5927\u8F6C\u76D8\u62BD\u5956\u7EC4\u4EF6\n *\n * \u7528\u4E8E\u8425\u9500\u6D3B\u52A8\u7684\u4EA4\u4E92\u5F0F\u62BD\u5956\u8F6C\u76D8\uFF0C\u652F\u6301\u591A\u54C1\u724C\u4E3B\u9898\u548C\u54CD\u5E94\u5F0F\u5E03\u5C40\u3002\n *\n * @module WheelLottery\n * @date 2025-12-17\n */\n\n'use client'\n\nimport { useState, useCallback, useRef, useEffect, useImperativeHandle, forwardRef } from 'react'\nimport { cn } from '../../helpers/index.js'\nimport { DEFAULT_WHEEL_CONFIG, DEFAULT_CHANCE_METHODS, INITIAL_WHEEL_STATE } from './types.js'\nimport { Grid, GridItem } from '../../components/grid.js'\nimport { Wheel } from './Wheel.js'\nimport { PrizePool } from '../LotteryShared/PrizePool.js'\nimport { ChanceMethods } from '../LotteryShared/ChanceMethods.js'\nimport { WinnerModal } from '../LotteryShared/WinnerModal.js'\nimport { RulesModal } from '../LotteryShared/RulesModal.js'\nimport { MyRewardsModal } from '../LotteryShared/MyRewardsModal.js'\nimport { ErrorModal } from '../LotteryShared/ErrorModal.js'\nimport { ShareModal } from '../LotteryShared/ShareModal.js'\nimport { withLayout } from '../../shared/Styles.js'\n\nimport type { WheelLotteryProps, WheelState, WheelLotteryHandle, WinnerModalConfig } from './types.js'\n\n// ============================================================================\n// \u4E3B\u7EC4\u4EF6\n// ============================================================================\n\n/**\n * WheelLottery \u7EC4\u4EF6\n *\n * @example\n * ```tsx\n * // \u57FA\u7840\u4F7F\u7528\n * <WheelLottery\n * prizes={prizes}\n * winningPrizeId=\"prize-003\"\n * onSpinEnd={(prize) => alert(`You won ${prize.name}`)}\n * />\n *\n * // \u4F7F\u7528 ref \u63A7\u5236\u5F39\u7A97\n * const lotteryRef = useRef<WheelLotteryHandle>(null)\n *\n * <WheelLottery ref={lotteryRef} prizes={prizes} />\n *\n * // \u5916\u90E8\u89E6\u53D1\u5F39\u7A97\n * lotteryRef.current?.showError({\n * title: 'Error',\n * message: 'Something went wrong'\n * })\n * ```\n */\nexport const WheelLottery = forwardRef<WheelLotteryHandle, WheelLotteryProps>(\n (\n {\n prizes,\n theme,\n winningPrizeId,\n spinDuration = DEFAULT_WHEEL_CONFIG.spinDuration,\n wheelBackgroundImage,\n pointerImage,\n chanceMethods = DEFAULT_CHANCE_METHODS,\n chanceTitle = DEFAULT_WHEEL_CONFIG.chanceTitle,\n chanceSubtitle,\n chanceFooterNote,\n chanceMethodsText,\n mechanismType,\n inputConfig,\n winningInfos = [],\n winnerNameTemplate,\n prizesTitle,\n onSpinStart,\n onSpinEnd,\n onSpinError,\n winnerModalConfig,\n rulesModalConfig = {},\n myRewardsModalConfig = {},\n errorModalConfig = {},\n shareModalConfig = {},\n userData,\n onLoginRequired,\n onCopyCode,\n opportunitiesText = ['Number of draws remaining today:'],\n className,\n },\n ref\n ) => {\n const { rulesData, rulesText = 'Rules' } = rulesModalConfig\n const {\n rewardsData,\n myRewardsText = 'My Rewards',\n codeText = 'CODE:',\n copyText = 'COPY',\n copiedText = 'COPIED',\n prizeText = 'Prize time:',\n emptyText,\n copyError,\n availableText,\n usedStatusText,\n expiredText,\n notFoundText,\n } = myRewardsModalConfig\n const completedText = chanceMethodsText?.completedText\n const usedText = chanceMethodsText?.usedText\n const isLoggedIn = userData?.isLoggedIn ?? false\n const availableChances = userData?.availableChances ?? 0\n const isNoChancesState = isLoggedIn && availableChances <= 0\n // ==========================================================================\n // State \u7BA1\u7406\n // ==========================================================================\n\n const [wheelState, setWheelState] = useState<WheelState>(INITIAL_WHEEL_STATE)\n const [showWinnerModal, setShowWinnerModal] = useState(false)\n const [showRulesModal, setShowRulesModal] = useState(false)\n const [showRewardsModal, setShowRewardsModal] = useState(false)\n const [showErrorModal, setShowErrorModal] = useState(false)\n const [showNoWinModal, setShowNoWinModal] = useState(false)\n const [showShareModal, setShowShareModal] = useState(false)\n const [errorMessage, setErrorMessage] = useState('')\n const [errorTitle, setErrorTitle] = useState<string | undefined>()\n const [errorConfirmText, setErrorConfirmText] = useState<string | undefined>()\n const [noWinTitle, setNoWinTitle] = useState<string | undefined>()\n const [noWinMessage, setNoWinMessage] = useState<string | undefined>()\n const [noWinConfirmText, setNoWinConfirmText] = useState<string | undefined>()\n const [externalWinnerConfig, setExternalWinnerConfig] = useState<Partial<WinnerModalConfig> | undefined>()\n const animationRef = useRef<number | null>(null)\n\n // ==========================================================================\n // Imperative Handle - \u66B4\u9732\u65B9\u6CD5\u7ED9\u7236\u7EC4\u4EF6\n // ==========================================================================\n\n useImperativeHandle(\n ref,\n () => ({\n showError: ({ message, title, confirmText }) => {\n setErrorMessage(message)\n setErrorTitle(title)\n setErrorConfirmText(confirmText)\n setShowErrorModal(true)\n },\n hideError: () => {\n setShowErrorModal(false)\n },\n showNoWin: config => {\n setNoWinTitle(config?.title)\n setNoWinMessage(config?.message)\n setNoWinConfirmText(config?.confirmText)\n setShowNoWinModal(true)\n },\n hideNoWin: () => {\n setShowNoWinModal(false)\n },\n showWinner: (prize, config) => {\n setWheelState(prev => ({ ...prev, winningPrize: prize }))\n setExternalWinnerConfig(config)\n setShowWinnerModal(true)\n },\n hideWinner: () => {\n setShowWinnerModal(false)\n },\n showRules: () => {\n setShowRulesModal(true)\n },\n hideRules: () => {\n setShowRulesModal(false)\n },\n showRewards: () => {\n setShowRewardsModal(true)\n },\n hideRewards: () => {\n setShowRewardsModal(false)\n },\n showShare: () => {\n setShowShareModal(true)\n },\n hideShare: () => {\n setShowShareModal(false)\n },\n hideAllModals: () => {\n setShowWinnerModal(false)\n setShowRulesModal(false)\n setShowRewardsModal(false)\n setShowErrorModal(false)\n setShowNoWinModal(false)\n setShowShareModal(false)\n },\n }),\n []\n )\n\n // ==========================================================================\n // Props \u9A8C\u8BC1\uFF08\u5F00\u53D1\u73AF\u5883\uFF09\n // ==========================================================================\n\n useEffect(() => {\n if (process.env.NODE_ENV === 'development' && prizes) {\n if (prizes.length !== 8) {\n console.warn(\n `WheelLottery expects exactly 8 prizes, got ${prizes.length}. The component may not render correctly.`\n )\n }\n\n if (winningPrizeId && !prizes.find(p => p.prizeKey === winningPrizeId)) {\n console.warn(`WheelLottery: winningPrizeId \"${winningPrizeId}\" not found in prizes array.`)\n }\n }\n }, [prizes, winningPrizeId])\n\n // ==========================================================================\n // \u6E05\u7406\u52A8\u753B\n // ==========================================================================\n\n useEffect(() => {\n return () => {\n // \u7EC4\u4EF6\u5378\u8F7D\u65F6\u53D6\u6D88\u52A8\u753B\u5E27\n if (animationRef.current !== null) {\n cancelAnimationFrame(animationRef.current)\n }\n }\n }, [])\n\n // ==========================================================================\n // \u62BD\u5956\u903B\u8F91\n // ==========================================================================\n\n /**\n * \u5F00\u59CB\u62BD\u5956 - \u652F\u6301\u5F02\u6B65\u63A5\u53E3\u8C03\u7528\n * \u5229\u7528\u521D\u59CB\u6162\u901F\u65CB\u8F6C\uFF0C\u70B9\u51FB\u540E\u8FDB\u5165\u5FEB\u901F\u65CB\u8F6C\u72B6\u6001\uFF0C\u63A5\u53E3\u8FD4\u56DE\u540E\u51CF\u901F\u505C\u6B62\n */\n const handleSpinStart = useCallback(async () => {\n if (wheelState.isSpinning) return\n\n // \u68C0\u67E5\u7528\u6237\u662F\u5426\u5DF2\u767B\u5F55\n if (!userData?.isLoggedIn) {\n onLoginRequired?.()\n return\n }\n\n // \u2705 \u6B21\u6570\u4E3A 0 \u65F6\uFF0C\u6309\u94AE\u5DF2\u88AB\u7981\u7528\uFF0C\u8FD9\u91CC\u4E0D\u9700\u8981\u989D\u5916\u68C0\u67E5\n // \u9632\u5FA1\u6027\u7F16\u7A0B\uFF1A\u5982\u679C\u4ECD\u7136\u89E6\u53D1\uFF0C\u76F4\u63A5\u8FD4\u56DE\n if (userData.availableChances <= 0) {\n return\n }\n\n // \u8FDB\u5165\u5FEB\u901F\u65CB\u8F6C\u72B6\u6001\uFF08\u521D\u59CB\u6162\u901F\u65CB\u8F6C\u4F1A\u81EA\u52A8\u53D8\u4E3A\u5FEB\u901F\u65CB\u8F6C\uFF09\n setWheelState(prev => ({\n ...prev,\n isSpinning: true,\n isButtonDisabled: true,\n }))\n\n try {\n // \u8C03\u7528\u5916\u90E8\u63A5\u53E3\u83B7\u53D6\u4E2D\u5956\u7ED3\u679C\n let finalWinningPrizeId = winningPrizeId\n\n if (onSpinStart) {\n // \u7B49\u5F85\u63A5\u53E3\u8FD4\u56DE\u4E2D\u5956 ID\uFF08\u63A5\u53E3\u65F6\u95F4\u4E0D\u56FA\u5B9A\uFF0C1-30s\uFF09\n // \u5728\u6B64\u671F\u95F4\uFF0C\u8F6C\u76D8\u4F1A\u4FDD\u6301\u5FEB\u901F\u65CB\u8F6C\uFF08\u7531 CSS \u52A8\u753B\u63A7\u5236\uFF09\n finalWinningPrizeId = await onSpinStart()\n }\n\n // \u786E\u5B9A\u4E2D\u5956\u5956\u54C1\n const winningPrize = prizes.find(p => p.prizeKey === finalWinningPrizeId) || prizes[0]\n const winningIndex = prizes.findIndex(p => p.prizeKey === winningPrize.prizeKey)\n\n // \u8BA1\u7B97\u76EE\u6807\u89D2\u5EA6\n const degreesPerPrize = 360 / prizes.length\n const basePrizeAngle = winningIndex * degreesPerPrize\n // \u81F3\u5C11\u65CB\u8F6C 3 \u5708\uFF081080\u5EA6\uFF09+ \u76EE\u6807\u89D2\u5EA6\n const minRotations = 3\n const targetAngle = minRotations * 360 + (360 - basePrizeAngle)\n\n // \u63A5\u53E3\u8FD4\u56DE\u540E\uFF0C\u7B49\u5F85 1.5s \u518D\u5F00\u59CB\u505C\u6B62\u52A8\u753B\n await new Promise(resolve => setTimeout(resolve, 1500))\n\n // \u7ACB\u5373\u8FDB\u5165\u51CF\u901F\u72B6\u6001\uFF0C\u505C\u6B62 CSS \u5FAA\u73AF\u52A8\u753B\n setWheelState(prev => ({\n ...prev,\n isFinished: true,\n currentRotation: 0, // \u4ECE 0 \u5EA6\u5F00\u59CB\u51CF\u901F\u52A8\u753B\n }))\n\n // \u5F00\u59CB\u505C\u6B62\u65CB\u8F6C\u52A8\u753B\n const startTime = Date.now()\n\n const animate = () => {\n const now = Date.now()\n const elapsed = now - startTime\n const progress = Math.min(elapsed / spinDuration, 1)\n\n // \u5E94\u7528 ease-out \u7F13\u52A8\u51FD\u6570\n const eased = 1 - Math.pow(1 - progress, 3)\n\n // \u8BA1\u7B97\u5F53\u524D\u65CB\u8F6C\u89D2\u5EA6\n const currentRotation = targetAngle * eased\n\n // \u66F4\u65B0\u72B6\u6001\n setWheelState(prev => ({\n ...prev,\n currentRotation,\n }))\n\n // \u7EE7\u7EED\u52A8\u753B\u6216\u7ED3\u675F\n if (progress < 1) {\n animationRef.current = requestAnimationFrame(animate)\n } else {\n // \u52A8\u753B\u7ED3\u675F - \u4FDD\u6301\u6309\u94AE\u7981\u7528\u72B6\u6001,\u76F4\u5230\u5F39\u7A97\u5173\u95ED\n setWheelState(prev => ({\n ...prev,\n isSpinning: false,\n isButtonDisabled: true,\n winningPrize,\n currentRotation: targetAngle,\n }))\n\n // \u5EF6\u8FDF\u663E\u793A\u5F39\u7A97\uFF08500ms\u540E\uFF09\n if (onSpinEnd) {\n onSpinEnd?.(winningPrize)\n } else {\n setTimeout(() => {\n // \u68C0\u67E5\u662F\u5426\u672A\u4E2D\u5956\uFF08try-again\uFF09\n if (winningPrize.prizeKey === 'try-again') {\n // \u672A\u4E2D\u5956\uFF0C\u663E\u793A ErrorModal\n setShowNoWinModal(true)\n } else {\n // \u4E2D\u5956\uFF0C\u663E\u793A WinnerModal\n setShowWinnerModal(true)\n }\n }, 500)\n }\n }\n }\n\n // \u542F\u52A8\u505C\u6B62\u52A8\u753B\n animationRef.current = requestAnimationFrame(animate)\n } catch (error) {\n // \u63A5\u53E3\u62A5\u9519\uFF0C\u6062\u590D\u5230\u521D\u59CB\u6162\u901F\u65CB\u8F6C\u72B6\u6001\n setWheelState(prev => ({\n ...prev,\n isSpinning: false,\n isButtonDisabled: false,\n }))\n\n // \u663E\u793A\u9519\u8BEF\u5F39\u7A97\n setErrorMessage((error as Error).message || 'An error occurred')\n setShowErrorModal(true)\n\n // \u89E6\u53D1\u9519\u8BEF\u56DE\u8C03\n onSpinError?.(error as Error)\n\n console.error('\u62BD\u5956\u63A5\u53E3\u8C03\u7528\u5931\u8D25:', error)\n }\n }, [\n wheelState.isSpinning,\n prizes,\n winningPrizeId,\n spinDuration,\n onSpinStart,\n onSpinEnd,\n onSpinError,\n userData,\n onLoginRequired,\n ])\n\n const handleWheelGoClick = useCallback(() => {\n if (isLoggedIn) {\n void handleSpinStart()\n return\n }\n\n onLoginRequired?.()\n }, [handleSpinStart, isLoggedIn, onLoginRequired])\n\n // ==========================================================================\n // \u5F39\u7A97\u5173\u95ED\u5904\u7406\n // ==========================================================================\n\n /**\n * \u5173\u95ED\u4E2D\u5956\u5F39\u7A97\u5E76\u91CD\u7F6E\u8F6C\u76D8\u72B6\u6001\n */\n const handleCloseWinnerModal = useCallback(() => {\n setShowWinnerModal(false)\n // \u91CD\u7F6E\u8F6C\u76D8\u72B6\u6001,\u5141\u8BB8\u4E0B\u6B21\u62BD\u5956\n setWheelState(prev => ({\n ...prev,\n isButtonDisabled: false,\n isFinished: false, // \u91CD\u7F6E\u4E3A\u672A\u5B8C\u6210,\u6062\u590D\u521D\u59CB\u65CB\u8F6C\u52A8\u753B\n }))\n }, [])\n\n /**\n * \u5173\u95ED\u672A\u4E2D\u5956\u5F39\u7A97\u5E76\u91CD\u7F6E\u8F6C\u76D8\u72B6\u6001\n */\n const handleCloseNoWinModal = useCallback(() => {\n setShowNoWinModal(false)\n // \u91CD\u7F6E\u8F6C\u76D8\u72B6\u6001,\u5141\u8BB8\u4E0B\u6B21\u62BD\u5956\n setWheelState(prev => ({\n ...prev,\n isButtonDisabled: false,\n isFinished: false, // \u91CD\u7F6E\u4E3A\u672A\u5B8C\u6210,\u6062\u590D\u521D\u59CB\u65CB\u8F6C\u52A8\u753B\n }))\n }, [])\n\n // ==========================================================================\n // \u6E32\u67D3\n // ==========================================================================\n\n return (\n <div className={cn('wheel-lottery-container', 'w-full', theme === 'dark' ? 'aiui-dark' : '', className)}>\n {/* ARIA Live Region - \u5C4F\u5E55\u9605\u8BFB\u5668\u72B6\u6001\u64AD\u62A5 */}\n <div role=\"status\" aria-live=\"polite\" aria-atomic=\"true\" className=\"sr-only\">\n {wheelState.isSpinning && '\u62BD\u5956\u8FDB\u884C\u4E2D...'}\n {wheelState.winningPrize && !wheelState.isSpinning && `\u5DF2\u4E2D\u5956: ${wheelState.winningPrize.name}`}\n </div>\n\n {/* \u4E3B\u5185\u5BB9\u533A - \u54CD\u5E94\u5F0F\u4E24\u680F/\u5355\u680F\u5E03\u5C40 */}\n <Grid className={cn('wheel-lottery-main', 'tablet:mb-4 mb-3')}>\n {/* \u5DE6\u4FA7\uFF1A\u8F6C\u76D8\u533A\u57DF */}\n <GridItem\n span={7}\n className={cn(\n 'wheel-section',\n 'relative flex w-full flex-1 items-center justify-center overflow-hidden',\n 'rounded-box',\n // \u79FB\u52A8\u7AEF\uFF08<=1024px\uFF09\u4F7F\u7528min-h\uFF0C\u684C\u9762\u7AEF\u4F7F\u7528aspect ratio\n 'laptop:min-h-[288px] min-h-[240px]',\n 'lg-desktop:aspect-w-[964] lg-desktop:aspect-h-[480]',\n 'desktop:aspect-w-[759] desktop:aspect-h-[384]',\n 'laptop:aspect-w-[516] laptop:aspect-h-[288]',\n 'l-tablet:col-span-12',\n // \u79FB\u52A8\u7AEF\u5E95\u90E8\u95F4\u8DDD\n 'l-tablet:mb-3',\n theme === 'dark' ? 'bg-[#1E2024]' : 'bg-[#EAEAEC]'\n )}\n >\n <div\n className={cn(\n 'w-full px-[16px] pt-[16px]',\n 'lg-desktop:pb-[32px] lg-desktop:px-[32px]',\n 'desktop:pt-[24px] desktop:px-[24px]',\n 'laptop:pt-[16px] laptop:px-[16px]',\n 'tablet:px-[24px]',\n // \u79FB\u52A8\u7AEF(<=1024px)\u65F6\u4F7F\u7528\u7EDD\u5BF9\u5B9A\u4F4D\u8986\u76D6\u5728\u8F6C\u76D8\u80CC\u666F\u4E0A\n 'l-tablet:absolute l-tablet:top-0 l-tablet:inset-x-0 l-tablet:z-10'\n )}\n >\n {/* \u9876\u90E8\u4FE1\u606F\u680F\uFF1A\u5DE6\u4FA7\u673A\u4F1A\u8FDB\u5EA6\uFF0C\u53F3\u4FA7\u94FE\u63A5 */}\n <div className=\"tablet:max-h-[24px] relative z-10 mb-2 flex max-h-[40px] w-full flex-wrap items-center justify-between gap-3\">\n {/* \u5DE6\u4FA7\uFF1A\u673A\u4F1A\u5C55\u793A - \u4EC5\u767B\u5F55\u65F6\u663E\u793A */}\n <div>\n {isLoggedIn && (\n <p className=\"text-info-primary font-[700]\">\n {opportunitiesText?.[0]}\n <span className=\"ml-1 text-[#FF6B35]\">{availableChances}</span>\n {opportunitiesText?.[1] || ''}\n </p>\n )}\n </div>\n {/* \u53F3\u4FA7\uFF1ARules \u548C My Rewards \u6309\u94AE */}\n <div className=\"flex items-center gap-4\">\n {rulesData && rulesData.length > 0 && (\n <button\n onClick={() => setShowRulesModal(true)}\n className=\"cursor-pointer touch-manipulation\"\n type=\"button\"\n >\n <span className=\"text-info-primary font-[700] underline\">{rulesText}</span>\n </button>\n )}\n {/* My Rewards \u6309\u94AE - \u4EC5\u767B\u5F55\u65F6\u663E\u793A */}\n {userData?.isLoggedIn && rewardsData && (\n <button\n onClick={() => setShowRewardsModal(true)}\n className=\"cursor-pointer touch-manipulation whitespace-nowrap\"\n type=\"button\"\n >\n <span className=\"text-info-primary font-[700] underline\">{myRewardsText}</span>\n </button>\n )}\n </div>\n </div>\n {/* \u8F6C\u76D8\u7EC4\u4EF6 */}\n <Wheel\n theme={theme}\n prizes={prizes}\n rotation={wheelState.currentRotation}\n isSpinning={wheelState.isSpinning}\n isFinished={wheelState.isFinished}\n isButtonDisabled={wheelState.isButtonDisabled || !isLoggedIn || isNoChancesState}\n userData={userData}\n onGoClick={handleWheelGoClick}\n wheelBackgroundImage={wheelBackgroundImage}\n pointerImage={pointerImage}\n />\n </div>\n </GridItem>\n\n {/* \u53F3\u4FA7\uFF1A\u83B7\u53D6\u673A\u4F1A\u533A\u57DF */}\n {chanceMethods.length > 0 && (\n <GridItem\n span={5}\n className={cn(\n 'info-section',\n 'rounded-box',\n 'relative flex flex-col overflow-hidden',\n 'lg-desktop:aspect-w-[684] lg-desktop:aspect-h-[480]',\n 'desktop:aspect-w-[536] desktop:aspect-h-[384]',\n 'laptop:aspect-w-[364] laptop:aspect-h-[288]',\n // \u79FB\u52A8\u7AEF\u4F7F\u7528min-h\u800C\u4E0D\u662Fmax-h\uFF0C\u786E\u4FDD\u5185\u5BB9\u5B8C\u6574\u663E\u793A\n 'l-tablet:min-h-[280px] laptop:max-h-[320px]',\n 'w-full',\n 'l-tablet:col-span-12',\n theme === 'dark' ? 'bg-[#1E2024]' : 'bg-[#EAEAEC]'\n )}\n >\n <ChanceMethods\n theme={theme}\n userData={userData}\n methods={chanceMethods}\n title={chanceTitle}\n subtitle={chanceSubtitle}\n footerNote={chanceFooterNote}\n onOpenShareModal={() => setShowShareModal(true)}\n chanceBadgeText={chanceMethodsText?.chanceBadgeText}\n completedText={completedText}\n usedText={usedText}\n loadingText={chanceMethodsText?.loadingText}\n mechanismType={mechanismType}\n inputConfig={inputConfig}\n />\n </GridItem>\n )}\n </Grid>\n\n {/* \u5E95\u90E8\u533A\u57DF\uFF1A\u5956\u54C1\u6C60(\u5305\u542B\u4E2D\u5956\u4EBA\u540D\u5355) */}\n <div\n className={cn(\n 'wheel-lottery-footer',\n 'rounded-box',\n 'flex flex-col overflow-hidden',\n theme === 'dark' ? 'bg-[#1E2024]' : 'bg-[#EAEAEC]'\n )}\n >\n {/* \u5956\u54C1\u6C60(\u5305\u542B\u4E2D\u5956\u4EBA\u540D\u5355\u81EA\u52A8\u6EDA\u52A8) */}\n <PrizePool\n theme={theme}\n prizes={prizes}\n title={prizesTitle}\n winningInfos={winningInfos}\n winnerNameTemplate={winnerNameTemplate}\n />\n </div>\n\n {/* \u4E2D\u5956\u5F39\u7A97 */}\n <WinnerModal\n isOpen={showWinnerModal}\n prize={wheelState.winningPrize}\n title={externalWinnerConfig?.title || winnerModalConfig?.title}\n prizeTitle={externalWinnerConfig?.prizeTitle || winnerModalConfig?.prizeTitle}\n prizeImage={externalWinnerConfig?.prizeImage || winnerModalConfig?.prizeImage}\n prizeDescription={externalWinnerConfig?.prizeDescription || winnerModalConfig?.prizeDescription}\n winnerNote={\n externalWinnerConfig?.winnerNote ??\n wheelState.winningPrize?.winnerModalConfig?.winnerNote ??\n winnerModalConfig?.winnerNote\n }\n learnMoreUrl={\n externalWinnerConfig?.learnMoreUrl ||\n wheelState.winningPrize?.winnerModalConfig?.learnMoreUrl ||\n winnerModalConfig?.learnMoreUrl\n }\n learnMoreText={\n externalWinnerConfig?.learnMoreText ||\n wheelState.winningPrize?.winnerModalConfig?.learnMoreText ||\n winnerModalConfig?.learnMoreText\n }\n couponCode={externalWinnerConfig?.couponCode || winnerModalConfig?.couponCode}\n expiresAt={externalWinnerConfig?.expiresAt || winnerModalConfig?.expiresAt}\n expiresAtLabel={externalWinnerConfig?.expiresAtLabel || winnerModalConfig?.expiresAtLabel}\n couponDiscount={externalWinnerConfig?.couponDiscount || winnerModalConfig?.couponDiscount}\n couponUnit={externalWinnerConfig?.couponUnit || winnerModalConfig?.couponUnit}\n confirmText={\n externalWinnerConfig?.confirmText ||\n wheelState.winningPrize?.winnerModalConfig?.confirmText ||\n winnerModalConfig?.confirmText\n }\n confirmUrl={\n externalWinnerConfig?.confirmUrl ||\n wheelState.winningPrize?.winnerModalConfig?.confirmUrl ||\n winnerModalConfig?.confirmUrl\n }\n copyText={externalWinnerConfig?.copyText || winnerModalConfig?.copyText || copyText}\n copiedText={externalWinnerConfig?.copiedText || winnerModalConfig?.copiedText || copiedText}\n onClose={handleCloseWinnerModal}\n theme={theme}\n />\n\n {/* Rules \u5F39\u7A97 */}\n {rulesData && rulesData.length > 0 && (\n <RulesModal\n title={rulesText}\n isOpen={showRulesModal}\n onClose={() => setShowRulesModal(false)}\n rules={rulesData}\n theme={theme}\n />\n )}\n\n {/* My Rewards \u5F39\u7A97 */}\n {rewardsData && (\n <MyRewardsModal\n isOpen={showRewardsModal}\n onClose={() => setShowRewardsModal(false)}\n rewards={rewardsData}\n onCopyCode={onCopyCode}\n codeText={codeText}\n copyText={copyText}\n copiedText={copiedText}\n prizeText={prizeText}\n emptyText={emptyText}\n copyError={copyError}\n availableText={availableText}\n usedStatusText={usedStatusText}\n expiredText={expiredText}\n notFoundText={notFoundText}\n theme={theme}\n title={myRewardsText}\n />\n )}\n\n {/* \u9519\u8BEF\u5F39\u7A97 */}\n <ErrorModal\n isOpen={showErrorModal}\n onClose={() => setShowErrorModal(false)}\n title={errorTitle || errorModalConfig?.title}\n message={errorMessage || errorModalConfig?.message}\n confirmText={errorConfirmText || errorModalConfig?.confirmText}\n theme={theme}\n />\n\n {/* \u672A\u4E2D\u5956\u5F39\u7A97 */}\n <ErrorModal\n isOpen={showNoWinModal}\n onClose={handleCloseNoWinModal}\n title={noWinTitle || errorModalConfig?.title}\n message={noWinMessage || errorModalConfig?.message}\n confirmText={noWinConfirmText || errorModalConfig?.confirmText}\n theme={theme}\n />\n\n {/* \u5206\u4EAB\u5F39\u7A97 */}\n <ShareModal\n isOpen={showShareModal}\n onClose={() => setShowShareModal(false)}\n title={shareModalConfig?.title}\n subtitle={shareModalConfig?.subtitle}\n note={shareModalConfig?.note}\n platforms={shareModalConfig?.platforms}\n onShareSuccess={shareModalConfig?.onShareSuccess}\n theme={theme}\n />\n </div>\n )\n }\n)\n\n// \u8BBE\u7F6E displayName \u7528\u4E8E\u8C03\u8BD5\nWheelLottery.displayName = 'WheelLottery'\n\n// ============================================================================\n// \u5BFC\u51FA\n// ============================================================================\n\nexport default withLayout(WheelLottery)\nexport { WinnerModal } from '../LotteryShared/WinnerModal.js'\nexport { RulesModal } from '../LotteryShared/RulesModal.js'\nexport { MyRewardsModal } from '../LotteryShared/MyRewardsModal.js'\nexport { ErrorModal } from '../LotteryShared/ErrorModal.js'\nexport { ShareModal } from '../LotteryShared/ShareModal.js'\nexport { BaseModal } from '../LotteryShared/BaseModal.js'\nexport type {\n WheelLotteryProps,\n WheelLotteryHandle,\n Prize,\n ChanceMethod,\n ChanceMethodStatus,\n WinningInfo,\n WheelProps,\n PrizePoolProps,\n ChanceMethodsProps,\n WinnerModalProps,\n WinnerModalConfig,\n UserData,\n ShareModalConfig,\n SocialPlatform,\n SharePlatformConfig,\n} from './types.js'\nexport type { RulesModalProps, RuleItem } from '../LotteryShared/RulesModal.js'\nexport type { MyRewardsModalProps, Reward, RewardStatus } from '../LotteryShared/MyRewardsModal.js'\nexport type { ErrorModalProps } from '../LotteryShared/ErrorModal.js'\nexport type { ShareModalProps } from '../LotteryShared/ShareModal.js'\nexport type { BaseModalProps } from '../LotteryShared/BaseModal.js'\nexport type { ContainerProps } from '../../shared/Styles.js'\n"],
5
+ "mappings": "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",
6
6
  "names": ["jsx", "jsxs", "useState", "useCallback", "useRef", "useEffect", "useImperativeHandle", "forwardRef", "cn", "DEFAULT_WHEEL_CONFIG", "DEFAULT_CHANCE_METHODS", "INITIAL_WHEEL_STATE", "Grid", "GridItem", "Wheel", "PrizePool", "ChanceMethods", "WinnerModal", "RulesModal", "MyRewardsModal", "ErrorModal", "ShareModal", "withLayout", "WheelLottery", "prizes", "theme", "winningPrizeId", "spinDuration", "wheelBackgroundImage", "pointerImage", "chanceMethods", "chanceTitle", "chanceSubtitle", "chanceFooterNote", "chanceMethodsText", "mechanismType", "inputConfig", "winningInfos", "winnerNameTemplate", "prizesTitle", "onSpinStart", "onSpinEnd", "onSpinError", "winnerModalConfig", "rulesModalConfig", "myRewardsModalConfig", "errorModalConfig", "shareModalConfig", "userData", "onLoginRequired", "onCopyCode", "opportunitiesText", "className", "ref", "rulesData", "rulesText", "rewardsData", "myRewardsText", "codeText", "copyText", "copiedText", "prizeText", "emptyText", "copyError", "availableText", "usedStatusText", "expiredText", "notFoundText", "completedText", "usedText", "isLoggedIn", "availableChances", "isNoChancesState", "wheelState", "setWheelState", "showWinnerModal", "setShowWinnerModal", "showRulesModal", "setShowRulesModal", "showRewardsModal", "setShowRewardsModal", "showErrorModal", "setShowErrorModal", "showNoWinModal", "setShowNoWinModal", "showShareModal", "setShowShareModal", "errorMessage", "setErrorMessage", "errorTitle", "setErrorTitle", "errorConfirmText", "setErrorConfirmText", "noWinTitle", "setNoWinTitle", "noWinMessage", "setNoWinMessage", "noWinConfirmText", "setNoWinConfirmText", "externalWinnerConfig", "setExternalWinnerConfig", "animationRef", "message", "title", "confirmText", "config", "prize", "prev", "handleSpinStart", "finalWinningPrizeId", "winningPrize", "p", "winningIndex", "degreesPerPrize", "basePrizeAngle", "targetAngle", "resolve", "startTime", "animate", "elapsed", "progress", "eased", "currentRotation", "error", "handleWheelGoClick", "handleCloseWinnerModal", "handleCloseNoWinModal", "WheelLottery_default", "BaseModal"]
7
7
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@anker-in/headless-ui",
3
- "version": "1.1.97",
3
+ "version": "1.1.98",
4
4
  "type": "commonjs",
5
5
  "main": "./dist/cjs/index.js",
6
6
  "types": "./dist/cjs/index.d.ts",