@anker-in/headless-ui 1.1.84 → 1.1.85

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 (140) hide show
  1. package/dist/cjs/biz-components/ActiveShelf/index.d.ts +2 -2
  2. package/dist/cjs/biz-components/ActiveShelf/index.js +1 -1
  3. package/dist/cjs/biz-components/ActiveShelf/index.js.map +3 -3
  4. package/dist/cjs/biz-components/EventSchedule/index.d.ts +2 -7
  5. package/dist/cjs/biz-components/EventSchedule/index.js +1 -1
  6. package/dist/cjs/biz-components/EventSchedule/index.js.map +3 -3
  7. package/dist/cjs/biz-components/FeaturedBlogPosts/index.d.ts +1 -6
  8. package/dist/cjs/biz-components/FeaturedBlogPosts/index.js +1 -1
  9. package/dist/cjs/biz-components/FeaturedBlogPosts/index.js.map +3 -3
  10. package/dist/cjs/biz-components/HeroBanner/HeroBanner.js +1 -1
  11. package/dist/cjs/biz-components/HeroBanner/HeroBanner.js.map +2 -2
  12. package/dist/cjs/biz-components/ImageOverlayShelf/index.d.ts +2 -2
  13. package/dist/cjs/biz-components/ImageOverlayShelf/index.js +1 -1
  14. package/dist/cjs/biz-components/ImageOverlayShelf/index.js.map +3 -3
  15. package/dist/cjs/biz-components/LotteryShared/BaseModal.d.ts +61 -0
  16. package/dist/cjs/biz-components/LotteryShared/BaseModal.js +2 -0
  17. package/dist/cjs/biz-components/LotteryShared/BaseModal.js.map +7 -0
  18. package/dist/cjs/biz-components/LotteryShared/ChanceMethods.d.ts +25 -0
  19. package/dist/cjs/biz-components/LotteryShared/ChanceMethods.js +2 -0
  20. package/dist/cjs/biz-components/LotteryShared/ChanceMethods.js.map +7 -0
  21. package/dist/cjs/biz-components/LotteryShared/ErrorModal.d.ts +47 -0
  22. package/dist/cjs/biz-components/LotteryShared/ErrorModal.js +2 -0
  23. package/dist/cjs/biz-components/LotteryShared/ErrorModal.js.map +7 -0
  24. package/dist/cjs/biz-components/LotteryShared/MyRewardsModal.d.ts +101 -0
  25. package/dist/cjs/biz-components/LotteryShared/MyRewardsModal.js +2 -0
  26. package/dist/cjs/biz-components/LotteryShared/MyRewardsModal.js.map +7 -0
  27. package/dist/cjs/biz-components/LotteryShared/PrizePool.d.ts +29 -0
  28. package/dist/cjs/biz-components/LotteryShared/PrizePool.js +2 -0
  29. package/dist/cjs/biz-components/LotteryShared/PrizePool.js.map +7 -0
  30. package/dist/cjs/biz-components/LotteryShared/RulesModal.d.ts +56 -0
  31. package/dist/cjs/biz-components/LotteryShared/RulesModal.js +2 -0
  32. package/dist/cjs/biz-components/LotteryShared/RulesModal.js.map +7 -0
  33. package/dist/cjs/biz-components/LotteryShared/ShareModal.d.ts +79 -0
  34. package/dist/cjs/biz-components/LotteryShared/ShareModal.js +2 -0
  35. package/dist/cjs/biz-components/LotteryShared/ShareModal.js.map +7 -0
  36. package/dist/cjs/biz-components/LotteryShared/WinnerModal.d.ts +27 -0
  37. package/dist/cjs/biz-components/LotteryShared/WinnerModal.js +2 -0
  38. package/dist/cjs/biz-components/LotteryShared/WinnerModal.js.map +7 -0
  39. package/dist/cjs/biz-components/LotteryShared/index.d.ts +23 -0
  40. package/dist/cjs/biz-components/LotteryShared/index.js +2 -0
  41. package/dist/cjs/biz-components/LotteryShared/index.js.map +7 -0
  42. package/dist/cjs/biz-components/LotteryShared/types.d.ts +760 -0
  43. package/dist/cjs/biz-components/LotteryShared/types.js +2 -0
  44. package/dist/cjs/biz-components/LotteryShared/types.js.map +7 -0
  45. package/dist/cjs/biz-components/MediaEndorsement/index.js +2 -2
  46. package/dist/cjs/biz-components/MediaEndorsement/index.js.map +2 -2
  47. package/dist/cjs/biz-components/MediaShelf/index.d.ts +2 -2
  48. package/dist/cjs/biz-components/MediaShelf/index.js +1 -1
  49. package/dist/cjs/biz-components/MediaShelf/index.js.map +3 -3
  50. package/dist/cjs/biz-components/ProductLottery/MediaDrawArea.d.ts +4 -0
  51. package/dist/cjs/biz-components/ProductLottery/MediaDrawArea.js +2 -0
  52. package/dist/cjs/biz-components/ProductLottery/MediaDrawArea.js.map +7 -0
  53. package/dist/cjs/biz-components/ProductLottery/index.d.ts +17 -0
  54. package/dist/cjs/biz-components/ProductLottery/index.js +2 -0
  55. package/dist/cjs/biz-components/ProductLottery/index.js.map +7 -0
  56. package/dist/cjs/biz-components/ProductLottery/types.d.ts +363 -0
  57. package/dist/cjs/biz-components/ProductLottery/types.js +2 -0
  58. package/dist/cjs/biz-components/ProductLottery/types.js.map +7 -0
  59. package/dist/cjs/biz-components/Specs/index.js +1 -1
  60. package/dist/cjs/biz-components/Specs/index.js.map +3 -3
  61. package/dist/cjs/biz-components/WheelLottery/index.d.ts +11 -11
  62. package/dist/cjs/biz-components/WheelLottery/index.js +1 -1
  63. package/dist/cjs/biz-components/WheelLottery/index.js.map +3 -3
  64. package/dist/cjs/biz-components/WheelLottery/types.d.ts +17 -723
  65. package/dist/cjs/biz-components/WheelLottery/types.js +1 -1
  66. package/dist/cjs/biz-components/WheelLottery/types.js.map +3 -3
  67. package/dist/cjs/biz-components/index.d.ts +2 -0
  68. package/dist/cjs/biz-components/index.js +1 -1
  69. package/dist/cjs/biz-components/index.js.map +3 -3
  70. package/dist/esm/biz-components/ActiveShelf/index.d.ts +2 -2
  71. package/dist/esm/biz-components/ActiveShelf/index.js +1 -1
  72. package/dist/esm/biz-components/ActiveShelf/index.js.map +3 -3
  73. package/dist/esm/biz-components/EventSchedule/index.d.ts +2 -7
  74. package/dist/esm/biz-components/EventSchedule/index.js +1 -1
  75. package/dist/esm/biz-components/EventSchedule/index.js.map +3 -3
  76. package/dist/esm/biz-components/FeaturedBlogPosts/index.d.ts +1 -6
  77. package/dist/esm/biz-components/FeaturedBlogPosts/index.js +1 -1
  78. package/dist/esm/biz-components/FeaturedBlogPosts/index.js.map +3 -3
  79. package/dist/esm/biz-components/HeroBanner/HeroBanner.js +1 -1
  80. package/dist/esm/biz-components/HeroBanner/HeroBanner.js.map +2 -2
  81. package/dist/esm/biz-components/ImageOverlayShelf/index.d.ts +2 -2
  82. package/dist/esm/biz-components/ImageOverlayShelf/index.js +1 -1
  83. package/dist/esm/biz-components/ImageOverlayShelf/index.js.map +3 -3
  84. package/dist/esm/biz-components/LotteryShared/BaseModal.d.ts +61 -0
  85. package/dist/esm/biz-components/LotteryShared/BaseModal.js +2 -0
  86. package/dist/esm/biz-components/LotteryShared/BaseModal.js.map +7 -0
  87. package/dist/esm/biz-components/LotteryShared/ChanceMethods.d.ts +25 -0
  88. package/dist/esm/biz-components/LotteryShared/ChanceMethods.js +2 -0
  89. package/dist/esm/biz-components/LotteryShared/ChanceMethods.js.map +7 -0
  90. package/dist/esm/biz-components/LotteryShared/ErrorModal.d.ts +47 -0
  91. package/dist/esm/biz-components/LotteryShared/ErrorModal.js +2 -0
  92. package/dist/esm/biz-components/LotteryShared/ErrorModal.js.map +7 -0
  93. package/dist/esm/biz-components/LotteryShared/MyRewardsModal.d.ts +101 -0
  94. package/dist/esm/biz-components/LotteryShared/MyRewardsModal.js +2 -0
  95. package/dist/esm/biz-components/LotteryShared/MyRewardsModal.js.map +7 -0
  96. package/dist/esm/biz-components/LotteryShared/PrizePool.d.ts +29 -0
  97. package/dist/esm/biz-components/LotteryShared/PrizePool.js +2 -0
  98. package/dist/esm/biz-components/LotteryShared/PrizePool.js.map +7 -0
  99. package/dist/esm/biz-components/LotteryShared/RulesModal.d.ts +56 -0
  100. package/dist/esm/biz-components/LotteryShared/RulesModal.js +2 -0
  101. package/dist/esm/biz-components/LotteryShared/RulesModal.js.map +7 -0
  102. package/dist/esm/biz-components/LotteryShared/ShareModal.d.ts +79 -0
  103. package/dist/esm/biz-components/LotteryShared/ShareModal.js +2 -0
  104. package/dist/esm/biz-components/LotteryShared/ShareModal.js.map +7 -0
  105. package/dist/esm/biz-components/LotteryShared/WinnerModal.d.ts +27 -0
  106. package/dist/esm/biz-components/LotteryShared/WinnerModal.js +2 -0
  107. package/dist/esm/biz-components/LotteryShared/WinnerModal.js.map +7 -0
  108. package/dist/esm/biz-components/LotteryShared/index.d.ts +23 -0
  109. package/dist/esm/biz-components/LotteryShared/index.js +2 -0
  110. package/dist/esm/biz-components/LotteryShared/index.js.map +7 -0
  111. package/dist/esm/biz-components/LotteryShared/types.d.ts +760 -0
  112. package/dist/esm/biz-components/LotteryShared/types.js +2 -0
  113. package/dist/esm/biz-components/LotteryShared/types.js.map +7 -0
  114. package/dist/esm/biz-components/MediaEndorsement/index.js +2 -2
  115. package/dist/esm/biz-components/MediaEndorsement/index.js.map +3 -3
  116. package/dist/esm/biz-components/MediaShelf/index.d.ts +2 -2
  117. package/dist/esm/biz-components/MediaShelf/index.js +1 -1
  118. package/dist/esm/biz-components/MediaShelf/index.js.map +3 -3
  119. package/dist/esm/biz-components/ProductLottery/MediaDrawArea.d.ts +4 -0
  120. package/dist/esm/biz-components/ProductLottery/MediaDrawArea.js +2 -0
  121. package/dist/esm/biz-components/ProductLottery/MediaDrawArea.js.map +7 -0
  122. package/dist/esm/biz-components/ProductLottery/index.d.ts +17 -0
  123. package/dist/esm/biz-components/ProductLottery/index.js +2 -0
  124. package/dist/esm/biz-components/ProductLottery/index.js.map +7 -0
  125. package/dist/esm/biz-components/ProductLottery/types.d.ts +363 -0
  126. package/dist/esm/biz-components/ProductLottery/types.js +2 -0
  127. package/dist/esm/biz-components/ProductLottery/types.js.map +7 -0
  128. package/dist/esm/biz-components/Specs/index.js +1 -1
  129. package/dist/esm/biz-components/Specs/index.js.map +3 -3
  130. package/dist/esm/biz-components/WheelLottery/index.d.ts +11 -11
  131. package/dist/esm/biz-components/WheelLottery/index.js +1 -1
  132. package/dist/esm/biz-components/WheelLottery/index.js.map +3 -3
  133. package/dist/esm/biz-components/WheelLottery/types.d.ts +17 -723
  134. package/dist/esm/biz-components/WheelLottery/types.js +1 -1
  135. package/dist/esm/biz-components/WheelLottery/types.js.map +3 -3
  136. package/dist/esm/biz-components/index.d.ts +2 -0
  137. package/dist/esm/biz-components/index.js +1 -1
  138. package/dist/esm/biz-components/index.js.map +2 -2
  139. package/package.json +1 -1
  140. package/style.css +77 -0
@@ -1,2 +1,2 @@
1
- "use strict";var o=Object.defineProperty;var s=Object.getOwnPropertyDescriptor;var a=Object.getOwnPropertyNames;var g=Object.prototype.hasOwnProperty;var d=(e,n)=>{for(var t in n)o(e,t,{get:n[t],enumerable:!0})},l=(e,n,t,r)=>{if(n&&typeof n=="object"||typeof n=="function")for(let i of a(n))!g.call(e,i)&&i!==t&&o(e,i,{get:()=>n[i],enumerable:!(r=s(n,i))||r.enumerable});return e};var p=e=>l(o({},"__esModule",{value:!0}),e);var M={};d(M,{DEFAULT_CHANCE_METHODS:()=>C,DEFAULT_POINTER_DISABLE_IMAGE:()=>h,DEFAULT_POINTER_IMAGE:()=>c,DEFAULT_WHEEL_BG_6_PRIZES:()=>f,DEFAULT_WHEEL_BG_8_PRIZES:()=>m,DEFAULT_WHEEL_CONFIG:()=>x,INITIAL_WHEEL_STATE:()=>u,isChanceMethod:()=>y,isPrize:()=>T,isWinningInfo:()=>b});module.exports=p(M);const c="https://cdn.shopify.com/s/files/1/0517/2199/4432/files/2790697ba78c1a85d953787a8be9b258.png?v=1766371471",h="https://cdn.shopify.com/s/files/1/0582/4669/3040/files/2790697ba78c1a85d953787a8be9b258.png?v=1767610632",f="https://cdn.shopify.com/s/files/1/0517/2199/4432/files/be866c03-4d29-4d59-a8d4-39f5d64bbc0e_ae_e_6.png?v=1766374361",m="https://cdn.shopify.com/s/files/1/0517/2199/4432/files/ad63174a-3da0-4dcd-ac61-c83172c7893c_ae_e_8.png?v=1766374392",C=[{methodKey:"default-share",type:"share",title:"Share on your socials",description:"Share this event on your social media",buttonText:"Redeem now",onLoginRequired:()=>{alert("Please log in to share and get a chance!")},onClick:()=>{console.warn("ChanceMethod.onClick not implemented. Please provide a custom onClick handler.")},disabled:!1},{methodKey:"default-points",type:"points",title:"Spend 100 points",description:"Use your reward points to get a chance",buttonText:"Redeem now",onLoginRequired:()=>{alert("Please log in to share and get a chance!")},onClick:()=>{console.warn("ChanceMethod.onClick not implemented. Please provide a custom onClick handler.")},disabled:!1},{methodKey:"default-refer",type:"refer",title:"Refer a friend",description:"Invite your friends to join",buttonText:"Redeem now",onLoginRequired:()=>{alert("Please log in to share and get a chance!")},onClick:()=>{console.warn("ChanceMethod.onClick not implemented. Please provide a custom onClick handler.")},disabled:!1}],x={spinDuration:4e3,easing:"ease-out",chanceTitle:"Want more chances to win?"},u={isSpinning:!1,currentRotation:0,winningPrize:null,isButtonDisabled:!1,isFinished:!1};function T(e){return typeof e=="object"&&e!==null&&"prizeKey"in e&&"name"in e&&"image"in e&&typeof e.prizeKey=="string"&&typeof e.name=="string"&&typeof e.image=="object"}function y(e){return typeof e=="object"&&e!==null&&"methodKey"in e&&"type"in e&&"title"in e&&"description"in e&&"onClick"in e&&typeof e.methodKey=="string"&&typeof e.type=="string"&&typeof e.title=="string"&&typeof e.description=="string"&&typeof e.onClick=="function"}function b(e){return typeof e=="object"&&e!==null&&"winningKey"in e&&"userName"in e&&"prizeName"in e&&typeof e.winningKey=="string"&&typeof e.userName=="string"&&typeof e.prizeName=="string"}
1
+ "use strict";var s=Object.defineProperty;var g=Object.getOwnPropertyDescriptor;var l=Object.getOwnPropertyNames;var c=Object.prototype.hasOwnProperty;var h=(i,e)=>{for(var n in e)s(i,n,{get:e[n],enumerable:!0})},t=(i,e,n,d)=>{if(e&&typeof e=="object"||typeof e=="function")for(let o of l(e))!c.call(i,o)&&o!==n&&s(i,o,{get:()=>e[o],enumerable:!(d=g(e,o))||d.enumerable});return i},a=(i,e,n)=>(t(i,e,"default"),n&&t(n,e,"default"));var p=i=>t(s({},"__esModule",{value:!0}),i);var r={};h(r,{DEFAULT_POINTER_DISABLE_IMAGE:()=>m,DEFAULT_POINTER_IMAGE:()=>f,DEFAULT_WHEEL_BG_6_PRIZES:()=>u,DEFAULT_WHEEL_BG_8_PRIZES:()=>T,DEFAULT_WHEEL_CONFIG:()=>C,INITIAL_WHEEL_STATE:()=>E});module.exports=p(r);a(r,require("../LotteryShared/types.js"),module.exports);const f="https://cdn.shopify.com/s/files/1/0517/2199/4432/files/2790697ba78c1a85d953787a8be9b258.png?v=1766371471",m="https://cdn.shopify.com/s/files/1/0582/4669/3040/files/2790697ba78c1a85d953787a8be9b258.png?v=1767610632",u="https://cdn.shopify.com/s/files/1/0517/2199/4432/files/be866c03-4d29-4d59-a8d4-39f5d64bbc0e_ae_e_6.png?v=1766374361",T="https://cdn.shopify.com/s/files/1/0517/2199/4432/files/ad63174a-3da0-4dcd-ac61-c83172c7893c_ae_e_8.png?v=1766374392",C={spinDuration:4e3,easing:"ease-out",chanceTitle:"Want more chances to win?"},E={isSpinning:!1,currentRotation:0,winningPrize:null,isButtonDisabled:!1,isFinished:!1};
2
2
  //# sourceMappingURL=types.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../src/biz-components/WheelLottery/types.ts"],
4
- "sourcesContent": ["/**\n * \u5927\u8F6C\u76D8\u62BD\u5956\u7EC4\u4EF6\uFF08WheelLottery\uFF09\u7C7B\u578B\u5B9A\u4E49\n *\n * @module WheelLotteryTypes\n * @date 2025-12-17\n */\n\nimport type { Theme, Img } from '../../types/props.js'\n\n// ============================================================================\n// Imperative Handle \u63A5\u53E3\n// ============================================================================\n\n/**\n * WheelLottery \u7EC4\u4EF6\u547D\u4EE4\u5F0F\u63A7\u5236\u63A5\u53E3\n *\n * \u901A\u8FC7 ref \u66B4\u9732\u7ED9\u7236\u7EC4\u4EF6\uFF0C\u7528\u4E8E\u5916\u90E8\u63A7\u5236\u5F39\u7A97\u7B49\u72B6\u6001\n *\n * @example\n * ```tsx\n * const lotteryRef = useRef<WheelLotteryHandle>(null)\n *\n * <WheelLottery ref={lotteryRef} prizes={prizes} />\n *\n * // \u5916\u90E8\u89E6\u53D1\u9519\u8BEF\u5F39\u7A97\n * lotteryRef.current?.showError({\n * title: 'Network Error',\n * message: 'Failed to connect to server',\n * confirmText: 'Retry'\n * })\n *\n * // \u663E\u793A\u89C4\u5219\u5F39\u7A97\n * lotteryRef.current?.showRules()\n *\n * // \u5173\u95ED\u6240\u6709\u5F39\u7A97\n * lotteryRef.current?.hideAllModals()\n * ```\n */\nexport interface WheelLotteryHandle {\n /**\n * \u663E\u793A\u9519\u8BEF\u5F39\u7A97\n * @param config \u9519\u8BEF\u5F39\u7A97\u914D\u7F6E\n */\n showError: (config: {\n /** \u9519\u8BEF\u4FE1\u606F */\n message: string\n /** \u6807\u9898\uFF08\u53EF\u9009\uFF09 */\n title?: string\n /** \u786E\u8BA4\u6309\u94AE\u6587\u672C\uFF08\u53EF\u9009\uFF09 */\n confirmText?: string\n }) => void\n\n /**\n * \u9690\u85CF\u9519\u8BEF\u5F39\u7A97\n */\n hideError: () => void\n\n /**\n * \u663E\u793A\u672A\u4E2D\u5956\u5F39\u7A97\uFF08\u4F7F\u7528 ErrorModal\uFF09\n * @param config \u672A\u4E2D\u5956\u5F39\u7A97\u914D\u7F6E\n */\n showNoWin: (config?: {\n /** \u6807\u9898\uFF08\u53EF\u9009\uFF09 */\n title?: string\n /** \u63D0\u793A\u4FE1\u606F\uFF08\u53EF\u9009\uFF09 */\n message?: string\n /** \u786E\u8BA4\u6309\u94AE\u6587\u672C\uFF08\u53EF\u9009\uFF09 */\n confirmText?: string\n }) => void\n\n /**\n * \u9690\u85CF\u672A\u4E2D\u5956\u5F39\u7A97\n */\n hideNoWin: () => void\n\n /**\n * \u663E\u793A\u4E2D\u5956\u5F39\u7A97\n * @param prize \u4E2D\u5956\u5956\u54C1\n * @param config \u4E2D\u5956\u5F39\u7A97\u914D\u7F6E\uFF08\u53EF\u9009\uFF09\n */\n showWinner: (prize: Prize, config?: Partial<WinnerModalConfig>) => void\n\n /**\n * \u9690\u85CF\u4E2D\u5956\u5F39\u7A97\n */\n hideWinner: () => void\n\n /**\n * \u663E\u793A\u89C4\u5219\u5F39\u7A97\n */\n showRules: () => void\n\n /**\n * \u9690\u85CF\u89C4\u5219\u5F39\u7A97\n */\n hideRules: () => void\n\n /**\n * \u663E\u793A\u6211\u7684\u5956\u52B1\u5F39\u7A97\n */\n showRewards: () => void\n\n /**\n * \u9690\u85CF\u6211\u7684\u5956\u52B1\u5F39\u7A97\n */\n hideRewards: () => void\n\n /**\n * \u663E\u793A\u5206\u4EAB\u5F39\u7A97\n * @param config \u5206\u4EAB\u5F39\u7A97\u914D\u7F6E\uFF08\u53EF\u9009\uFF09\n */\n showShare: (config?: Partial<ShareModalConfig>) => void\n\n /**\n * \u9690\u85CF\u5206\u4EAB\u5F39\u7A97\n */\n hideShare: () => void\n\n /**\n * \u5173\u95ED\u6240\u6709\u5F39\u7A97\n */\n hideAllModals: () => void\n}\n\n// ============================================================================\n// \u9ED8\u8BA4\u56FE\u7247\u7D20\u6750\u5E38\u91CF\n// ============================================================================\n\n/**\n * \u9ED8\u8BA4\u8F6C\u76D8\u6307\u9488\u56FE\u7247 URL\n */\nexport const DEFAULT_POINTER_IMAGE =\n 'https://cdn.shopify.com/s/files/1/0517/2199/4432/files/2790697ba78c1a85d953787a8be9b258.png?v=1766371471'\n\nexport const DEFAULT_POINTER_DISABLE_IMAGE =\n 'https://cdn.shopify.com/s/files/1/0582/4669/3040/files/2790697ba78c1a85d953787a8be9b258.png?v=1767610632'\n\n/**\n * \u9ED8\u8BA4\u8F6C\u76D8\u5E95\u56FE\uFF086 \u4E2A\u5956\u54C1\uFF09\n */\nexport const DEFAULT_WHEEL_BG_6_PRIZES =\n 'https://cdn.shopify.com/s/files/1/0517/2199/4432/files/be866c03-4d29-4d59-a8d4-39f5d64bbc0e_ae_e_6.png?v=1766374361'\n\n/**\n * \u9ED8\u8BA4\u8F6C\u76D8\u5E95\u56FE\uFF088 \u4E2A\u5956\u54C1\uFF09\n */\nexport const DEFAULT_WHEEL_BG_8_PRIZES =\n 'https://cdn.shopify.com/s/files/1/0517/2199/4432/files/ad63174a-3da0-4dcd-ac61-c83172c7893c_ae_e_8.png?v=1766374392'\n\n// ============================================================================\n// \u6838\u5FC3\u5B9E\u4F53\u7C7B\u578B\n// ============================================================================\n\n/**\n * \u5956\u54C1\uFF08Prize\uFF09\n *\n * \u4EE3\u8868\u8F6C\u76D8\u4E0A\u7684\u4E00\u4E2A\u5956\u54C1\u533A\u5757\uFF0C\u5305\u542B\u663E\u793A\u6240\u9700\u7684\u6240\u6709\u4FE1\u606F\u3002\n *\n * @example\n * ```tsx\n * const prize: Prize = {\n * prizeKey: 'prize-001',\n * name: 'Anker Prime Charger (100W, 3 Ports, GaN)',\n * image: { url: 'https://images.unsplash.com/photo-123', alt: 'Charger' },\n * rank: '1st',\n * price: '$79.99'\n * }\n * ```\n */\nexport interface Prize {\n /**\n * \u552F\u4E00\u6807\u8BC6\u7B26\uFF0C\u7528\u4E8E React key \u548C\u4E2D\u5956\u7ED3\u679C\u5339\u914D\n */\n prizeKey: string\n\n /**\n * \u5956\u54C1\u540D\u79F0\uFF0C\u663E\u793A\u5728\u8F6C\u76D8\u548C\u5956\u6C60\u4E2D\n * @maxLength 100\n */\n name: string\n\n /**\n * \u5956\u54C1\u56FE\u7247\u5BF9\u8C61\uFF0C\u5305\u542B url \u548C alt\n */\n image: Img\n\n /**\n * \u6392\u540D\u6807\u8BC6\uFF0C\u4EC5\u5728 Prize Pool \u4E2D\u663E\u793A\n * @optional\n */\n rank?: '1st' | '2nd' | '3rd'\n\n /**\n * \u4EF7\u683C\u6216\u6298\u6263\u4FE1\u606F\uFF0C\u663E\u793A\u5728\u5956\u6C60\u4E2D\n * @example \"$99.99\" | \"12% Off\"\n * @optional\n */\n price?: string\n}\n\n/**\n * \u4E2D\u5956\u4FE1\u606F\uFF08WinningInfo\uFF09\n *\n * \u4EE3\u8868\u4E00\u6761\u4E2D\u5956\u8BB0\u5F55\uFF0C\u7528\u4E8E\u5E95\u90E8\u6EDA\u52A8\u6761\u5C55\u793A\uFF0C\u8425\u9020\u6D3B\u52A8\u6C1B\u56F4\u3002\n *\n * @example\n * ```tsx\n * const winningInfo: WinningInfo = {\n * winningKey: 'win-001',\n * userName: 'Shuqi***',\n * prizeName: '12% Off Discount',\n * timestamp: 1702800000000\n * }\n * ```\n */\nexport interface WinningInfo {\n /**\n * \u552F\u4E00\u6807\u8BC6\u7B26\n */\n winningKey: string\n\n /**\n * \u7528\u6237\u540D\uFF08\u5DF2\u8131\u654F\uFF09\uFF0C\u5982 \"Shuqi***\"\n * @note \u5047\u8BBE\u4F20\u5165\u7684\u7528\u6237\u540D\u5DF2\u7ECF\u8FC7\u8131\u654F\u5904\u7406\uFF0C\u7EC4\u4EF6\u5185\u90E8\u4E0D\u518D\u5904\u7406\n */\n userName: string\n\n /**\n * \u4E2D\u5956\u5956\u54C1\u540D\u79F0\n */\n prizeName: string\n\n /**\n * \u4E2D\u5956\u65F6\u95F4\u6233\uFF08\u6BEB\u79D2\uFF09\n * @optional\n */\n timestamp?: number\n}\n\n/**\n * \u83B7\u53D6\u673A\u4F1A\u65B9\u5F0F\u7C7B\u578B\n */\nexport type ChanceMethodType = 'share' | 'points' | 'refer' | string\n\n/**\n * \u83B7\u53D6\u673A\u4F1A\u65B9\u5F0F\u72B6\u6001\n */\nexport type ChanceMethodStatus = 'pending' | 'completed' | 'used'\n\n/**\n * \u83B7\u53D6\u673A\u4F1A\u65B9\u5F0F\uFF08ChanceMethod\uFF09\n *\n * \u4EE3\u8868\u4E00\u79CD\u83B7\u53D6\u62BD\u5956\u673A\u4F1A\u7684\u65B9\u5F0F\uFF0C\u652F\u6301\u7075\u6D3B\u914D\u7F6E\uFF08\u5206\u4EAB\u3001\u79EF\u5206\u3001\u63A8\u8350\u7B49\uFF09\u3002\n *\n * @example\n * ```tsx\n * const chanceMethod: ChanceMethod = {\n * methodKey: 'share-001',\n * type: 'share',\n * title: 'Share on your socials',\n * description: 'Share this event on your social media',\n * buttonText: 'Redeem now',\n * onClick: () => console.log('Share clicked'),\n * disabled: false,\n * status: 'pending'\n * }\n * ```\n */\nexport interface ChanceMethod {\n /**\n * \u552F\u4E00\u6807\u8BC6\u7B26\n */\n methodKey: string\n\n /**\n * \u65B9\u5F0F\u7C7B\u578B\uFF0C\u652F\u6301\u9884\u5B9A\u4E49\u7C7B\u578B\uFF08'share', 'points', 'refer'\uFF09\u6216\u81EA\u5B9A\u4E49\u7C7B\u578B\n */\n type: ChanceMethodType\n\n /**\n * \u65B9\u5F0F\u6807\u9898\uFF0C\u5982 \"Share on your socials\"\n */\n title: string\n\n /**\n * \u8BE6\u7EC6\u8BF4\u660E\u6587\u5B57\n */\n description: string\n\n /**\n * \u6309\u94AE\u6587\u6848\uFF0C\u9ED8\u8BA4 \"Redeem now\"\n * @default \"Redeem now\"\n * @optional\n */\n buttonText?: string\n\n completed?: string\n\n used?: string\n\n /**\n * \u672A\u767B\u5F55\u65F6\u70B9\u51FB GO \u6309\u94AE\u7684\u56DE\u8C03\n * @example\n * ```tsx\n * onLoginRequired={() => {\n * // \u6253\u5F00\u767B\u5F55\u5F39\u7A97\u6216\u8DF3\u8F6C\u767B\u5F55\u9875\n * router.push('/login')\n * }}\n * ```\n */\n onLoginRequired?: () => void\n\n /**\n * \u70B9\u51FB\u6309\u94AE\u65F6\u7684\u56DE\u8C03\u51FD\u6570\n * @note \u4E1A\u52A1\u903B\u8F91\uFF08\u5982\u79EF\u5206\u6263\u9664\u3001\u5206\u4EAB\u9A8C\u8BC1\uFF09\u7531\u7236\u7EC4\u4EF6\u5904\u7406\n */\n onClick: () => void\n\n /**\n * \u662F\u5426\u7981\u7528\u8BE5\u65B9\u5F0F\n * @default false\n * @optional\n */\n disabled?: boolean\n\n /**\n * \u83B7\u53D6\u673A\u4F1A\u65B9\u5F0F\u7684\u72B6\u6001\n * - pending: \u672A\u5B8C\u6210\uFF08\u9ED8\u8BA4\u72B6\u6001\uFF09\n * - completed: \u5DF2\u5B8C\u6210/\u5DF2\u83B7\u5F97\n * - used: \u5DF2\u4F7F\u7528\n * @default \"pending\"\n * @optional\n */\n status?: ChanceMethodStatus\n\n /**\n * \u662F\u5426\u663E\u793A\u52A0\u8F7D\u72B6\u6001\n * @default false\n * @optional\n */\n loading?: boolean\n\n /**\n * \u662F\u5426\u5728\u70B9\u51FB\u65F6\u6253\u5F00\u5206\u4EAB\u5F39\u7A97\n * @default false\n * @optional\n */\n openShareModal?: boolean\n}\n\n/**\n * \u7528\u6237\u6570\u636E\uFF08UserData\uFF09\n *\n * \u4EE3\u8868\u5F53\u524D\u7528\u6237\u7684\u62BD\u5956\u76F8\u5173\u6570\u636E\n *\n * @example\n * ```tsx\n * const userData: UserData = {\n * isLoggedIn: true,\n * availableChances: 3,\n * wonPrizes: [\n * { id: 'prize-001', name: 'Charger', image: 'https://...', timestamp: 1702800000000 }\n * ]\n * }\n * ```\n */\nexport interface UserData {\n /**\n * \u7528\u6237\u662F\u5426\u5DF2\u767B\u5F55\n */\n isLoggedIn: boolean\n\n /**\n * \u5F53\u524D\u53EF\u4F7F\u7528\u7684\u62BD\u5956\u6B21\u6570\n * @default 0\n */\n availableChances: number\n\n /**\n * \u603B\u673A\u4F1A\u6570\uFF08\u7528\u4E8E\u663E\u793A\u8FDB\u5EA6\uFF0C\u4F8B\u5982 \"3/5\"\uFF09\n * @default undefined\n * @optional\n */\n totalChances?: number\n\n /**\n * \u5DF2\u83B7\u5F97\u7684\u5956\u54C1\u5217\u8868\n * @optional\n */\n wonPrizes?: Array<Prize & { timestamp?: number }>\n\n /** * \u7528\u6237\u7535\u5B50\u90AE\u7BB1\uFF08\u53EF\u9009\uFF0C\u7528\u4E8E\u53D1\u9001\u4E2D\u5956\u901A\u77E5\u7B49\uFF09\n * @optional\n */\n email?: string\n}\n\n/**\n * \u7F13\u52A8\u51FD\u6570\u7C7B\u578B\n */\nexport type EasingFunction = 'ease-out' | 'ease-in-out' | 'linear'\n\n// ============================================================================\n// \u516C\u5171\u6587\u6848\u914D\u7F6E\u7C7B\u578B\n// ============================================================================\n\n/**\n * \u590D\u5236\u64CD\u4F5C\u76F8\u5173\u6587\u6848\u914D\u7F6E\uFF08\u516C\u5171\u7C7B\u578B\uFF09\n * \u7528\u4E8E\u6240\u6709\u5305\u542B\u590D\u5236\u529F\u80FD\u7684\u7EC4\u4EF6\n */\nexport interface CopyTextConfig {\n /**\n * \u590D\u5236\u6309\u94AE\u6587\u672C\n * @default \"COPY\"\n */\n copyText?: string\n\n /**\n * \u590D\u5236\u6210\u529F\u540E\u7684\u6309\u94AE\u6587\u672C\n * @default \"COPIED\"\n */\n copiedText?: string\n}\n\n/**\n * \u4F18\u60E0\u7801\u76F8\u5173\u914D\u7F6E\uFF08\u516C\u5171\u7C7B\u578B\uFF09\n * \u7528\u4E8E\u6240\u6709\u5C55\u793A\u4F18\u60E0\u7801\u7684\u7EC4\u4EF6\n */\nexport interface CouponConfig {\n /**\n * \u4EE3\u7801\u6587\u672C\u524D\u7F00\n * @default \"CODE:\"\n */\n codeText?: string\n\n /**\n * \u4F18\u60E0\u7801\n */\n couponCode?: string\n\n /**\n * \u4F18\u60E0\u7801\u8FC7\u671F\u65F6\u95F4\n */\n expiresAt?: string\n\n /**\n * \u4F18\u60E0\u5238\u6298\u6263\u6587\u672C\uFF08\u4F8B\u5982 \"20%\"\uFF09\n */\n couponDiscount?: string\n\n /**\n * \u4F18\u60E0\u5238\u5355\u4F4D\u6587\u672C\n * @default \"Off\"\n */\n couponUnit?: string\n}\n\n/**\n * \u5956\u52B1\u65F6\u95F4\u6587\u6848\u914D\u7F6E\uFF08\u516C\u5171\u7C7B\u578B\uFF09\n */\nexport interface PrizeTimeTextConfig {\n /**\n * \u5956\u52B1\u65F6\u95F4\u6587\u672C\u524D\u7F00\n * @default \"Prize time:\"\n */\n prizeText?: string\n}\n\n/**\n * \u4E2D\u5956\u5F39\u7A97\u914D\u7F6E\uFF08WinnerModalConfig\uFF09\n *\n * \u7528\u4E8E\u914D\u7F6E\u4E2D\u5956\u5F39\u7A97\u7684\u5C55\u793A\u5185\u5BB9\uFF0C\u901A\u5E38\u7531\u62BD\u5956\u63A5\u53E3\u8FD4\u56DE\u63D0\u4F9B\n *\n * @example\n * ```tsx\n * const winnerModalConfig: WinnerModalConfig = {\n * title: 'Congratulations!',\n * prizeTitle: 'Anker Prime Charger',\n * prizeImage: 'https://...',\n * prizeDescription: 'High-speed charging for all your devices',\n * learnMoreUrl: 'https://...',\n * learnMoreText: 'View Details',\n * couponCode: 'ANKER2024',\n * expiresAt: '2024-12-31',\n * couponDiscount: '20%',\n * couponUnit: 'Off',\n * confirmText: 'Claim Now'\n * }\n * ```\n */\nexport interface WinnerModalConfig extends CopyTextConfig, CouponConfig, PrizeTimeTextConfig {\n /**\n * \u4E2D\u5956\u5F39\u7A97\u6807\u9898\n * @default \"You Have Won\"\n * @optional\n */\n title?: string\n\n /**\n * \u4E2D\u5956\u5F39\u7A97\u5956\u54C1\u6807\u9898\uFF08\u4F18\u5148\u7EA7\u9AD8\u4E8E prize.name\uFF09\n * @optional\n */\n prizeTitle?: string\n\n /**\n * \u4E2D\u5956\u5F39\u7A97\u5956\u54C1\u56FE\u7247 URL\uFF08\u4F18\u5148\u7EA7\u9AD8\u4E8E prize.image\uFF09\n * @optional\n */\n prizeImage?: string\n\n /**\n * \u4E2D\u5956\u5F39\u7A97\u5956\u54C1\u8BE6\u60C5\u63CF\u8FF0\n * @optional\n */\n prizeDescription?: string\n\n /**\n * \u4E2D\u5956\u5F39\u7A97 Learn More \u94FE\u63A5\n * @optional\n */\n learnMoreUrl?: string\n\n /**\n * \u4E2D\u5956\u5F39\u7A97 Learn More \u6309\u94AE\u6587\u672C\n * @default \"Learn More\"\n * @optional\n */\n learnMoreText?: string\n\n /**\n * \u4E2D\u5956\u5F39\u7A97\u786E\u8BA4\u6309\u94AE\u6587\u672C\n * @default \"Okay, Got It\"\n * @optional\n */\n confirmText?: string\n}\n\n/**\n * Rules \u5F39\u7A97\u914D\u7F6E\n *\n * @example\n * ```tsx\n * rulesModalConfig={{\n * rulesData: [\n * { item: '$100 instead of $200, 10 tickets/day.' },\n * { item: '$100 for $120, 50 tickets/day.' }\n * ],\n * rulesText: 'Game Rules',\n * rulesTitle: 'Activity Rules'\n * }}\n * ```\n */\nexport interface RulesModalConfig {\n /**\n * \u89C4\u5219\u6570\u636E\u5217\u8868\n * @optional\n */\n rulesData?: Array<{\n /**\n * \u89C4\u5219\u9879\u5185\u5BB9\n */\n item: string\n }>\n\n /**\n * Rules \u6309\u94AE\u6587\u672C\n * @default \"Rules\"\n * @optional\n */\n rulesText?: string\n\n /**\n * \u5F39\u7A97\u6807\u9898\n * @default \"Rules\"\n * @optional\n */\n rulesTitle?: string\n}\n\n/**\n * My Rewards \u5F39\u7A97\u914D\u7F6E\n *\n * @example\n * ```tsx\n * myRewardsModalConfig={{\n * rewardsData: [\n * {\n * id: '1',\n * name: 'Anker Charger',\n * code: 'ANKER2024',\n * status: 'Available',\n * prizeTime: '2024-01-01',\n * showCopyCode: true\n * }\n * ],\n * myRewardsText: 'My Prizes',\n * codeText: 'CODE:',\n * copyText: 'COPY',\n * prizeText: 'Prize time:',\n * emptyText: 'No rewards yet'\n * }}\n * ```\n */\nexport interface MyRewardsModalConfig extends CopyTextConfig, PrizeTimeTextConfig {\n /**\n * \u5956\u52B1\u6570\u636E\u5217\u8868\n * @optional\n */\n rewardsData?: Array<{\n /**\n * \u5956\u52B1 ID\n */\n id: string\n /**\n * \u5956\u52B1\u540D\u79F0\n */\n name: string\n /**\n * \u4F18\u60E0\u7801\uFF08\u53EF\u9009\uFF09\n */\n code?: string\n /**\n * \u72B6\u6001\n */\n status: 'Available' | 'Expired' | 'Used'\n /**\n * \u5956\u52B1\u65F6\u95F4\n */\n prizeTime?: string\n /**\n * \u662F\u5426\u53EF\u590D\u5236\u7801\n */\n showCopyCode?: boolean\n }>\n\n /**\n * My Rewards \u6309\u94AE\u6587\u672C\n * @default \"My Rewards\"\n * @optional\n */\n myRewardsText?: string\n\n /**\n * \u5F39\u7A97\u6807\u9898\n * @default \"My Rewards\"\n * @optional\n */\n myRewardsTitle?: string\n\n /**\n * \u4EE3\u7801\u6587\u672C\u524D\u7F00\n * @default \"CODE:\"\n * @optional\n */\n codeText?: string\n\n /**\n * \u7A7A\u72B6\u6001\u63D0\u793A\u6587\u672C\n * @default \"No rewards yet\"\n * @optional\n */\n emptyText?: string\n}\n\n/**\n * \u9519\u8BEF\u5F39\u7A97\u914D\u7F6E\n * @example\n * ```tsx\n * errorModalConfig={{\n * title: 'Oops!',\n * message: 'Something went wrong during the lottery process.',\n * confirmText: 'OK, I get'\n * }}\n * ```\n */\nexport interface ErrorModalConfig {\n /**\n * \u5F39\u7A97\u6807\u9898\n * @default \"Oops!\"\n * @optional\n */\n title?: string\n /**\n * \u9519\u8BEF\u6D88\u606F\u5185\u5BB9\n * @default \"Something went wrong during the lottery process.\"\n * @optional\n */\n message?: string\n /**\n * \u786E\u8BA4\u6309\u94AE\u6587\u672C\n * @default \"OK, I get\"\n * @optional\n */\n confirmText?: string\n}\n\n/**\n * \u793E\u4EA4\u5E73\u53F0\u7C7B\u578B\n */\nexport type SocialPlatform = 'facebook' | 'twitter' | 'instagram' | 'linkedin' | 'tiktok' | 'youtube'\n\n/**\n * \u793E\u4EA4\u5E73\u53F0\u914D\u7F6E\n */\nexport interface SharePlatformConfig {\n /**\n * \u5E73\u53F0\u7C7B\u578B\n */\n platform: SocialPlatform\n\n /**\n * \u5E73\u53F0\u540D\u79F0\n */\n name: string\n\n /**\n * \u5206\u4EAB URL\uFF08\u53EF\u9009\uFF0C\u5982\u679C\u63D0\u4F9B\u5219\u76F4\u63A5\u8DF3\u8F6C\uFF09\n */\n url?: string\n\n /**\n * \u70B9\u51FB\u56DE\u8C03\uFF08\u5982\u679C\u63D0\u4F9B url \u5219\u6B64\u56DE\u8C03\u4F1A\u5728\u8DF3\u8F6C\u524D\u6267\u884C\uFF09\n */\n onClick?: () => void\n\n /**\n * \u662F\u5426\u7981\u7528\n */\n disabled?: boolean\n}\n\n/**\n * \u5206\u4EAB\u5F39\u7A97\u914D\u7F6E\n */\nexport interface ShareModalConfig {\n /**\n * \u5F39\u7A97\u6807\u9898\n * @default \"Share to Get More Chances\"\n */\n title?: string\n\n /**\n * \u526F\u6807\u9898/\u5F15\u5BFC\u6587\u6848\n * @default \"Share to Play Again Keep Trying! You Could Still Win Big!\"\n */\n subtitle?: string\n\n /**\n * \u5E95\u90E8\u63D0\u793A\u6587\u6848\n * @default \"Note: Maximum of 3 times per participant.\"\n */\n note?: string\n\n /**\n * \u793E\u4EA4\u5E73\u53F0\u914D\u7F6E\u5217\u8868\n */\n platforms?: SharePlatformConfig[]\n\n /**\n * \u5206\u4EAB\u6210\u529F\u56DE\u8C03\n */\n onShareSuccess?: (platform: SocialPlatform) => void\n}\n\n// ============================================================================\n// \u7EC4\u4EF6 Props \u63A5\u53E3\n// ============================================================================\n\n/**\n * WheelLottery \u7EC4\u4EF6 Props\n *\n * @example\n * ```tsx\n * <WheelLottery\n * prizes={prizes}\n * winningPrizeId=\"prize-003\"\n * spinDuration={4000}\n * easing=\"ease-out\"\n * chanceMethods={chanceMethods}\n * chanceTitle=\"Want more chances to win?\"\n * winningInfos={winningInfos}\n * onSpinStart={() => console.log('Spin started')}\n * onSpinEnd={(prize) => alert(`You won ${prize.name}`)}\n * />\n * ```\n */\nexport interface WheelLotteryProps {\n // ========== \u5FC5\u9700 Props ==========\n\n /**\n * 8 \u4E2A\u5956\u54C1\u6570\u7EC4\uFF08\u5FC5\u9700\uFF09\n * @minLength 8\n * @maxLength 8\n * @validation \u5982\u679C\u957F\u5EA6\u4E0D\u7B49\u4E8E 8\uFF0C\u5E94\u5728\u5F00\u53D1\u73AF\u5883\u4E0B\u8F93\u51FA\u8B66\u544A\n */\n prizes: Prize[]\n\n // ========== \u8F6C\u76D8\u914D\u7F6E Props\uFF08\u53EF\u9009\uFF09 ==========\n\n /**\n * \u4E3B\u9898\u8272\n */\n theme?: Theme\n\n /**\n * \u6307\u5B9A\u4E2D\u5956\u5956\u54C1\u7684 ID\uFF0C\u7528\u4E8E\u6D4B\u8BD5\u6216\u670D\u52A1\u7AEF\u51B3\u5B9A\u7ED3\u679C\n * @note \u5FC5\u987B\u662F prizes \u6570\u7EC4\u4E2D\u67D0\u4E2A Prize \u7684 id\n * @optional\n */\n winningPrizeId?: string\n\n /**\n * \u65CB\u8F6C\u65F6\u957F\uFF08\u6BEB\u79D2\uFF09\n * @default 4000\n * @range 3000-5000\n * @optional\n */\n spinDuration?: number\n\n /**\n * \u7F13\u52A8\u51FD\u6570\n * @default \"ease-out\"\n * @optional\n */\n easing?: EasingFunction\n\n /**\n * \u8F6C\u76D8\u5E95\u56FE URL\uFF08\u652F\u6301 6 \u4E2A\u6216 8 \u4E2A\u5956\u54C1\u7684\u80CC\u666F\u56FE\uFF09\n * @default \u6839\u636E prizes.length \u81EA\u52A8\u9009\u62E9 6 \u6216 8 \u5956\u54C1\u5E95\u56FE\n * @optional\n */\n wheelBackgroundImage?: string\n\n /**\n * \u8F6C\u76D8\u6307\u9488\u56FE\u7247 URL\n * @default \u9ED8\u8BA4\u6307\u9488\u56FE\u7247\n * @optional\n */\n pointerImage?: string\n\n // ========== \u83B7\u53D6\u673A\u4F1A\u533A\u57DF Props\uFF08\u53EF\u9009\uFF09 ==========\n\n /**\n * \u83B7\u53D6\u673A\u4F1A\u65B9\u5F0F\u6570\u7EC4\n * @default DEFAULT_CHANCE_METHODS\uFF083\u79CD\u9ED8\u8BA4\u65B9\u5F0F\uFF1A\u5206\u4EAB\u3001\u79EF\u5206\u3001\u63A8\u8350\uFF09\n * @note \u5F53\u6570\u7EC4\u4E3A\u7A7A\u65F6\uFF0C\u9690\u85CF\u6574\u4E2A\"\u83B7\u53D6\u673A\u4F1A\"\u533A\u57DF\n * @optional\n */\n chanceMethods?: ChanceMethod[]\n\n /**\n * \u83B7\u53D6\u673A\u4F1A\u533A\u57DF\u6807\u9898\n * @default \"Want more chances to win?\"\n * @optional\n */\n chanceTitle?: string\n\n /**\n * \u83B7\u53D6\u673A\u4F1A\u533A\u57DF\u526F\u6807\u9898\n * @optional\n */\n chanceSubtitle?: string\n\n /**\n * \u83B7\u53D6\u673A\u4F1A\u533A\u57DF\u5E95\u90E8\u63D0\u793A\n * @optional\n */\n chanceFooterNote?: string\n\n /**\n * \u83B7\u53D6\u673A\u4F1A\u65B9\u5F0F\u6587\u6848\u914D\u7F6E\n * @optional\n */\n chanceMethodsText?: {\n chanceBadgeText?: string\n completedText?: string\n usedText?: string\n loadingText?: string\n }\n\n // ========== \u4E2D\u5956\u4FE1\u606F Props\uFF08\u53EF\u9009\uFF09 ==========\n\n /**\n * \u4E2D\u5956\u4FE1\u606F\u6570\u7EC4\uFF0C\u7528\u4E8E\u5E95\u90E8\u6EDA\u52A8\u6761\u5C55\u793A\n * @default []\n * @note \u5F53\u6570\u7EC4\u4E3A\u7A7A\u65F6\uFF0C\u9690\u85CF\u5E95\u90E8\u6EDA\u52A8\u6761\u6216\u663E\u793A\u9ED8\u8BA4\u63D0\u793A\n * @optional\n */\n winningInfos?: WinningInfo[]\n\n /**\n * \u5956\u54C1\u6C60\u5C55\u793A\u533A\u57DF\u6807\u9898\n * @default \"Prize Pool\"\n * @optional\n */\n prizesTitle?: string\n\n // ========== \u56DE\u8C03\u51FD\u6570 Props\uFF08\u53EF\u9009\uFF09 ==========\n\n /**\n * \u62BD\u5956\u5F00\u59CB\u65F6\u7684\u56DE\u8C03\uFF0C\u8FD4\u56DE Promise \u4EE5\u652F\u6301\u5F02\u6B65\u63A5\u53E3\u8C03\u7528\n * @returns Promise<string> - \u4E2D\u5956\u5956\u54C1\u7684 ID\uFF0C\u5982\u679C\u63A5\u53E3\u5931\u8D25\u5219 reject\n * @optional\n * @example\n * ```tsx\n * onSpinStart={async () => {\n * const result = await fetch('/api/lottery')\n * const data = await result.json()\n * return data.prizeId // \u8FD4\u56DE\u4E2D\u5956\u5956\u54C1 ID\n * }}\n * ```\n */\n onSpinStart?: () => Promise<string>\n\n /**\n * \u62BD\u5956\u7ED3\u675F\u65F6\u7684\u56DE\u8C03\uFF0C\u4F20\u9012\u4E2D\u5956\u5956\u54C1\n * @param prize \u4E2D\u5956\u5956\u54C1\u5BF9\u8C61\n * @optional\n */\n onSpinEnd?: (prize: Prize) => void\n\n /**\n * \u62BD\u5956\u9519\u8BEF\u65F6\u7684\u56DE\u8C03\n * @param error \u9519\u8BEF\u4FE1\u606F\n * @optional\n */\n onSpinError?: (error: Error) => void\n\n // ========== \u4E2D\u5956\u5F39\u7A97\u914D\u7F6E Props\uFF08\u53EF\u9009\uFF09 ==========\n\n /**\n * \u4E2D\u5956\u5F39\u7A97\u914D\u7F6E\u5BF9\u8C61\uFF0C\u901A\u5E38\u7531\u62BD\u5956\u63A5\u53E3\u8FD4\u56DE\u63D0\u4F9B\n * @optional\n * @example\n * ```tsx\n * winnerModalConfig={{\n * title: 'Congratulations!',\n * prizeTitle: 'Anker Prime Charger',\n * prizeImage: 'https://...',\n * prizeDescription: 'High-speed charging',\n * learnMoreUrl: 'https://...',\n * couponCode: 'ANKER2024',\n * expiresAt: '2024-12-31',\n * couponDiscount: '20%',\n * confirmText: 'Claim Now'\n * }}\n * ```\n */\n winnerModalConfig?: WinnerModalConfig\n\n rulesModalConfig?: RulesModalConfig\n\n myRewardsModalConfig?: MyRewardsModalConfig\n\n errorModalConfig?: ErrorModalConfig\n\n /**\n * \u5206\u4EAB\u5F39\u7A97\u914D\u7F6E\n * @optional\n */\n shareModalConfig?: ShareModalConfig\n\n /**\n * \u672A\u767B\u5F55\u65F6\u70B9\u51FB GO \u6309\u94AE\u7684\u56DE\u8C03\n * @example\n * ```tsx\n * onLoginRequired={() => {\n * // \u6253\u5F00\u767B\u5F55\u5F39\u7A97\u6216\u8DF3\u8F6C\u767B\u5F55\u9875\n * router.push('/login')\n * }}\n * ```\n */\n onLoginRequired?: () => void\n\n // ========== \u7528\u6237\u76F8\u5173 Props\uFF08\u53EF\u9009\uFF09 ==========\n\n /**\n * \u7528\u6237\u6570\u636E\n * @optional\n * @example\n * ```tsx\n * userData={{\n * isLoggedIn: true,\n * availableChances: 3,\n * wonPrizes: [{ id: 'prize-001', name: 'Charger', image: 'https://...' }]\n * }}\n * ```\n */\n userData?: UserData\n\n /**\n * \u672A\u767B\u5F55\u65F6\u7684\u63D0\u793A\u6587\u6848\n * @default \"Please log in to participate\"\n * @optional\n */\n loginPromptText?: string\n\n /**\n * \u767B\u5F55\u6309\u94AE\u6587\u6848\n * @default \"Log In\"\n * @optional\n */\n loginButtonText?: string\n\n /**\n * \u6B21\u6570\u4E0D\u8DB3\u65F6\u7684\u63D0\u793A\u6587\u6848\n * @default \"You have no chances left\"\n * @optional\n */\n noChancesText?: string\n\n // ========== \u5F39\u7A97\u76F8\u5173 Props\uFF08\u53EF\u9009\uFF09 ==========\n\n /**\n * \u590D\u5236\u4F18\u60E0\u7801\u56DE\u8C03\n * @optional\n */\n onCopyCode?: (code: string) => void\n\n /**\n * Rules \u6309\u94AE\u6587\u672C\n * @default \"Rules\"\n * @optional\n */\n rulesText?: string\n\n /**\n * Opportunities \u6587\u672C\u6570\u7EC4\n * @default [\"Accumulate\", \"lottery opportunities\"]\n * @optional\n */\n opportunitiesText?: string[]\n\n /**\n * My Rewards \u6309\u94AE\u6587\u672C\n * @default \"My Rewards\"\n * @optional\n */\n myRewardsText?: string\n\n /**\n * \u672A\u4E2D\u5956\u5F39\u7A97\u6807\u9898\n * @default \"Sorry, You Didn't Win This Time\"\n * @optional\n */\n noWinTitle?: string\n\n /**\n * \u672A\u4E2D\u5956\u5F39\u7A97\u526F\u6807\u9898\n * @default \"Keep Trying, You Could Still Win Big!\"\n * @optional\n */\n noWinSubtitle?: string\n\n // ========== My Rewards \u5F39\u7A97\u6587\u6848\u914D\u7F6E\uFF08\u53EF\u9009\uFF09 ==========\n\n /**\n * My Rewards \u5F39\u7A97\u65E0\u5956\u52B1\u65F6\u7684\u63D0\u793A\u6587\u672C\n * @default \"No rewards yet\"\n * @optional\n */\n rewardsEmptyText?: string\n\n /**\n * My Rewards \u5F39\u7A97 CODE \u6807\u7B7E\u6587\u672C\n * @default \"CODE:\"\n * @optional\n */\n rewardsCodeLabel?: string\n\n /**\n * My Rewards \u5F39\u7A97\u590D\u5236\u6309\u94AE\u6587\u672C\n * @default \"Copy\"\n * @optional\n */\n rewardsCopyButtonText?: string\n\n /**\n * My Rewards \u5F39\u7A97\u5956\u52B1\u65F6\u95F4\u6807\u7B7E\u6587\u672C\n * @default \"Prize time:\"\n * @optional\n */\n rewardsPrizeTimeLabel?: string\n\n // ========== BaseModal \u914D\u7F6E\uFF08\u53EF\u9009\uFF09 ==========\n\n /**\n * \u5F39\u7A97\u5173\u95ED\u6309\u94AE\u7684 aria-label\n * @default \"\u5173\u95ED\u5F39\u7A97\"\n * @optional\n */\n modalCloseButtonAriaLabel?: string\n\n // ========== \u6837\u5F0F\u76F8\u5173 Props\uFF08\u53EF\u9009\uFF09 ==========\n\n /**\n * \u81EA\u5B9A\u4E49 CSS \u7C7B\u540D\uFF0C\u7528\u4E8E\u8986\u76D6\u6216\u6269\u5C55\u9ED8\u8BA4\u6837\u5F0F\n * @optional\n */\n className?: string\n}\n\n// ============================================================================\n// \u9ED8\u8BA4\u914D\u7F6E\n// ============================================================================\n\n/**\n * \u9ED8\u8BA4\u83B7\u53D6\u673A\u4F1A\u65B9\u5F0F\uFF083\u79CD\uFF09\n * @note \u7236\u7EC4\u4EF6\u9700\u8981\u8986\u76D6 onClick \u56DE\u8C03\u4EE5\u5B9E\u73B0\u5177\u4F53\u4E1A\u52A1\u903B\u8F91\n */\nexport const DEFAULT_CHANCE_METHODS: ChanceMethod[] = [\n {\n methodKey: 'default-share',\n type: 'share',\n title: 'Share on your socials',\n description: 'Share this event on your social media',\n buttonText: 'Redeem now',\n onLoginRequired: () => {\n alert('Please log in to share and get a chance!')\n },\n onClick: () => {\n console.warn('ChanceMethod.onClick not implemented. Please provide a custom onClick handler.')\n },\n disabled: false,\n },\n {\n methodKey: 'default-points',\n type: 'points',\n title: 'Spend 100 points',\n description: 'Use your reward points to get a chance',\n buttonText: 'Redeem now',\n onLoginRequired: () => {\n alert('Please log in to share and get a chance!')\n },\n onClick: () => {\n console.warn('ChanceMethod.onClick not implemented. Please provide a custom onClick handler.')\n },\n disabled: false,\n },\n {\n methodKey: 'default-refer',\n type: 'refer',\n title: 'Refer a friend',\n description: 'Invite your friends to join',\n buttonText: 'Redeem now',\n onLoginRequired: () => {\n alert('Please log in to share and get a chance!')\n },\n onClick: () => {\n console.warn('ChanceMethod.onClick not implemented. Please provide a custom onClick handler.')\n },\n disabled: false,\n },\n]\n\n/**\n * \u9ED8\u8BA4\u8F6C\u76D8\u914D\u7F6E\n */\n\nexport const DEFAULT_WHEEL_CONFIG = {\n spinDuration: 4000, // 4 \u79D2\n easing: 'ease-out' as EasingFunction,\n chanceTitle: 'Want more chances to win?',\n}\n\n// ============================================================================\n// \u5185\u90E8\u72B6\u6001\u7C7B\u578B\uFF08\u4EC5\u4F9B\u7EC4\u4EF6\u5185\u90E8\u4F7F\u7528\uFF09\n// ============================================================================\n\n/**\n * \u8F6C\u76D8\u8FD0\u884C\u65F6\u72B6\u6001\uFF08\u7EC4\u4EF6\u5185\u90E8\u4F7F\u7528\uFF09\n * @internal\n */\nexport interface WheelState {\n /**\n * \u8F6C\u76D8\u662F\u5426\u6B63\u5728\u65CB\u8F6C\n */\n isSpinning: boolean\n\n /**\n * \u5F53\u524D\u65CB\u8F6C\u89D2\u5EA6\uFF08\u5EA6\u6570\uFF09\n */\n currentRotation: number\n\n /**\n * \u4E2D\u5956\u5956\u54C1\uFF0C\u62BD\u5956\u7ED3\u675F\u540E\u8BBE\u7F6E\n */\n winningPrize: Prize | null\n\n /**\n * GO \u6309\u94AE\u662F\u5426\u7981\u7528\n */\n isButtonDisabled: boolean\n\n /**\n * \u662F\u5426\u5DF2\u5B8C\u6210\u62BD\u5956\uFF08\u7528\u4E8E\u63A7\u5236\u8F6C\u76D8\u662F\u5426\u663E\u793A\u521D\u59CB\u65CB\u8F6C\u52A8\u753B\uFF09\n */\n isFinished: boolean\n}\n\n/**\n * \u521D\u59CB\u8F6C\u76D8\u72B6\u6001\n * @internal\n */\nexport const INITIAL_WHEEL_STATE: WheelState = {\n isSpinning: false,\n currentRotation: 0,\n winningPrize: null,\n isButtonDisabled: false,\n isFinished: false,\n}\n\n// ============================================================================\n// \u5B50\u7EC4\u4EF6 Props \u7C7B\u578B\n// ============================================================================\n\n/**\n * Wheel \u8F6C\u76D8\u7EC4\u4EF6 Props\n */\nexport interface WheelProps {\n /**\n * \u4E3B\u9898\u6A21\u5F0F\n * @optional\n */\n theme?: Theme\n\n /**\n * 8 \u4E2A\u5956\u54C1\u6570\u7EC4\n */\n prizes: Prize[]\n\n /**\n * \u5F53\u524D\u65CB\u8F6C\u89D2\u5EA6(\u5EA6\u6570)\n */\n rotation: number\n\n /**\n * \u662F\u5426\u6B63\u5728\u65CB\u8F6C\n */\n isSpinning: boolean\n\n /**\n * \u662F\u5426\u5DF2\u5B8C\u6210\u62BD\u5956\uFF08\u7528\u4E8E\u63A7\u5236\u8F6C\u76D8\u662F\u5426\u663E\u793A\u521D\u59CB\u65CB\u8F6C\u52A8\u753B\uFF09\n */\n isFinished?: boolean\n\n /**\n * GO \u6309\u94AE\u662F\u5426\u7981\u7528\n */\n isButtonDisabled: boolean\n\n /**\n * GO \u6309\u94AE\u70B9\u51FB\u56DE\u8C03\n */\n onGoClick: () => void\n\n /**\n * \u8F6C\u76D8\u5E95\u56FE URL\uFF08\u53EF\u9009\uFF09\n */\n wheelBackgroundImage?: string\n\n /**\n * \u8F6C\u76D8\u6307\u9488\u56FE\u7247 URL\uFF08\u53EF\u9009\uFF09\n */\n pointerImage?: string\n\n /**\n * \u767B\u5F55\u7528\u6237\u6570\u636E\uFF08\u53EF\u9009\uFF09\n * @optional\n */\n userData?: UserData\n\n /**\n * \u6253\u5F00\u5206\u4EAB\u5F39\u7A97\u56DE\u8C03\uFF08\u53EF\u9009\uFF09\n * @optional\n */\n onOpenShareModal?: () => void\n\n /**\n * \u81EA\u5B9A\u4E49\u7C7B\u540D\n */\n className?: string\n}\n\n/**\n * PrizePool \u5956\u54C1\u6C60\u7EC4\u4EF6 Props\n */\nexport interface PrizePoolProps {\n /**\n * \u4E3B\u9898\u6A21\u5F0F\n * @optional\n */\n theme?: Theme\n\n /**\n * \u5956\u54C1\u5217\u8868(\u901A\u5E38\u662F\u5168\u90E8 8 \u4E2A\u5956\u54C1)\n */\n prizes: Prize[]\n\n /**\n * \u6807\u9898\u6587\u672C\n * @default \"Prize Pool\"\n */\n title?: string\n\n /**\n * \u4E2D\u5956\u4EBA\u540D\u5355\u6570\u636E\n * @optional\n */\n winningInfos?: WinningInfo[]\n\n /**\n * \u81EA\u5B9A\u4E49\u7C7B\u540D\n */\n className?: string\n}\n\n/**\n * ChanceMethods \u83B7\u53D6\u673A\u4F1A\u7EC4\u4EF6 Props\n */\nexport interface ChanceMethodsProps {\n /**\n * \u4E3B\u9898\u6A21\u5F0F\n * @optional\n */\n theme?: Theme\n\n /**\n * \u83B7\u53D6\u673A\u4F1A\u65B9\u5F0F\u5217\u8868\n */\n methods: ChanceMethod[]\n\n /**\n * \u6807\u9898\u6587\u672C\n * @default \"Want more chances to win?\"\n */\n title?: string\n\n /**\n * \u526F\u6807\u9898(\u53EF\u9009)\n */\n subtitle?: string\n\n /**\n * \u5E95\u90E8\u63D0\u793A\u6587\u672C(\u53EF\u9009)\n */\n footerNote?: string\n\n /**\n * \u767B\u5F55\u7528\u6237\u6570\u636E\uFF08\u53EF\u9009\uFF09\n * @optional\n */\n userData?: UserData\n\n /**\n * \u6253\u5F00\u5206\u4EAB\u5F39\u7A97\u56DE\u8C03\uFF08\u53EF\u9009\uFF09\n * @optional\n */\n onOpenShareModal?: () => void\n\n /**\n * \u5FBD\u7AE0\u6587\u6848\n * @default \"Chance +1\"\n */\n chanceBadgeText?: string\n\n /**\n * \u5DF2\u5B8C\u6210\u72B6\u6001\u6587\u6848\n * @default \"Completed\"\n */\n completedText?: string\n\n /**\n * \u5DF2\u4F7F\u7528\u72B6\u6001\u6587\u6848\n * @default \"Used\"\n */\n usedText?: string\n\n /**\n * \u52A0\u8F7D\u4E2D\u6587\u6848\n * @default \"Loading...\"\n */\n loadingText?: string\n\n /**\n * \u81EA\u5B9A\u4E49\u7C7B\u540D\n */\n className?: string\n}\n\n/**\n * WinnerModal \u4E2D\u5956\u5F39\u7A97\u7EC4\u4EF6 Props\n */\nexport interface WinnerModalProps extends CopyTextConfig, CouponConfig, PrizeTimeTextConfig {\n /**\n * \u662F\u5426\u663E\u793A\u5F39\u7A97\n */\n isOpen: boolean\n\n /**\n * \u4E2D\u5956\u5956\u54C1\u4FE1\u606F\n */\n prize: Prize | null\n\n /**\n * \u5F39\u7A97\u6807\u9898\uFF08\u53EF\u9009\uFF0C\u9ED8\u8BA4 \"You Have Won\"\uFF09\n */\n title?: string\n\n /**\n * \u5956\u54C1\u6807\u9898\uFF08\u53EF\u9009\uFF0C\u9ED8\u8BA4\u4F7F\u7528 prize.name\uFF09\n */\n prizeTitle?: string\n\n /**\n * \u5956\u54C1\u56FE\u7247 URL\uFF08\u53EF\u9009\uFF0C\u9ED8\u8BA4\u4F7F\u7528 prize.image\uFF09\n */\n prizeImage?: string\n\n /**\n * \u5956\u54C1\u8BE6\u60C5\u63CF\u8FF0\uFF08\u53EF\u9009\uFF09\n */\n prizeDescription?: string\n\n /**\n * Learn More \u94FE\u63A5\uFF08\u53EF\u9009\uFF09\n */\n learnMoreUrl?: string\n\n /**\n * Learn More \u6309\u94AE\u6587\u672C\uFF08\u53EF\u9009\uFF0C\u9ED8\u8BA4 \"Learn More\"\uFF09\n */\n learnMoreText?: string\n\n /**\n * \u590D\u5236\u7801\u70B9\u51FB\u56DE\u8C03\n */\n onCopyCode?: (code: string) => void\n\n /**\n * \u5173\u95ED\u5F39\u7A97\u56DE\u8C03\n */\n onClose: () => void\n\n /**\n * \u786E\u8BA4\u6309\u94AE\u6587\u672C\uFF08\u53EF\u9009\uFF0C\u9ED8\u8BA4 \"Okay, Got It\"\uFF09\n */\n confirmText?: string\n\n /**\n * \u786E\u8BA4\u6309\u94AE\u70B9\u51FB\u56DE\u8C03\uFF08\u53EF\u9009\uFF09\n */\n onConfirm?: () => void\n\n /**\n * \u81EA\u5B9A\u4E49\u7C7B\u540D\n */\n className?: string\n}\n\n// ============================================================================\n// \u5DE5\u5177\u7C7B\u578B\n// ============================================================================\n\n/**\n * \u9A8C\u8BC1\u7ED3\u679C\n */\nexport interface ValidationResult {\n valid: boolean\n error?: string\n}\n\n/**\n * \u5956\u54C1\u9A8C\u8BC1\u9009\u9879\n */\nexport interface ValidatePrizesOptions {\n /**\n * \u662F\u5426\u5141\u8BB8\u7F3A\u5C11 rank \u5B57\u6BB5\n * @default true\n */\n allowMissingRank?: boolean\n\n /**\n * \u662F\u5426\u5141\u8BB8\u7F3A\u5C11 price \u5B57\u6BB5\n * @default true\n */\n allowMissingPrice?: boolean\n}\n\n// ============================================================================\n// \u7C7B\u578B\u5B88\u536B\n// ============================================================================\n\n/**\n * \u68C0\u67E5\u662F\u5426\u4E3A\u6709\u6548\u7684 Prize \u5BF9\u8C61\n * @param value \u5F85\u68C0\u67E5\u7684\u503C\n * @returns \u662F\u5426\u4E3A\u6709\u6548\u7684 Prize\n */\nexport function isPrize(value: unknown): value is Prize {\n return (\n typeof value === 'object' &&\n value !== null &&\n 'prizeKey' in value &&\n 'name' in value &&\n 'image' in value &&\n typeof (value as Prize).prizeKey === 'string' &&\n typeof (value as Prize).name === 'string' &&\n typeof (value as Prize).image === 'object'\n )\n}\n\n/**\n * \u68C0\u67E5\u662F\u5426\u4E3A\u6709\u6548\u7684 ChanceMethod \u5BF9\u8C61\n * @param value \u5F85\u68C0\u67E5\u7684\u503C\n * @returns \u662F\u5426\u4E3A\u6709\u6548\u7684 ChanceMethod\n */\nexport function isChanceMethod(value: unknown): value is ChanceMethod {\n return (\n typeof value === 'object' &&\n value !== null &&\n 'methodKey' in value &&\n 'type' in value &&\n 'title' in value &&\n 'description' in value &&\n 'onClick' in value &&\n typeof (value as ChanceMethod).methodKey === 'string' &&\n typeof (value as ChanceMethod).type === 'string' &&\n typeof (value as ChanceMethod).title === 'string' &&\n typeof (value as ChanceMethod).description === 'string' &&\n typeof (value as ChanceMethod).onClick === 'function'\n )\n}\n\n/**\n * \u68C0\u67E5\u662F\u5426\u4E3A\u6709\u6548\u7684 WinningInfo \u5BF9\u8C61\n * @param value \u5F85\u68C0\u67E5\u7684\u503C\n * @returns \u662F\u5426\u4E3A\u6709\u6548\u7684 WinningInfo\n */\nexport function isWinningInfo(value: unknown): value is WinningInfo {\n return (\n typeof value === 'object' &&\n value !== null &&\n 'winningKey' in value &&\n 'userName' in value &&\n 'prizeName' in value &&\n typeof (value as WinningInfo).winningKey === 'string' &&\n typeof (value as WinningInfo).userName === 'string' &&\n typeof (value as WinningInfo).prizeName === 'string'\n )\n}\n\n// ============================================================================\n// \u5BFC\u51FA\u7C7B\u578B\u522B\u540D\uFF08\u7528\u4E8E\u7B80\u5316\u4F7F\u7528\uFF09\n// ============================================================================\n\n/**\n * \u62BD\u5956\u56DE\u8C03\u51FD\u6570\u7C7B\u578B\n */\nexport type OnSpinEndCallback = (prize: Prize) => void\n\n/**\n * \u83B7\u53D6\u673A\u4F1A\u70B9\u51FB\u56DE\u8C03\u51FD\u6570\u7C7B\u578B\n */\nexport type OnChanceMethodClick = () => void\n"],
5
- "mappings": "yaAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,4BAAAE,EAAA,kCAAAC,EAAA,0BAAAC,EAAA,8BAAAC,EAAA,8BAAAC,EAAA,yBAAAC,EAAA,wBAAAC,EAAA,mBAAAC,EAAA,YAAAC,EAAA,kBAAAC,IAAA,eAAAC,EAAAZ,GAmIO,MAAMI,EACX,2GAEWD,EACX,2GAKWE,EACX,sHAKWC,EACX,sHAm8BWJ,EAAyC,CACpD,CACE,UAAW,gBACX,KAAM,QACN,MAAO,wBACP,YAAa,wCACb,WAAY,aACZ,gBAAiB,IAAM,CACrB,MAAM,0CAA0C,CAClD,EACA,QAAS,IAAM,CACb,QAAQ,KAAK,gFAAgF,CAC/F,EACA,SAAU,EACZ,EACA,CACE,UAAW,iBACX,KAAM,SACN,MAAO,mBACP,YAAa,yCACb,WAAY,aACZ,gBAAiB,IAAM,CACrB,MAAM,0CAA0C,CAClD,EACA,QAAS,IAAM,CACb,QAAQ,KAAK,gFAAgF,CAC/F,EACA,SAAU,EACZ,EACA,CACE,UAAW,gBACX,KAAM,QACN,MAAO,iBACP,YAAa,8BACb,WAAY,aACZ,gBAAiB,IAAM,CACrB,MAAM,0CAA0C,CAClD,EACA,QAAS,IAAM,CACb,QAAQ,KAAK,gFAAgF,CAC/F,EACA,SAAU,EACZ,CACF,EAMaK,EAAuB,CAClC,aAAc,IACd,OAAQ,WACR,YAAa,2BACf,EAyCaC,EAAkC,CAC7C,WAAY,GACZ,gBAAiB,EACjB,aAAc,KACd,iBAAkB,GAClB,WAAY,EACd,EAgSO,SAASE,EAAQG,EAAgC,CACtD,OACE,OAAOA,GAAU,UACjBA,IAAU,MACV,aAAcA,GACd,SAAUA,GACV,UAAWA,GACX,OAAQA,EAAgB,UAAa,UACrC,OAAQA,EAAgB,MAAS,UACjC,OAAQA,EAAgB,OAAU,QAEtC,CAOO,SAASJ,EAAeI,EAAuC,CACpE,OACE,OAAOA,GAAU,UACjBA,IAAU,MACV,cAAeA,GACf,SAAUA,GACV,UAAWA,GACX,gBAAiBA,GACjB,YAAaA,GACb,OAAQA,EAAuB,WAAc,UAC7C,OAAQA,EAAuB,MAAS,UACxC,OAAQA,EAAuB,OAAU,UACzC,OAAQA,EAAuB,aAAgB,UAC/C,OAAQA,EAAuB,SAAY,UAE/C,CAOO,SAASF,EAAcE,EAAsC,CAClE,OACE,OAAOA,GAAU,UACjBA,IAAU,MACV,eAAgBA,GAChB,aAAcA,GACd,cAAeA,GACf,OAAQA,EAAsB,YAAe,UAC7C,OAAQA,EAAsB,UAAa,UAC3C,OAAQA,EAAsB,WAAc,QAEhD",
6
- "names": ["types_exports", "__export", "DEFAULT_CHANCE_METHODS", "DEFAULT_POINTER_DISABLE_IMAGE", "DEFAULT_POINTER_IMAGE", "DEFAULT_WHEEL_BG_6_PRIZES", "DEFAULT_WHEEL_BG_8_PRIZES", "DEFAULT_WHEEL_CONFIG", "INITIAL_WHEEL_STATE", "isChanceMethod", "isPrize", "isWinningInfo", "__toCommonJS", "value"]
4
+ "sourcesContent": ["/**\n * \u5927\u8F6C\u76D8\u62BD\u5956\u7EC4\u4EF6\uFF08WheelLottery\uFF09\u7C7B\u578B\u5B9A\u4E49 - \u8F6C\u76D8\u4E13\u7528\u7C7B\u578B\n *\n * \u5171\u4EAB\u7C7B\u578B\u5DF2\u63D0\u53D6\u5230 LotteryShared/types.ts\uFF0C\u6B64\u6587\u4EF6\u901A\u8FC7 re-export \u4FDD\u6301\u5411\u540E\u517C\u5BB9\u3002\n *\n * @module WheelLotteryTypes\n * @date 2025-12-17\n */\n\n// ============================================================================\n// Re-export \u6240\u6709\u5171\u4EAB\u7C7B\u578B\uFF08\u5411\u540E\u517C\u5BB9\uFF09\n// ============================================================================\n\nexport * from '../LotteryShared/types.js'\n\n// ============================================================================\n// \u8F6C\u76D8\u4E13\u7528 import\n// ============================================================================\n\nimport type {\n Prize,\n WinnerModalConfig,\n ShareModalConfig,\n EasingFunction,\n ChanceMethod,\n WinningInfo,\n RulesModalConfig,\n MyRewardsModalConfig,\n ErrorModalConfig,\n UserData,\n ChanceMechanismType,\n ChanceInputConfig,\n} from '../LotteryShared/types.js'\n\nimport type { Theme } from '../../types/props.js'\n\n// ============================================================================\n// Imperative Handle \u63A5\u53E3\n// ============================================================================\n\n/**\n * WheelLottery \u7EC4\u4EF6\u547D\u4EE4\u5F0F\u63A7\u5236\u63A5\u53E3\n *\n * \u901A\u8FC7 ref \u66B4\u9732\u7ED9\u7236\u7EC4\u4EF6\uFF0C\u7528\u4E8E\u5916\u90E8\u63A7\u5236\u5F39\u7A97\u7B49\u72B6\u6001\n *\n * @example\n * ```tsx\n * const lotteryRef = useRef<WheelLotteryHandle>(null)\n *\n * <WheelLottery ref={lotteryRef} prizes={prizes} />\n *\n * // \u5916\u90E8\u89E6\u53D1\u9519\u8BEF\u5F39\u7A97\n * lotteryRef.current?.showError({\n * title: 'Network Error',\n * message: 'Failed to connect to server',\n * confirmText: 'Retry'\n * })\n *\n * // \u663E\u793A\u89C4\u5219\u5F39\u7A97\n * lotteryRef.current?.showRules()\n *\n * // \u5173\u95ED\u6240\u6709\u5F39\u7A97\n * lotteryRef.current?.hideAllModals()\n * ```\n */\nexport interface WheelLotteryHandle {\n /**\n * \u663E\u793A\u9519\u8BEF\u5F39\u7A97\n * @param config \u9519\u8BEF\u5F39\u7A97\u914D\u7F6E\n */\n showError: (config: {\n /** \u9519\u8BEF\u4FE1\u606F */\n message: string\n /** \u6807\u9898\uFF08\u53EF\u9009\uFF09 */\n title?: string\n /** \u786E\u8BA4\u6309\u94AE\u6587\u672C\uFF08\u53EF\u9009\uFF09 */\n confirmText?: string\n }) => void\n\n /**\n * \u9690\u85CF\u9519\u8BEF\u5F39\u7A97\n */\n hideError: () => void\n\n /**\n * \u663E\u793A\u672A\u4E2D\u5956\u5F39\u7A97\uFF08\u4F7F\u7528 ErrorModal\uFF09\n * @param config \u672A\u4E2D\u5956\u5F39\u7A97\u914D\u7F6E\n */\n showNoWin: (config?: {\n /** \u6807\u9898\uFF08\u53EF\u9009\uFF09 */\n title?: string\n /** \u63D0\u793A\u4FE1\u606F\uFF08\u53EF\u9009\uFF09 */\n message?: string\n /** \u786E\u8BA4\u6309\u94AE\u6587\u672C\uFF08\u53EF\u9009\uFF09 */\n confirmText?: string\n }) => void\n\n /**\n * \u9690\u85CF\u672A\u4E2D\u5956\u5F39\u7A97\n */\n hideNoWin: () => void\n\n /**\n * \u663E\u793A\u4E2D\u5956\u5F39\u7A97\n * @param prize \u4E2D\u5956\u5956\u54C1\n * @param config \u4E2D\u5956\u5F39\u7A97\u914D\u7F6E\uFF08\u53EF\u9009\uFF09\n */\n showWinner: (prize: Prize, config?: Partial<WinnerModalConfig>) => void\n\n /**\n * \u9690\u85CF\u4E2D\u5956\u5F39\u7A97\n */\n hideWinner: () => void\n\n /**\n * \u663E\u793A\u89C4\u5219\u5F39\u7A97\n */\n showRules: () => void\n\n /**\n * \u9690\u85CF\u89C4\u5219\u5F39\u7A97\n */\n hideRules: () => void\n\n /**\n * \u663E\u793A\u6211\u7684\u5956\u52B1\u5F39\u7A97\n */\n showRewards: () => void\n\n /**\n * \u9690\u85CF\u6211\u7684\u5956\u52B1\u5F39\u7A97\n */\n hideRewards: () => void\n\n /**\n * \u663E\u793A\u5206\u4EAB\u5F39\u7A97\n * @param config \u5206\u4EAB\u5F39\u7A97\u914D\u7F6E\uFF08\u53EF\u9009\uFF09\n */\n showShare: (config?: Partial<ShareModalConfig>) => void\n\n /**\n * \u9690\u85CF\u5206\u4EAB\u5F39\u7A97\n */\n hideShare: () => void\n\n /**\n * \u5173\u95ED\u6240\u6709\u5F39\u7A97\n */\n hideAllModals: () => void\n}\n\n// ============================================================================\n// \u9ED8\u8BA4\u56FE\u7247\u7D20\u6750\u5E38\u91CF\n// ============================================================================\n\n/**\n * \u9ED8\u8BA4\u8F6C\u76D8\u6307\u9488\u56FE\u7247 URL\n */\nexport const DEFAULT_POINTER_IMAGE =\n 'https://cdn.shopify.com/s/files/1/0517/2199/4432/files/2790697ba78c1a85d953787a8be9b258.png?v=1766371471'\n\nexport const DEFAULT_POINTER_DISABLE_IMAGE =\n 'https://cdn.shopify.com/s/files/1/0582/4669/3040/files/2790697ba78c1a85d953787a8be9b258.png?v=1767610632'\n\n/**\n * \u9ED8\u8BA4\u8F6C\u76D8\u5E95\u56FE\uFF086 \u4E2A\u5956\u54C1\uFF09\n */\nexport const DEFAULT_WHEEL_BG_6_PRIZES =\n 'https://cdn.shopify.com/s/files/1/0517/2199/4432/files/be866c03-4d29-4d59-a8d4-39f5d64bbc0e_ae_e_6.png?v=1766374361'\n\n/**\n * \u9ED8\u8BA4\u8F6C\u76D8\u5E95\u56FE\uFF088 \u4E2A\u5956\u54C1\uFF09\n */\nexport const DEFAULT_WHEEL_BG_8_PRIZES =\n 'https://cdn.shopify.com/s/files/1/0517/2199/4432/files/ad63174a-3da0-4dcd-ac61-c83172c7893c_ae_e_8.png?v=1766374392'\n\n// ============================================================================\n// \u7EC4\u4EF6 Props \u63A5\u53E3\n// ============================================================================\n\n/**\n * WheelLottery \u7EC4\u4EF6 Props\n *\n * @example\n * ```tsx\n * <WheelLottery\n * prizes={prizes}\n * winningPrizeId=\"prize-003\"\n * spinDuration={4000}\n * easing=\"ease-out\"\n * chanceMethods={chanceMethods}\n * chanceTitle=\"Want more chances to win?\"\n * winningInfos={winningInfos}\n * onSpinStart={() => console.log('Spin started')}\n * onSpinEnd={(prize) => alert(`You won ${prize.name}`)}\n * />\n * ```\n */\nexport interface WheelLotteryProps {\n // ========== \u5FC5\u9700 Props ==========\n\n /**\n * 8 \u4E2A\u5956\u54C1\u6570\u7EC4\uFF08\u5FC5\u9700\uFF09\n * @minLength 8\n * @maxLength 8\n * @validation \u5982\u679C\u957F\u5EA6\u4E0D\u7B49\u4E8E 8\uFF0C\u5E94\u5728\u5F00\u53D1\u73AF\u5883\u4E0B\u8F93\u51FA\u8B66\u544A\n */\n prizes: Prize[]\n\n // ========== \u8F6C\u76D8\u914D\u7F6E Props\uFF08\u53EF\u9009\uFF09 ==========\n\n /**\n * \u4E3B\u9898\u8272\n */\n theme?: Theme\n\n /**\n * \u6307\u5B9A\u4E2D\u5956\u5956\u54C1\u7684 ID\uFF0C\u7528\u4E8E\u6D4B\u8BD5\u6216\u670D\u52A1\u7AEF\u51B3\u5B9A\u7ED3\u679C\n * @note \u5FC5\u987B\u662F prizes \u6570\u7EC4\u4E2D\u67D0\u4E2A Prize \u7684 id\n * @optional\n */\n winningPrizeId?: string\n\n /**\n * \u65CB\u8F6C\u65F6\u957F\uFF08\u6BEB\u79D2\uFF09\n * @default 4000\n * @range 3000-5000\n * @optional\n */\n spinDuration?: number\n\n /**\n * \u7F13\u52A8\u51FD\u6570\n * @default \"ease-out\"\n * @optional\n */\n easing?: EasingFunction\n\n /**\n * \u8F6C\u76D8\u5E95\u56FE URL\uFF08\u652F\u6301 6 \u4E2A\u6216 8 \u4E2A\u5956\u54C1\u7684\u80CC\u666F\u56FE\uFF09\n * @default \u6839\u636E prizes.length \u81EA\u52A8\u9009\u62E9 6 \u6216 8 \u5956\u54C1\u5E95\u56FE\n * @optional\n */\n wheelBackgroundImage?: string\n\n /**\n * \u8F6C\u76D8\u6307\u9488\u56FE\u7247 URL\n * @default \u9ED8\u8BA4\u6307\u9488\u56FE\u7247\n * @optional\n */\n pointerImage?: string\n\n // ========== \u83B7\u53D6\u673A\u4F1A\u533A\u57DF Props\uFF08\u53EF\u9009\uFF09 ==========\n\n /**\n * \u83B7\u53D6\u673A\u4F1A\u65B9\u5F0F\u6570\u7EC4\n * @default DEFAULT_CHANCE_METHODS\uFF083\u79CD\u9ED8\u8BA4\u65B9\u5F0F\uFF1A\u5206\u4EAB\u3001\u79EF\u5206\u3001\u63A8\u8350\uFF09\n * @note \u5F53\u6570\u7EC4\u4E3A\u7A7A\u65F6\uFF0C\u9690\u85CF\u6574\u4E2A\"\u83B7\u53D6\u673A\u4F1A\"\u533A\u57DF\n * @optional\n */\n chanceMethods?: ChanceMethod[]\n\n /**\n * \u83B7\u53D6\u673A\u4F1A\u533A\u57DF\u673A\u5236\u7C7B\u578B\n * @default \"methods\"\n * @optional\n */\n mechanismType?: ChanceMechanismType\n\n /**\n * \u8F93\u5165\u6846\u914D\u7F6E\uFF08\u5F53 mechanismType \u4E3A 'input' \u65F6\u4F7F\u7528\uFF09\n * @optional\n */\n inputConfig?: ChanceInputConfig\n\n /**\n * \u83B7\u53D6\u673A\u4F1A\u533A\u57DF\u6807\u9898\n * @default \"Want more chances to win?\"\n * @optional\n */\n chanceTitle?: string\n\n /**\n * \u83B7\u53D6\u673A\u4F1A\u533A\u57DF\u526F\u6807\u9898\n * @optional\n */\n chanceSubtitle?: string\n\n /**\n * \u83B7\u53D6\u673A\u4F1A\u533A\u57DF\u5E95\u90E8\u63D0\u793A\n * @optional\n */\n chanceFooterNote?: string\n\n /**\n * \u83B7\u53D6\u673A\u4F1A\u65B9\u5F0F\u6587\u6848\u914D\u7F6E\n * @optional\n */\n chanceMethodsText?: {\n chanceBadgeText?: string\n completedText?: string\n usedText?: string\n loadingText?: string\n }\n\n // ========== \u4E2D\u5956\u4FE1\u606F Props\uFF08\u53EF\u9009\uFF09 ==========\n\n /**\n * \u4E2D\u5956\u4FE1\u606F\u6570\u7EC4\uFF0C\u7528\u4E8E\u5E95\u90E8\u6EDA\u52A8\u6761\u5C55\u793A\n * @default []\n * @note \u5F53\u6570\u7EC4\u4E3A\u7A7A\u65F6\uFF0C\u9690\u85CF\u5E95\u90E8\u6EDA\u52A8\u6761\u6216\u663E\u793A\u9ED8\u8BA4\u63D0\u793A\n * @optional\n */\n winningInfos?: WinningInfo[]\n\n /**\n * \u5956\u54C1\u6C60\u5C55\u793A\u533A\u57DF\u6807\u9898\n * @default \"Prize Pool\"\n * @optional\n */\n prizesTitle?: string\n\n // ========== \u56DE\u8C03\u51FD\u6570 Props\uFF08\u53EF\u9009\uFF09 ==========\n\n /**\n * \u62BD\u5956\u5F00\u59CB\u65F6\u7684\u56DE\u8C03\uFF0C\u8FD4\u56DE Promise \u4EE5\u652F\u6301\u5F02\u6B65\u63A5\u53E3\u8C03\u7528\n * @returns Promise<string> - \u4E2D\u5956\u5956\u54C1\u7684 ID\uFF0C\u5982\u679C\u63A5\u53E3\u5931\u8D25\u5219 reject\n * @optional\n * @example\n * ```tsx\n * onSpinStart={async () => {\n * const result = await fetch('/api/lottery')\n * const data = await result.json()\n * return data.prizeId // \u8FD4\u56DE\u4E2D\u5956\u5956\u54C1 ID\n * }}\n * ```\n */\n onSpinStart?: () => Promise<string>\n\n /**\n * \u62BD\u5956\u7ED3\u675F\u65F6\u7684\u56DE\u8C03\uFF0C\u4F20\u9012\u4E2D\u5956\u5956\u54C1\n * @param prize \u4E2D\u5956\u5956\u54C1\u5BF9\u8C61\n * @optional\n */\n onSpinEnd?: (prize: Prize) => void\n\n /**\n * \u62BD\u5956\u9519\u8BEF\u65F6\u7684\u56DE\u8C03\n * @param error \u9519\u8BEF\u4FE1\u606F\n * @optional\n */\n onSpinError?: (error: Error) => void\n\n // ========== \u4E2D\u5956\u5F39\u7A97\u914D\u7F6E Props\uFF08\u53EF\u9009\uFF09 ==========\n\n /**\n * \u4E2D\u5956\u5F39\u7A97\u914D\u7F6E\u5BF9\u8C61\uFF0C\u901A\u5E38\u7531\u62BD\u5956\u63A5\u53E3\u8FD4\u56DE\u63D0\u4F9B\n * @optional\n * @example\n * ```tsx\n * winnerModalConfig={{\n * title: 'Congratulations!',\n * prizeTitle: 'Anker Prime Charger',\n * prizeImage: 'https://...',\n * prizeDescription: 'High-speed charging',\n * learnMoreUrl: 'https://...',\n * couponCode: 'ANKER2024',\n * expiresAt: '2024-12-31',\n * couponDiscount: '20%',\n * confirmText: 'Claim Now'\n * }}\n * ```\n */\n winnerModalConfig?: WinnerModalConfig\n\n rulesModalConfig?: RulesModalConfig\n\n myRewardsModalConfig?: MyRewardsModalConfig\n\n errorModalConfig?: ErrorModalConfig\n\n /**\n * \u5206\u4EAB\u5F39\u7A97\u914D\u7F6E\n * @optional\n */\n shareModalConfig?: ShareModalConfig\n\n /**\n * \u672A\u767B\u5F55\u65F6\u70B9\u51FB GO \u6309\u94AE\u7684\u56DE\u8C03\n * @example\n * ```tsx\n * onLoginRequired={() => {\n * // \u6253\u5F00\u767B\u5F55\u5F39\u7A97\u6216\u8DF3\u8F6C\u767B\u5F55\u9875\n * router.push('/login')\n * }}\n * ```\n */\n onLoginRequired?: () => void\n\n // ========== \u7528\u6237\u76F8\u5173 Props\uFF08\u53EF\u9009\uFF09 ==========\n\n /**\n * \u7528\u6237\u6570\u636E\n * @optional\n * @example\n * ```tsx\n * userData={{\n * isLoggedIn: true,\n * availableChances: 3,\n * wonPrizes: [{ id: 'prize-001', name: 'Charger', image: 'https://...' }]\n * }}\n * ```\n */\n userData?: UserData\n\n /**\n * \u672A\u767B\u5F55\u65F6\u7684\u63D0\u793A\u6587\u6848\n * @default \"Please log in to participate\"\n * @optional\n */\n loginPromptText?: string\n\n /**\n * \u767B\u5F55\u6309\u94AE\u6587\u6848\n * @default \"Log In\"\n * @optional\n */\n loginButtonText?: string\n\n /**\n * \u6B21\u6570\u4E0D\u8DB3\u65F6\u7684\u63D0\u793A\u6587\u6848\n * @default \"You have no chances left\"\n * @optional\n */\n noChancesText?: string\n\n // ========== \u5F39\u7A97\u76F8\u5173 Props\uFF08\u53EF\u9009\uFF09 ==========\n\n /**\n * \u590D\u5236\u4F18\u60E0\u7801\u56DE\u8C03\n * @optional\n */\n onCopyCode?: (code: string) => void\n\n /**\n * Rules \u6309\u94AE\u6587\u672C\n * @default \"Rules\"\n * @optional\n */\n rulesText?: string\n\n /**\n * Opportunities \u6587\u672C\u6570\u7EC4\n * @default [\"Accumulate\", \"lottery opportunities\"]\n * @optional\n */\n opportunitiesText?: string[]\n\n /**\n * My Rewards \u6309\u94AE\u6587\u672C\n * @default \"My Rewards\"\n * @optional\n */\n myRewardsText?: string\n\n /**\n * \u672A\u4E2D\u5956\u5F39\u7A97\u6807\u9898\n * @default \"Sorry, You Didn't Win This Time\"\n * @optional\n */\n noWinTitle?: string\n\n /**\n * \u672A\u4E2D\u5956\u5F39\u7A97\u526F\u6807\u9898\n * @default \"Keep Trying, You Could Still Win Big!\"\n * @optional\n */\n noWinSubtitle?: string\n\n // ========== My Rewards \u5F39\u7A97\u6587\u6848\u914D\u7F6E\uFF08\u53EF\u9009\uFF09 ==========\n\n /**\n * My Rewards \u5F39\u7A97\u65E0\u5956\u52B1\u65F6\u7684\u63D0\u793A\u6587\u672C\n * @default \"No rewards yet\"\n * @optional\n */\n rewardsEmptyText?: string\n\n /**\n * My Rewards \u5F39\u7A97 CODE \u6807\u7B7E\u6587\u672C\n * @default \"CODE:\"\n * @optional\n */\n rewardsCodeLabel?: string\n\n /**\n * My Rewards \u5F39\u7A97\u590D\u5236\u6309\u94AE\u6587\u672C\n * @default \"Copy\"\n * @optional\n */\n rewardsCopyButtonText?: string\n\n /**\n * My Rewards \u5F39\u7A97\u5956\u52B1\u65F6\u95F4\u6807\u7B7E\u6587\u672C\n * @default \"Prize time:\"\n * @optional\n */\n rewardsPrizeTimeLabel?: string\n\n // ========== BaseModal \u914D\u7F6E\uFF08\u53EF\u9009\uFF09 ==========\n\n /**\n * \u5F39\u7A97\u5173\u95ED\u6309\u94AE\u7684 aria-label\n * @default \"\u5173\u95ED\u5F39\u7A97\"\n * @optional\n */\n modalCloseButtonAriaLabel?: string\n\n // ========== \u6837\u5F0F\u76F8\u5173 Props\uFF08\u53EF\u9009\uFF09 ==========\n\n /**\n * \u81EA\u5B9A\u4E49 CSS \u7C7B\u540D\uFF0C\u7528\u4E8E\u8986\u76D6\u6216\u6269\u5C55\u9ED8\u8BA4\u6837\u5F0F\n * @optional\n */\n className?: string\n}\n\n/**\n * \u9ED8\u8BA4\u8F6C\u76D8\u914D\u7F6E\n */\n\nexport const DEFAULT_WHEEL_CONFIG = {\n spinDuration: 4000, // 4 \u79D2\n easing: 'ease-out' as EasingFunction,\n chanceTitle: 'Want more chances to win?',\n}\n\n// ============================================================================\n// \u5185\u90E8\u72B6\u6001\u7C7B\u578B\uFF08\u4EC5\u4F9B\u7EC4\u4EF6\u5185\u90E8\u4F7F\u7528\uFF09\n// ============================================================================\n\n/**\n * \u8F6C\u76D8\u8FD0\u884C\u65F6\u72B6\u6001\uFF08\u7EC4\u4EF6\u5185\u90E8\u4F7F\u7528\uFF09\n * @internal\n */\nexport interface WheelState {\n /**\n * \u8F6C\u76D8\u662F\u5426\u6B63\u5728\u65CB\u8F6C\n */\n isSpinning: boolean\n\n /**\n * \u5F53\u524D\u65CB\u8F6C\u89D2\u5EA6\uFF08\u5EA6\u6570\uFF09\n */\n currentRotation: number\n\n /**\n * \u4E2D\u5956\u5956\u54C1\uFF0C\u62BD\u5956\u7ED3\u675F\u540E\u8BBE\u7F6E\n */\n winningPrize: Prize | null\n\n /**\n * GO \u6309\u94AE\u662F\u5426\u7981\u7528\n */\n isButtonDisabled: boolean\n\n /**\n * \u662F\u5426\u5DF2\u5B8C\u6210\u62BD\u5956\uFF08\u7528\u4E8E\u63A7\u5236\u8F6C\u76D8\u662F\u5426\u663E\u793A\u521D\u59CB\u65CB\u8F6C\u52A8\u753B\uFF09\n */\n isFinished: boolean\n}\n\n/**\n * \u521D\u59CB\u8F6C\u76D8\u72B6\u6001\n * @internal\n */\nexport const INITIAL_WHEEL_STATE: WheelState = {\n isSpinning: false,\n currentRotation: 0,\n winningPrize: null,\n isButtonDisabled: false,\n isFinished: false,\n}\n\n// ============================================================================\n// \u8F6C\u76D8\u5B50\u7EC4\u4EF6 Props \u7C7B\u578B\n// ============================================================================\n\n/**\n * Wheel \u8F6C\u76D8\u7EC4\u4EF6 Props\n */\nexport interface WheelProps {\n /**\n * \u4E3B\u9898\u6A21\u5F0F\n * @optional\n */\n theme?: Theme\n\n /**\n * 8 \u4E2A\u5956\u54C1\u6570\u7EC4\n */\n prizes: Prize[]\n\n /**\n * \u5F53\u524D\u65CB\u8F6C\u89D2\u5EA6(\u5EA6\u6570)\n */\n rotation: number\n\n /**\n * \u662F\u5426\u6B63\u5728\u65CB\u8F6C\n */\n isSpinning: boolean\n\n /**\n * \u662F\u5426\u5DF2\u5B8C\u6210\u62BD\u5956\uFF08\u7528\u4E8E\u63A7\u5236\u8F6C\u76D8\u662F\u5426\u663E\u793A\u521D\u59CB\u65CB\u8F6C\u52A8\u753B\uFF09\n */\n isFinished?: boolean\n\n /**\n * GO \u6309\u94AE\u662F\u5426\u7981\u7528\n */\n isButtonDisabled: boolean\n\n /**\n * GO \u6309\u94AE\u70B9\u51FB\u56DE\u8C03\n */\n onGoClick: () => void\n\n /**\n * \u8F6C\u76D8\u5E95\u56FE URL\uFF08\u53EF\u9009\uFF09\n */\n wheelBackgroundImage?: string\n\n /**\n * \u8F6C\u76D8\u6307\u9488\u56FE\u7247 URL\uFF08\u53EF\u9009\uFF09\n */\n pointerImage?: string\n\n /**\n * \u767B\u5F55\u7528\u6237\u6570\u636E\uFF08\u53EF\u9009\uFF09\n * @optional\n */\n userData?: UserData\n\n /**\n * \u6253\u5F00\u5206\u4EAB\u5F39\u7A97\u56DE\u8C03\uFF08\u53EF\u9009\uFF09\n * @optional\n */\n onOpenShareModal?: () => void\n\n /**\n * \u81EA\u5B9A\u4E49\u7C7B\u540D\n */\n className?: string\n}\n\n// ============================================================================\n// \u5DE5\u5177\u7C7B\u578B\n// ============================================================================\n\n/**\n * \u9A8C\u8BC1\u7ED3\u679C\n */\nexport interface ValidationResult {\n valid: boolean\n error?: string\n}\n\n/**\n * \u5956\u54C1\u9A8C\u8BC1\u9009\u9879\n */\nexport interface ValidatePrizesOptions {\n /**\n * \u662F\u5426\u5141\u8BB8\u7F3A\u5C11 rank \u5B57\u6BB5\n * @default true\n */\n allowMissingRank?: boolean\n\n /**\n * \u662F\u5426\u5141\u8BB8\u7F3A\u5C11 price \u5B57\u6BB5\n * @default true\n */\n allowMissingPrice?: boolean\n}\n"],
5
+ "mappings": "2dAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,mCAAAE,EAAA,0BAAAC,EAAA,8BAAAC,EAAA,8BAAAC,EAAA,yBAAAC,EAAA,wBAAAC,IAAA,eAAAC,EAAAR,GAaAS,EAAAT,EAAc,qCAbd,gBA8JO,MAAMG,EACX,2GAEWD,EACX,2GAKWE,EACX,sHAKWC,EACX,sHAqWWC,EAAuB,CAClC,aAAc,IACd,OAAQ,WACR,YAAa,2BACf,EAyCaC,EAAkC,CAC7C,WAAY,GACZ,gBAAiB,EACjB,aAAc,KACd,iBAAkB,GAClB,WAAY,EACd",
6
+ "names": ["types_exports", "__export", "DEFAULT_POINTER_DISABLE_IMAGE", "DEFAULT_POINTER_IMAGE", "DEFAULT_WHEEL_BG_6_PRIZES", "DEFAULT_WHEEL_BG_8_PRIZES", "DEFAULT_WHEEL_CONFIG", "INITIAL_WHEEL_STATE", "__toCommonJS", "__reExport"]
7
7
  }
@@ -75,6 +75,8 @@ export type { BrandCardLinkProps, BrandCardLinkItemProps } from './BrandCardLink
75
75
  export * as IPRedirect from './IPRedirect/index.js';
76
76
  export { default as WheelLottery } from './WheelLottery/index.js';
77
77
  export type { WheelLotteryProps, WheelLotteryHandle, Prize, ChanceMethod, WinningInfo, UserData, } from './WheelLottery/types.js';
78
+ export { default as ProductLottery } from './ProductLottery/index.js';
79
+ export type { ProductLotteryProps, ProductLotteryHandle, MediaConfig, CtaButtonConfig } from './ProductLottery/types.js';
78
80
  export { default as ProductCompare } from './ProductCompare/index.js';
79
81
  export type { ProductCompareProps, ProductItemData } from './ProductCompare/index.js';
80
82
  export { default as Ksp } from './Ksp/index.js';
@@ -1,2 +1,2 @@
1
- "use strict";var Je=Object.create;var p=Object.defineProperty;var Qe=Object.getOwnPropertyDescriptor;var Xe=Object.getOwnPropertyNames;var Ze=Object.getPrototypeOf,$e=Object.prototype.hasOwnProperty;var et=(t,r)=>{for(var a in r)p(t,a,{get:r[a],enumerable:!0})},u=(t,r,a,l)=>{if(r&&typeof r=="object"||typeof r=="function")for(let i of Xe(r))!$e.call(t,i)&&i!==a&&p(t,i,{get:()=>r[i],enumerable:!(l=Qe(r,i))||l.enumerable});return t};var e=(t,r,a)=>(a=t!=null?Je(Ze(t)):{},u(r||!t||!t.__esModule?p(a,"default",{value:t,enumerable:!0}):a,t)),tt=t=>u(p({},"__esModule",{value:!0}),t);var at={};et(at,{AccordionCards:()=>I.default,ActiveShelf:()=>He.default,ActivityMechanism:()=>h.default,ActivitySchedule:()=>m.default,AiuiProvider:()=>R.default,AnchorNavigation:()=>We.default,AplusDesc:()=>xe.default,BenefitsTab:()=>ce.default,BizProductProvider:()=>U.default,BrandCardLink:()=>Ce.default,BrandEquity:()=>y.default,BuyOneGetOneShelf:()=>Ve.default,Category:()=>v.default,CreativeModule:()=>H.default,CreditsProductCard:()=>f.CreditsProductCard,CreditsShelf:()=>f.default,DownLoad:()=>Pe.default,Evaluate:()=>B.default,EventSchedule:()=>Oe.default,Faq:()=>w.default,FeatureCards:()=>Te.default,FeatureShowcase:()=>De.default,FeaturedBlogPosts:()=>Ie.default,Features:()=>ne.default,FootCharger:()=>Se.default,FooterNavigation:()=>W.default,GiftBox:()=>he.default,GiftShelf:()=>n.default,GiftTierShelf:()=>x.default,Graphic:()=>F.default,GraphicAttractionBlock:()=>q.default,GraphicMore:()=>me.default,GraphicOverlay:()=>K.default,HeaderNavigation:()=>E.default,HeroBanner:()=>T.default,IPC_SEARCH_PAGE:()=>s.IPC_SEARCH_PAGE,IPRedirect:()=>ot,ImageOverlayShelf:()=>ze.default,ImageTextFeature:()=>ve.default,ImageWithText:()=>Fe.default,Ksp:()=>Be.default,Marquee:()=>D.default,MarqueeImageContent:()=>o.MarqueeImageContent,MarqueeItem:()=>o.MarqueeItem,MarqueeReview:()=>b.default,MarqueeTextContent:()=>o.MarqueeTextContent,MediaEndorsement:()=>_e.default,MediaPlayerBase:()=>G.default,MediaPlayerMulti:()=>A.default,MediaPlayerSticky:()=>j.default,MediaSceneSwitcher:()=>we.default,MediaSceneSwitcherV2:()=>Le.default,MediaShelf:()=>Ke.default,MemberEquity:()=>P.default,MiniCart:()=>Ue.default,MiniCartCircleProgress:()=>Ye.default,MiniCartDialog:()=>c.default,MiniCartDialogComponent:()=>c.MiniCartDialog,MultiLayoutGraphicBlock:()=>L.default,PAYLOAD_COMPONENT_MAP:()=>rt,PaidShipping:()=>le.default,ProductActions:()=>J.default,ProductBanner:()=>ie.default,ProductBenefits:()=>Z.default,ProductBenefitsTabs:()=>X.default,ProductBundle:()=>ae.default,ProductCard:()=>Q.default,ProductCompare:()=>Me.default,ProductCoupon:()=>oe.default,ProductDetail:()=>fe.default,ProductExchangePurchase:()=>te.default,ProductFreeGift:()=>ee.default,ProductGallery:()=>se.default,ProductGridBox:()=>pe.default,ProductHero:()=>be.default,ProductHighlight:()=>$.default,ProductNav:()=>Ee.default,ProductOptions:()=>re.default,ProductPaidShipping:()=>ue.default,ProductSummary:()=>de.default,PromotionalBar:()=>Ne.default,PurchaseBar:()=>Y.default,SceneProductCard:()=>d.SceneProductCard,SceneShelf:()=>d.default,SearchPage:()=>N.default,SearchPageTabType:()=>s.SearchPageTabType,SecondaryBanner:()=>Re.default,SelectStore:()=>ye.default,ShelfDisplay:()=>M.default,Slogan:()=>S.default,Spacer:()=>g.default,Specs:()=>_.default,SpecsComparison:()=>ke.default,TabGroup:()=>z.default,TabWithImage:()=>Ae.default,Tabs:()=>V.default,TabsWithMedia:()=>je.default,ThreeDCarousel:()=>qe.default,Title:()=>C.default,VideoFeature:()=>Ge.default,WheelLottery:()=>ge.default,WhyChoose:()=>k.default,withLayout:()=>O.withLayout});module.exports=tt(at);var m=e(require("./ActivitySchedule/index.js")),n=e(require("./GiftShelf/index.js")),x=e(require("./GiftTierShelf/index.js")),h=e(require("./ActivityMechanism/index.js")),y=e(require("./BrandEquity/index.js")),P=e(require("./MemberEquity/index.js")),S=e(require("./Slogan/index.js")),C=e(require("./Title/index.js")),g=e(require("./Spacer/index.js")),M=e(require("./ShelfDisplay/index.js")),B=e(require("./Evaluate/index.js")),v=e(require("./Category/index.js")),T=e(require("./HeroBanner/index.js")),I=e(require("./AccordionCards/index.js")),F=e(require("./Graphic/index.js")),G=e(require("./MediaPlayerBase/index.js")),j=e(require("./MediaPlayerSticky/index.js")),A=e(require("./MediaPlayerMulti/index.js")),D=e(require("./Marquee/index.js")),b=e(require("./MarqueeReview/index.js")),k=e(require("./WhyChoose/index.js")),w=e(require("./Faq/index.js")),o=require("./Marquee/index.js"),L=e(require("./MultiLayoutGraphicBlock/index.js")),q=e(require("./GraphicAttractionBlock/index.js")),E=e(require("./HeaderNavigation/index.js")),W=e(require("./FooterNavigation/index.js")),N=e(require("./SearchPage/index.js")),s=require("./SearchPage/types.js"),O=require("../shared/Styles.js"),R=e(require("./AiuiProvider/index.js")),V=e(require("./Tabs/index.js")),H=e(require("./CreativeModule/index.js")),K=e(require("./GraphicOverlay/index.js")),_=e(require("./Specs/index.js")),z=e(require("./TabsGroup/index.js")),U=e(require("./Listing/BizProductProvider.js")),Y=e(require("./Listing/components/PurchaseBar/index.js")),J=e(require("./Listing/components/PurchaseBar/ProductActions/index.js")),Q=e(require("./Listing/components/ProductCard/index.js")),X=e(require("./Listing/components/ProductCard/ProductDetail/ProductBenefitsTabs/index.js")),Z=e(require("./Listing/components/ProductCard/ProductDetail/ProductBenefits/index.js")),$=e(require("./Listing/components/ProductCard/ProductDetail/ProductHighlight/index.js")),ee=e(require("./Listing/components/ProductCard/ProductDetail/ProductFreeGift/index.js")),te=e(require("./Listing/components/ProductCard/ProductDetail/ProductExchangePurchase/index.js")),re=e(require("./Listing/components/ProductCard/ProductDetail/ProductOptions/index.js")),ae=e(require("./Listing/components/ProductCard/ProductDetail/ProductBundle/index.js")),oe=e(require("./Listing/components/ProductCard/ProductDetail/ProductCoupon/index.js")),ie=e(require("./Listing/components/ProductCard/ProductDetail/ProductBanner/index.js")),pe=e(require("./Listing/components/ProductCard/ProductGridBox.js")),se=e(require("./Listing/components/ProductCard/ProductGallery/index.js")),fe=e(require("./Listing/components/ProductCard/ProductDetail/index.js")),de=e(require("./Listing/components/ProductCard/ProductSummary/index.js")),ce=e(require("./Listing/components/ProductCard/ProductDetail/BenefitsTab.js")),le=e(require("./Listing/components/PaidShipping/index.js")),ue=e(require("./Listing/components/ProductCard/ProductPaidShipping/index.js")),me=e(require("./GraphicMore/index.js")),ne=e(require("./Features/index.js")),xe=e(require("./AplusDesc/index.js")),he=e(require("./GiftBox/index.js")),ye=e(require("./SelectStore/index.js")),Pe=e(require("./DownLoad/index.js")),Se=e(require("./FootCharger/index.js")),Ce=e(require("./BrandCardLink/index.js")),ot=e(require("./IPRedirect/index.js")),ge=e(require("./WheelLottery/index.js")),Me=e(require("./ProductCompare/index.js")),Be=e(require("./Ksp/index.js")),ve=e(require("./ImageTextFeature/index.js")),Te=e(require("./FeatureCards/index.js")),Ie=e(require("./FeaturedBlogPosts/index.js")),Fe=e(require("./ImageWithText/index.js")),Ge=e(require("./VideoFeature/index.js")),je=e(require("./TabsWithMedia/index.js")),Ae=e(require("./TabWithImage/index.js")),De=e(require("./FeatureShowcase/index.js")),be=e(require("./ProductHero/index.js")),ke=e(require("./SpecsComparison/index.js")),we=e(require("./MediaSceneSwitcher/index.js")),Le=e(require("./MediaSceneSwitcherV2/index.js")),qe=e(require("./ThreeDCarousel/index.js")),Ee=e(require("./ProductNav/index.js")),We=e(require("./AnchorNavigation/index.js")),Ne=e(require("./PromotionalBar/index.js")),Oe=e(require("./EventSchedule/index.js")),Re=e(require("./SecondaryBanner/index.js")),Ve=e(require("./BuyOneGetOneShelf/index.js")),He=e(require("./ActiveShelf/index.js")),Ke=e(require("./MediaShelf/index.js")),f=e(require("./CreditsShelf/index.js")),d=e(require("./SceneShelf/index.js")),_e=e(require("./MediaEndorsement/index.js")),ze=e(require("./ImageOverlayShelf/index.js")),Ue=e(require("./MiniCart/index.js")),Ye=e(require("./MiniCart/CircleProgress.js")),c=e(require("./MiniCart/MiniCartDialog.js"));const rt={"ipc-accordioncards":"AccordionCards","ipc-aplusdesc":"AplusDesc","ipc-banner":"HeroBanner","ipc-brand-equity":"BrandEquity","ipc-category":"Category","ipc-collection-banner":"CollectionBanner","ipc-collection-shelves":"CollectionShelves","ipc-creativemodule":"CreativeModule","ipc-download":"DownLoad","ipc-evaluate":"Evaluate","ipc-faq":"Faq","ipc-features":"Features","ipc-footcharger":"FootCharger","ipc-ga-block":"GraphicAttractionBlock","ipc-giftbox":"GiftBox","ipc-giftshelf":"GiftShelf","ipc-graphic":"Graphic","ipc-graphicmore":"GraphicMore","ipc-graphicoverlay":"GraphicOverlay","ipc-marquee":"Marquee","ipc-mediaplayerbase":"MediaPlayerBase","ipc-mediaplayermulti":"MediaPlayerMulti","ipc-mediaplayersticky":"MediaPlayerSticky","ipc-member-equity":"MemberEquity","ipc-mlg-block":"MultiLayoutGraphicBlock","ipc-search-page-tabs":"SearchPageBlock","ipc-selectstore":"SelectStore","ipc-shelfdisplay":"ShelfDisplay","ipc-slogan":"Slogan","ipc-spacer":"Spacer","ipc-specs":"Specs","ipc-tabs":"TabsBlock","ipc-text-marquee":"TextMarquee","ipc-title":"Title","ipc-whychoose":"WhyChoose","ipc-product-nav":"ProductNav","ipc-brand-card-link":"BrandCardLink","ipc-ipredirect":"IPRedirect",ksp:"Ksp","ipc-secondary-banner":"SecondaryBanner","ipc-active-shelf":"ActiveShelf","ipc-media-shelf":"MediaShelf","ipc-bogo-shelf":"BuyOneGetOneShelf","ipc-media-endorsement":"MediaEndorsement","ipc-media-scene-switcher-v2":"MediaSceneSwitcherV2","ipc-featured-blog-posts":"FeaturedBlogPosts"};
1
+ "use strict";var Qe=Object.create;var p=Object.defineProperty;var Xe=Object.getOwnPropertyDescriptor;var Ze=Object.getOwnPropertyNames;var $e=Object.getPrototypeOf,et=Object.prototype.hasOwnProperty;var tt=(t,r)=>{for(var o in r)p(t,o,{get:r[o],enumerable:!0})},l=(t,r,o,u)=>{if(r&&typeof r=="object"||typeof r=="function")for(let i of Ze(r))!et.call(t,i)&&i!==o&&p(t,i,{get:()=>r[i],enumerable:!(u=Xe(r,i))||u.enumerable});return t};var e=(t,r,o)=>(o=t!=null?Qe($e(t)):{},l(r||!t||!t.__esModule?p(o,"default",{value:t,enumerable:!0}):o,t)),rt=t=>l(p({},"__esModule",{value:!0}),t);var at={};tt(at,{AccordionCards:()=>I.default,ActiveShelf:()=>Ke.default,ActivityMechanism:()=>h.default,ActivitySchedule:()=>n.default,AiuiProvider:()=>R.default,AnchorNavigation:()=>Ne.default,AplusDesc:()=>xe.default,BenefitsTab:()=>ce.default,BizProductProvider:()=>U.default,BrandCardLink:()=>Ce.default,BrandEquity:()=>y.default,BuyOneGetOneShelf:()=>Ve.default,Category:()=>v.default,CreativeModule:()=>V.default,CreditsProductCard:()=>f.CreditsProductCard,CreditsShelf:()=>f.default,DownLoad:()=>Pe.default,Evaluate:()=>B.default,EventSchedule:()=>Re.default,Faq:()=>w.default,FeatureCards:()=>Ie.default,FeatureShowcase:()=>be.default,FeaturedBlogPosts:()=>Fe.default,Features:()=>me.default,FootCharger:()=>Se.default,FooterNavigation:()=>W.default,GiftBox:()=>he.default,GiftShelf:()=>m.default,GiftTierShelf:()=>x.default,Graphic:()=>F.default,GraphicAttractionBlock:()=>q.default,GraphicMore:()=>ne.default,GraphicOverlay:()=>K.default,HeaderNavigation:()=>E.default,HeroBanner:()=>T.default,IPC_SEARCH_PAGE:()=>s.IPC_SEARCH_PAGE,IPRedirect:()=>it,ImageOverlayShelf:()=>Ue.default,ImageTextFeature:()=>Te.default,ImageWithText:()=>je.default,Ksp:()=>ve.default,Marquee:()=>D.default,MarqueeImageContent:()=>a.MarqueeImageContent,MarqueeItem:()=>a.MarqueeItem,MarqueeReview:()=>b.default,MarqueeTextContent:()=>a.MarqueeTextContent,MediaEndorsement:()=>ze.default,MediaPlayerBase:()=>j.default,MediaPlayerMulti:()=>A.default,MediaPlayerSticky:()=>G.default,MediaSceneSwitcher:()=>Le.default,MediaSceneSwitcherV2:()=>qe.default,MediaShelf:()=>_e.default,MemberEquity:()=>P.default,MiniCart:()=>Ye.default,MiniCartCircleProgress:()=>Je.default,MiniCartDialog:()=>c.default,MiniCartDialogComponent:()=>c.MiniCartDialog,MultiLayoutGraphicBlock:()=>L.default,PAYLOAD_COMPONENT_MAP:()=>ot,PaidShipping:()=>ue.default,ProductActions:()=>J.default,ProductBanner:()=>ie.default,ProductBenefits:()=>Z.default,ProductBenefitsTabs:()=>X.default,ProductBundle:()=>oe.default,ProductCard:()=>Q.default,ProductCompare:()=>Be.default,ProductCoupon:()=>ae.default,ProductDetail:()=>fe.default,ProductExchangePurchase:()=>te.default,ProductFreeGift:()=>ee.default,ProductGallery:()=>se.default,ProductGridBox:()=>pe.default,ProductHero:()=>ke.default,ProductHighlight:()=>$.default,ProductLottery:()=>Me.default,ProductNav:()=>We.default,ProductOptions:()=>re.default,ProductPaidShipping:()=>le.default,ProductSummary:()=>de.default,PromotionalBar:()=>Oe.default,PurchaseBar:()=>Y.default,SceneProductCard:()=>d.SceneProductCard,SceneShelf:()=>d.default,SearchPage:()=>N.default,SearchPageTabType:()=>s.SearchPageTabType,SecondaryBanner:()=>He.default,SelectStore:()=>ye.default,ShelfDisplay:()=>M.default,Slogan:()=>S.default,Spacer:()=>g.default,Specs:()=>_.default,SpecsComparison:()=>we.default,TabGroup:()=>z.default,TabWithImage:()=>De.default,Tabs:()=>H.default,TabsWithMedia:()=>Ae.default,ThreeDCarousel:()=>Ee.default,Title:()=>C.default,VideoFeature:()=>Ge.default,WheelLottery:()=>ge.default,WhyChoose:()=>k.default,withLayout:()=>O.withLayout});module.exports=rt(at);var n=e(require("./ActivitySchedule/index.js")),m=e(require("./GiftShelf/index.js")),x=e(require("./GiftTierShelf/index.js")),h=e(require("./ActivityMechanism/index.js")),y=e(require("./BrandEquity/index.js")),P=e(require("./MemberEquity/index.js")),S=e(require("./Slogan/index.js")),C=e(require("./Title/index.js")),g=e(require("./Spacer/index.js")),M=e(require("./ShelfDisplay/index.js")),B=e(require("./Evaluate/index.js")),v=e(require("./Category/index.js")),T=e(require("./HeroBanner/index.js")),I=e(require("./AccordionCards/index.js")),F=e(require("./Graphic/index.js")),j=e(require("./MediaPlayerBase/index.js")),G=e(require("./MediaPlayerSticky/index.js")),A=e(require("./MediaPlayerMulti/index.js")),D=e(require("./Marquee/index.js")),b=e(require("./MarqueeReview/index.js")),k=e(require("./WhyChoose/index.js")),w=e(require("./Faq/index.js")),a=require("./Marquee/index.js"),L=e(require("./MultiLayoutGraphicBlock/index.js")),q=e(require("./GraphicAttractionBlock/index.js")),E=e(require("./HeaderNavigation/index.js")),W=e(require("./FooterNavigation/index.js")),N=e(require("./SearchPage/index.js")),s=require("./SearchPage/types.js"),O=require("../shared/Styles.js"),R=e(require("./AiuiProvider/index.js")),H=e(require("./Tabs/index.js")),V=e(require("./CreativeModule/index.js")),K=e(require("./GraphicOverlay/index.js")),_=e(require("./Specs/index.js")),z=e(require("./TabsGroup/index.js")),U=e(require("./Listing/BizProductProvider.js")),Y=e(require("./Listing/components/PurchaseBar/index.js")),J=e(require("./Listing/components/PurchaseBar/ProductActions/index.js")),Q=e(require("./Listing/components/ProductCard/index.js")),X=e(require("./Listing/components/ProductCard/ProductDetail/ProductBenefitsTabs/index.js")),Z=e(require("./Listing/components/ProductCard/ProductDetail/ProductBenefits/index.js")),$=e(require("./Listing/components/ProductCard/ProductDetail/ProductHighlight/index.js")),ee=e(require("./Listing/components/ProductCard/ProductDetail/ProductFreeGift/index.js")),te=e(require("./Listing/components/ProductCard/ProductDetail/ProductExchangePurchase/index.js")),re=e(require("./Listing/components/ProductCard/ProductDetail/ProductOptions/index.js")),oe=e(require("./Listing/components/ProductCard/ProductDetail/ProductBundle/index.js")),ae=e(require("./Listing/components/ProductCard/ProductDetail/ProductCoupon/index.js")),ie=e(require("./Listing/components/ProductCard/ProductDetail/ProductBanner/index.js")),pe=e(require("./Listing/components/ProductCard/ProductGridBox.js")),se=e(require("./Listing/components/ProductCard/ProductGallery/index.js")),fe=e(require("./Listing/components/ProductCard/ProductDetail/index.js")),de=e(require("./Listing/components/ProductCard/ProductSummary/index.js")),ce=e(require("./Listing/components/ProductCard/ProductDetail/BenefitsTab.js")),ue=e(require("./Listing/components/PaidShipping/index.js")),le=e(require("./Listing/components/ProductCard/ProductPaidShipping/index.js")),ne=e(require("./GraphicMore/index.js")),me=e(require("./Features/index.js")),xe=e(require("./AplusDesc/index.js")),he=e(require("./GiftBox/index.js")),ye=e(require("./SelectStore/index.js")),Pe=e(require("./DownLoad/index.js")),Se=e(require("./FootCharger/index.js")),Ce=e(require("./BrandCardLink/index.js")),it=e(require("./IPRedirect/index.js")),ge=e(require("./WheelLottery/index.js")),Me=e(require("./ProductLottery/index.js")),Be=e(require("./ProductCompare/index.js")),ve=e(require("./Ksp/index.js")),Te=e(require("./ImageTextFeature/index.js")),Ie=e(require("./FeatureCards/index.js")),Fe=e(require("./FeaturedBlogPosts/index.js")),je=e(require("./ImageWithText/index.js")),Ge=e(require("./VideoFeature/index.js")),Ae=e(require("./TabsWithMedia/index.js")),De=e(require("./TabWithImage/index.js")),be=e(require("./FeatureShowcase/index.js")),ke=e(require("./ProductHero/index.js")),we=e(require("./SpecsComparison/index.js")),Le=e(require("./MediaSceneSwitcher/index.js")),qe=e(require("./MediaSceneSwitcherV2/index.js")),Ee=e(require("./ThreeDCarousel/index.js")),We=e(require("./ProductNav/index.js")),Ne=e(require("./AnchorNavigation/index.js")),Oe=e(require("./PromotionalBar/index.js")),Re=e(require("./EventSchedule/index.js")),He=e(require("./SecondaryBanner/index.js")),Ve=e(require("./BuyOneGetOneShelf/index.js")),Ke=e(require("./ActiveShelf/index.js")),_e=e(require("./MediaShelf/index.js")),f=e(require("./CreditsShelf/index.js")),d=e(require("./SceneShelf/index.js")),ze=e(require("./MediaEndorsement/index.js")),Ue=e(require("./ImageOverlayShelf/index.js")),Ye=e(require("./MiniCart/index.js")),Je=e(require("./MiniCart/CircleProgress.js")),c=e(require("./MiniCart/MiniCartDialog.js"));const ot={"ipc-accordioncards":"AccordionCards","ipc-aplusdesc":"AplusDesc","ipc-banner":"HeroBanner","ipc-brand-equity":"BrandEquity","ipc-category":"Category","ipc-collection-banner":"CollectionBanner","ipc-collection-shelves":"CollectionShelves","ipc-creativemodule":"CreativeModule","ipc-download":"DownLoad","ipc-evaluate":"Evaluate","ipc-faq":"Faq","ipc-features":"Features","ipc-footcharger":"FootCharger","ipc-ga-block":"GraphicAttractionBlock","ipc-giftbox":"GiftBox","ipc-giftshelf":"GiftShelf","ipc-graphic":"Graphic","ipc-graphicmore":"GraphicMore","ipc-graphicoverlay":"GraphicOverlay","ipc-marquee":"Marquee","ipc-mediaplayerbase":"MediaPlayerBase","ipc-mediaplayermulti":"MediaPlayerMulti","ipc-mediaplayersticky":"MediaPlayerSticky","ipc-member-equity":"MemberEquity","ipc-mlg-block":"MultiLayoutGraphicBlock","ipc-search-page-tabs":"SearchPageBlock","ipc-selectstore":"SelectStore","ipc-shelfdisplay":"ShelfDisplay","ipc-slogan":"Slogan","ipc-spacer":"Spacer","ipc-specs":"Specs","ipc-tabs":"TabsBlock","ipc-text-marquee":"TextMarquee","ipc-title":"Title","ipc-whychoose":"WhyChoose","ipc-product-nav":"ProductNav","ipc-brand-card-link":"BrandCardLink","ipc-ipredirect":"IPRedirect",ksp:"Ksp","ipc-secondary-banner":"SecondaryBanner","ipc-active-shelf":"ActiveShelf","ipc-media-shelf":"MediaShelf","ipc-bogo-shelf":"BuyOneGetOneShelf","ipc-media-endorsement":"MediaEndorsement","ipc-media-scene-switcher-v2":"MediaSceneSwitcherV2","ipc-featured-blog-posts":"FeaturedBlogPosts"};
2
2
  //# sourceMappingURL=index.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/biz-components/index.ts"],
4
- "sourcesContent": ["export { default as ActivitySchedule } from './ActivitySchedule/index.js'\nexport type { ActivityScheduleProps, ActivityScheduleData, ActivityScheduleItem } from './ActivitySchedule/types.js'\nexport { default as GiftShelf } from './GiftShelf/index.js'\nexport type {\n GiftShelfProps,\n GiftShelfData,\n GiftShelfItem,\n CountdownConfig,\n ResponsiveBackgroundImage as GiftShelfResponsiveBackgroundImage,\n} from './GiftShelf/types.js'\nexport { default as GiftTierShelf } from './GiftTierShelf/index.js'\nexport type { GiftTierShelfProps, GiftTierShelfData, GiftTierItem, GiftTierProduct } from './GiftTierShelf/types.js'\nexport { default as ActivityMechanism } from './ActivityMechanism/index.js'\nexport type {\n ActivityMechanismProps,\n ActivityMechanismItem,\n ActivityMechanismSemanticName,\n ResponsiveBackgroundImage,\n} from './ActivityMechanism/types.js'\nexport { default as BrandEquity } from './BrandEquity/index.js'\nexport { default as MemberEquity } from './MemberEquity/index.js'\nexport { default as Slogan } from './Slogan/index.js'\nexport { default as Title } from './Title/index.js'\nexport { default as Spacer } from './Spacer/index.js'\nexport { default as ShelfDisplay } from './ShelfDisplay/index.js'\nexport { default as Evaluate } from './Evaluate/index.js'\nexport { default as Category } from './Category/index.js'\nexport { default as HeroBanner } from './HeroBanner/index.js'\nexport { default as AccordionCards } from './AccordionCards/index.js'\nexport { default as Graphic } from './Graphic/index.js'\nexport { default as MediaPlayerBase } from './MediaPlayerBase/index.js'\nexport { default as MediaPlayerSticky } from './MediaPlayerSticky/index.js'\nexport { default as MediaPlayerMulti } from './MediaPlayerMulti/index.js'\nexport { default as Marquee } from './Marquee/index.js'\nexport { default as MarqueeReview } from './MarqueeReview/index.js'\nexport type { MarqueeReviewProps, MarqueeReviewData, ReviewItem } from './MarqueeReview/index.js'\nexport { default as WhyChoose } from './WhyChoose/index.js'\nexport { default as Faq } from './Faq/index.js'\nexport { MarqueeItem, MarqueeImageContent, MarqueeTextContent } from './Marquee/index.js'\nexport { default as MultiLayoutGraphicBlock } from './MultiLayoutGraphicBlock/index.js'\nexport type { MultiLayoutGraphicBlockProps } from './MultiLayoutGraphicBlock/index.js'\nexport { default as GraphicAttractionBlock } from './GraphicAttractionBlock/index.js'\nexport type { GraphicAttractionBlockProps } from './GraphicAttractionBlock/index.js'\nexport { default as HeaderNavigation } from './HeaderNavigation/index.js'\nexport { default as FooterNavigation } from './FooterNavigation/index.js'\nexport { default as SearchPage } from './SearchPage/index.js'\nexport type { SearchPageProps } from './SearchPage/types.js'\nexport { IPC_SEARCH_PAGE, SearchPageTabType } from './SearchPage/types.js'\n\nexport { withLayout } from '../shared/Styles.js'\nexport { default as AiuiProvider } from './AiuiProvider/index.js'\nexport { default as Tabs } from './Tabs/index.js'\nexport { default as CreativeModule } from './CreativeModule/index.js'\nexport { default as GraphicOverlay } from './GraphicOverlay/index.js'\nexport { default as Specs } from './Specs/index.js'\nexport { default as TabGroup } from './TabsGroup/index.js'\n\nexport { default as BizProductProvider } from './Listing/BizProductProvider.js'\nexport { default as PurchaseBar } from './Listing/components/PurchaseBar/index.js'\nexport { default as ProductActions } from './Listing/components/PurchaseBar/ProductActions/index.js'\nexport type { ProductActionsProps } from './Listing/components/PurchaseBar/ProductActions/index.js'\nexport { default as ProductCard } from './Listing/components/ProductCard/index.js'\nexport { default as ProductBenefitsTabs } from './Listing/components/ProductCard/ProductDetail/ProductBenefitsTabs/index.js'\nexport { default as ProductBenefits } from './Listing/components/ProductCard/ProductDetail/ProductBenefits/index.js'\nexport { default as ProductHighlight } from './Listing/components/ProductCard/ProductDetail/ProductHighlight/index.js'\nexport { default as ProductFreeGift } from './Listing/components/ProductCard/ProductDetail/ProductFreeGift/index.js'\nexport { default as ProductExchangePurchase } from './Listing/components/ProductCard/ProductDetail/ProductExchangePurchase/index.js'\nexport { default as ProductOptions } from './Listing/components/ProductCard/ProductDetail/ProductOptions/index.js'\nexport { default as ProductBundle } from './Listing/components/ProductCard/ProductDetail/ProductBundle/index.js'\nexport { default as ProductCoupon } from './Listing/components/ProductCard/ProductDetail/ProductCoupon/index.js'\nexport { default as ProductBanner } from './Listing/components/ProductCard/ProductDetail/ProductBanner/index.js'\nexport { default as ProductGridBox } from './Listing/components/ProductCard/ProductGridBox.js'\nexport { default as ProductGallery } from './Listing/components/ProductCard/ProductGallery/index.js'\nexport { default as ProductDetail } from './Listing/components/ProductCard/ProductDetail/index.js'\nexport { default as ProductSummary } from './Listing/components/ProductCard/ProductSummary/index.js'\nexport { default as BenefitsTab } from './Listing/components/ProductCard/ProductDetail/BenefitsTab.js'\nexport { default as PaidShipping } from './Listing/components/PaidShipping/index.js'\nexport { default as ProductPaidShipping } from './Listing/components/ProductCard/ProductPaidShipping/index.js'\n\nexport { default as GraphicMore } from './GraphicMore/index.js'\nexport { default as Features } from './Features/index.js'\nexport { default as AplusDesc } from './AplusDesc/index.js'\nexport { default as GiftBox } from './GiftBox/index.js'\nexport { default as SelectStore } from './SelectStore/index.js'\nexport { default as DownLoad } from './DownLoad/index.js'\nexport { default as FootCharger } from './FootCharger/index.js'\nexport { default as BrandCardLink } from './BrandCardLink/index.js'\nexport type { BrandCardLinkProps, BrandCardLinkItemProps } from './BrandCardLink/types.js'\n\nexport * as IPRedirect from './IPRedirect/index.js'\n\nexport { default as WheelLottery } from './WheelLottery/index.js'\nexport type {\n WheelLotteryProps,\n WheelLotteryHandle,\n Prize,\n ChanceMethod,\n WinningInfo,\n UserData,\n} from './WheelLottery/types.js'\nexport { default as ProductCompare } from './ProductCompare/index.js'\nexport type { ProductCompareProps, ProductItemData } from './ProductCompare/index.js'\nexport { default as Ksp } from './Ksp/index.js'\nexport type { KspProps, KspData, KspCardItem } from './Ksp/index.js'\nexport { default as ImageTextFeature } from './ImageTextFeature/index.js'\nexport type { ImageTextFeatureProps, ImageTextFeatureItem } from './ImageTextFeature/index.js'\nexport { default as FeatureCards } from './FeatureCards/index.js'\nexport type { FeatureCardsProps, FeatureCardItem } from './FeatureCards/index.js'\nexport { default as FeaturedBlogPosts } from './FeaturedBlogPosts/index.js'\nexport type {\n FeaturedBlogPostsProps,\n FeaturedBlogPostsData,\n FeaturedBlogPostItem,\n FeaturedBlogPostSpan,\n} from './FeaturedBlogPosts/index.js'\nexport { default as ImageWithText } from './ImageWithText/index.js'\nexport type { ImageWithTextProps } from './ImageWithText/index.js'\nexport { default as VideoFeature } from './VideoFeature/index.js'\nexport type { VideoFeatureProps } from './VideoFeature/index.js'\nexport { default as TabsWithMedia } from './TabsWithMedia/index.js'\nexport type { TabsWithMediaProps, TabItem, TimeIndex } from './TabsWithMedia/index.js'\nexport { default as TabWithImage } from './TabWithImage/index.js'\nexport type { TabWithImageProps, TabWithImageDataItem } from './TabWithImage/index.js'\nexport { default as FeatureShowcase } from './FeatureShowcase/index.js'\nexport type { FeatureShowcaseProps, FeatureShowcaseItem } from './FeatureShowcase/index.js'\nexport { default as ProductHero } from './ProductHero/index.js'\nexport type { ProductHeroProps } from './ProductHero/index.js'\nexport { default as SpecsComparison } from './SpecsComparison/index.js'\nexport type {\n SpecsComparisonProps,\n SpecsComparisonMenuItem,\n SpecsComparisonLeftMenuItem,\n} from './SpecsComparison/index.js'\nexport { default as MediaSceneSwitcher } from './MediaSceneSwitcher/index.js'\nexport type { MediaSceneSwitcherProps } from './MediaSceneSwitcher/types.js'\nexport { default as MediaSceneSwitcherV2 } from './MediaSceneSwitcherV2/index.js'\nexport type {\n MediaSceneSwitcherV2Props,\n MediaSceneSwitcherV2Data,\n MediaSceneSwitcherV2Item,\n MediaSceneSwitcherV2Layout,\n} from './MediaSceneSwitcherV2/index.js'\nexport { default as ThreeDCarousel } from './ThreeDCarousel/index.js'\nexport type { ThreeDCarouselProps } from './ThreeDCarousel/index.js'\nexport { default as ProductNav } from './ProductNav/index.js'\nexport type { ProductNavProps, TabLink, AnchorItem, BuyButton } from './ProductNav/index.js'\nexport { default as AnchorNavigation } from './AnchorNavigation/index.js'\nexport { default as PromotionalBar } from './PromotionalBar/index.js'\nexport { default as EventSchedule } from './EventSchedule/index.js'\nexport { default as SecondaryBanner } from './SecondaryBanner/index.js'\nexport { default as BuyOneGetOneShelf } from './BuyOneGetOneShelf/index.js'\nexport { default as ActiveShelf } from './ActiveShelf/index.js'\nexport { default as MediaShelf } from './MediaShelf/index.js'\nexport { default as CreditsShelf, CreditsProductCard } from './CreditsShelf/index.js'\nexport type {\n CreditsShelfSemanticName,\n CreditsProductCardData,\n CopyConfig as CreditsShelfCopyConfig,\n ButtonFunctionType as CreditsShelfButtonFunctionType,\n} from './CreditsShelf/index.js'\nexport { default as SceneShelf, SceneProductCard } from './SceneShelf/index.js'\nexport type { SceneShelfSemanticName, SceneProductCardData, SceneProductCardSemanticName } from './SceneShelf/index.js'\n\nexport { default as MediaEndorsement } from './MediaEndorsement/index.js'\nexport type {\n MediaEndorsementProps,\n MediaEndorsementData,\n MediaEndorsementItem,\n MediaEndorsementSemanticName,\n} from './MediaEndorsement/index.js'\n\n// Copy configuration types and defaults\nexport type {\n CopyConfig as MediaShelfCopyConfig,\n ButtonFunctionType as MediaShelfButtonFunctionType,\n} from './MediaShelf/types.js'\nexport type { CopyConfig as ActiveShelfCopyConfig, ButtonFunctionType } from './ActiveShelf/types.js'\n\nexport {\n default as ImageOverlayShelf,\n type ButtonFunctionType as ImageOverlayShelfButtonFunctionType,\n} from './ImageOverlayShelf/index.js'\n\n// MiniCart \u7EC4\u4EF6\u53CA\u7C7B\u578B\u5BFC\u51FA\nexport { default as MiniCart } from './MiniCart/index.js'\nexport type { Cart, CartLineItem, MiniCartData, MiniCartProps, CircleProgressConfig } from './MiniCart/index.js'\nexport { default as MiniCartCircleProgress } from './MiniCart/CircleProgress.js'\nexport type { CircleProgressProps as MiniCartCircleProgressProps } from './MiniCart/CircleProgress.js'\nexport { default as MiniCartDialog, MiniCartDialog as MiniCartDialogComponent } from './MiniCart/MiniCartDialog.js'\nexport type {\n MiniCartDialogProps,\n MiniCartDialogCopy,\n MiniCartDialogSemanticName,\n CartData,\n} from './MiniCart/MiniCartDialog.js'\n\n/**\n * \u7EC4\u4EF6\u6620\u5C04\u5BF9\u8C61\n */\n\nexport const PAYLOAD_COMPONENT_MAP = {\n 'ipc-accordioncards': 'AccordionCards',\n 'ipc-aplusdesc': 'AplusDesc',\n 'ipc-banner': 'HeroBanner',\n 'ipc-brand-equity': 'BrandEquity',\n 'ipc-category': 'Category',\n 'ipc-collection-banner': 'CollectionBanner',\n 'ipc-collection-shelves': 'CollectionShelves',\n 'ipc-creativemodule': 'CreativeModule',\n 'ipc-download': 'DownLoad',\n 'ipc-evaluate': 'Evaluate',\n 'ipc-faq': 'Faq',\n 'ipc-features': 'Features',\n 'ipc-footcharger': 'FootCharger',\n 'ipc-ga-block': 'GraphicAttractionBlock',\n 'ipc-giftbox': 'GiftBox',\n 'ipc-giftshelf': 'GiftShelf',\n 'ipc-graphic': 'Graphic',\n 'ipc-graphicmore': 'GraphicMore',\n 'ipc-graphicoverlay': 'GraphicOverlay',\n 'ipc-marquee': 'Marquee',\n 'ipc-mediaplayerbase': 'MediaPlayerBase',\n 'ipc-mediaplayermulti': 'MediaPlayerMulti',\n 'ipc-mediaplayersticky': 'MediaPlayerSticky',\n 'ipc-member-equity': 'MemberEquity',\n 'ipc-mlg-block': 'MultiLayoutGraphicBlock',\n 'ipc-search-page-tabs': 'SearchPageBlock',\n 'ipc-selectstore': 'SelectStore',\n 'ipc-shelfdisplay': 'ShelfDisplay',\n 'ipc-slogan': 'Slogan',\n 'ipc-spacer': 'Spacer',\n 'ipc-specs': 'Specs',\n 'ipc-tabs': 'TabsBlock',\n 'ipc-text-marquee': 'TextMarquee',\n 'ipc-title': 'Title',\n 'ipc-whychoose': 'WhyChoose',\n 'ipc-product-nav': 'ProductNav',\n 'ipc-brand-card-link': 'BrandCardLink',\n 'ipc-ipredirect': 'IPRedirect',\n ksp: 'Ksp',\n 'ipc-secondary-banner': 'SecondaryBanner',\n /**\n * \u6D3B\u52A8\u8D27\u67B6\n */\n 'ipc-active-shelf': 'ActiveShelf',\n 'ipc-media-shelf': 'MediaShelf',\n /**\n * \u6D3B\u52A8\u4E70\u8D60\u8D27\u67B6\n */\n 'ipc-bogo-shelf': 'BuyOneGetOneShelf',\n 'ipc-media-endorsement': 'MediaEndorsement',\n 'ipc-media-scene-switcher-v2': 'MediaSceneSwitcherV2',\n 'ipc-featured-blog-posts': 'FeaturedBlogPosts',\n}\n"],
5
- "mappings": "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",
6
- "names": ["biz_components_exports", "__export", "IPRedirect", "PAYLOAD_COMPONENT_MAP", "__toCommonJS", "import_ActivitySchedule", "import_GiftShelf", "import_GiftTierShelf", "import_ActivityMechanism", "import_BrandEquity", "import_MemberEquity", "import_Slogan", "import_Title", "import_Spacer", "import_ShelfDisplay", "import_Evaluate", "import_Category", "import_HeroBanner", "import_AccordionCards", "import_Graphic", "import_MediaPlayerBase", "import_MediaPlayerSticky", "import_MediaPlayerMulti", "import_Marquee", "import_MarqueeReview", "import_WhyChoose", "import_Faq", "import_MultiLayoutGraphicBlock", "import_GraphicAttractionBlock", "import_HeaderNavigation", "import_FooterNavigation", "import_SearchPage", "import_types", "import_Styles", "import_AiuiProvider", "import_Tabs", "import_CreativeModule", "import_GraphicOverlay", "import_Specs", "import_TabsGroup", "import_BizProductProvider", "import_PurchaseBar", "import_ProductActions", "import_ProductCard", "import_ProductBenefitsTabs", "import_ProductBenefits", "import_ProductHighlight", "import_ProductFreeGift", "import_ProductExchangePurchase", "import_ProductOptions", "import_ProductBundle", "import_ProductCoupon", "import_ProductBanner", "import_ProductGridBox", "import_ProductGallery", "import_ProductDetail", "import_ProductSummary", "import_BenefitsTab", "import_PaidShipping", "import_ProductPaidShipping", "import_GraphicMore", "import_Features", "import_AplusDesc", "import_GiftBox", "import_SelectStore", "import_DownLoad", "import_FootCharger", "import_BrandCardLink", "import_WheelLottery", "import_ProductCompare", "import_Ksp", "import_ImageTextFeature", "import_FeatureCards", "import_FeaturedBlogPosts", "import_ImageWithText", "import_VideoFeature", "import_TabsWithMedia", "import_TabWithImage", "import_FeatureShowcase", "import_ProductHero", "import_SpecsComparison", "import_MediaSceneSwitcher", "import_MediaSceneSwitcherV2", "import_ThreeDCarousel", "import_ProductNav", "import_AnchorNavigation", "import_PromotionalBar", "import_EventSchedule", "import_SecondaryBanner", "import_BuyOneGetOneShelf", "import_ActiveShelf", "import_MediaShelf", "import_CreditsShelf", "import_SceneShelf", "import_MediaEndorsement", "import_ImageOverlayShelf", "import_MiniCart", "import_CircleProgress", "import_MiniCartDialog"]
4
+ "sourcesContent": ["export { default as ActivitySchedule } from './ActivitySchedule/index.js'\nexport type { ActivityScheduleProps, ActivityScheduleData, ActivityScheduleItem } from './ActivitySchedule/types.js'\nexport { default as GiftShelf } from './GiftShelf/index.js'\nexport type {\n GiftShelfProps,\n GiftShelfData,\n GiftShelfItem,\n CountdownConfig,\n ResponsiveBackgroundImage as GiftShelfResponsiveBackgroundImage,\n} from './GiftShelf/types.js'\nexport { default as GiftTierShelf } from './GiftTierShelf/index.js'\nexport type { GiftTierShelfProps, GiftTierShelfData, GiftTierItem, GiftTierProduct } from './GiftTierShelf/types.js'\nexport { default as ActivityMechanism } from './ActivityMechanism/index.js'\nexport type {\n ActivityMechanismProps,\n ActivityMechanismItem,\n ActivityMechanismSemanticName,\n ResponsiveBackgroundImage,\n} from './ActivityMechanism/types.js'\nexport { default as BrandEquity } from './BrandEquity/index.js'\nexport { default as MemberEquity } from './MemberEquity/index.js'\nexport { default as Slogan } from './Slogan/index.js'\nexport { default as Title } from './Title/index.js'\nexport { default as Spacer } from './Spacer/index.js'\nexport { default as ShelfDisplay } from './ShelfDisplay/index.js'\nexport { default as Evaluate } from './Evaluate/index.js'\nexport { default as Category } from './Category/index.js'\nexport { default as HeroBanner } from './HeroBanner/index.js'\nexport { default as AccordionCards } from './AccordionCards/index.js'\nexport { default as Graphic } from './Graphic/index.js'\nexport { default as MediaPlayerBase } from './MediaPlayerBase/index.js'\nexport { default as MediaPlayerSticky } from './MediaPlayerSticky/index.js'\nexport { default as MediaPlayerMulti } from './MediaPlayerMulti/index.js'\nexport { default as Marquee } from './Marquee/index.js'\nexport { default as MarqueeReview } from './MarqueeReview/index.js'\nexport type { MarqueeReviewProps, MarqueeReviewData, ReviewItem } from './MarqueeReview/index.js'\nexport { default as WhyChoose } from './WhyChoose/index.js'\nexport { default as Faq } from './Faq/index.js'\nexport { MarqueeItem, MarqueeImageContent, MarqueeTextContent } from './Marquee/index.js'\nexport { default as MultiLayoutGraphicBlock } from './MultiLayoutGraphicBlock/index.js'\nexport type { MultiLayoutGraphicBlockProps } from './MultiLayoutGraphicBlock/index.js'\nexport { default as GraphicAttractionBlock } from './GraphicAttractionBlock/index.js'\nexport type { GraphicAttractionBlockProps } from './GraphicAttractionBlock/index.js'\nexport { default as HeaderNavigation } from './HeaderNavigation/index.js'\nexport { default as FooterNavigation } from './FooterNavigation/index.js'\nexport { default as SearchPage } from './SearchPage/index.js'\nexport type { SearchPageProps } from './SearchPage/types.js'\nexport { IPC_SEARCH_PAGE, SearchPageTabType } from './SearchPage/types.js'\n\nexport { withLayout } from '../shared/Styles.js'\nexport { default as AiuiProvider } from './AiuiProvider/index.js'\nexport { default as Tabs } from './Tabs/index.js'\nexport { default as CreativeModule } from './CreativeModule/index.js'\nexport { default as GraphicOverlay } from './GraphicOverlay/index.js'\nexport { default as Specs } from './Specs/index.js'\nexport { default as TabGroup } from './TabsGroup/index.js'\n\nexport { default as BizProductProvider } from './Listing/BizProductProvider.js'\nexport { default as PurchaseBar } from './Listing/components/PurchaseBar/index.js'\nexport { default as ProductActions } from './Listing/components/PurchaseBar/ProductActions/index.js'\nexport type { ProductActionsProps } from './Listing/components/PurchaseBar/ProductActions/index.js'\nexport { default as ProductCard } from './Listing/components/ProductCard/index.js'\nexport { default as ProductBenefitsTabs } from './Listing/components/ProductCard/ProductDetail/ProductBenefitsTabs/index.js'\nexport { default as ProductBenefits } from './Listing/components/ProductCard/ProductDetail/ProductBenefits/index.js'\nexport { default as ProductHighlight } from './Listing/components/ProductCard/ProductDetail/ProductHighlight/index.js'\nexport { default as ProductFreeGift } from './Listing/components/ProductCard/ProductDetail/ProductFreeGift/index.js'\nexport { default as ProductExchangePurchase } from './Listing/components/ProductCard/ProductDetail/ProductExchangePurchase/index.js'\nexport { default as ProductOptions } from './Listing/components/ProductCard/ProductDetail/ProductOptions/index.js'\nexport { default as ProductBundle } from './Listing/components/ProductCard/ProductDetail/ProductBundle/index.js'\nexport { default as ProductCoupon } from './Listing/components/ProductCard/ProductDetail/ProductCoupon/index.js'\nexport { default as ProductBanner } from './Listing/components/ProductCard/ProductDetail/ProductBanner/index.js'\nexport { default as ProductGridBox } from './Listing/components/ProductCard/ProductGridBox.js'\nexport { default as ProductGallery } from './Listing/components/ProductCard/ProductGallery/index.js'\nexport { default as ProductDetail } from './Listing/components/ProductCard/ProductDetail/index.js'\nexport { default as ProductSummary } from './Listing/components/ProductCard/ProductSummary/index.js'\nexport { default as BenefitsTab } from './Listing/components/ProductCard/ProductDetail/BenefitsTab.js'\nexport { default as PaidShipping } from './Listing/components/PaidShipping/index.js'\nexport { default as ProductPaidShipping } from './Listing/components/ProductCard/ProductPaidShipping/index.js'\n\nexport { default as GraphicMore } from './GraphicMore/index.js'\nexport { default as Features } from './Features/index.js'\nexport { default as AplusDesc } from './AplusDesc/index.js'\nexport { default as GiftBox } from './GiftBox/index.js'\nexport { default as SelectStore } from './SelectStore/index.js'\nexport { default as DownLoad } from './DownLoad/index.js'\nexport { default as FootCharger } from './FootCharger/index.js'\nexport { default as BrandCardLink } from './BrandCardLink/index.js'\nexport type { BrandCardLinkProps, BrandCardLinkItemProps } from './BrandCardLink/types.js'\n\nexport * as IPRedirect from './IPRedirect/index.js'\n\nexport { default as WheelLottery } from './WheelLottery/index.js'\nexport type {\n WheelLotteryProps,\n WheelLotteryHandle,\n Prize,\n ChanceMethod,\n WinningInfo,\n UserData,\n} from './WheelLottery/types.js'\nexport { default as ProductLottery } from './ProductLottery/index.js'\nexport type { ProductLotteryProps, ProductLotteryHandle, MediaConfig, CtaButtonConfig } from './ProductLottery/types.js'\nexport { default as ProductCompare } from './ProductCompare/index.js'\nexport type { ProductCompareProps, ProductItemData } from './ProductCompare/index.js'\nexport { default as Ksp } from './Ksp/index.js'\nexport type { KspProps, KspData, KspCardItem } from './Ksp/index.js'\nexport { default as ImageTextFeature } from './ImageTextFeature/index.js'\nexport type { ImageTextFeatureProps, ImageTextFeatureItem } from './ImageTextFeature/index.js'\nexport { default as FeatureCards } from './FeatureCards/index.js'\nexport type { FeatureCardsProps, FeatureCardItem } from './FeatureCards/index.js'\nexport { default as FeaturedBlogPosts } from './FeaturedBlogPosts/index.js'\nexport type {\n FeaturedBlogPostsProps,\n FeaturedBlogPostsData,\n FeaturedBlogPostItem,\n FeaturedBlogPostSpan,\n} from './FeaturedBlogPosts/index.js'\nexport { default as ImageWithText } from './ImageWithText/index.js'\nexport type { ImageWithTextProps } from './ImageWithText/index.js'\nexport { default as VideoFeature } from './VideoFeature/index.js'\nexport type { VideoFeatureProps } from './VideoFeature/index.js'\nexport { default as TabsWithMedia } from './TabsWithMedia/index.js'\nexport type { TabsWithMediaProps, TabItem, TimeIndex } from './TabsWithMedia/index.js'\nexport { default as TabWithImage } from './TabWithImage/index.js'\nexport type { TabWithImageProps, TabWithImageDataItem } from './TabWithImage/index.js'\nexport { default as FeatureShowcase } from './FeatureShowcase/index.js'\nexport type { FeatureShowcaseProps, FeatureShowcaseItem } from './FeatureShowcase/index.js'\nexport { default as ProductHero } from './ProductHero/index.js'\nexport type { ProductHeroProps } from './ProductHero/index.js'\nexport { default as SpecsComparison } from './SpecsComparison/index.js'\nexport type {\n SpecsComparisonProps,\n SpecsComparisonMenuItem,\n SpecsComparisonLeftMenuItem,\n} from './SpecsComparison/index.js'\nexport { default as MediaSceneSwitcher } from './MediaSceneSwitcher/index.js'\nexport type { MediaSceneSwitcherProps } from './MediaSceneSwitcher/types.js'\nexport { default as MediaSceneSwitcherV2 } from './MediaSceneSwitcherV2/index.js'\nexport type {\n MediaSceneSwitcherV2Props,\n MediaSceneSwitcherV2Data,\n MediaSceneSwitcherV2Item,\n MediaSceneSwitcherV2Layout,\n} from './MediaSceneSwitcherV2/index.js'\nexport { default as ThreeDCarousel } from './ThreeDCarousel/index.js'\nexport type { ThreeDCarouselProps } from './ThreeDCarousel/index.js'\nexport { default as ProductNav } from './ProductNav/index.js'\nexport type { ProductNavProps, TabLink, AnchorItem, BuyButton } from './ProductNav/index.js'\nexport { default as AnchorNavigation } from './AnchorNavigation/index.js'\nexport { default as PromotionalBar } from './PromotionalBar/index.js'\nexport { default as EventSchedule } from './EventSchedule/index.js'\nexport { default as SecondaryBanner } from './SecondaryBanner/index.js'\nexport { default as BuyOneGetOneShelf } from './BuyOneGetOneShelf/index.js'\nexport { default as ActiveShelf } from './ActiveShelf/index.js'\nexport { default as MediaShelf } from './MediaShelf/index.js'\nexport { default as CreditsShelf, CreditsProductCard } from './CreditsShelf/index.js'\nexport type {\n CreditsShelfSemanticName,\n CreditsProductCardData,\n CopyConfig as CreditsShelfCopyConfig,\n ButtonFunctionType as CreditsShelfButtonFunctionType,\n} from './CreditsShelf/index.js'\nexport { default as SceneShelf, SceneProductCard } from './SceneShelf/index.js'\nexport type { SceneShelfSemanticName, SceneProductCardData, SceneProductCardSemanticName } from './SceneShelf/index.js'\n\nexport { default as MediaEndorsement } from './MediaEndorsement/index.js'\nexport type {\n MediaEndorsementProps,\n MediaEndorsementData,\n MediaEndorsementItem,\n MediaEndorsementSemanticName,\n} from './MediaEndorsement/index.js'\n\n// Copy configuration types and defaults\nexport type {\n CopyConfig as MediaShelfCopyConfig,\n ButtonFunctionType as MediaShelfButtonFunctionType,\n} from './MediaShelf/types.js'\nexport type { CopyConfig as ActiveShelfCopyConfig, ButtonFunctionType } from './ActiveShelf/types.js'\n\nexport {\n default as ImageOverlayShelf,\n type ButtonFunctionType as ImageOverlayShelfButtonFunctionType,\n} from './ImageOverlayShelf/index.js'\n\n// MiniCart \u7EC4\u4EF6\u53CA\u7C7B\u578B\u5BFC\u51FA\nexport { default as MiniCart } from './MiniCart/index.js'\nexport type { Cart, CartLineItem, MiniCartData, MiniCartProps, CircleProgressConfig } from './MiniCart/index.js'\nexport { default as MiniCartCircleProgress } from './MiniCart/CircleProgress.js'\nexport type { CircleProgressProps as MiniCartCircleProgressProps } from './MiniCart/CircleProgress.js'\nexport { default as MiniCartDialog, MiniCartDialog as MiniCartDialogComponent } from './MiniCart/MiniCartDialog.js'\nexport type {\n MiniCartDialogProps,\n MiniCartDialogCopy,\n MiniCartDialogSemanticName,\n CartData,\n} from './MiniCart/MiniCartDialog.js'\n\n/**\n * \u7EC4\u4EF6\u6620\u5C04\u5BF9\u8C61\n */\n\nexport const PAYLOAD_COMPONENT_MAP = {\n 'ipc-accordioncards': 'AccordionCards',\n 'ipc-aplusdesc': 'AplusDesc',\n 'ipc-banner': 'HeroBanner',\n 'ipc-brand-equity': 'BrandEquity',\n 'ipc-category': 'Category',\n 'ipc-collection-banner': 'CollectionBanner',\n 'ipc-collection-shelves': 'CollectionShelves',\n 'ipc-creativemodule': 'CreativeModule',\n 'ipc-download': 'DownLoad',\n 'ipc-evaluate': 'Evaluate',\n 'ipc-faq': 'Faq',\n 'ipc-features': 'Features',\n 'ipc-footcharger': 'FootCharger',\n 'ipc-ga-block': 'GraphicAttractionBlock',\n 'ipc-giftbox': 'GiftBox',\n 'ipc-giftshelf': 'GiftShelf',\n 'ipc-graphic': 'Graphic',\n 'ipc-graphicmore': 'GraphicMore',\n 'ipc-graphicoverlay': 'GraphicOverlay',\n 'ipc-marquee': 'Marquee',\n 'ipc-mediaplayerbase': 'MediaPlayerBase',\n 'ipc-mediaplayermulti': 'MediaPlayerMulti',\n 'ipc-mediaplayersticky': 'MediaPlayerSticky',\n 'ipc-member-equity': 'MemberEquity',\n 'ipc-mlg-block': 'MultiLayoutGraphicBlock',\n 'ipc-search-page-tabs': 'SearchPageBlock',\n 'ipc-selectstore': 'SelectStore',\n 'ipc-shelfdisplay': 'ShelfDisplay',\n 'ipc-slogan': 'Slogan',\n 'ipc-spacer': 'Spacer',\n 'ipc-specs': 'Specs',\n 'ipc-tabs': 'TabsBlock',\n 'ipc-text-marquee': 'TextMarquee',\n 'ipc-title': 'Title',\n 'ipc-whychoose': 'WhyChoose',\n 'ipc-product-nav': 'ProductNav',\n 'ipc-brand-card-link': 'BrandCardLink',\n 'ipc-ipredirect': 'IPRedirect',\n ksp: 'Ksp',\n 'ipc-secondary-banner': 'SecondaryBanner',\n /**\n * \u6D3B\u52A8\u8D27\u67B6\n */\n 'ipc-active-shelf': 'ActiveShelf',\n 'ipc-media-shelf': 'MediaShelf',\n /**\n * \u6D3B\u52A8\u4E70\u8D60\u8D27\u67B6\n */\n 'ipc-bogo-shelf': 'BuyOneGetOneShelf',\n 'ipc-media-endorsement': 'MediaEndorsement',\n 'ipc-media-scene-switcher-v2': 'MediaSceneSwitcherV2',\n 'ipc-featured-blog-posts': 'FeaturedBlogPosts',\n}\n"],
5
+ "mappings": "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",
6
+ "names": ["biz_components_exports", "__export", "IPRedirect", "PAYLOAD_COMPONENT_MAP", "__toCommonJS", "import_ActivitySchedule", "import_GiftShelf", "import_GiftTierShelf", "import_ActivityMechanism", "import_BrandEquity", "import_MemberEquity", "import_Slogan", "import_Title", "import_Spacer", "import_ShelfDisplay", "import_Evaluate", "import_Category", "import_HeroBanner", "import_AccordionCards", "import_Graphic", "import_MediaPlayerBase", "import_MediaPlayerSticky", "import_MediaPlayerMulti", "import_Marquee", "import_MarqueeReview", "import_WhyChoose", "import_Faq", "import_MultiLayoutGraphicBlock", "import_GraphicAttractionBlock", "import_HeaderNavigation", "import_FooterNavigation", "import_SearchPage", "import_types", "import_Styles", "import_AiuiProvider", "import_Tabs", "import_CreativeModule", "import_GraphicOverlay", "import_Specs", "import_TabsGroup", "import_BizProductProvider", "import_PurchaseBar", "import_ProductActions", "import_ProductCard", "import_ProductBenefitsTabs", "import_ProductBenefits", "import_ProductHighlight", "import_ProductFreeGift", "import_ProductExchangePurchase", "import_ProductOptions", "import_ProductBundle", "import_ProductCoupon", "import_ProductBanner", "import_ProductGridBox", "import_ProductGallery", "import_ProductDetail", "import_ProductSummary", "import_BenefitsTab", "import_PaidShipping", "import_ProductPaidShipping", "import_GraphicMore", "import_Features", "import_AplusDesc", "import_GiftBox", "import_SelectStore", "import_DownLoad", "import_FootCharger", "import_BrandCardLink", "import_WheelLottery", "import_ProductLottery", "import_ProductCompare", "import_Ksp", "import_ImageTextFeature", "import_FeatureCards", "import_FeaturedBlogPosts", "import_ImageWithText", "import_VideoFeature", "import_TabsWithMedia", "import_TabWithImage", "import_FeatureShowcase", "import_ProductHero", "import_SpecsComparison", "import_MediaSceneSwitcher", "import_MediaSceneSwitcherV2", "import_ThreeDCarousel", "import_ProductNav", "import_AnchorNavigation", "import_PromotionalBar", "import_EventSchedule", "import_SecondaryBanner", "import_BuyOneGetOneShelf", "import_ActiveShelf", "import_MediaShelf", "import_CreditsShelf", "import_SceneShelf", "import_MediaEndorsement", "import_ImageOverlayShelf", "import_MiniCart", "import_CircleProgress", "import_MiniCartDialog"]
7
7
  }
@@ -87,6 +87,6 @@ export interface ActiveShelfComponent extends React.ForwardRefExoticComponent<Ac
87
87
  /** 独立的 ProductCard 组件 */
88
88
  ProductCard: typeof ProductCard;
89
89
  }
90
- declare const ActiveShelfWithProductCard: ActiveShelfComponent;
91
- export default ActiveShelfWithProductCard;
90
+ declare const ActiveShelfWrapped: any;
91
+ export default ActiveShelfWrapped;
92
92
  export type { StockDisplayMode, ActiveShelfSemanticName, ProductCardData };
@@ -1,2 +1,2 @@
1
- "use client";import{jsx as t,jsxs as x}from"react/jsx-runtime";import*as n from"react";import{cn as D}from"../../helpers/index.js";import{Text as H,Heading as z,Tabs as $,TabsList as O,TabsTrigger as V,TabsContent as I}from"../../components/index.js";import{Swiper as j,SwiperSlide as W}from"swiper/react";import{Navigation as _}from"swiper/modules";import"swiper/css";import"swiper/css/navigation";import{ProductCard as N}from"./ProductCard.js";import{useExposure as q}from"../../hooks/useExposure.js";const Z="shelf",G="active_shelf",J=({disabled:i})=>x("svg",{width:"56",height:"56",viewBox:"0 0 56 56",fill:"none",xmlns:"http://www.w3.org/2000/svg",className:"text-info-primary laptop:block lg-desktop:size-[56px] hidden size-[40px]",children:[t("path",{d:"M0 28C0 43.464 12.536 56 28 56C43.464 56 56 43.464 56 28C56 12.536 43.464 0 28 0C12.536 0 0 12.536 0 28Z",fill:"currentColor",fillOpacity:i?"0.2":"0.6"}),t("path",{d:"M31 22L25 28L31 34",stroke:"white",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round"})]}),K=({disabled:i})=>x("svg",{width:"56",height:"56",viewBox:"0 0 56 56",fill:"none",xmlns:"http://www.w3.org/2000/svg",className:"text-info-primary laptop:block lg-desktop:size-[56px] hidden size-[40px]",children:[t("path",{d:"M0 28C0 12.536 12.536 0 28 0C43.464 0 56 12.536 56 28C56 43.464 43.464 56 28 56C12.536 56 0 43.464 0 28Z",fill:"currentColor",fillOpacity:i?"0.2":"0.6"}),t("path",{d:"M25 22L31 28L25 34",stroke:"white",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round"})]}),E=n.forwardRef(({products:i,layoutMode:o,className:k,copy:s,showTags:p,stockDisplayMode:r,stockThresholdValue:S,onLearnMore:B,onShopNow:l,onAddToCart:u,classNames:h,secondaryButtonText:m,secondaryButtonFun:g,primaryButtonText:y,primaryButtonFun:f,showOriginalPrice:T},P)=>{const b=n.useId().replace(/:/g,""),v=`swiper-button-next-custom-${b}`,M=`swiper-button-prev-custom-${b}`,[c,a]=n.useState({isBeginning:!0,isEnd:!1}),L=n.useRef(null),d=n.useCallback(()=>{const e=L.current;if(!e?.slides||e.slides.length===0)return;e.slides.forEach(C=>{C.style.height="auto"});const w=Array.from(e.slides).map(C=>C.scrollHeight),A=Math.max(...w);A>0&&e.slides.forEach(C=>{C.style.height=`${A}px`})},[]);return n.useEffect(()=>{const e=()=>{requestAnimationFrame(d)};return window.addEventListener("resize",e),()=>window.removeEventListener("resize",e)},[d]),i?.length===0?null:t("div",{ref:P,className:k,children:o==="flex"?t("div",{className:"lg-desktop:gap-4 tablet:grid-cols-2 laptop:grid-cols-3 desktop:grid-cols-4 laptop:gap-4 grid grid-cols-1 justify-start gap-3",children:i.map((e,w)=>t(N,{product:e,className:"shrink-0",showTags:p,stockDisplayMode:r,stockThresholdValue:S,onLearnMore:B,onShopNow:l,onAddToCart:u,classNames:h,secondaryButtonText:m,secondaryButtonFun:g,primaryButtonText:y,primaryButtonFun:f,showOriginalPrice:T,copy:s},e.shopify_id+"-"+e.sku||w))}):x("div",{className:"group relative",children:[t(j,{modules:[_],spaceBetween:16,slidesPerView:"auto",navigation:{nextEl:`.${v}`,prevEl:`.${M}`},onSwiper:e=>{L.current=e,a({isBeginning:e.isBeginning,isEnd:e.isEnd}),setTimeout(d,100)},onReachEnd:()=>{a(e=>({...e,isEnd:!0}))},onReachBeginning:()=>{a(e=>({...e,isBeginning:!0}))},onFromEdge:()=>{a({isBeginning:!1,isEnd:!1})},className:"!overflow-visible",children:i.map((e,w)=>t(W,{className:"tablet:!w-[288px] desktop:!w-[316px] lg-desktop:!w-[404px] !w-[296px] overflow-hidden",children:t(N,{product:e,className:"w-full max-w-full",showTags:p,stockDisplayMode:r,stockThresholdValue:S,onLearnMore:B,onShopNow:l,onAddToCart:u,classNames:h,secondaryButtonText:m,secondaryButtonFun:g,primaryButtonText:y,primaryButtonFun:f,showOriginalPrice:T,copy:s})},e.shopify_id+"-"+e.sku||w))}),t("button",{className:`${M} tablet:block absolute left-4 top-1/2 z-10 hidden -translate-y-1/2 transition-opacity ${c.isBeginning?"pointer-events-none opacity-0":"opacity-0 group-hover:opacity-100"}`,"aria-label":s?.previousSlideLabel,children:t(J,{disabled:c.isBeginning})}),t("button",{className:`${v} tablet:block absolute right-4 top-1/2 z-10 hidden -translate-y-1/2 transition-opacity ${c.isEnd?"pointer-events-none opacity-0":"opacity-0 group-hover:opacity-100"}`,"aria-label":s?.nextSlideLabel,children:t(K,{disabled:c.isEnd})})]})})});E.displayName="ProductsList";const F=n.forwardRef(({className:i,data:o,onLearnMore:k,onShopNow:s,onAddToCart:p,classNames:r,...S},B)=>{const l=n.useRef(null);q(l,{componentType:Z,componentName:G,componentTitle:o.title,componentDescription:o.description}),n.useImperativeHandle(B,()=>l.current);const{theme:u="light",layoutMode:h="flex",showTags:m=!0,stockDisplayMode:g,stockThresholdValue:y,showOriginalPrice:f=!0,secondaryButtonText:T,primaryButtonText:P,secondaryButtonFun:b,primaryButtonFun:v,isShowTab:M=!0,copy:c}=o,a=c||{},L=o.productsTab&&o.productsTab.length>0,d=M&&L;return x("div",{ref:l,className:D("w-full",{"aiui-dark":u==="dark"},i,r?.root),style:{"--progress-track-bg":u==="dark"?"rgba(255, 255, 255, 0.2)":"rgba(0, 0, 0, 0.2)"},...S,children:[o.title&&t(z,{as:"h2",html:o.title,size:4,className:D("text-info-primary mb-4",r?.title)}),o.description&&t(H,{size:3,as:"p",html:o.description,className:D("text-info-primary mb-6",r?.description)}),x($,{defaultValue:o.productsTab?.[0]?.id,className:"w-full",children:[d&&t(O,{className:"mb-6",children:o.productsTab?.map(e=>t(V,{value:e.id,children:e.tab},"tab-"+e.id))}),d?o.productsTab?.map(e=>t(I,{value:e.id,children:t(E,{products:e.data,layoutMode:h,copy:a,showTags:m,stockDisplayMode:g,stockThresholdValue:y,onLearnMore:k,onShopNow:s,onAddToCart:p,classNames:r,secondaryButtonText:T,secondaryButtonFun:b,primaryButtonText:P,primaryButtonFun:v,showOriginalPrice:f})},"tab-content-"+e.id)):t(E,{products:o.productsCard,layoutMode:h,copy:a,showTags:m,stockDisplayMode:g,stockThresholdValue:y,onLearnMore:k,onShopNow:s,onAddToCart:p,classNames:r,secondaryButtonText:T,secondaryButtonFun:b,primaryButtonText:P,primaryButtonFun:v,showOriginalPrice:f})]})]})});F.displayName="ActiveShelf";const R=F;R.ProductCard=N;var ne=R;export{ne as default};
1
+ "use client";import{jsx as t,jsxs as x}from"react/jsx-runtime";import*as n from"react";import{cn as D}from"../../helpers/index.js";import{withLayout as H}from"../../shared/Styles.js";import{Text as z,Heading as $,Tabs as O,TabsList as V,TabsTrigger as I,TabsContent as W}from"../../components/index.js";import{Swiper as j,SwiperSlide as _}from"swiper/react";import{Navigation as q}from"swiper/modules";import"swiper/css";import"swiper/css/navigation";import{ProductCard as N}from"./ProductCard.js";import{useExposure as Z}from"../../hooks/useExposure.js";const G="shelf",J="active_shelf",K=({disabled:i})=>x("svg",{width:"56",height:"56",viewBox:"0 0 56 56",fill:"none",xmlns:"http://www.w3.org/2000/svg",className:"text-info-primary laptop:block lg-desktop:size-[56px] hidden size-[40px]",children:[t("path",{d:"M0 28C0 43.464 12.536 56 28 56C43.464 56 56 43.464 56 28C56 12.536 43.464 0 28 0C12.536 0 0 12.536 0 28Z",fill:"currentColor",fillOpacity:i?"0.2":"0.6"}),t("path",{d:"M31 22L25 28L31 34",stroke:"white",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round"})]}),Q=({disabled:i})=>x("svg",{width:"56",height:"56",viewBox:"0 0 56 56",fill:"none",xmlns:"http://www.w3.org/2000/svg",className:"text-info-primary laptop:block lg-desktop:size-[56px] hidden size-[40px]",children:[t("path",{d:"M0 28C0 12.536 12.536 0 28 0C43.464 0 56 12.536 56 28C56 43.464 43.464 56 28 56C12.536 56 0 43.464 0 28Z",fill:"currentColor",fillOpacity:i?"0.2":"0.6"}),t("path",{d:"M25 22L31 28L25 34",stroke:"white",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round"})]}),E=n.forwardRef(({products:i,layoutMode:o,className:S,copy:a,showTags:p,stockDisplayMode:r,stockThresholdValue:k,onLearnMore:B,onShopNow:l,onAddToCart:u,classNames:h,secondaryButtonText:m,secondaryButtonFun:y,primaryButtonText:g,primaryButtonFun:f,showOriginalPrice:T},P)=>{const v=n.useId().replace(/:/g,""),b=`swiper-button-next-custom-${v}`,M=`swiper-button-prev-custom-${v}`,[c,s]=n.useState({isBeginning:!0,isEnd:!1}),L=n.useRef(null),d=n.useCallback(()=>{const e=L.current;if(!e?.slides||e.slides.length===0)return;e.slides.forEach(C=>{C.style.height="auto"});const w=Array.from(e.slides).map(C=>C.scrollHeight),A=Math.max(...w);A>0&&e.slides.forEach(C=>{C.style.height=`${A}px`})},[]);return n.useEffect(()=>{const e=()=>{requestAnimationFrame(d)};return window.addEventListener("resize",e),()=>window.removeEventListener("resize",e)},[d]),i?.length===0?null:t("div",{ref:P,className:S,children:o==="flex"?t("div",{className:"lg-desktop:gap-4 tablet:grid-cols-2 laptop:grid-cols-3 desktop:grid-cols-4 laptop:gap-4 grid grid-cols-1 justify-start gap-3",children:i.map((e,w)=>t(N,{product:e,className:"shrink-0",showTags:p,stockDisplayMode:r,stockThresholdValue:k,onLearnMore:B,onShopNow:l,onAddToCart:u,classNames:h,secondaryButtonText:m,secondaryButtonFun:y,primaryButtonText:g,primaryButtonFun:f,showOriginalPrice:T,copy:a},e.shopify_id+"-"+e.sku||w))}):x("div",{className:"group relative",children:[t(j,{modules:[q],spaceBetween:16,slidesPerView:"auto",navigation:{nextEl:`.${b}`,prevEl:`.${M}`},onSwiper:e=>{L.current=e,s({isBeginning:e.isBeginning,isEnd:e.isEnd}),setTimeout(d,100)},onReachEnd:()=>{s(e=>({...e,isEnd:!0}))},onReachBeginning:()=>{s(e=>({...e,isBeginning:!0}))},onFromEdge:()=>{s({isBeginning:!1,isEnd:!1})},className:"!overflow-visible",children:i.map((e,w)=>t(_,{className:"tablet:!w-[288px] desktop:!w-[316px] lg-desktop:!w-[404px] !w-[296px] overflow-hidden",children:t(N,{product:e,className:"w-full max-w-full",showTags:p,stockDisplayMode:r,stockThresholdValue:k,onLearnMore:B,onShopNow:l,onAddToCart:u,classNames:h,secondaryButtonText:m,secondaryButtonFun:y,primaryButtonText:g,primaryButtonFun:f,showOriginalPrice:T,copy:a})},e.shopify_id+"-"+e.sku||w))}),t("button",{className:`${M} tablet:block absolute left-4 top-1/2 z-10 hidden -translate-y-1/2 transition-opacity ${c.isBeginning?"pointer-events-none opacity-0":"opacity-0 group-hover:opacity-100"}`,"aria-label":a?.previousSlideLabel,children:t(K,{disabled:c.isBeginning})}),t("button",{className:`${b} tablet:block absolute right-4 top-1/2 z-10 hidden -translate-y-1/2 transition-opacity ${c.isEnd?"pointer-events-none opacity-0":"opacity-0 group-hover:opacity-100"}`,"aria-label":a?.nextSlideLabel,children:t(Q,{disabled:c.isEnd})})]})})});E.displayName="ProductsList";const F=n.forwardRef(({className:i,data:o,onLearnMore:S,onShopNow:a,onAddToCart:p,classNames:r,...k},B)=>{const l=n.useRef(null);Z(l,{componentType:G,componentName:J,componentTitle:o.title,componentDescription:o.description}),n.useImperativeHandle(B,()=>l.current);const{theme:u="light",layoutMode:h="flex",showTags:m=!0,stockDisplayMode:y,stockThresholdValue:g,showOriginalPrice:f=!0,secondaryButtonText:T,primaryButtonText:P,secondaryButtonFun:v,primaryButtonFun:b,isShowTab:M=!0,copy:c}=o,s=c||{},L=o.productsTab&&o.productsTab.length>0,d=M&&L;return x("div",{ref:l,className:D("w-full",{"aiui-dark":u==="dark"},i,r?.root),style:{"--progress-track-bg":u==="dark"?"rgba(255, 255, 255, 0.2)":"rgba(0, 0, 0, 0.2)"},...k,children:[o.title&&t($,{as:"h2",html:o.title,size:4,className:D("text-info-primary mb-4",r?.title)}),o.description&&t(z,{size:3,as:"p",html:o.description,className:D("text-info-primary mb-6",r?.description)}),x(O,{defaultValue:o.productsTab?.[0]?.id,className:"w-full",children:[d&&t(V,{className:"mb-6",children:o.productsTab?.map(e=>t(I,{value:e.id,children:e.tab},"tab-"+e.id))}),d?o.productsTab?.map(e=>t(W,{value:e.id,children:t(E,{products:e.data,layoutMode:h,copy:s,showTags:m,stockDisplayMode:y,stockThresholdValue:g,onLearnMore:S,onShopNow:a,onAddToCart:p,classNames:r,secondaryButtonText:T,secondaryButtonFun:v,primaryButtonText:P,primaryButtonFun:b,showOriginalPrice:f})},"tab-content-"+e.id)):t(E,{products:o.productsCard,layoutMode:h,copy:s,showTags:m,stockDisplayMode:y,stockThresholdValue:g,onLearnMore:S,onShopNow:a,onAddToCart:p,classNames:r,secondaryButtonText:T,secondaryButtonFun:v,primaryButtonText:P,primaryButtonFun:b,showOriginalPrice:f})]})]})});F.displayName="ActiveShelf";const R=F;R.ProductCard=N;const U=H(R);var se=U;export{se as default};
2
2
  //# sourceMappingURL=index.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../src/biz-components/ActiveShelf/index.tsx"],
4
- "sourcesContent": ["'use client'\n\nimport * as React from 'react'\nimport { cn } from '../../helpers/index.js'\nimport { Text, Heading, Tabs, TabsList, TabsTrigger, TabsContent } from '../../components/index.js'\n\nimport { Swiper, SwiperSlide } from 'swiper/react'\nimport { Navigation } from 'swiper/modules'\n\n// Import Swiper styles\nimport 'swiper/css'\nimport 'swiper/css/navigation'\nimport type { ButtonFunctionType, CopyConfig } from './types.js'\nimport {\n ProductCard,\n type ProductCardData,\n type ActiveShelfSemanticName,\n type StockDisplayMode,\n} from './ProductCard.js'\nimport { useExposure } from '../../hooks/useExposure.js'\n\nconst componentType = 'shelf'\nconst componentName = 'active_shelf'\n\n/**\n * \u7EC4\u4EF6\u5E03\u5C40\u6A21\u5F0F\n */\nexport type ActiveShelfLayoutMode = 'flex' | 'horizontal'\n\n/**\n * Code Channel \u914D\u7F6E - \u6298\u6263\u524D\u7F00\n */\nexport type CodeChannelConfig = string\n\nconst PrevIcon = ({ disabled }: { disabled: boolean }) => (\n <svg\n width=\"56\"\n height=\"56\"\n viewBox=\"0 0 56 56\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n className=\"text-info-primary laptop:block lg-desktop:size-[56px] hidden size-[40px]\"\n >\n <path\n d=\"M0 28C0 43.464 12.536 56 28 56C43.464 56 56 43.464 56 28C56 12.536 43.464 0 28 0C12.536 0 0 12.536 0 28Z\"\n fill=\"currentColor\"\n fillOpacity={disabled ? '0.2' : '0.6'}\n />\n <path d=\"M31 22L25 28L31 34\" stroke=\"white\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\" />\n </svg>\n)\n\nconst NextIcon = ({ disabled }: { disabled: boolean }) => (\n <svg\n width=\"56\"\n height=\"56\"\n viewBox=\"0 0 56 56\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n className=\"text-info-primary laptop:block lg-desktop:size-[56px] hidden size-[40px]\"\n >\n <path\n d=\"M0 28C0 12.536 12.536 0 28 0C43.464 0 56 12.536 56 28C56 43.464 43.464 56 28 56C12.536 56 0 43.464 0 28Z\"\n fill=\"currentColor\"\n fillOpacity={disabled ? '0.2' : '0.6'}\n />\n <path d=\"M25 22L31 28L25 34\" stroke=\"white\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\" />\n </svg>\n)\n\n/**\n * \u4EA7\u54C1\u5206\u7EC4Tab\u6570\u636E\u63A5\u53E3\n */\nexport interface ProductTab {\n /** Tab ID */\n id: string\n /** Tab \u6807\u9898 */\n tab: string\n /** \u8BE5\u5206\u7EC4\u4E0B\u7684\u4EA7\u54C1\u6570\u636E */\n data: ProductCardData[]\n}\n\n/**\n * ActiveShelf \u4E1A\u52A1\u7EC4\u4EF6\u6570\u636E\u63A5\u53E3\n */\nexport interface ActiveShelfData {\n theme?: 'light' | 'dark'\n /** \u7EC4\u4EF6\u6807\u9898 */\n title?: string\n /** \u7EC4\u4EF6\u63CF\u8FF0 */\n description?: string\n /** \u5206\u7EC4\u4EA7\u54C1Tab\u5217\u8868 */\n productsTab?: ProductTab[]\n /** \u662F\u5426\u663E\u793A Tab\uFF08\u9ED8\u8BA4\uFF1Atrue\uFF09 */\n isShowTab?: boolean\n /** \u4E86\u89E3\u66F4\u591A\u6309\u94AE\u6587\u672C */\n secondaryButtonText?: string\n secondaryButtonFun: ButtonFunctionType\n /** \u7ACB\u5373\u8D2D\u4E70\u6309\u94AE\u6587\u672C */\n primaryButtonText?: string\n primaryButtonFun: ButtonFunctionType\n /** \u5E03\u5C40\u6A21\u5F0F\uFF1A\u7F51\u683C\u5E03\u5C40\u6216\u6A2A\u5411\u6ED1\u52A8 */\n layoutMode?: ActiveShelfLayoutMode\n /** Code Channel \u914D\u7F6E - \u6298\u6263\u524D\u7F00 */\n codeChannel?: CodeChannelConfig\n /** \u662F\u5426\u5C55\u793A\u4F1A\u5458\u4EF7\u683C */\n showMemberPrice?: boolean\n /** \u662F\u5426\u5C55\u793A\u6298\u6263\u6807\u7B7E */\n showDiscount?: boolean\n /** \u662F\u5426\u5C55\u793A\u6807\u7B7E\u7CFB\u7EDF */\n showTags?: boolean\n /** \u5E93\u5B58\u5C55\u793A\u6A21\u5F0F */\n stockDisplayMode?: StockDisplayMode\n /** \u5E93\u5B58\u9608\u503C\uFF08\u5F53\u6A21\u5F0F\u4E3A below-quantity \u6216 below-percentage \u65F6\u4F7F\u7528\uFF09 */\n stockThresholdValue?: number\n /**\n * \u5E93\u5B58\u6587\u672C\u6A21\u677F\uFF0C\u652F\u6301 {count} \u5360\u4F4D\u7B26\n */\n stockDisplayText?: string\n /** \u662F\u5426\u5C55\u793A\u539F\u4EF7\uFF08\u5220\u9664\u7EBF\u4EF7\u683C\uFF09 */\n showOriginalPrice?: boolean\n /** \u6587\u6848\u914D\u7F6E */\n copy?: CopyConfig\n /**\n * \u4EA7\u54C1\u5217\u8868\uFF08\u5F53\u4E0D\u4F7F\u7528 Tab \u5206\u7EC4\u65F6\u53EF\u76F4\u63A5\u4F20\u5165\u4EA7\u54C1\u5217\u8868\uFF09\n */\n productsCard: ProductCardData[]\n}\n\nexport interface ActiveShelfProps extends React.HTMLAttributes<HTMLDivElement> {\n /** \u4E1A\u52A1\u6570\u636E */\n data: ActiveShelfData\n /** \u70B9\u51FB\u4E86\u89E3\u66F4\u591A\u56DE\u8C03 */\n onLearnMore?: (product: ProductCardData) => void\n /** \u70B9\u51FB\u7ACB\u5373\u8D2D\u4E70\u56DE\u8C03 */\n onShopNow?: (product: ProductCardData) => void\n /** \u70B9\u51FB\u52A0\u5165\u8D2D\u7269\u8F66\u56DE\u8C03 */\n onAddToCart?: (product: ProductCardData) => void\n /** \u8BED\u4E49\u5316\u7C7B\u540D */\n classNames?: Partial<Record<ActiveShelfSemanticName, string>>\n}\n\n/**\n * ActiveShelf \u590D\u5408\u7EC4\u4EF6\u7C7B\u578B\u5B9A\u4E49\n */\nexport interface ActiveShelfComponent extends React.ForwardRefExoticComponent<\n ActiveShelfProps & React.RefAttributes<HTMLDivElement>\n> {\n /** \u72EC\u7ACB\u7684 ProductCard \u7EC4\u4EF6 */\n ProductCard: typeof ProductCard\n}\n\n/**\n * \u4EA7\u54C1\u5217\u8868\u7EC4\u4EF6 Props\n */\ninterface ProductsListProps {\n products: ProductCardData[]\n layoutMode: ActiveShelfLayoutMode\n className?: string\n copy?: CopyConfig\n showTags?: boolean\n stockDisplayMode?: StockDisplayMode\n stockThresholdValue?: number\n onLearnMore?: (product: ProductCardData) => void\n onShopNow?: (product: ProductCardData) => void\n onAddToCart?: (product: ProductCardData) => void\n classNames?: Partial<Record<ActiveShelfSemanticName, string>>\n secondaryButtonText?: string\n secondaryButtonFun?: ButtonFunctionType\n primaryButtonText?: string\n primaryButtonFun?: ButtonFunctionType\n showOriginalPrice?: boolean\n}\n\n/**\n * \u4EA7\u54C1\u5217\u8868\u7EC4\u4EF6 - \u652F\u6301\u7F51\u683C\u548C\u6A2A\u5411\u6ED1\u52A8\u4E24\u79CD\u5E03\u5C40\n */\nconst ProductsList = React.forwardRef<HTMLDivElement, ProductsListProps>(\n (\n {\n products,\n layoutMode,\n className,\n copy,\n showTags,\n stockDisplayMode,\n stockThresholdValue,\n onLearnMore,\n onShopNow,\n onAddToCart,\n classNames,\n secondaryButtonText,\n secondaryButtonFun,\n primaryButtonText,\n primaryButtonFun,\n showOriginalPrice,\n },\n ref\n ) => {\n // \u751F\u6210\u552F\u4E00 ID\uFF0C\u79FB\u9664\u7279\u6B8A\u5B57\u7B26\u4EE5\u786E\u4FDD\u53EF\u7528\u4E8E CSS \u9009\u62E9\u5668\n const id = React.useId().replace(/:/g, '')\n // \u9884\u5B9A\u4E49\u5BFC\u822A\u6309\u94AE\u9009\u62E9\u5668\uFF0C\u907F\u514D\u591A\u6B21\u62FC\u63A5\n const nextButtonClass = `swiper-button-next-custom-${id}`\n const prevButtonClass = `swiper-button-prev-custom-${id}`\n\n // Swiper \u5BFC\u822A\u72B6\u6001\n const [swiperState, setSwiperState] = React.useState({\n isBeginning: true,\n isEnd: false,\n })\n\n // Swiper \u5B9E\u4F8B\u5F15\u7528\n const swiperRef = React.useRef<any>(null)\n\n // \u8BA1\u7B97\u5E76\u8BBE\u7F6E\u6240\u6709 slide \u4E3A\u6700\u9AD8\u9AD8\u5EA6\n const equalizeSlideHeights = React.useCallback(() => {\n const swiper = swiperRef.current\n if (!swiper?.slides || swiper.slides.length === 0) return\n\n // \u5148\u91CD\u7F6E\u6240\u6709 slide \u9AD8\u5EA6\u4EE5\u83B7\u53D6\u771F\u5B9E\u5185\u5BB9\u9AD8\u5EA6\n swiper.slides.forEach((slide: HTMLElement) => {\n slide.style.height = 'auto'\n })\n\n // \u8BA1\u7B97\u6700\u5927\u9AD8\u5EA6\n // @ts-ignore\n const heights = Array.from(swiper.slides).map((slide: HTMLElement) => slide.scrollHeight)\n const maxHeight = Math.max(...heights)\n\n // \u8BBE\u7F6E\u6240\u6709 slide \u4E3A\u6700\u5927\u9AD8\u5EA6\n if (maxHeight > 0) {\n swiper.slides.forEach((slide: HTMLElement) => {\n slide.style.height = `${maxHeight}px`\n })\n }\n }, [])\n\n // \u76D1\u542C\u7A97\u53E3 resize \u91CD\u65B0\u8BA1\u7B97\u9AD8\u5EA6\n React.useEffect(() => {\n const handleResize = () => {\n // \u4F7F\u7528 requestAnimationFrame \u786E\u4FDD DOM \u66F4\u65B0\u5B8C\u6210\n requestAnimationFrame(equalizeSlideHeights)\n }\n\n window.addEventListener('resize', handleResize)\n return () => window.removeEventListener('resize', handleResize)\n }, [equalizeSlideHeights])\n\n if (products?.length === 0) {\n return null\n }\n\n return (\n <div ref={ref} className={className}>\n {layoutMode === 'flex' ? (\n /* \u7F51\u683C\u5E03\u5C40 */\n <div className=\"lg-desktop:gap-4 tablet:grid-cols-2 laptop:grid-cols-3 desktop:grid-cols-4 laptop:gap-4 grid grid-cols-1 justify-start gap-3\">\n {products.map((product, index) => (\n <ProductCard\n key={product.shopify_id + '-' + product.sku || index}\n product={product}\n className=\"shrink-0\"\n showTags={showTags}\n stockDisplayMode={stockDisplayMode}\n stockThresholdValue={stockThresholdValue}\n onLearnMore={onLearnMore}\n onShopNow={onShopNow}\n onAddToCart={onAddToCart}\n classNames={classNames}\n secondaryButtonText={secondaryButtonText}\n secondaryButtonFun={secondaryButtonFun}\n primaryButtonText={primaryButtonText}\n primaryButtonFun={primaryButtonFun}\n showOriginalPrice={showOriginalPrice}\n copy={copy}\n />\n ))}\n </div>\n ) : (\n /* Swiper \u6A2A\u5411\u6ED1\u52A8\u5E03\u5C40 */\n <div className=\"group relative\">\n <Swiper\n modules={[Navigation]}\n spaceBetween={16}\n slidesPerView=\"auto\"\n navigation={{\n nextEl: `.${nextButtonClass}`,\n prevEl: `.${prevButtonClass}`,\n }}\n onSwiper={swiper => {\n swiperRef.current = swiper\n setSwiperState({\n isBeginning: swiper.isBeginning,\n isEnd: swiper.isEnd,\n })\n // \u5EF6\u8FDF\u6267\u884C\u4EE5\u786E\u4FDD\u5185\u5BB9\u6E32\u67D3\u5B8C\u6210\n setTimeout(equalizeSlideHeights, 100)\n }}\n onReachEnd={() => {\n setSwiperState(prev => ({ ...prev, isEnd: true }))\n }}\n onReachBeginning={() => {\n setSwiperState(prev => ({ ...prev, isBeginning: true }))\n }}\n onFromEdge={() => {\n setSwiperState({ isBeginning: false, isEnd: false })\n }}\n className=\"!overflow-visible\"\n >\n {products.map((product, index) => (\n <SwiperSlide\n key={product.shopify_id + '-' + product.sku || index}\n className=\"tablet:!w-[288px] desktop:!w-[316px] lg-desktop:!w-[404px] !w-[296px] overflow-hidden\"\n >\n <ProductCard\n product={product}\n className=\"w-full max-w-full\"\n showTags={showTags}\n stockDisplayMode={stockDisplayMode}\n stockThresholdValue={stockThresholdValue}\n onLearnMore={onLearnMore}\n onShopNow={onShopNow}\n onAddToCart={onAddToCart}\n classNames={classNames}\n secondaryButtonText={secondaryButtonText}\n secondaryButtonFun={secondaryButtonFun}\n primaryButtonText={primaryButtonText}\n primaryButtonFun={primaryButtonFun}\n showOriginalPrice={showOriginalPrice}\n copy={copy}\n />\n </SwiperSlide>\n ))}\n </Swiper>\n\n {/* \u81EA\u5B9A\u4E49\u5BFC\u822A\u6309\u94AE - \u9ED8\u8BA4\u9690\u85CF\uFF0Chover \u65F6\u663E\u793A\uFF0Cdisabled \u65F6\u9690\u85CF */}\n <button\n className={`${prevButtonClass} tablet:block absolute left-4 top-1/2 z-10 hidden -translate-y-1/2 transition-opacity ${swiperState.isBeginning ? 'pointer-events-none opacity-0' : 'opacity-0 group-hover:opacity-100'}`}\n aria-label={copy?.previousSlideLabel}\n >\n <PrevIcon disabled={swiperState.isBeginning} />\n </button>\n <button\n className={`${nextButtonClass} tablet:block absolute right-4 top-1/2 z-10 hidden -translate-y-1/2 transition-opacity ${swiperState.isEnd ? 'pointer-events-none opacity-0' : 'opacity-0 group-hover:opacity-100'}`}\n aria-label={copy?.nextSlideLabel}\n >\n <NextIcon disabled={swiperState.isEnd} />\n </button>\n </div>\n )}\n </div>\n )\n }\n)\n\nProductsList.displayName = 'ProductsList'\n\n/**\n * ActiveShelf - \u6D3B\u52A8\u8D27\u67B6\n *\n * @description \u80FD\u591F\u5B9E\u65F6\u663E\u793A\u5546\u54C1\u5E93\u5B58\u4FE1\u606F\u548C\u4F1A\u5458\u4EF7\u7684\u8D27\u67B6\uFF0C\u652F\u6301\u54CD\u5E94\u5F0F\u5E03\u5C40\u548C\u591A\u79CD\u914D\u7F6E\u9009\u9879\n */\nconst ActiveShelf = React.forwardRef<HTMLDivElement, ActiveShelfProps>(\n ({ className, data, onLearnMore, onShopNow, onAddToCart, classNames, ...props }, ref) => {\n const boxRef = React.useRef<HTMLDivElement>(null)\n\n useExposure(boxRef, {\n componentType,\n componentName,\n componentTitle: data.title,\n componentDescription: data.description,\n })\n\n React.useImperativeHandle(ref, () => boxRef.current as HTMLDivElement)\n\n // \u4ECE data \u4E2D\u89E3\u6784\u914D\u7F6E\u9879\uFF0C\u5E76\u8BBE\u7F6E\u9ED8\u8BA4\u503C\n const {\n theme = 'light',\n layoutMode = 'flex',\n showTags = true,\n stockDisplayMode,\n stockThresholdValue,\n showOriginalPrice = true,\n secondaryButtonText,\n primaryButtonText,\n secondaryButtonFun,\n primaryButtonFun,\n isShowTab = true,\n copy,\n } = data\n\n // \u6784\u5EFA copy \u914D\u7F6E\uFF0C\u4F7F\u7528\u4F20\u5165\u7684 copy \u914D\u7F6E\n const finalCopy: CopyConfig = copy || {}\n\n // \u83B7\u53D6\u8981\u663E\u793A\u7684\u4EA7\u54C1\u6570\u636E\n const hasTabData = data.productsTab && data.productsTab.length > 0\n const shouldShowTab = isShowTab && hasTabData\n\n return (\n <div\n ref={boxRef}\n className={cn(\n 'w-full',\n {\n 'aiui-dark': theme === 'dark',\n },\n className,\n classNames?.root\n )}\n style={\n {\n '--progress-track-bg': theme === 'dark' ? 'rgba(255, 255, 255, 0.2)' : 'rgba(0, 0, 0, 0.2)',\n } as React.CSSProperties\n }\n {...props}\n >\n {/* \u6807\u9898\u533A\u57DF */}\n {data.title && (\n <Heading as=\"h2\" html={data.title} size={4} className={cn('text-info-primary mb-4', classNames?.title)} />\n )}\n {data.description && (\n <Text\n size={3}\n as=\"p\"\n html={data.description}\n className={cn('text-info-primary mb-6', classNames?.description)}\n />\n )}\n\n {/* \u4EA7\u54C1\u5C55\u793A\u533A\u57DF */}\n\n <Tabs defaultValue={data.productsTab?.[0]?.id} className=\"w-full\">\n {shouldShowTab && (\n <TabsList className=\"mb-6\">\n {data.productsTab?.map(tab => (\n <TabsTrigger key={'tab-' + tab.id} value={tab.id}>\n {tab.tab}\n </TabsTrigger>\n ))}\n </TabsList>\n )}\n {shouldShowTab ? (\n data.productsTab?.map(tab => (\n <TabsContent key={'tab-content-' + tab.id} value={tab.id}>\n <ProductsList\n products={tab.data}\n layoutMode={layoutMode}\n copy={finalCopy}\n showTags={showTags}\n stockDisplayMode={stockDisplayMode}\n stockThresholdValue={stockThresholdValue}\n onLearnMore={onLearnMore}\n onShopNow={onShopNow}\n onAddToCart={onAddToCart}\n classNames={classNames}\n secondaryButtonText={secondaryButtonText}\n secondaryButtonFun={secondaryButtonFun}\n primaryButtonText={primaryButtonText}\n primaryButtonFun={primaryButtonFun}\n showOriginalPrice={showOriginalPrice}\n />\n </TabsContent>\n ))\n ) : (\n <ProductsList\n products={data.productsCard}\n layoutMode={layoutMode}\n copy={finalCopy}\n showTags={showTags}\n stockDisplayMode={stockDisplayMode}\n stockThresholdValue={stockThresholdValue}\n onLearnMore={onLearnMore}\n onShopNow={onShopNow}\n onAddToCart={onAddToCart}\n classNames={classNames}\n secondaryButtonText={secondaryButtonText}\n secondaryButtonFun={secondaryButtonFun}\n primaryButtonText={primaryButtonText}\n primaryButtonFun={primaryButtonFun}\n showOriginalPrice={showOriginalPrice}\n />\n )}\n </Tabs>\n </div>\n )\n }\n)\n\nActiveShelf.displayName = 'ActiveShelf'\n\n// \u521B\u5EFA\u590D\u5408\u7EC4\u4EF6\nconst ActiveShelfWithProductCard = ActiveShelf as ActiveShelfComponent\nActiveShelfWithProductCard.ProductCard = ProductCard\n\nexport default ActiveShelfWithProductCard\nexport type { StockDisplayMode, ActiveShelfSemanticName, ProductCardData }\n"],
5
- "mappings": "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",
6
- "names": ["jsx", "jsxs", "React", "cn", "Text", "Heading", "Tabs", "TabsList", "TabsTrigger", "TabsContent", "Swiper", "SwiperSlide", "Navigation", "ProductCard", "useExposure", "componentType", "componentName", "PrevIcon", "disabled", "NextIcon", "ProductsList", "products", "layoutMode", "className", "copy", "showTags", "stockDisplayMode", "stockThresholdValue", "onLearnMore", "onShopNow", "onAddToCart", "classNames", "secondaryButtonText", "secondaryButtonFun", "primaryButtonText", "primaryButtonFun", "showOriginalPrice", "ref", "id", "nextButtonClass", "prevButtonClass", "swiperState", "setSwiperState", "swiperRef", "equalizeSlideHeights", "swiper", "slide", "heights", "maxHeight", "handleResize", "product", "index", "prev", "ActiveShelf", "data", "props", "boxRef", "theme", "isShowTab", "finalCopy", "hasTabData", "shouldShowTab", "tab", "ActiveShelfWithProductCard", "ActiveShelf_default"]
4
+ "sourcesContent": ["'use client'\n\nimport * as React from 'react'\nimport { cn } from '../../helpers/index.js'\nimport { withLayout } from '../../shared/Styles.js'\nimport { Text, Heading, Tabs, TabsList, TabsTrigger, TabsContent } from '../../components/index.js'\n\nimport { Swiper, SwiperSlide } from 'swiper/react'\nimport { Navigation } from 'swiper/modules'\n\n// Import Swiper styles\nimport 'swiper/css'\nimport 'swiper/css/navigation'\nimport type { ButtonFunctionType, CopyConfig } from './types.js'\nimport {\n ProductCard,\n type ProductCardData,\n type ActiveShelfSemanticName,\n type StockDisplayMode,\n} from './ProductCard.js'\nimport { useExposure } from '../../hooks/useExposure.js'\n\nconst componentType = 'shelf'\nconst componentName = 'active_shelf'\n\n/**\n * \u7EC4\u4EF6\u5E03\u5C40\u6A21\u5F0F\n */\nexport type ActiveShelfLayoutMode = 'flex' | 'horizontal'\n\n/**\n * Code Channel \u914D\u7F6E - \u6298\u6263\u524D\u7F00\n */\nexport type CodeChannelConfig = string\n\nconst PrevIcon = ({ disabled }: { disabled: boolean }) => (\n <svg\n width=\"56\"\n height=\"56\"\n viewBox=\"0 0 56 56\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n className=\"text-info-primary laptop:block lg-desktop:size-[56px] hidden size-[40px]\"\n >\n <path\n d=\"M0 28C0 43.464 12.536 56 28 56C43.464 56 56 43.464 56 28C56 12.536 43.464 0 28 0C12.536 0 0 12.536 0 28Z\"\n fill=\"currentColor\"\n fillOpacity={disabled ? '0.2' : '0.6'}\n />\n <path d=\"M31 22L25 28L31 34\" stroke=\"white\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\" />\n </svg>\n)\n\nconst NextIcon = ({ disabled }: { disabled: boolean }) => (\n <svg\n width=\"56\"\n height=\"56\"\n viewBox=\"0 0 56 56\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n className=\"text-info-primary laptop:block lg-desktop:size-[56px] hidden size-[40px]\"\n >\n <path\n d=\"M0 28C0 12.536 12.536 0 28 0C43.464 0 56 12.536 56 28C56 43.464 43.464 56 28 56C12.536 56 0 43.464 0 28Z\"\n fill=\"currentColor\"\n fillOpacity={disabled ? '0.2' : '0.6'}\n />\n <path d=\"M25 22L31 28L25 34\" stroke=\"white\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\" />\n </svg>\n)\n\n/**\n * \u4EA7\u54C1\u5206\u7EC4Tab\u6570\u636E\u63A5\u53E3\n */\nexport interface ProductTab {\n /** Tab ID */\n id: string\n /** Tab \u6807\u9898 */\n tab: string\n /** \u8BE5\u5206\u7EC4\u4E0B\u7684\u4EA7\u54C1\u6570\u636E */\n data: ProductCardData[]\n}\n\n/**\n * ActiveShelf \u4E1A\u52A1\u7EC4\u4EF6\u6570\u636E\u63A5\u53E3\n */\nexport interface ActiveShelfData {\n theme?: 'light' | 'dark'\n /** \u7EC4\u4EF6\u6807\u9898 */\n title?: string\n /** \u7EC4\u4EF6\u63CF\u8FF0 */\n description?: string\n /** \u5206\u7EC4\u4EA7\u54C1Tab\u5217\u8868 */\n productsTab?: ProductTab[]\n /** \u662F\u5426\u663E\u793A Tab\uFF08\u9ED8\u8BA4\uFF1Atrue\uFF09 */\n isShowTab?: boolean\n /** \u4E86\u89E3\u66F4\u591A\u6309\u94AE\u6587\u672C */\n secondaryButtonText?: string\n secondaryButtonFun: ButtonFunctionType\n /** \u7ACB\u5373\u8D2D\u4E70\u6309\u94AE\u6587\u672C */\n primaryButtonText?: string\n primaryButtonFun: ButtonFunctionType\n /** \u5E03\u5C40\u6A21\u5F0F\uFF1A\u7F51\u683C\u5E03\u5C40\u6216\u6A2A\u5411\u6ED1\u52A8 */\n layoutMode?: ActiveShelfLayoutMode\n /** Code Channel \u914D\u7F6E - \u6298\u6263\u524D\u7F00 */\n codeChannel?: CodeChannelConfig\n /** \u662F\u5426\u5C55\u793A\u4F1A\u5458\u4EF7\u683C */\n showMemberPrice?: boolean\n /** \u662F\u5426\u5C55\u793A\u6298\u6263\u6807\u7B7E */\n showDiscount?: boolean\n /** \u662F\u5426\u5C55\u793A\u6807\u7B7E\u7CFB\u7EDF */\n showTags?: boolean\n /** \u5E93\u5B58\u5C55\u793A\u6A21\u5F0F */\n stockDisplayMode?: StockDisplayMode\n /** \u5E93\u5B58\u9608\u503C\uFF08\u5F53\u6A21\u5F0F\u4E3A below-quantity \u6216 below-percentage \u65F6\u4F7F\u7528\uFF09 */\n stockThresholdValue?: number\n /**\n * \u5E93\u5B58\u6587\u672C\u6A21\u677F\uFF0C\u652F\u6301 {count} \u5360\u4F4D\u7B26\n */\n stockDisplayText?: string\n /** \u662F\u5426\u5C55\u793A\u539F\u4EF7\uFF08\u5220\u9664\u7EBF\u4EF7\u683C\uFF09 */\n showOriginalPrice?: boolean\n /** \u6587\u6848\u914D\u7F6E */\n copy?: CopyConfig\n /**\n * \u4EA7\u54C1\u5217\u8868\uFF08\u5F53\u4E0D\u4F7F\u7528 Tab \u5206\u7EC4\u65F6\u53EF\u76F4\u63A5\u4F20\u5165\u4EA7\u54C1\u5217\u8868\uFF09\n */\n productsCard: ProductCardData[]\n}\n\nexport interface ActiveShelfProps extends React.HTMLAttributes<HTMLDivElement> {\n /** \u4E1A\u52A1\u6570\u636E */\n data: ActiveShelfData\n /** \u70B9\u51FB\u4E86\u89E3\u66F4\u591A\u56DE\u8C03 */\n onLearnMore?: (product: ProductCardData) => void\n /** \u70B9\u51FB\u7ACB\u5373\u8D2D\u4E70\u56DE\u8C03 */\n onShopNow?: (product: ProductCardData) => void\n /** \u70B9\u51FB\u52A0\u5165\u8D2D\u7269\u8F66\u56DE\u8C03 */\n onAddToCart?: (product: ProductCardData) => void\n /** \u8BED\u4E49\u5316\u7C7B\u540D */\n classNames?: Partial<Record<ActiveShelfSemanticName, string>>\n}\n\n/**\n * ActiveShelf \u590D\u5408\u7EC4\u4EF6\u7C7B\u578B\u5B9A\u4E49\n */\nexport interface ActiveShelfComponent extends React.ForwardRefExoticComponent<\n ActiveShelfProps & React.RefAttributes<HTMLDivElement>\n> {\n /** \u72EC\u7ACB\u7684 ProductCard \u7EC4\u4EF6 */\n ProductCard: typeof ProductCard\n}\n\n/**\n * \u4EA7\u54C1\u5217\u8868\u7EC4\u4EF6 Props\n */\ninterface ProductsListProps {\n products: ProductCardData[]\n layoutMode: ActiveShelfLayoutMode\n className?: string\n copy?: CopyConfig\n showTags?: boolean\n stockDisplayMode?: StockDisplayMode\n stockThresholdValue?: number\n onLearnMore?: (product: ProductCardData) => void\n onShopNow?: (product: ProductCardData) => void\n onAddToCart?: (product: ProductCardData) => void\n classNames?: Partial<Record<ActiveShelfSemanticName, string>>\n secondaryButtonText?: string\n secondaryButtonFun?: ButtonFunctionType\n primaryButtonText?: string\n primaryButtonFun?: ButtonFunctionType\n showOriginalPrice?: boolean\n}\n\n/**\n * \u4EA7\u54C1\u5217\u8868\u7EC4\u4EF6 - \u652F\u6301\u7F51\u683C\u548C\u6A2A\u5411\u6ED1\u52A8\u4E24\u79CD\u5E03\u5C40\n */\nconst ProductsList = React.forwardRef<HTMLDivElement, ProductsListProps>(\n (\n {\n products,\n layoutMode,\n className,\n copy,\n showTags,\n stockDisplayMode,\n stockThresholdValue,\n onLearnMore,\n onShopNow,\n onAddToCart,\n classNames,\n secondaryButtonText,\n secondaryButtonFun,\n primaryButtonText,\n primaryButtonFun,\n showOriginalPrice,\n },\n ref\n ) => {\n // \u751F\u6210\u552F\u4E00 ID\uFF0C\u79FB\u9664\u7279\u6B8A\u5B57\u7B26\u4EE5\u786E\u4FDD\u53EF\u7528\u4E8E CSS \u9009\u62E9\u5668\n const id = React.useId().replace(/:/g, '')\n // \u9884\u5B9A\u4E49\u5BFC\u822A\u6309\u94AE\u9009\u62E9\u5668\uFF0C\u907F\u514D\u591A\u6B21\u62FC\u63A5\n const nextButtonClass = `swiper-button-next-custom-${id}`\n const prevButtonClass = `swiper-button-prev-custom-${id}`\n\n // Swiper \u5BFC\u822A\u72B6\u6001\n const [swiperState, setSwiperState] = React.useState({\n isBeginning: true,\n isEnd: false,\n })\n\n // Swiper \u5B9E\u4F8B\u5F15\u7528\n const swiperRef = React.useRef<any>(null)\n\n // \u8BA1\u7B97\u5E76\u8BBE\u7F6E\u6240\u6709 slide \u4E3A\u6700\u9AD8\u9AD8\u5EA6\n const equalizeSlideHeights = React.useCallback(() => {\n const swiper = swiperRef.current\n if (!swiper?.slides || swiper.slides.length === 0) return\n\n // \u5148\u91CD\u7F6E\u6240\u6709 slide \u9AD8\u5EA6\u4EE5\u83B7\u53D6\u771F\u5B9E\u5185\u5BB9\u9AD8\u5EA6\n swiper.slides.forEach((slide: HTMLElement) => {\n slide.style.height = 'auto'\n })\n\n // \u8BA1\u7B97\u6700\u5927\u9AD8\u5EA6\n // @ts-ignore\n const heights = Array.from(swiper.slides).map((slide: HTMLElement) => slide.scrollHeight)\n const maxHeight = Math.max(...heights)\n\n // \u8BBE\u7F6E\u6240\u6709 slide \u4E3A\u6700\u5927\u9AD8\u5EA6\n if (maxHeight > 0) {\n swiper.slides.forEach((slide: HTMLElement) => {\n slide.style.height = `${maxHeight}px`\n })\n }\n }, [])\n\n // \u76D1\u542C\u7A97\u53E3 resize \u91CD\u65B0\u8BA1\u7B97\u9AD8\u5EA6\n React.useEffect(() => {\n const handleResize = () => {\n // \u4F7F\u7528 requestAnimationFrame \u786E\u4FDD DOM \u66F4\u65B0\u5B8C\u6210\n requestAnimationFrame(equalizeSlideHeights)\n }\n\n window.addEventListener('resize', handleResize)\n return () => window.removeEventListener('resize', handleResize)\n }, [equalizeSlideHeights])\n\n if (products?.length === 0) {\n return null\n }\n\n return (\n <div ref={ref} className={className}>\n {layoutMode === 'flex' ? (\n /* \u7F51\u683C\u5E03\u5C40 */\n <div className=\"lg-desktop:gap-4 tablet:grid-cols-2 laptop:grid-cols-3 desktop:grid-cols-4 laptop:gap-4 grid grid-cols-1 justify-start gap-3\">\n {products.map((product, index) => (\n <ProductCard\n key={product.shopify_id + '-' + product.sku || index}\n product={product}\n className=\"shrink-0\"\n showTags={showTags}\n stockDisplayMode={stockDisplayMode}\n stockThresholdValue={stockThresholdValue}\n onLearnMore={onLearnMore}\n onShopNow={onShopNow}\n onAddToCart={onAddToCart}\n classNames={classNames}\n secondaryButtonText={secondaryButtonText}\n secondaryButtonFun={secondaryButtonFun}\n primaryButtonText={primaryButtonText}\n primaryButtonFun={primaryButtonFun}\n showOriginalPrice={showOriginalPrice}\n copy={copy}\n />\n ))}\n </div>\n ) : (\n /* Swiper \u6A2A\u5411\u6ED1\u52A8\u5E03\u5C40 */\n <div className=\"group relative\">\n <Swiper\n modules={[Navigation]}\n spaceBetween={16}\n slidesPerView=\"auto\"\n navigation={{\n nextEl: `.${nextButtonClass}`,\n prevEl: `.${prevButtonClass}`,\n }}\n onSwiper={swiper => {\n swiperRef.current = swiper\n setSwiperState({\n isBeginning: swiper.isBeginning,\n isEnd: swiper.isEnd,\n })\n // \u5EF6\u8FDF\u6267\u884C\u4EE5\u786E\u4FDD\u5185\u5BB9\u6E32\u67D3\u5B8C\u6210\n setTimeout(equalizeSlideHeights, 100)\n }}\n onReachEnd={() => {\n setSwiperState(prev => ({ ...prev, isEnd: true }))\n }}\n onReachBeginning={() => {\n setSwiperState(prev => ({ ...prev, isBeginning: true }))\n }}\n onFromEdge={() => {\n setSwiperState({ isBeginning: false, isEnd: false })\n }}\n className=\"!overflow-visible\"\n >\n {products.map((product, index) => (\n <SwiperSlide\n key={product.shopify_id + '-' + product.sku || index}\n className=\"tablet:!w-[288px] desktop:!w-[316px] lg-desktop:!w-[404px] !w-[296px] overflow-hidden\"\n >\n <ProductCard\n product={product}\n className=\"w-full max-w-full\"\n showTags={showTags}\n stockDisplayMode={stockDisplayMode}\n stockThresholdValue={stockThresholdValue}\n onLearnMore={onLearnMore}\n onShopNow={onShopNow}\n onAddToCart={onAddToCart}\n classNames={classNames}\n secondaryButtonText={secondaryButtonText}\n secondaryButtonFun={secondaryButtonFun}\n primaryButtonText={primaryButtonText}\n primaryButtonFun={primaryButtonFun}\n showOriginalPrice={showOriginalPrice}\n copy={copy}\n />\n </SwiperSlide>\n ))}\n </Swiper>\n\n {/* \u81EA\u5B9A\u4E49\u5BFC\u822A\u6309\u94AE - \u9ED8\u8BA4\u9690\u85CF\uFF0Chover \u65F6\u663E\u793A\uFF0Cdisabled \u65F6\u9690\u85CF */}\n <button\n className={`${prevButtonClass} tablet:block absolute left-4 top-1/2 z-10 hidden -translate-y-1/2 transition-opacity ${swiperState.isBeginning ? 'pointer-events-none opacity-0' : 'opacity-0 group-hover:opacity-100'}`}\n aria-label={copy?.previousSlideLabel}\n >\n <PrevIcon disabled={swiperState.isBeginning} />\n </button>\n <button\n className={`${nextButtonClass} tablet:block absolute right-4 top-1/2 z-10 hidden -translate-y-1/2 transition-opacity ${swiperState.isEnd ? 'pointer-events-none opacity-0' : 'opacity-0 group-hover:opacity-100'}`}\n aria-label={copy?.nextSlideLabel}\n >\n <NextIcon disabled={swiperState.isEnd} />\n </button>\n </div>\n )}\n </div>\n )\n }\n)\n\nProductsList.displayName = 'ProductsList'\n\n/**\n * ActiveShelf - \u6D3B\u52A8\u8D27\u67B6\n *\n * @description \u80FD\u591F\u5B9E\u65F6\u663E\u793A\u5546\u54C1\u5E93\u5B58\u4FE1\u606F\u548C\u4F1A\u5458\u4EF7\u7684\u8D27\u67B6\uFF0C\u652F\u6301\u54CD\u5E94\u5F0F\u5E03\u5C40\u548C\u591A\u79CD\u914D\u7F6E\u9009\u9879\n */\nconst ActiveShelf = React.forwardRef<HTMLDivElement, ActiveShelfProps>(\n ({ className, data, onLearnMore, onShopNow, onAddToCart, classNames, ...props }, ref) => {\n const boxRef = React.useRef<HTMLDivElement>(null)\n\n useExposure(boxRef, {\n componentType,\n componentName,\n componentTitle: data.title,\n componentDescription: data.description,\n })\n\n React.useImperativeHandle(ref, () => boxRef.current as HTMLDivElement)\n\n // \u4ECE data \u4E2D\u89E3\u6784\u914D\u7F6E\u9879\uFF0C\u5E76\u8BBE\u7F6E\u9ED8\u8BA4\u503C\n const {\n theme = 'light',\n layoutMode = 'flex',\n showTags = true,\n stockDisplayMode,\n stockThresholdValue,\n showOriginalPrice = true,\n secondaryButtonText,\n primaryButtonText,\n secondaryButtonFun,\n primaryButtonFun,\n isShowTab = true,\n copy,\n } = data\n\n // \u6784\u5EFA copy \u914D\u7F6E\uFF0C\u4F7F\u7528\u4F20\u5165\u7684 copy \u914D\u7F6E\n const finalCopy: CopyConfig = copy || {}\n\n // \u83B7\u53D6\u8981\u663E\u793A\u7684\u4EA7\u54C1\u6570\u636E\n const hasTabData = data.productsTab && data.productsTab.length > 0\n const shouldShowTab = isShowTab && hasTabData\n\n return (\n <div\n ref={boxRef}\n className={cn(\n 'w-full',\n {\n 'aiui-dark': theme === 'dark',\n },\n className,\n classNames?.root\n )}\n style={\n {\n '--progress-track-bg': theme === 'dark' ? 'rgba(255, 255, 255, 0.2)' : 'rgba(0, 0, 0, 0.2)',\n } as React.CSSProperties\n }\n {...props}\n >\n {/* \u6807\u9898\u533A\u57DF */}\n {data.title && (\n <Heading as=\"h2\" html={data.title} size={4} className={cn('text-info-primary mb-4', classNames?.title)} />\n )}\n {data.description && (\n <Text\n size={3}\n as=\"p\"\n html={data.description}\n className={cn('text-info-primary mb-6', classNames?.description)}\n />\n )}\n\n {/* \u4EA7\u54C1\u5C55\u793A\u533A\u57DF */}\n\n <Tabs defaultValue={data.productsTab?.[0]?.id} className=\"w-full\">\n {shouldShowTab && (\n <TabsList className=\"mb-6\">\n {data.productsTab?.map(tab => (\n <TabsTrigger key={'tab-' + tab.id} value={tab.id}>\n {tab.tab}\n </TabsTrigger>\n ))}\n </TabsList>\n )}\n {shouldShowTab ? (\n data.productsTab?.map(tab => (\n <TabsContent key={'tab-content-' + tab.id} value={tab.id}>\n <ProductsList\n products={tab.data}\n layoutMode={layoutMode}\n copy={finalCopy}\n showTags={showTags}\n stockDisplayMode={stockDisplayMode}\n stockThresholdValue={stockThresholdValue}\n onLearnMore={onLearnMore}\n onShopNow={onShopNow}\n onAddToCart={onAddToCart}\n classNames={classNames}\n secondaryButtonText={secondaryButtonText}\n secondaryButtonFun={secondaryButtonFun}\n primaryButtonText={primaryButtonText}\n primaryButtonFun={primaryButtonFun}\n showOriginalPrice={showOriginalPrice}\n />\n </TabsContent>\n ))\n ) : (\n <ProductsList\n products={data.productsCard}\n layoutMode={layoutMode}\n copy={finalCopy}\n showTags={showTags}\n stockDisplayMode={stockDisplayMode}\n stockThresholdValue={stockThresholdValue}\n onLearnMore={onLearnMore}\n onShopNow={onShopNow}\n onAddToCart={onAddToCart}\n classNames={classNames}\n secondaryButtonText={secondaryButtonText}\n secondaryButtonFun={secondaryButtonFun}\n primaryButtonText={primaryButtonText}\n primaryButtonFun={primaryButtonFun}\n showOriginalPrice={showOriginalPrice}\n />\n )}\n </Tabs>\n </div>\n )\n }\n)\n\nActiveShelf.displayName = 'ActiveShelf'\n\n// \u521B\u5EFA\u590D\u5408\u7EC4\u4EF6\nconst ActiveShelfWithProductCard = ActiveShelf as ActiveShelfComponent\nActiveShelfWithProductCard.ProductCard = ProductCard\n\nconst ActiveShelfWrapped = withLayout(ActiveShelfWithProductCard)\n\nexport default ActiveShelfWrapped\nexport type { StockDisplayMode, ActiveShelfSemanticName, ProductCardData }\n"],
5
+ "mappings": "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",
6
+ "names": ["jsx", "jsxs", "React", "cn", "withLayout", "Text", "Heading", "Tabs", "TabsList", "TabsTrigger", "TabsContent", "Swiper", "SwiperSlide", "Navigation", "ProductCard", "useExposure", "componentType", "componentName", "PrevIcon", "disabled", "NextIcon", "ProductsList", "products", "layoutMode", "className", "copy", "showTags", "stockDisplayMode", "stockThresholdValue", "onLearnMore", "onShopNow", "onAddToCart", "classNames", "secondaryButtonText", "secondaryButtonFun", "primaryButtonText", "primaryButtonFun", "showOriginalPrice", "ref", "id", "nextButtonClass", "prevButtonClass", "swiperState", "setSwiperState", "swiperRef", "equalizeSlideHeights", "swiper", "slide", "heights", "maxHeight", "handleResize", "product", "index", "prev", "ActiveShelf", "data", "props", "boxRef", "theme", "isShowTab", "finalCopy", "hasTabData", "shouldShowTab", "tab", "ActiveShelfWithProductCard", "ActiveShelfWrapped", "ActiveShelf_default"]
7
7
  }
@@ -60,10 +60,5 @@ export interface EventScheduleProps extends React.HTMLAttributes<HTMLDivElement>
60
60
  data: EventScheduleData;
61
61
  classNames?: Partial<Record<EventScheduleSemanticName, string>>;
62
62
  }
63
- /**
64
- * EventSchedule - 活动日程组件
65
- *
66
- * @description 显示活动日程时间轴和活动卡片列表
67
- */
68
- declare const EventSchedule: React.ForwardRefExoticComponent<EventScheduleProps & React.RefAttributes<HTMLDivElement>>;
69
- export default EventSchedule;
63
+ declare const _default: any;
64
+ export default _default;