@anker-in/headless-ui 1.1.83 → 1.1.84-alpha.1776249522021

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 (379) hide show
  1. package/dist/cjs/biz-components/AccordionCards/index.js +1 -1
  2. package/dist/cjs/biz-components/AccordionCards/index.js.map +3 -3
  3. package/dist/cjs/biz-components/ActiveShelf/index.d.ts +2 -2
  4. package/dist/cjs/biz-components/ActiveShelf/index.js +1 -1
  5. package/dist/cjs/biz-components/ActiveShelf/index.js.map +3 -3
  6. package/dist/cjs/biz-components/ActivityMechanism/index.js +1 -1
  7. package/dist/cjs/biz-components/ActivityMechanism/index.js.map +3 -3
  8. package/dist/cjs/biz-components/ActivitySchedule/index.js +1 -1
  9. package/dist/cjs/biz-components/ActivitySchedule/index.js.map +3 -3
  10. package/dist/cjs/biz-components/AnchorNavigation/index.js +1 -1
  11. package/dist/cjs/biz-components/AnchorNavigation/index.js.map +3 -3
  12. package/dist/cjs/biz-components/BrandCardLink/BrandCardLink.js +1 -1
  13. package/dist/cjs/biz-components/BrandCardLink/BrandCardLink.js.map +3 -3
  14. package/dist/cjs/biz-components/Category/SwiperCategory.js +1 -1
  15. package/dist/cjs/biz-components/Category/SwiperCategory.js.map +3 -3
  16. package/dist/cjs/biz-components/Category/index.js +1 -1
  17. package/dist/cjs/biz-components/Category/index.js.map +3 -3
  18. package/dist/cjs/biz-components/Evaluate/index.js +1 -1
  19. package/dist/cjs/biz-components/Evaluate/index.js.map +3 -3
  20. package/dist/cjs/biz-components/EventSchedule/index.d.ts +2 -7
  21. package/dist/cjs/biz-components/EventSchedule/index.js +1 -1
  22. package/dist/cjs/biz-components/EventSchedule/index.js.map +3 -3
  23. package/dist/cjs/biz-components/Faq/Faq.js +1 -1
  24. package/dist/cjs/biz-components/Faq/Faq.js.map +2 -2
  25. package/dist/cjs/biz-components/Faq/types.d.ts +1 -0
  26. package/dist/cjs/biz-components/Faq/types.js +1 -1
  27. package/dist/cjs/biz-components/Faq/types.js.map +1 -1
  28. package/dist/cjs/biz-components/FeatureCards/FeatureCards.js +1 -1
  29. package/dist/cjs/biz-components/FeatureCards/FeatureCards.js.map +3 -3
  30. package/dist/cjs/biz-components/FeaturedBlogPosts/index.d.ts +1 -6
  31. package/dist/cjs/biz-components/FeaturedBlogPosts/index.js +1 -1
  32. package/dist/cjs/biz-components/FeaturedBlogPosts/index.js.map +3 -3
  33. package/dist/cjs/biz-components/GiftBox/index.js +1 -1
  34. package/dist/cjs/biz-components/GiftBox/index.js.map +2 -2
  35. package/dist/cjs/biz-components/GiftShelf/index.js +1 -1
  36. package/dist/cjs/biz-components/GiftShelf/index.js.map +3 -3
  37. package/dist/cjs/biz-components/GiftTierShelf/index.js +1 -1
  38. package/dist/cjs/biz-components/GiftTierShelf/index.js.map +3 -3
  39. package/dist/cjs/biz-components/Graphic/index.js +1 -1
  40. package/dist/cjs/biz-components/Graphic/index.js.map +3 -3
  41. package/dist/cjs/biz-components/GraphicOverlay/GraphicOverlay.js +1 -1
  42. package/dist/cjs/biz-components/GraphicOverlay/GraphicOverlay.js.map +3 -3
  43. package/dist/cjs/biz-components/HeroBanner/HeroBanner.js +1 -1
  44. package/dist/cjs/biz-components/HeroBanner/HeroBanner.js.map +3 -3
  45. package/dist/cjs/biz-components/ImageOverlayShelf/index.d.ts +3 -3
  46. package/dist/cjs/biz-components/ImageOverlayShelf/index.js +1 -1
  47. package/dist/cjs/biz-components/ImageOverlayShelf/index.js.map +3 -3
  48. package/dist/cjs/biz-components/ImageTextOverlay/index.d.ts +4 -0
  49. package/dist/cjs/biz-components/ImageTextOverlay/index.js +2 -0
  50. package/dist/cjs/biz-components/ImageTextOverlay/index.js.map +7 -0
  51. package/dist/cjs/biz-components/ImageTextOverlay/types.d.ts +58 -0
  52. package/dist/cjs/biz-components/ImageTextOverlay/types.js +2 -0
  53. package/dist/cjs/biz-components/ImageTextOverlay/types.js.map +7 -0
  54. package/dist/cjs/biz-components/ImageWithText/ImageWithText.js +1 -1
  55. package/dist/cjs/biz-components/ImageWithText/ImageWithText.js.map +3 -3
  56. package/dist/cjs/biz-components/Listing/components/ProductCard/ProductGallery/index.js +1 -1
  57. package/dist/cjs/biz-components/Listing/components/ProductCard/ProductGallery/index.js.map +2 -2
  58. package/dist/cjs/biz-components/Listing/components/PurchaseBar/ProductActions/index.js +1 -1
  59. package/dist/cjs/biz-components/Listing/components/PurchaseBar/ProductActions/index.js.map +3 -3
  60. package/dist/cjs/biz-components/LotteryShared/BaseModal.d.ts +61 -0
  61. package/dist/cjs/biz-components/LotteryShared/BaseModal.js +2 -0
  62. package/dist/cjs/biz-components/LotteryShared/BaseModal.js.map +7 -0
  63. package/dist/cjs/biz-components/LotteryShared/ChanceMethods.d.ts +25 -0
  64. package/dist/cjs/biz-components/LotteryShared/ChanceMethods.js +2 -0
  65. package/dist/cjs/biz-components/LotteryShared/ChanceMethods.js.map +7 -0
  66. package/dist/cjs/biz-components/LotteryShared/ErrorModal.d.ts +47 -0
  67. package/dist/cjs/biz-components/LotteryShared/ErrorModal.js +2 -0
  68. package/dist/cjs/biz-components/LotteryShared/ErrorModal.js.map +7 -0
  69. package/dist/cjs/biz-components/LotteryShared/MyRewardsModal.d.ts +101 -0
  70. package/dist/cjs/biz-components/LotteryShared/MyRewardsModal.js +2 -0
  71. package/dist/cjs/biz-components/LotteryShared/MyRewardsModal.js.map +7 -0
  72. package/dist/cjs/biz-components/LotteryShared/PrizePool.d.ts +29 -0
  73. package/dist/cjs/biz-components/LotteryShared/PrizePool.js +2 -0
  74. package/dist/cjs/biz-components/LotteryShared/PrizePool.js.map +7 -0
  75. package/dist/cjs/biz-components/LotteryShared/RulesModal.d.ts +56 -0
  76. package/dist/cjs/biz-components/LotteryShared/RulesModal.js +2 -0
  77. package/dist/cjs/biz-components/LotteryShared/RulesModal.js.map +7 -0
  78. package/dist/cjs/biz-components/LotteryShared/ShareModal.d.ts +79 -0
  79. package/dist/cjs/biz-components/LotteryShared/ShareModal.js +2 -0
  80. package/dist/cjs/biz-components/LotteryShared/ShareModal.js.map +7 -0
  81. package/dist/cjs/biz-components/LotteryShared/WinnerModal.d.ts +27 -0
  82. package/dist/cjs/biz-components/LotteryShared/WinnerModal.js +2 -0
  83. package/dist/cjs/biz-components/LotteryShared/WinnerModal.js.map +7 -0
  84. package/dist/cjs/biz-components/LotteryShared/index.d.ts +23 -0
  85. package/dist/cjs/biz-components/LotteryShared/index.js +2 -0
  86. package/dist/cjs/biz-components/LotteryShared/index.js.map +7 -0
  87. package/dist/cjs/biz-components/LotteryShared/types.d.ts +760 -0
  88. package/dist/cjs/biz-components/LotteryShared/types.js +2 -0
  89. package/dist/cjs/biz-components/LotteryShared/types.js.map +7 -0
  90. package/dist/cjs/biz-components/Marquee/Marquee.js +1 -1
  91. package/dist/cjs/biz-components/Marquee/Marquee.js.map +3 -3
  92. package/dist/cjs/biz-components/Marquee/type.d.ts +5 -2
  93. package/dist/cjs/biz-components/Marquee/type.js.map +1 -1
  94. package/dist/cjs/biz-components/Media/index.d.ts +15 -3
  95. package/dist/cjs/biz-components/Media/index.js +1 -1
  96. package/dist/cjs/biz-components/Media/index.js.map +3 -3
  97. package/dist/cjs/biz-components/MediaEndorsement/index.js +2 -2
  98. package/dist/cjs/biz-components/MediaEndorsement/index.js.map +2 -2
  99. package/dist/cjs/biz-components/MediaPlayerMulti/index.js +1 -1
  100. package/dist/cjs/biz-components/MediaPlayerMulti/index.js.map +3 -3
  101. package/dist/cjs/biz-components/MediaShelf/index.d.ts +2 -2
  102. package/dist/cjs/biz-components/MediaShelf/index.js +1 -1
  103. package/dist/cjs/biz-components/MediaShelf/index.js.map +3 -3
  104. package/dist/cjs/biz-components/MemberEquity/index.js +2 -2
  105. package/dist/cjs/biz-components/MemberEquity/index.js.map +3 -3
  106. package/dist/cjs/biz-components/MultiLayoutGraphicBlock/MultiLayoutGraphicBlock.js +1 -1
  107. package/dist/cjs/biz-components/MultiLayoutGraphicBlock/MultiLayoutGraphicBlock.js.map +3 -3
  108. package/dist/cjs/biz-components/NavigationSearch/index.js +2 -2
  109. package/dist/cjs/biz-components/NavigationSearch/index.js.map +2 -2
  110. package/dist/cjs/biz-components/ProductHero/ProductHero.js +1 -1
  111. package/dist/cjs/biz-components/ProductHero/ProductHero.js.map +3 -3
  112. package/dist/cjs/biz-components/ProductLottery/MediaDrawArea.d.ts +4 -0
  113. package/dist/cjs/biz-components/ProductLottery/MediaDrawArea.js +2 -0
  114. package/dist/cjs/biz-components/ProductLottery/MediaDrawArea.js.map +7 -0
  115. package/dist/cjs/biz-components/ProductLottery/index.d.ts +17 -0
  116. package/dist/cjs/biz-components/ProductLottery/index.js +2 -0
  117. package/dist/cjs/biz-components/ProductLottery/index.js.map +7 -0
  118. package/dist/cjs/biz-components/ProductLottery/types.d.ts +363 -0
  119. package/dist/cjs/biz-components/ProductLottery/types.js +2 -0
  120. package/dist/cjs/biz-components/ProductLottery/types.js.map +7 -0
  121. package/dist/cjs/biz-components/ProductNav/ProductNav.js +1 -1
  122. package/dist/cjs/biz-components/ProductNav/ProductNav.js.map +3 -3
  123. package/dist/cjs/biz-components/PromotionalBar/index.js +1 -1
  124. package/dist/cjs/biz-components/PromotionalBar/index.js.map +3 -3
  125. package/dist/cjs/biz-components/SceneShelfV2/index.d.ts +88 -0
  126. package/dist/cjs/biz-components/SceneShelfV2/index.js +2 -0
  127. package/dist/cjs/biz-components/SceneShelfV2/index.js.map +7 -0
  128. package/dist/cjs/biz-components/SceneShelfV3/ProductCard.d.ts +80 -0
  129. package/dist/cjs/biz-components/SceneShelfV3/ProductCard.js +2 -0
  130. package/dist/cjs/biz-components/SceneShelfV3/ProductCard.js.map +7 -0
  131. package/dist/cjs/biz-components/SceneShelfV3/index.d.ts +76 -0
  132. package/dist/cjs/biz-components/SceneShelfV3/index.js +2 -0
  133. package/dist/cjs/biz-components/SceneShelfV3/index.js.map +7 -0
  134. package/dist/cjs/biz-components/SceneShelfV3/types.d.ts +19 -0
  135. package/dist/cjs/biz-components/SceneShelfV3/types.js +2 -0
  136. package/dist/cjs/biz-components/SceneShelfV3/types.js.map +7 -0
  137. package/dist/cjs/biz-components/SecondaryBanner/index.js +1 -1
  138. package/dist/cjs/biz-components/SecondaryBanner/index.js.map +3 -3
  139. package/dist/cjs/biz-components/ShelfDisplay/shelfDisplayItem.js +1 -1
  140. package/dist/cjs/biz-components/ShelfDisplay/shelfDisplayItem.js.map +3 -3
  141. package/dist/cjs/biz-components/Specs/index.js +1 -1
  142. package/dist/cjs/biz-components/Specs/index.js.map +3 -3
  143. package/dist/cjs/biz-components/Subscribe/index.js +1 -1
  144. package/dist/cjs/biz-components/Subscribe/index.js.map +2 -2
  145. package/dist/cjs/biz-components/SwiperBox/index.js +1 -1
  146. package/dist/cjs/biz-components/SwiperBox/index.js.map +3 -3
  147. package/dist/cjs/biz-components/Tabs/Tabs.js +1 -1
  148. package/dist/cjs/biz-components/Tabs/Tabs.js.map +3 -3
  149. package/dist/cjs/biz-components/Tabs/types.d.ts +3 -0
  150. package/dist/cjs/biz-components/Tabs/types.js +1 -1
  151. package/dist/cjs/biz-components/Tabs/types.js.map +1 -1
  152. package/dist/cjs/biz-components/ThreeDCarousel/ThreeDCarousel.js +1 -1
  153. package/dist/cjs/biz-components/ThreeDCarousel/ThreeDCarousel.js.map +3 -3
  154. package/dist/cjs/biz-components/Title/index.js +1 -1
  155. package/dist/cjs/biz-components/Title/index.js.map +3 -3
  156. package/dist/cjs/biz-components/Title/types.d.ts +48 -1
  157. package/dist/cjs/biz-components/Title/types.js +1 -1
  158. package/dist/cjs/biz-components/Title/types.js.map +1 -1
  159. package/dist/cjs/biz-components/WebPushPopup/index.d.ts +44 -0
  160. package/dist/cjs/biz-components/WebPushPopup/index.js +2 -0
  161. package/dist/cjs/biz-components/WebPushPopup/index.js.map +7 -0
  162. package/dist/cjs/biz-components/WheelLottery/index.d.ts +11 -11
  163. package/dist/cjs/biz-components/WheelLottery/index.js +1 -1
  164. package/dist/cjs/biz-components/WheelLottery/index.js.map +3 -3
  165. package/dist/cjs/biz-components/WheelLottery/types.d.ts +17 -723
  166. package/dist/cjs/biz-components/WheelLottery/types.js +1 -1
  167. package/dist/cjs/biz-components/WheelLottery/types.js.map +3 -3
  168. package/dist/cjs/biz-components/index.d.ts +13 -0
  169. package/dist/cjs/biz-components/index.js +1 -1
  170. package/dist/cjs/biz-components/index.js.map +3 -3
  171. package/dist/cjs/components/Countdown.js +1 -1
  172. package/dist/cjs/components/Countdown.js.map +3 -3
  173. package/dist/cjs/components/link.js +1 -1
  174. package/dist/cjs/components/link.js.map +2 -2
  175. package/dist/cjs/helpers/index.d.ts +1 -1
  176. package/dist/cjs/helpers/index.js +1 -1
  177. package/dist/cjs/helpers/index.js.map +2 -2
  178. package/dist/cjs/helpers/isLexicalEmpty.d.ts +5 -0
  179. package/dist/cjs/helpers/isLexicalEmpty.js +1 -1
  180. package/dist/cjs/helpers/isLexicalEmpty.js.map +3 -3
  181. package/dist/cjs/hooks/useEmarsysWebPush.d.ts +111 -0
  182. package/dist/cjs/hooks/useEmarsysWebPush.js +2 -0
  183. package/dist/cjs/hooks/useEmarsysWebPush.js.map +7 -0
  184. package/dist/cjs/hooks/useGridRowCount.d.ts +16 -0
  185. package/dist/cjs/hooks/useGridRowCount.js +2 -0
  186. package/dist/cjs/hooks/useGridRowCount.js.map +7 -0
  187. package/dist/cjs/hooks/useProductListTrack.d.ts +43 -0
  188. package/dist/cjs/hooks/useProductListTrack.js +2 -0
  189. package/dist/cjs/hooks/useProductListTrack.js.map +7 -0
  190. package/dist/cjs/types/props.d.ts +16 -0
  191. package/dist/cjs/types/props.js +1 -1
  192. package/dist/cjs/types/props.js.map +1 -1
  193. package/dist/esm/biz-components/AccordionCards/index.js +1 -1
  194. package/dist/esm/biz-components/AccordionCards/index.js.map +3 -3
  195. package/dist/esm/biz-components/ActiveShelf/index.d.ts +2 -2
  196. package/dist/esm/biz-components/ActiveShelf/index.js +1 -1
  197. package/dist/esm/biz-components/ActiveShelf/index.js.map +3 -3
  198. package/dist/esm/biz-components/ActivityMechanism/index.js +1 -1
  199. package/dist/esm/biz-components/ActivityMechanism/index.js.map +3 -3
  200. package/dist/esm/biz-components/ActivitySchedule/index.js +1 -1
  201. package/dist/esm/biz-components/ActivitySchedule/index.js.map +3 -3
  202. package/dist/esm/biz-components/AnchorNavigation/index.js +1 -1
  203. package/dist/esm/biz-components/AnchorNavigation/index.js.map +3 -3
  204. package/dist/esm/biz-components/BrandCardLink/BrandCardLink.js +1 -1
  205. package/dist/esm/biz-components/BrandCardLink/BrandCardLink.js.map +3 -3
  206. package/dist/esm/biz-components/Category/SwiperCategory.js +1 -1
  207. package/dist/esm/biz-components/Category/SwiperCategory.js.map +3 -3
  208. package/dist/esm/biz-components/Category/index.js +1 -1
  209. package/dist/esm/biz-components/Category/index.js.map +3 -3
  210. package/dist/esm/biz-components/Evaluate/index.js +1 -1
  211. package/dist/esm/biz-components/Evaluate/index.js.map +3 -3
  212. package/dist/esm/biz-components/EventSchedule/index.d.ts +2 -7
  213. package/dist/esm/biz-components/EventSchedule/index.js +1 -1
  214. package/dist/esm/biz-components/EventSchedule/index.js.map +3 -3
  215. package/dist/esm/biz-components/Faq/Faq.js +1 -1
  216. package/dist/esm/biz-components/Faq/Faq.js.map +2 -2
  217. package/dist/esm/biz-components/Faq/types.d.ts +1 -0
  218. package/dist/esm/biz-components/FeatureCards/FeatureCards.js +1 -1
  219. package/dist/esm/biz-components/FeatureCards/FeatureCards.js.map +3 -3
  220. package/dist/esm/biz-components/FeaturedBlogPosts/index.d.ts +1 -6
  221. package/dist/esm/biz-components/FeaturedBlogPosts/index.js +1 -1
  222. package/dist/esm/biz-components/FeaturedBlogPosts/index.js.map +3 -3
  223. package/dist/esm/biz-components/GiftBox/index.js +1 -1
  224. package/dist/esm/biz-components/GiftBox/index.js.map +2 -2
  225. package/dist/esm/biz-components/GiftShelf/index.js +1 -1
  226. package/dist/esm/biz-components/GiftShelf/index.js.map +3 -3
  227. package/dist/esm/biz-components/GiftTierShelf/index.js +1 -1
  228. package/dist/esm/biz-components/GiftTierShelf/index.js.map +3 -3
  229. package/dist/esm/biz-components/Graphic/index.js +1 -1
  230. package/dist/esm/biz-components/Graphic/index.js.map +3 -3
  231. package/dist/esm/biz-components/GraphicOverlay/GraphicOverlay.js +1 -1
  232. package/dist/esm/biz-components/GraphicOverlay/GraphicOverlay.js.map +3 -3
  233. package/dist/esm/biz-components/HeroBanner/HeroBanner.js +1 -1
  234. package/dist/esm/biz-components/HeroBanner/HeroBanner.js.map +3 -3
  235. package/dist/esm/biz-components/ImageOverlayShelf/index.d.ts +3 -3
  236. package/dist/esm/biz-components/ImageOverlayShelf/index.js +1 -1
  237. package/dist/esm/biz-components/ImageOverlayShelf/index.js.map +3 -3
  238. package/dist/esm/biz-components/ImageTextOverlay/index.d.ts +4 -0
  239. package/dist/esm/biz-components/ImageTextOverlay/index.js +2 -0
  240. package/dist/esm/biz-components/ImageTextOverlay/index.js.map +7 -0
  241. package/dist/esm/biz-components/ImageTextOverlay/types.d.ts +58 -0
  242. package/dist/esm/biz-components/ImageTextOverlay/types.js +1 -0
  243. package/dist/esm/biz-components/ImageTextOverlay/types.js.map +7 -0
  244. package/dist/esm/biz-components/ImageWithText/ImageWithText.js +1 -1
  245. package/dist/esm/biz-components/ImageWithText/ImageWithText.js.map +3 -3
  246. package/dist/esm/biz-components/Listing/components/ProductCard/ProductGallery/index.js +1 -1
  247. package/dist/esm/biz-components/Listing/components/ProductCard/ProductGallery/index.js.map +2 -2
  248. package/dist/esm/biz-components/Listing/components/PurchaseBar/ProductActions/index.js +1 -1
  249. package/dist/esm/biz-components/Listing/components/PurchaseBar/ProductActions/index.js.map +3 -3
  250. package/dist/esm/biz-components/LotteryShared/BaseModal.d.ts +61 -0
  251. package/dist/esm/biz-components/LotteryShared/BaseModal.js +2 -0
  252. package/dist/esm/biz-components/LotteryShared/BaseModal.js.map +7 -0
  253. package/dist/esm/biz-components/LotteryShared/ChanceMethods.d.ts +25 -0
  254. package/dist/esm/biz-components/LotteryShared/ChanceMethods.js +2 -0
  255. package/dist/esm/biz-components/LotteryShared/ChanceMethods.js.map +7 -0
  256. package/dist/esm/biz-components/LotteryShared/ErrorModal.d.ts +47 -0
  257. package/dist/esm/biz-components/LotteryShared/ErrorModal.js +2 -0
  258. package/dist/esm/biz-components/LotteryShared/ErrorModal.js.map +7 -0
  259. package/dist/esm/biz-components/LotteryShared/MyRewardsModal.d.ts +101 -0
  260. package/dist/esm/biz-components/LotteryShared/MyRewardsModal.js +2 -0
  261. package/dist/esm/biz-components/LotteryShared/MyRewardsModal.js.map +7 -0
  262. package/dist/esm/biz-components/LotteryShared/PrizePool.d.ts +29 -0
  263. package/dist/esm/biz-components/LotteryShared/PrizePool.js +2 -0
  264. package/dist/esm/biz-components/LotteryShared/PrizePool.js.map +7 -0
  265. package/dist/esm/biz-components/LotteryShared/RulesModal.d.ts +56 -0
  266. package/dist/esm/biz-components/LotteryShared/RulesModal.js +2 -0
  267. package/dist/esm/biz-components/LotteryShared/RulesModal.js.map +7 -0
  268. package/dist/esm/biz-components/LotteryShared/ShareModal.d.ts +79 -0
  269. package/dist/esm/biz-components/LotteryShared/ShareModal.js +2 -0
  270. package/dist/esm/biz-components/LotteryShared/ShareModal.js.map +7 -0
  271. package/dist/esm/biz-components/LotteryShared/WinnerModal.d.ts +27 -0
  272. package/dist/esm/biz-components/LotteryShared/WinnerModal.js +2 -0
  273. package/dist/esm/biz-components/LotteryShared/WinnerModal.js.map +7 -0
  274. package/dist/esm/biz-components/LotteryShared/index.d.ts +23 -0
  275. package/dist/esm/biz-components/LotteryShared/index.js +2 -0
  276. package/dist/esm/biz-components/LotteryShared/index.js.map +7 -0
  277. package/dist/esm/biz-components/LotteryShared/types.d.ts +760 -0
  278. package/dist/esm/biz-components/LotteryShared/types.js +2 -0
  279. package/dist/esm/biz-components/LotteryShared/types.js.map +7 -0
  280. package/dist/esm/biz-components/Marquee/Marquee.js +1 -1
  281. package/dist/esm/biz-components/Marquee/Marquee.js.map +3 -3
  282. package/dist/esm/biz-components/Marquee/type.d.ts +5 -2
  283. package/dist/esm/biz-components/Media/index.d.ts +15 -3
  284. package/dist/esm/biz-components/Media/index.js +1 -1
  285. package/dist/esm/biz-components/Media/index.js.map +3 -3
  286. package/dist/esm/biz-components/MediaEndorsement/index.js +2 -2
  287. package/dist/esm/biz-components/MediaEndorsement/index.js.map +3 -3
  288. package/dist/esm/biz-components/MediaPlayerMulti/index.js +1 -1
  289. package/dist/esm/biz-components/MediaPlayerMulti/index.js.map +3 -3
  290. package/dist/esm/biz-components/MediaShelf/index.d.ts +2 -2
  291. package/dist/esm/biz-components/MediaShelf/index.js +1 -1
  292. package/dist/esm/biz-components/MediaShelf/index.js.map +3 -3
  293. package/dist/esm/biz-components/MemberEquity/index.js +2 -2
  294. package/dist/esm/biz-components/MemberEquity/index.js.map +3 -3
  295. package/dist/esm/biz-components/MultiLayoutGraphicBlock/MultiLayoutGraphicBlock.js +1 -1
  296. package/dist/esm/biz-components/MultiLayoutGraphicBlock/MultiLayoutGraphicBlock.js.map +3 -3
  297. package/dist/esm/biz-components/NavigationSearch/index.js +2 -2
  298. package/dist/esm/biz-components/NavigationSearch/index.js.map +3 -3
  299. package/dist/esm/biz-components/ProductHero/ProductHero.js +1 -1
  300. package/dist/esm/biz-components/ProductHero/ProductHero.js.map +3 -3
  301. package/dist/esm/biz-components/ProductLottery/MediaDrawArea.d.ts +4 -0
  302. package/dist/esm/biz-components/ProductLottery/MediaDrawArea.js +2 -0
  303. package/dist/esm/biz-components/ProductLottery/MediaDrawArea.js.map +7 -0
  304. package/dist/esm/biz-components/ProductLottery/index.d.ts +17 -0
  305. package/dist/esm/biz-components/ProductLottery/index.js +2 -0
  306. package/dist/esm/biz-components/ProductLottery/index.js.map +7 -0
  307. package/dist/esm/biz-components/ProductLottery/types.d.ts +363 -0
  308. package/dist/esm/biz-components/ProductLottery/types.js +2 -0
  309. package/dist/esm/biz-components/ProductLottery/types.js.map +7 -0
  310. package/dist/esm/biz-components/ProductNav/ProductNav.js +1 -1
  311. package/dist/esm/biz-components/ProductNav/ProductNav.js.map +3 -3
  312. package/dist/esm/biz-components/PromotionalBar/index.js +1 -1
  313. package/dist/esm/biz-components/PromotionalBar/index.js.map +3 -3
  314. package/dist/esm/biz-components/SceneShelfV2/index.d.ts +88 -0
  315. package/dist/esm/biz-components/SceneShelfV2/index.js +2 -0
  316. package/dist/esm/biz-components/SceneShelfV2/index.js.map +7 -0
  317. package/dist/esm/biz-components/SceneShelfV3/ProductCard.d.ts +80 -0
  318. package/dist/esm/biz-components/SceneShelfV3/ProductCard.js +2 -0
  319. package/dist/esm/biz-components/SceneShelfV3/ProductCard.js.map +7 -0
  320. package/dist/esm/biz-components/SceneShelfV3/index.d.ts +76 -0
  321. package/dist/esm/biz-components/SceneShelfV3/index.js +2 -0
  322. package/dist/esm/biz-components/SceneShelfV3/index.js.map +7 -0
  323. package/dist/esm/biz-components/SceneShelfV3/types.d.ts +19 -0
  324. package/dist/esm/biz-components/SceneShelfV3/types.js +1 -0
  325. package/dist/esm/biz-components/SceneShelfV3/types.js.map +7 -0
  326. package/dist/esm/biz-components/SecondaryBanner/index.js +1 -1
  327. package/dist/esm/biz-components/SecondaryBanner/index.js.map +3 -3
  328. package/dist/esm/biz-components/ShelfDisplay/shelfDisplayItem.js +1 -1
  329. package/dist/esm/biz-components/ShelfDisplay/shelfDisplayItem.js.map +3 -3
  330. package/dist/esm/biz-components/Specs/index.js +1 -1
  331. package/dist/esm/biz-components/Specs/index.js.map +3 -3
  332. package/dist/esm/biz-components/Subscribe/index.js +1 -1
  333. package/dist/esm/biz-components/Subscribe/index.js.map +2 -2
  334. package/dist/esm/biz-components/SwiperBox/index.js +1 -1
  335. package/dist/esm/biz-components/SwiperBox/index.js.map +3 -3
  336. package/dist/esm/biz-components/Tabs/Tabs.js +1 -1
  337. package/dist/esm/biz-components/Tabs/Tabs.js.map +3 -3
  338. package/dist/esm/biz-components/Tabs/types.d.ts +3 -0
  339. package/dist/esm/biz-components/ThreeDCarousel/ThreeDCarousel.js +1 -1
  340. package/dist/esm/biz-components/ThreeDCarousel/ThreeDCarousel.js.map +3 -3
  341. package/dist/esm/biz-components/Title/index.js +1 -1
  342. package/dist/esm/biz-components/Title/index.js.map +3 -3
  343. package/dist/esm/biz-components/Title/types.d.ts +48 -1
  344. package/dist/esm/biz-components/WebPushPopup/index.d.ts +44 -0
  345. package/dist/esm/biz-components/WebPushPopup/index.js +2 -0
  346. package/dist/esm/biz-components/WebPushPopup/index.js.map +7 -0
  347. package/dist/esm/biz-components/WheelLottery/index.d.ts +11 -11
  348. package/dist/esm/biz-components/WheelLottery/index.js +1 -1
  349. package/dist/esm/biz-components/WheelLottery/index.js.map +3 -3
  350. package/dist/esm/biz-components/WheelLottery/types.d.ts +17 -723
  351. package/dist/esm/biz-components/WheelLottery/types.js +1 -1
  352. package/dist/esm/biz-components/WheelLottery/types.js.map +3 -3
  353. package/dist/esm/biz-components/index.d.ts +13 -0
  354. package/dist/esm/biz-components/index.js +1 -1
  355. package/dist/esm/biz-components/index.js.map +3 -3
  356. package/dist/esm/components/Countdown.js +1 -1
  357. package/dist/esm/components/Countdown.js.map +3 -3
  358. package/dist/esm/components/link.js +1 -1
  359. package/dist/esm/components/link.js.map +2 -2
  360. package/dist/esm/helpers/index.d.ts +1 -1
  361. package/dist/esm/helpers/index.js +1 -1
  362. package/dist/esm/helpers/index.js.map +3 -3
  363. package/dist/esm/helpers/isLexicalEmpty.d.ts +5 -0
  364. package/dist/esm/helpers/isLexicalEmpty.js +1 -1
  365. package/dist/esm/helpers/isLexicalEmpty.js.map +3 -3
  366. package/dist/esm/hooks/useEmarsysWebPush.d.ts +111 -0
  367. package/dist/esm/hooks/useEmarsysWebPush.js +2 -0
  368. package/dist/esm/hooks/useEmarsysWebPush.js.map +7 -0
  369. package/dist/esm/hooks/useGridRowCount.d.ts +16 -0
  370. package/dist/esm/hooks/useGridRowCount.js +2 -0
  371. package/dist/esm/hooks/useGridRowCount.js.map +7 -0
  372. package/dist/esm/hooks/useProductListTrack.d.ts +43 -0
  373. package/dist/esm/hooks/useProductListTrack.js +2 -0
  374. package/dist/esm/hooks/useProductListTrack.js.map +7 -0
  375. package/dist/esm/types/props.d.ts +16 -0
  376. package/package.json +4 -2
  377. package/static/emarsys-service-worker.js +31 -0
  378. package/style.css +208 -5
  379. package/tailwind.config.js +11 -1
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../src/biz-components/NavigationSearch/index.tsx"],
4
- "sourcesContent": ["/* eslint-disable react/no-unknown-property */\nimport { Picture, Text, Button, Container, Link, Heading, Grid, GridItem } from '../../components/index.js'\nimport { Search as SearchIcon, Close as CloseIcon } from '../HeaderNavigation/icons/index.js'\nimport { forwardRef, useCallback, useMemo, useState, useEffect, useRef } from 'react'\nimport type { NavigationSearchProps } from './types.js'\nimport { useAiuiContext } from '../AiuiProvider/index.js'\nimport { getLocalizedPath } from '../../helpers/utils.js'\nimport { withLayout } from '../../shared/Styles.js'\n\nimport { SearchStatus } from './types.js'\n\nimport { debounce } from 'es-toolkit'\nimport { cn, atobID, highlightSearchWord } from '../../helpers/utils.js'\n\nexport const canSearch = (target: any) => {\n return !(\n target.metafields?.global?.HideSearch ||\n target.metafields?.seo?.hidden ||\n target.metafields?.seo?.setting?.noindex\n )\n}\n\nconst NavigationSearch = forwardRef<HTMLDivElement, NavigationSearchProps>(\n ({ data, onSearch, onClose, searchResult, isSearching, keywords, className, ...rest }, ref) => {\n const { locale = 'us', copyWriting } = useAiuiContext()\n\n const [searchValue, setSearchValue] = useState('')\n const [isComposing, setIsComposing] = useState(false)\n const inputRef = useRef<HTMLInputElement>(null)\n\n // \u81EA\u52A8\u805A\u7126\u5230\u8F93\u5165\u6846\uFF08\u963B\u6B62\u6EDA\u52A8\u884C\u4E3A\uFF09\n useEffect(() => {\n if (inputRef.current) {\n inputRef.current.focus({ preventScroll: true })\n }\n }, [])\n\n const debouncedFunction = debounce((value: string) => {\n onSearch(value)\n }, 300)\n\n const handleKeyDown = useCallback(\n (e: React.KeyboardEvent<HTMLInputElement>) => {\n if (e.key === 'Enter' && !isComposing) {\n window.open(getLocalizedPath(`${data?.moreLink}?q=${searchValue.toLowerCase()}`, locale), '_self')\n }\n },\n [isComposing, searchValue, locale, data?.moreLink]\n )\n\n const searchKeywords = useMemo(() => {\n if (Array.isArray(keywords) && keywords?.length) {\n return keywords.map((keyword: any) => keyword.search_term)\n }\n if (Array.isArray(data?.popularWords) && data?.popularWords?.length) {\n return data?.popularWords.map((word: any) => word.popularWord)\n }\n return []\n }, [keywords, data?.popularWords])\n\n const getLink = useCallback(\n (item: any) => {\n const type = item.__typename || item.type\n switch (type) {\n case 'Product':\n return getLocalizedPath(`/products${item.path}?q=${searchValue.toLowerCase()}`, locale)\n case 'Article':\n return getLocalizedPath(\n `/blogs/${item.blog.handle}/${item.handle.replace('storefront-', '')}?q=${searchValue.toLowerCase()}`,\n locale\n )\n default:\n break\n }\n },\n [searchValue, locale]\n )\n\n const searchStatus = useMemo(() => {\n if (!searchValue) {\n // \u6CA1\u6709\u641C\u7D22\u503C\n return SearchStatus.Default\n } else if (searchResult?.totalCount) {\n // \u6709\u641C\u7D22\u7ED3\u679C\n return SearchStatus.Predict\n } else if (!isSearching) {\n // \u6CA1\u6709\u641C\u7D22\u7ED3\u679C\n return SearchStatus.Empty\n }\n }, [searchResult?.totalCount, searchValue, isSearching])\n\n return (\n <Container childClassName=\"!bg-white\" {...rest} className={cn('relative', className)} ref={ref}>\n <style>\n {`\n .navigation-search-component input:-webkit-autofill,\n .navigation-search-component input:-webkit-autofill:hover,\n .navigation-search-component input:-webkit-autofill:focus {\n -webkit-box-shadow: 0 0 0 1000px transparent inset !important; /* \u80CC\u666F\u900F\u660E */\n -webkit-text-fill-color: #000 !important;\n transition: background-color 9999s ease-in-out 0s !important;\n caret-color: #000;\n }\n `}\n </style>\n <div className=\"navigation-search-component laptop:h-[52px] desktop:h-[60px] desktop:pt-6 flex items-center justify-between gap-4 border-b border-b-gray-200 py-4 text-black\">\n <input\n ref={inputRef}\n value={searchValue}\n onCompositionStart={() => setIsComposing(true)}\n onCompositionEnd={() => setIsComposing(false)}\n onKeyDown={handleKeyDown}\n onChange={e => {\n setSearchValue(e.target.value)\n if (e.target.value) {\n debouncedFunction(e.target.value)\n }\n }}\n type=\"text\"\n className=\"flex-1 bg-white text-sm font-bold leading-[1.4] outline-none placeholder:text-[#4A4C56] focus-visible:!outline-none\"\n placeholder={data?.placeholder}\n />\n <div className=\"flex items-center gap-3\">\n <SearchIcon className=\"size-5 cursor-pointer\" onClick={() => onSearch(searchValue)} />\n <div className=\"h-[20px] w-px bg-[#E4E5E6]\" />\n <CloseIcon className=\"size-5 cursor-pointer\" onClick={onClose} />\n </div>\n </div>\n <div className=\"desktop:gap-12 desktop:py-6 flex flex-col gap-6 py-4 text-black\">\n {searchStatus === SearchStatus.Predict ? (\n <>\n <div>\n <div className=\"flex items-center gap-1\">\n <Text html={data?.suggestText} className=\"text-sm font-bold leading-[1.4] text-[#6D6D6F]\" />\n {searchResult?.items?.length > 6 && (\n <Button\n as=\"a\"\n iconClassName=\"size-4\"\n href={getLocalizedPath(`${data?.moreLink}?q=${searchValue.toLowerCase()}`, locale)}\n className=\"!p-0 !text-sm font-bold leading-[1.2]\"\n variant=\"link\"\n >\n {data?.moreText}\n </Button>\n )}\n </div>\n <div className=\"mt-2 flex flex-col\">\n {searchResult?.items\n ?.filter((item: any) => canSearch(item))\n .slice(0, 6)\n ?.map((item: any) => (\n <Link\n className=\"rounded-sidebar-shelf w-full p-4 no-underline hover:bg-[#F5F5F7] hover:text-current\"\n href={getLink(item)}\n key={item.id}\n >\n <Text\n html={highlightSearchWord(item.title, searchValue)}\n className=\"cursor-pointer text-sm font-bold leading-[1.4]\"\n />\n </Link>\n ))}\n </div>\n </div>\n <div key=\"predict-advertising-card\">\n <Text html={data?.hotProductsText} className=\"text-sm font-bold leading-[1.4] text-[#6D6D6F]\" />\n <div className=\"tablet:grid-cols-2 laptop:grid-cols-3 desktop:grid-cols-4 tablet:gap-x-3 tablet:gap-y-4 laptop:gap-4 mt-2 grid grid-cols-1 gap-2\">\n {data?.advertisingBgImg?.url && (\n <Link asChild={!data?.advertisingLink} href={getLocalizedPath(data?.advertisingLink, locale)}>\n <div className=\"rounded-sidebar-shelf relative\">\n <Picture\n source={data?.advertisingBgImg?.url}\n className=\"laptop:h-[120px] h-[114px]\"\n imgClassName=\"object-cover h-full\"\n />\n <div className=\"absolute inset-x-0 bottom-0 p-4\">\n <Heading\n size={2}\n html={data?.advertisingTitle || 'Buy in Guide'}\n className={cn('font-bold text-white', {\n 'text-black': data?.advertisingTheme === 'dark',\n })}\n />\n <Text\n html={data?.advertisingSubtitle || '20.000mAh'}\n className={cn('text-sm font-bold text-white', {\n 'text-black': data?.advertisingTheme === 'dark',\n })}\n />\n </div>\n </div>\n </Link>\n )}\n {searchResult?.items\n ?.filter((item: any) => item.type.toLowerCase() === 'product')\n .slice(0, data?.advertisingBgImg?.url ? 7 : 8)\n ?.map((item: any) => {\n const variant = item?.variants?.[0]\n const productImage = `${variant?.image?.url || item?.images?.[0]?.url}`\n const productName = item?.title || item?.name\n const productDesc = item?.description\n const productBadge = item?.badge || ''\n const listingLink = getLocalizedPath(\n `/products/${item?.handle}?variant=${atobID(variant?.id as string)}`,\n locale\n )\n return (\n <SearchProduct\n productImage={productImage}\n productName={productName}\n productDesc={productDesc}\n productBadge={productBadge}\n listingLink={listingLink}\n key={item.id}\n />\n )\n })}\n </div>\n </div>\n </>\n ) : (\n <>\n {searchStatus === SearchStatus.Empty && (\n <Text\n html={data?.noResultText}\n as=\"p\"\n className=\"border-b border-[#E4E5E6] pb-6 text-sm font-bold leading-[1.4] text-[#6D6D6F]\"\n />\n )}\n <div>\n <Text html={data?.popularText} className=\"text-sm font-bold leading-[1.4] text-[#6D6D6F]\" />\n <div className=\"mt-2\">\n <SearchKeyword data={data} keywords={searchKeywords} locale={locale} />\n {Array.isArray(data?.popularPages) && !!data?.popularPages?.length && (\n <Grid className=\"laptop:gap-4 laptop:mt-4 mt-3 gap-3\">\n {data?.popularPages?.map((item: any) => (\n <GridItem\n key={item?.id}\n className=\"tablet:col-span-6 laptop:p-3 desktop:p-4 laptop:col-span-3 col-span-12 p-2 hover:bg-[#F5F5F7]\"\n >\n <a\n href={getLocalizedPath(`${data?.moreLink}?q=${item?.popularPage.toLowerCase()}`, locale)}\n className=\"line-clamp-1 cursor-pointer text-sm font-bold leading-[1.4]\"\n >\n {item?.popularPage}\n </a>\n </GridItem>\n ))}\n </Grid>\n )}\n </div>\n </div>\n <div key=\"empty-advertising-card\">\n <Text html={data?.hotProductsText} className=\"text-sm font-bold leading-[1.4] text-[#6D6D6F]\" />\n <div className=\"tablet:grid-cols-2 laptop:grid-cols-3 desktop:grid-cols-4 tablet:gap-x-3 tablet:gap-y-4 laptop:gap-4 mt-2 grid grid-cols-1 gap-2\">\n {data?.advertisingBgImg?.url && (\n <Link asChild={!data?.advertisingLink} href={getLocalizedPath(data?.advertisingLink, locale)}>\n <div className=\"rounded-sidebar-shelf relative overflow-hidden [&_img]:hover:scale-110 [&_img]:hover:transition-all [&_img]:hover:duration-500\">\n <Picture\n source={data?.advertisingBgImg?.url}\n className=\"laptop:h-[120px] h-[114px]\"\n imgClassName=\"object-cover h-full\"\n />\n <div className=\"absolute inset-x-0 bottom-0 p-4\">\n <Heading\n size={2}\n html={data?.advertisingTitle || 'Buy in Guide'}\n className={cn('font-bold text-white', {\n 'text-black': data?.advertisingTheme === 'dark',\n })}\n />\n <Text\n html={data?.advertisingSubtitle || '20.000mAh'}\n className={cn('text-sm font-bold text-white', {\n 'text-black': data?.advertisingTheme === 'dark',\n })}\n />\n </div>\n </div>\n </Link>\n )}\n {data?.hotProducts?.slice(0, data?.advertisingBgImg?.url ? 7 : 8)?.map((item: any) => {\n const productDesc = item?.custom_description\n const productBadge = item?.badge || ''\n const listingLink = getLocalizedPath(\n `/products/${item?.handle}?variant=${atobID(item?.shopify_id as string)}`,\n locale\n )\n return (\n <SearchProduct\n productImage={item?.image}\n productName={item?.name}\n productDesc={productDesc}\n productBadge={productBadge}\n listingLink={listingLink}\n key={item.shopify_id || item.id}\n />\n )\n })}\n </div>\n </div>\n </>\n )}\n </div>\n </Container>\n )\n }\n)\n\nNavigationSearch.displayName = 'NavigationSearch'\n\nconst SearchProduct = ({\n productImage,\n productName,\n productDesc,\n productBadge,\n className,\n listingLink,\n}: {\n productImage: string\n productName: string\n productDesc: string\n productBadge: string\n className?: string\n listingLink: string\n}) => {\n return (\n <Link href={listingLink} className=\"block no-underline hover:text-current\">\n <div\n className={cn(\n 'rounded-sidebar-shelf flex shrink-0 gap-4 overflow-hidden bg-[#F5F5F7] px-4 py-3 [&_img]:hover:scale-110 [&_img]:hover:duration-500',\n className\n )}\n >\n <div className=\"shrink-0\">\n <img\n src={productImage}\n loading=\"lazy\"\n alt={productName}\n width={90}\n height={90}\n className=\"size-[96px] object-contain\"\n />\n </div>\n <div className=\"relative\">\n <div className=\" h-[24px] \">\n {productBadge && (\n <Text\n as=\"p\"\n html={productBadge}\n className=\"text-brand-0 mb-1 inline-block h-full rounded-full border-[1.6px] border-[#00BEFA] px-[6px] text-sm font-bold !leading-[22px]\"\n />\n )}\n </div>\n <div>\n <Text\n className=\"lg-desktop:h-[44px] lg-desktop:text-base line-clamp-2 h-[40px] text-sm font-bold leading-[1.4]\"\n html={productName}\n />\n {productDesc && (\n <Text\n as=\"p\"\n html={productDesc}\n className=\"lg-desktop:text-sm mt-1 line-clamp-1 text-xs font-bold leading-[1.4] text-[#6D6D6F]\"\n />\n )}\n </div>\n </div>\n </div>\n </Link>\n )\n}\n\nconst SearchKeyword = ({ data, keywords, locale }: { data: any; keywords: any[]; locale: string }) => {\n return (\n <div className=\"laptop:gap-4 flex flex-wrap gap-3\">\n {keywords?.map((keyword: any, index) => (\n <a\n href={getLocalizedPath(`${data?.moreLink}?q=${keyword?.toLowerCase()}`, locale)}\n key={index}\n className=\"rounded-sidebar-shelf laptop:p-3 desktop:p-4 cursor-pointer p-2 text-sm font-bold leading-[1.4] hover:bg-[#F5F5F7]\"\n >\n {keyword}\n </a>\n ))}\n </div>\n )\n}\n\nexport default withLayout(NavigationSearch)\n"],
5
- "mappings": "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",
6
- "names": ["Fragment", "jsx", "jsxs", "Picture", "Text", "Button", "Container", "Link", "Heading", "Grid", "GridItem", "SearchIcon", "CloseIcon", "forwardRef", "useCallback", "useMemo", "useState", "useEffect", "useRef", "useAiuiContext", "getLocalizedPath", "withLayout", "SearchStatus", "debounce", "cn", "atobID", "highlightSearchWord", "canSearch", "target", "NavigationSearch", "data", "onSearch", "onClose", "searchResult", "isSearching", "keywords", "className", "rest", "ref", "locale", "copyWriting", "searchValue", "setSearchValue", "isComposing", "setIsComposing", "inputRef", "debouncedFunction", "value", "handleKeyDown", "searchKeywords", "keyword", "word", "getLink", "item", "searchStatus", "variant", "productImage", "productName", "productDesc", "productBadge", "listingLink", "SearchProduct", "SearchKeyword", "index", "NavigationSearch_default"]
4
+ "sourcesContent": ["/* eslint-disable react/no-unknown-property */\nimport { Picture, Text, Button, Container, Link, Heading, Grid, GridItem } from '../../components/index.js'\nimport { Search as SearchIcon, Close as CloseIcon } from '../HeaderNavigation/icons/index.js'\nimport { forwardRef, useCallback, useMemo, useState, useEffect, useRef } from 'react'\nimport type { NavigationSearchProps } from './types.js'\nimport { useAiuiContext } from '../AiuiProvider/index.js'\nimport { atobID, cn, getLocalizedPath, highlightSearchWord } from '../../helpers/utils.js'\nimport { withLayout } from '../../shared/Styles.js'\n\nimport { SearchStatus } from './types.js'\n\nimport { debounce } from 'es-toolkit'\n\nexport const canSearch = (target: any) => {\n return !(\n target.metafields?.global?.HideSearch ||\n target.metafields?.seo?.hidden ||\n target.metafields?.seo?.setting?.noindex\n )\n}\n\nconst NavigationSearch = forwardRef<HTMLDivElement, NavigationSearchProps>(\n ({ data, onSearch, onClose, searchResult, isSearching, keywords, className, ...rest }, ref) => {\n const { locale = 'us', copyWriting } = useAiuiContext()\n\n const [searchValue, setSearchValue] = useState('')\n const [isComposing, setIsComposing] = useState(false)\n const inputRef = useRef<HTMLInputElement>(null)\n\n // \u81EA\u52A8\u805A\u7126\u5230\u8F93\u5165\u6846\uFF08\u963B\u6B62\u6EDA\u52A8\u884C\u4E3A\uFF09\n useEffect(() => {\n if (inputRef.current) {\n inputRef.current.focus({ preventScroll: true })\n }\n }, [])\n\n const debouncedFunction = debounce((value: string) => {\n onSearch(value)\n }, 300)\n\n const handleKeyDown = useCallback(\n (e: React.KeyboardEvent<HTMLInputElement>) => {\n if (e.key === 'Enter' && !isComposing) {\n window.open(getLocalizedPath(`${data?.moreLink}?q=${searchValue.toLowerCase()}`, locale), '_self')\n }\n },\n [isComposing, searchValue, locale, data?.moreLink]\n )\n\n const searchKeywords = useMemo(() => {\n if (Array.isArray(keywords) && keywords?.length) {\n return keywords.map((keyword: any) => keyword.search_term)\n }\n if (Array.isArray(data?.popularWords) && data?.popularWords?.length) {\n return data?.popularWords.map((word: any) => word.popularWord)\n }\n return []\n }, [keywords, data?.popularWords])\n\n const getLink = useCallback(\n (item: any) => {\n const type = item.__typename || item.type\n switch (type) {\n case 'Product':\n return getLocalizedPath(`/products${item.path}?q=${searchValue.toLowerCase()}`, locale)\n case 'Article':\n return getLocalizedPath(\n `/blogs/${item.blog.handle}/${item.handle.replace('storefront-', '')}?q=${searchValue.toLowerCase()}`,\n locale\n )\n default:\n break\n }\n },\n [searchValue, locale]\n )\n\n const searchStatus = useMemo(() => {\n if (!searchValue) {\n // \u6CA1\u6709\u641C\u7D22\u503C\n return SearchStatus.Default\n } else if (searchResult?.totalCount) {\n // \u6709\u641C\u7D22\u7ED3\u679C\n return SearchStatus.Predict\n } else if (!isSearching) {\n // \u6CA1\u6709\u641C\u7D22\u7ED3\u679C\n return SearchStatus.Empty\n }\n }, [searchResult?.totalCount, searchValue, isSearching])\n\n return (\n <Container childClassName=\"!bg-white\" {...rest} className={cn('relative', className)} ref={ref}>\n <style>\n {`\n .navigation-search-component input:-webkit-autofill,\n .navigation-search-component input:-webkit-autofill:hover,\n .navigation-search-component input:-webkit-autofill:focus {\n -webkit-box-shadow: 0 0 0 1000px transparent inset !important; /* \u80CC\u666F\u900F\u660E */\n -webkit-text-fill-color: #000 !important;\n transition: background-color 9999s ease-in-out 0s !important;\n caret-color: #000;\n }\n `}\n </style>\n <div className=\"navigation-search-component laptop:h-[52px] desktop:h-[60px] desktop:pt-6 flex items-center justify-between gap-4 border-b border-b-gray-200 py-4 text-black\">\n <input\n ref={inputRef}\n value={searchValue}\n onCompositionStart={() => setIsComposing(true)}\n onCompositionEnd={() => setIsComposing(false)}\n onKeyDown={handleKeyDown}\n onChange={e => {\n setSearchValue(e.target.value)\n if (e.target.value) {\n debouncedFunction(e.target.value)\n }\n }}\n type=\"text\"\n className=\"flex-1 bg-white text-sm font-bold leading-[1.4] outline-none placeholder:text-[#4A4C56] focus-visible:!outline-none\"\n placeholder={data?.placeholder}\n />\n <div className=\"flex items-center gap-3\">\n <SearchIcon className=\"size-5 cursor-pointer\" onClick={() => onSearch(searchValue)} />\n <div className=\"h-[20px] w-px bg-[#E4E5E6]\" />\n <CloseIcon className=\"size-5 cursor-pointer\" onClick={onClose} />\n </div>\n </div>\n <div className=\"desktop:gap-12 desktop:py-6 flex flex-col gap-6 py-4 text-black\">\n {searchStatus === SearchStatus.Predict ? (\n <>\n <div>\n <div className=\"flex items-center gap-1\">\n <Text html={data?.suggestText} className=\"text-sm font-bold leading-[1.4] text-[#6D6D6F]\" />\n {searchResult?.items?.length > 6 && (\n <Button\n as=\"a\"\n iconClassName=\"size-4\"\n href={getLocalizedPath(`${data?.moreLink}?q=${searchValue.toLowerCase()}`, locale)}\n className=\"!p-0 !text-sm font-bold leading-[1.2]\"\n variant=\"link\"\n >\n {data?.moreText}\n </Button>\n )}\n </div>\n <div className=\"mt-2 flex flex-col\">\n {searchResult?.items\n ?.filter((item: any) => canSearch(item))\n .slice(0, 6)\n ?.map((item: any) => (\n <Link\n className=\"rounded-sidebar-shelf w-full p-4 no-underline hover:bg-[#F5F5F7] hover:text-current\"\n href={getLink(item)}\n key={item.id}\n >\n <Text\n html={highlightSearchWord(item.title, searchValue)}\n className=\"cursor-pointer text-sm font-bold leading-[1.4]\"\n />\n </Link>\n ))}\n </div>\n </div>\n <div key=\"predict-advertising-card\">\n <Text html={data?.hotProductsText} className=\"text-sm font-bold leading-[1.4] text-[#6D6D6F]\" />\n <div className=\"tablet:grid-cols-2 laptop:grid-cols-3 desktop:grid-cols-4 tablet:gap-x-3 tablet:gap-y-4 laptop:gap-4 mt-2 grid grid-cols-1 gap-2\">\n {data?.advertisingBgImg?.url && (\n <Link asChild={!data?.advertisingLink} href={getLocalizedPath(data?.advertisingLink, locale)}>\n <div className=\"rounded-sidebar-shelf relative\">\n <Picture\n source={data?.advertisingBgImg?.url}\n className=\"laptop:h-[120px] h-[114px]\"\n imgClassName=\"object-cover h-full\"\n />\n <div className=\"absolute inset-x-0 bottom-0 p-4\">\n <Heading\n size={2}\n html={data?.advertisingTitle || 'Buy in Guide'}\n className={cn('font-bold text-white', {\n 'text-black': data?.advertisingTheme === 'dark',\n })}\n />\n <Text\n html={data?.advertisingSubtitle || '20.000mAh'}\n className={cn('text-sm font-bold text-white', {\n 'text-black': data?.advertisingTheme === 'dark',\n })}\n />\n </div>\n </div>\n </Link>\n )}\n {searchResult?.items\n ?.filter((item: any) => item.type.toLowerCase() === 'product')\n .slice(0, data?.advertisingBgImg?.url ? 7 : 8)\n ?.map((item: any) => {\n const variant = item?.variants?.[0]\n const productImage = `${variant?.image?.url || item?.images?.[0]?.url}`\n const productName = item?.title || item?.name\n const productDesc = item?.description\n const productBadge = item?.badge || ''\n const listingLink = getLocalizedPath(\n `/products/${item?.handle}?variant=${atobID(variant?.id as string)}`,\n locale\n )\n return (\n <SearchProduct\n productImage={productImage}\n productName={productName}\n productDesc={productDesc}\n productBadge={productBadge}\n listingLink={listingLink}\n key={item.id}\n />\n )\n })}\n </div>\n </div>\n </>\n ) : (\n <>\n {searchStatus === SearchStatus.Empty && (\n <Text\n html={data?.noResultText}\n as=\"p\"\n className=\"border-b border-[#E4E5E6] pb-6 text-sm font-bold leading-[1.4] text-[#6D6D6F]\"\n />\n )}\n <div>\n <Text html={data?.popularText} className=\"text-sm font-bold leading-[1.4] text-[#6D6D6F]\" />\n <div className=\"mt-2\">\n <SearchKeyword data={data} keywords={searchKeywords} locale={locale} />\n {Array.isArray(data?.popularPages) && !!data?.popularPages?.length && (\n <Grid className=\"laptop:gap-4 laptop:mt-4 mt-3 gap-3\">\n {data?.popularPages?.map((item: any) => (\n <GridItem\n key={item?.id}\n className=\"tablet:col-span-6 laptop:p-3 desktop:p-4 laptop:col-span-3 col-span-12 p-2 hover:bg-[#F5F5F7]\"\n >\n <a\n href={getLocalizedPath(`${data?.moreLink}?q=${item?.popularPage.toLowerCase()}`, locale)}\n className=\"line-clamp-1 cursor-pointer text-sm font-bold leading-[1.4]\"\n >\n {item?.popularPage}\n </a>\n </GridItem>\n ))}\n </Grid>\n )}\n </div>\n </div>\n <div key=\"empty-advertising-card\">\n <Text html={data?.hotProductsText} className=\"text-sm font-bold leading-[1.4] text-[#6D6D6F]\" />\n <div className=\"tablet:grid-cols-2 laptop:grid-cols-3 desktop:grid-cols-4 tablet:gap-x-3 tablet:gap-y-4 laptop:gap-4 mt-2 grid grid-cols-1 gap-2\">\n {data?.advertisingBgImg?.url && (\n <Link asChild={!data?.advertisingLink} href={getLocalizedPath(data?.advertisingLink, locale)}>\n <div className=\"rounded-sidebar-shelf relative overflow-hidden [&_img]:hover:scale-110 [&_img]:hover:transition-all [&_img]:hover:duration-500\">\n <Picture\n source={data?.advertisingBgImg?.url}\n className=\"laptop:h-[120px] h-[114px]\"\n imgClassName=\"object-cover h-full\"\n />\n <div className=\"absolute inset-x-0 bottom-0 p-4\">\n <Heading\n size={2}\n html={data?.advertisingTitle || 'Buy in Guide'}\n className={cn('font-bold text-white', {\n 'text-black': data?.advertisingTheme === 'dark',\n })}\n />\n <Text\n html={data?.advertisingSubtitle || '20.000mAh'}\n className={cn('text-sm font-bold text-white', {\n 'text-black': data?.advertisingTheme === 'dark',\n })}\n />\n </div>\n </div>\n </Link>\n )}\n {data?.hotProducts?.slice(0, data?.advertisingBgImg?.url ? 7 : 8)?.map((item: any) => {\n const productDesc = item?.custom_description\n const productBadge = item?.badge || ''\n const listingLink = getLocalizedPath(\n `/products/${item?.handle}?variant=${atobID(item?.shopify_id as string)}`,\n locale\n )\n return (\n <SearchProduct\n productImage={item?.image}\n productName={item?.name}\n productDesc={productDesc}\n productBadge={productBadge}\n listingLink={listingLink}\n key={item.shopify_id || item.id}\n />\n )\n })}\n </div>\n </div>\n </>\n )}\n </div>\n </Container>\n )\n }\n)\n\nNavigationSearch.displayName = 'NavigationSearch'\n\nconst SearchProduct = ({\n productImage,\n productName,\n productDesc,\n productBadge,\n className,\n listingLink,\n}: {\n productImage: string\n productName: string\n productDesc: string\n productBadge: string\n className?: string\n listingLink: string\n}) => {\n return (\n <Link href={listingLink} className=\"block no-underline hover:text-current\">\n <div\n className={cn(\n 'rounded-sidebar-shelf flex shrink-0 gap-4 overflow-hidden bg-[#F5F5F7] px-4 py-3 [&_img]:hover:scale-110 [&_img]:hover:duration-500',\n className\n )}\n >\n <div className=\"shrink-0\">\n <img\n src={productImage}\n loading=\"lazy\"\n alt={productName}\n width={90}\n height={90}\n className=\"size-[96px] object-contain\"\n />\n </div>\n <div className=\"relative\">\n <div className=\" h-[24px] \">\n {productBadge && (\n <Text\n as=\"p\"\n html={productBadge}\n className=\"text-brand-0 mb-1 inline-block h-full rounded-full border-[1.6px] border-[#00BEFA] px-[6px] text-sm font-bold !leading-[22px]\"\n />\n )}\n </div>\n <div>\n <Text\n className=\"lg-desktop:h-[44px] lg-desktop:text-base line-clamp-2 h-[40px] text-sm font-bold leading-[1.4]\"\n html={productName}\n />\n {productDesc && (\n <Text\n as=\"p\"\n html={productDesc}\n className=\"lg-desktop:text-sm mt-1 line-clamp-1 text-xs font-bold leading-[1.4] text-[#6D6D6F]\"\n />\n )}\n </div>\n </div>\n </div>\n </Link>\n )\n}\n\nconst SearchKeyword = ({ data, keywords, locale }: { data: any; keywords: any[]; locale: string }) => {\n return (\n <div className=\"laptop:gap-4 flex flex-wrap gap-3\">\n {keywords?.map((keyword: any, index) => (\n <a\n href={getLocalizedPath(`${data?.moreLink}?q=${keyword?.toLowerCase()}`, locale)}\n key={index}\n className=\"rounded-sidebar-shelf laptop:p-3 desktop:p-4 cursor-pointer p-2 text-sm font-bold leading-[1.4] hover:bg-[#F5F5F7]\"\n >\n {keyword}\n </a>\n ))}\n </div>\n )\n}\n\nexport default withLayout(NavigationSearch)\n"],
5
+ "mappings": "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",
6
+ "names": ["Fragment", "jsx", "jsxs", "Picture", "Text", "Button", "Container", "Link", "Heading", "Grid", "GridItem", "SearchIcon", "CloseIcon", "forwardRef", "useCallback", "useMemo", "useState", "useEffect", "useRef", "useAiuiContext", "atobID", "cn", "getLocalizedPath", "highlightSearchWord", "withLayout", "SearchStatus", "debounce", "canSearch", "target", "NavigationSearch", "data", "onSearch", "onClose", "searchResult", "isSearching", "keywords", "className", "rest", "ref", "locale", "copyWriting", "searchValue", "setSearchValue", "isComposing", "setIsComposing", "inputRef", "debouncedFunction", "value", "handleKeyDown", "searchKeywords", "keyword", "word", "getLink", "item", "searchStatus", "variant", "productImage", "productName", "productDesc", "productBadge", "listingLink", "SearchProduct", "SearchKeyword", "index", "NavigationSearch_default"]
7
7
  }
@@ -1,2 +1,2 @@
1
- "use client";import{jsx as t,jsxs as r}from"react/jsx-runtime";import f,{useRef as b,useImperativeHandle as x}from"react";import{Heading as p,Button as _,Picture as N,Text as k}from"../../components/index.js";import{cn as g}from"../../helpers/utils.js";import{withLayout as H}from"../../shared/Styles.js";import{useExposure as v}from"../../hooks/useExposure.js";const P="image",w="product_hero",l=f.forwardRef(({data:c,className:i},m)=>{const{title:s,subtitle:e,ctaText:a,poster:u,mobPoster:n,ctaLink:d,theme:h="light"}=c,o=b(null);return v(o,{componentType:P,componentName:w,componentTitle:s,componentDescription:e}),x(m,()=>o.current),r("section",{ref:o,"data-ui-component-id":"ProductHero",className:g("product-hero text-info-primary tablet:flex-row tablet:gap-[16px] lg-desktop:gap-[64px] flex w-full flex-col items-center justify-between gap-[32px]",{"aiui-dark":h==="dark"},i),children:[r("div",{className:"product-hero__content tablet:basis-[42%] laptop:basis-[36%] flex w-full flex-col items-start gap-[24px]",children:[r("div",{className:"product-hero__text",children:[t(p,{as:"h3",size:4,html:s,className:"product-hero__title"}),t(p,{as:"h4",size:2,html:e,className:"product-hero__subtitle product-hero__subtitle--desktop laptop:mt-[12px] laptop:block desktop:mt-[16px] mt-[4px] hidden"}),t(k,{as:"p",size:2,html:e,className:"product-hero__subtitle product-hero__subtitle--mobile laptop:mt-[12px] laptop:hidden desktop:mt-[16px] mt-[4px] block"})]}),a&&t("a",{href:d,className:"product-hero__cta-link",children:t(_,{className:"product-hero__cta-button w-fit",children:a})})]}),t(N,{className:"product-hero__image tablet:aspect-[824/640] tablet:basis-[58%] laptop:basis-[64%] rounded-box aspect-[358/360] shrink",source:`${u?.url}, ${n?.url} 768`,imgClassName:"h-full object-cover"})]})});l.displayName="ProductHero";var R=H(l);export{R as default};
1
+ "use client";import{jsx as t,jsxs as r}from"react/jsx-runtime";import g,{useRef as H,useImperativeHandle as N}from"react";import{Heading as p,Button as P,Picture as v,Text as w}from"../../components/index.js";import{cn as y,getLocalizedPath as T}from"../../helpers/utils.js";import{withLayout as L}from"../../shared/Styles.js";import{useExposure as D}from"../../hooks/useExposure.js";import{trackUrlRef as R}from"../../shared/trackUrlRef.js";import{useAiuiContext as $}from"../AiuiProvider/index.js";const l="image",c="product_hero",i=g.forwardRef(({data:m,className:n},u)=>{const{title:a,subtitle:e,ctaText:s,poster:d,mobPoster:f,ctaLink:h,theme:x="light"}=m,{locale:b="us",trackingData:_}=$(),k=_?.contextHandle||"",o=H(null);return D(o,{componentType:l,componentName:c,componentTitle:a,componentDescription:e}),N(u,()=>o.current),r("section",{ref:o,"data-ui-component-id":"ProductHero",className:y("product-hero text-info-primary tablet:flex-row tablet:gap-[16px] lg-desktop:gap-[64px] flex w-full flex-col items-center justify-between gap-[32px]",{"aiui-dark":x==="dark"},n),children:[r("div",{className:"product-hero__content tablet:basis-[42%] laptop:basis-[36%] flex w-full flex-col items-start gap-[24px]",children:[r("div",{className:"product-hero__text",children:[t(p,{as:"h3",size:4,html:a,className:"product-hero__title"}),t(p,{as:"h4",size:2,html:e,className:"product-hero__subtitle product-hero__subtitle--desktop laptop:mt-[12px] laptop:block desktop:mt-[16px] mt-[4px] hidden"}),t(w,{as:"p",size:2,html:e,className:"product-hero__subtitle product-hero__subtitle--mobile laptop:mt-[12px] laptop:hidden desktop:mt-[16px] mt-[4px] block"})]}),s&&t("a",{href:R(T(h,b),`${k}_${l}_${c}`),className:"product-hero__cta-link",children:t(P,{className:"product-hero__cta-button w-fit",children:s})})]}),t(v,{className:"product-hero__image tablet:aspect-[824/640] tablet:basis-[58%] laptop:basis-[64%] rounded-box aspect-[358/360] shrink",source:`${d?.url}, ${f?.url} 768`,imgClassName:"h-full object-cover"})]})});i.displayName="ProductHero";var I=L(i);export{I as default};
2
2
  //# sourceMappingURL=ProductHero.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../src/biz-components/ProductHero/ProductHero.tsx"],
4
- "sourcesContent": ["'use client'\nimport React, { useRef, useImperativeHandle } from 'react'\nimport { Heading, Button, Picture, Text } from '../../components/index.js'\nimport { cn } from '../../helpers/utils.js'\nimport { withLayout } from '../../shared/Styles.js'\nimport { useExposure } from '../../hooks/useExposure.js'\nimport type { ProductHeroProps } from './types.js'\n\nconst componentType = 'image'\nconst componentName = 'product_hero'\n\nconst ProductHero = React.forwardRef<HTMLDivElement, ProductHeroProps>(({ data, className }, ref) => {\n const { title, subtitle, ctaText, poster, mobPoster, ctaLink, theme = 'light' } = data\n\n const boxRef = useRef<HTMLDivElement>(null)\n\n useExposure(boxRef, {\n componentType,\n componentName,\n componentTitle: title,\n componentDescription: subtitle,\n })\n\n useImperativeHandle(ref, () => boxRef.current as HTMLDivElement)\n\n return (\n <section\n ref={boxRef}\n data-ui-component-id=\"ProductHero\"\n className={cn(\n 'product-hero text-info-primary tablet:flex-row tablet:gap-[16px] lg-desktop:gap-[64px] flex w-full flex-col items-center justify-between gap-[32px]',\n {\n 'aiui-dark': theme === 'dark',\n },\n className\n )}\n >\n <div className=\"product-hero__content tablet:basis-[42%] laptop:basis-[36%] flex w-full flex-col items-start gap-[24px]\">\n <div className=\"product-hero__text\">\n <Heading as={'h3'} size={4} html={title} className=\"product-hero__title\" />\n <Heading\n as={'h4'}\n size={2}\n html={subtitle}\n className=\"product-hero__subtitle product-hero__subtitle--desktop laptop:mt-[12px] laptop:block desktop:mt-[16px] mt-[4px] hidden\"\n />\n <Text\n as={'p'}\n size={2}\n html={subtitle}\n className=\"product-hero__subtitle product-hero__subtitle--mobile laptop:mt-[12px] laptop:hidden desktop:mt-[16px] mt-[4px] block\"\n />\n </div>\n {ctaText && (\n <a href={ctaLink} className=\"product-hero__cta-link\">\n <Button className=\"product-hero__cta-button w-fit\">{ctaText}</Button>\n </a>\n )}\n </div>\n <Picture\n className=\"product-hero__image tablet:aspect-[824/640] tablet:basis-[58%] laptop:basis-[64%] rounded-box aspect-[358/360] shrink\"\n source={`${poster?.url}, ${mobPoster?.url} 768`}\n imgClassName=\"h-full object-cover\"\n />\n </section>\n )\n})\n\nProductHero.displayName = 'ProductHero'\n\nexport default withLayout(ProductHero)\n"],
5
- "mappings": "aAsCQ,OACE,OAAAA,EADF,QAAAC,MAAA,oBArCR,OAAOC,GAAS,UAAAC,EAAQ,uBAAAC,MAA2B,QACnD,OAAS,WAAAC,EAAS,UAAAC,EAAQ,WAAAC,EAAS,QAAAC,MAAY,4BAC/C,OAAS,MAAAC,MAAU,yBACnB,OAAS,cAAAC,MAAkB,yBAC3B,OAAS,eAAAC,MAAmB,6BAG5B,MAAMC,EAAgB,QAChBC,EAAgB,eAEhBC,EAAcZ,EAAM,WAA6C,CAAC,CAAE,KAAAa,EAAM,UAAAC,CAAU,EAAGC,IAAQ,CACnG,KAAM,CAAE,MAAAC,EAAO,SAAAC,EAAU,QAAAC,EAAS,OAAAC,EAAQ,UAAAC,EAAW,QAAAC,EAAS,MAAAC,EAAQ,OAAQ,EAAIT,EAE5EU,EAAStB,EAAuB,IAAI,EAE1C,OAAAQ,EAAYc,EAAQ,CAClB,cAAAb,EACA,cAAAC,EACA,eAAgBK,EAChB,qBAAsBC,CACxB,CAAC,EAEDf,EAAoBa,EAAK,IAAMQ,EAAO,OAAyB,EAG7DxB,EAAC,WACC,IAAKwB,EACL,uBAAqB,cACrB,UAAWhB,EACT,sJACA,CACE,YAAae,IAAU,MACzB,EACAR,CACF,EAEA,UAAAf,EAAC,OAAI,UAAU,0GACb,UAAAA,EAAC,OAAI,UAAU,qBACb,UAAAD,EAACK,EAAA,CAAQ,GAAI,KAAM,KAAM,EAAG,KAAMa,EAAO,UAAU,sBAAsB,EACzElB,EAACK,EAAA,CACC,GAAI,KACJ,KAAM,EACN,KAAMc,EACN,UAAU,yHACZ,EACAnB,EAACQ,EAAA,CACC,GAAI,IACJ,KAAM,EACN,KAAMW,EACN,UAAU,wHACZ,GACF,EACCC,GACCpB,EAAC,KAAE,KAAMuB,EAAS,UAAU,yBAC1B,SAAAvB,EAACM,EAAA,CAAO,UAAU,iCAAkC,SAAAc,EAAQ,EAC9D,GAEJ,EACApB,EAACO,EAAA,CACC,UAAU,wHACV,OAAQ,GAAGc,GAAQ,GAAG,KAAKC,GAAW,GAAG,OACzC,aAAa,sBACf,GACF,CAEJ,CAAC,EAEDR,EAAY,YAAc,cAE1B,IAAOY,EAAQhB,EAAWI,CAAW",
6
- "names": ["jsx", "jsxs", "React", "useRef", "useImperativeHandle", "Heading", "Button", "Picture", "Text", "cn", "withLayout", "useExposure", "componentType", "componentName", "ProductHero", "data", "className", "ref", "title", "subtitle", "ctaText", "poster", "mobPoster", "ctaLink", "theme", "boxRef", "ProductHero_default"]
4
+ "sourcesContent": ["'use client'\nimport React, { useRef, useImperativeHandle } from 'react'\nimport { Heading, Button, Picture, Text } from '../../components/index.js'\nimport { cn, getLocalizedPath } from '../../helpers/utils.js'\nimport { withLayout } from '../../shared/Styles.js'\nimport { useExposure } from '../../hooks/useExposure.js'\nimport { trackUrlRef } from '../../shared/trackUrlRef.js'\nimport { useAiuiContext } from '../AiuiProvider/index.js'\nimport type { ProductHeroProps } from './types.js'\n\nconst componentType = 'image'\nconst componentName = 'product_hero'\n\nconst ProductHero = React.forwardRef<HTMLDivElement, ProductHeroProps>(({ data, className }, ref) => {\n const { title, subtitle, ctaText, poster, mobPoster, ctaLink, theme = 'light' } = data\n const { locale = 'us', trackingData } = useAiuiContext()\n const contextHandle = trackingData?.contextHandle || ''\n const boxRef = useRef<HTMLDivElement>(null)\n\n useExposure(boxRef, {\n componentType,\n componentName,\n componentTitle: title,\n componentDescription: subtitle,\n })\n\n useImperativeHandle(ref, () => boxRef.current as HTMLDivElement)\n\n return (\n <section\n ref={boxRef}\n data-ui-component-id=\"ProductHero\"\n className={cn(\n 'product-hero text-info-primary tablet:flex-row tablet:gap-[16px] lg-desktop:gap-[64px] flex w-full flex-col items-center justify-between gap-[32px]',\n {\n 'aiui-dark': theme === 'dark',\n },\n className\n )}\n >\n <div className=\"product-hero__content tablet:basis-[42%] laptop:basis-[36%] flex w-full flex-col items-start gap-[24px]\">\n <div className=\"product-hero__text\">\n <Heading as={'h3'} size={4} html={title} className=\"product-hero__title\" />\n <Heading\n as={'h4'}\n size={2}\n html={subtitle}\n className=\"product-hero__subtitle product-hero__subtitle--desktop laptop:mt-[12px] laptop:block desktop:mt-[16px] mt-[4px] hidden\"\n />\n <Text\n as={'p'}\n size={2}\n html={subtitle}\n className=\"product-hero__subtitle product-hero__subtitle--mobile laptop:mt-[12px] laptop:hidden desktop:mt-[16px] mt-[4px] block\"\n />\n </div>\n {ctaText && (\n <a\n href={trackUrlRef(getLocalizedPath(ctaLink, locale), `${contextHandle}_${componentType}_${componentName}`)}\n className=\"product-hero__cta-link\"\n >\n <Button className=\"product-hero__cta-button w-fit\">{ctaText}</Button>\n </a>\n )}\n </div>\n <Picture\n className=\"product-hero__image tablet:aspect-[824/640] tablet:basis-[58%] laptop:basis-[64%] rounded-box aspect-[358/360] shrink\"\n source={`${poster?.url}, ${mobPoster?.url} 768`}\n imgClassName=\"h-full object-cover\"\n />\n </section>\n )\n})\n\nProductHero.displayName = 'ProductHero'\n\nexport default withLayout(ProductHero)\n"],
5
+ "mappings": "aAyCQ,OACE,OAAAA,EADF,QAAAC,MAAA,oBAxCR,OAAOC,GAAS,UAAAC,EAAQ,uBAAAC,MAA2B,QACnD,OAAS,WAAAC,EAAS,UAAAC,EAAQ,WAAAC,EAAS,QAAAC,MAAY,4BAC/C,OAAS,MAAAC,EAAI,oBAAAC,MAAwB,yBACrC,OAAS,cAAAC,MAAkB,yBAC3B,OAAS,eAAAC,MAAmB,6BAC5B,OAAS,eAAAC,MAAmB,8BAC5B,OAAS,kBAAAC,MAAsB,2BAG/B,MAAMC,EAAgB,QAChBC,EAAgB,eAEhBC,EAAcf,EAAM,WAA6C,CAAC,CAAE,KAAAgB,EAAM,UAAAC,CAAU,EAAGC,IAAQ,CACnG,KAAM,CAAE,MAAAC,EAAO,SAAAC,EAAU,QAAAC,EAAS,OAAAC,EAAQ,UAAAC,EAAW,QAAAC,EAAS,MAAAC,EAAQ,OAAQ,EAAIT,EAC5E,CAAE,OAAAU,EAAS,KAAM,aAAAC,CAAa,EAAIf,EAAe,EACjDgB,EAAgBD,GAAc,eAAiB,GAC/CE,EAAS5B,EAAuB,IAAI,EAE1C,OAAAS,EAAYmB,EAAQ,CAClB,cAAAhB,EACA,cAAAC,EACA,eAAgBK,EAChB,qBAAsBC,CACxB,CAAC,EAEDlB,EAAoBgB,EAAK,IAAMW,EAAO,OAAyB,EAG7D9B,EAAC,WACC,IAAK8B,EACL,uBAAqB,cACrB,UAAWtB,EACT,sJACA,CACE,YAAakB,IAAU,MACzB,EACAR,CACF,EAEA,UAAAlB,EAAC,OAAI,UAAU,0GACb,UAAAA,EAAC,OAAI,UAAU,qBACb,UAAAD,EAACK,EAAA,CAAQ,GAAI,KAAM,KAAM,EAAG,KAAMgB,EAAO,UAAU,sBAAsB,EACzErB,EAACK,EAAA,CACC,GAAI,KACJ,KAAM,EACN,KAAMiB,EACN,UAAU,yHACZ,EACAtB,EAACQ,EAAA,CACC,GAAI,IACJ,KAAM,EACN,KAAMc,EACN,UAAU,wHACZ,GACF,EACCC,GACCvB,EAAC,KACC,KAAMa,EAAYH,EAAiBgB,EAASE,CAAM,EAAG,GAAGE,CAAa,IAAIf,CAAa,IAAIC,CAAa,EAAE,EACzG,UAAU,yBAEV,SAAAhB,EAACM,EAAA,CAAO,UAAU,iCAAkC,SAAAiB,EAAQ,EAC9D,GAEJ,EACAvB,EAACO,EAAA,CACC,UAAU,wHACV,OAAQ,GAAGiB,GAAQ,GAAG,KAAKC,GAAW,GAAG,OACzC,aAAa,sBACf,GACF,CAEJ,CAAC,EAEDR,EAAY,YAAc,cAE1B,IAAOe,EAAQrB,EAAWM,CAAW",
6
+ "names": ["jsx", "jsxs", "React", "useRef", "useImperativeHandle", "Heading", "Button", "Picture", "Text", "cn", "getLocalizedPath", "withLayout", "useExposure", "trackUrlRef", "useAiuiContext", "componentType", "componentName", "ProductHero", "data", "className", "ref", "title", "subtitle", "ctaText", "poster", "mobPoster", "ctaLink", "theme", "locale", "trackingData", "contextHandle", "boxRef", "ProductHero_default"]
7
7
  }
@@ -0,0 +1,4 @@
1
+ import React from 'react';
2
+ import type { MediaDrawAreaProps } from './types.js';
3
+ export declare const MediaDrawArea: React.FC<MediaDrawAreaProps>;
4
+ export default MediaDrawArea;
@@ -0,0 +1,2 @@
1
+ "use client";import{jsx as o,jsxs as n}from"react/jsx-runtime";import"react";import{cn as r}from"../../helpers/index.js";import"./types.js";const l={tablet:"(min-width: 768px)",laptop:"(min-width: 1025px)",desktop:"(min-width: 1440px)",lgDesktop:"(min-width: 1920px)"};function p(e){return typeof e=="object"&&"url"in e}function u(e){return typeof e=="object"&&"default"in e}function y(e){return typeof e.src=="string"?e.src:u(e.src)?e.src.default.url:p(e.src)?e.src.url:""}const g=({media:e,className:a})=>{if(u(e.src)){const t=e.src,i=t.default.alt||e.alt||"Product Lottery";return n("picture",{children:[t.lgDesktop&&o("source",{media:l.lgDesktop,srcSet:t.lgDesktop.url}),t.desktop&&o("source",{media:l.desktop,srcSet:t.desktop.url}),t.laptop&&o("source",{media:l.laptop,srcSet:t.laptop.url}),t.tablet&&o("source",{media:l.tablet,srcSet:t.tablet.url}),o("img",{src:t.default.url,alt:i,className:r("size-full object-cover",a),loading:"lazy"})]})}if(p(e.src)){const t=e.src,i=t.alt||e.alt||"Product Lottery";return o("img",{src:t.url,alt:i,className:r("size-full object-cover",a),loading:"lazy"})}const s=e.alt||"Product Lottery";return o("img",{src:e.src,alt:s,className:r("size-full object-cover",a),loading:"lazy"})},m=({media:e,className:a})=>{const s=y(e);return o("video",{src:s,poster:e.poster,autoPlay:e.autoPlay??!0,muted:e.muted??!0,loop:e.loop??!0,playsInline:!0,className:r("size-full object-cover",a),"aria-label":e.alt||"Product Lottery Video"})},v={primary:r("bg-btn-primary text-btn-primary-foreground","shadow-lg"),secondary:r("bg-[#1D1D1F] text-white","shadow-lg hover:bg-[#1D1D1F]/90"),outline:r("border-2 border-white bg-transparent text-white","hover:bg-white/10")},d=({media:e,ctaButton:a,isDrawing:s=!1,isDisabled:t=!1,onClick:i,className:f})=>{const c=a?.text??"",b=a?.style||"primary";return n("div",{className:r("media-draw-area","size-full overflow-hidden",f),children:[o("div",{className:"absolute inset-0",children:e.type==="video"?o(m,{media:e}):o(g,{media:e})}),o("button",{type:"button",onClick:i,disabled:t||s,className:r("absolute inset-0 z-10 flex cursor-pointer items-end justify-center","tablet:pb-5 laptop:pb-6 desktop:pb-8 lg-desktop:pb-10 pb-4","disabled:cursor-not-allowed","focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-white/60 focus-visible:ring-offset-2"),"aria-label":s?"Drawing in progress...":c,"aria-busy":s,children:c&&n("span",{className:r("inline-flex items-center justify-center gap-2","rounded-btn px-6 py-2.5","text-sm font-semibold","laptop:px-8 laptop:py-3 laptop:text-base","desktop:px-10 desktop:py-3.5","transition-all duration-200","hover:scale-105 active:scale-95",v[b],s&&"pointer-events-none opacity-80",t&&"pointer-events-none opacity-50"),children:[s&&n("svg",{className:"size-4 animate-spin",viewBox:"0 0 24 24",fill:"none","aria-hidden":"true",children:[o("circle",{cx:"12",cy:"12",r:"10",stroke:"currentColor",strokeWidth:"3",strokeLinecap:"round",className:"opacity-25"}),o("path",{d:"M4 12a8 8 0 018-8",stroke:"currentColor",strokeWidth:"3",strokeLinecap:"round",className:"opacity-75"})]}),c]})})]})};d.displayName="MediaDrawArea";var N=d;export{d as MediaDrawArea,N as default};
2
+ //# sourceMappingURL=MediaDrawArea.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../src/biz-components/ProductLottery/MediaDrawArea.tsx"],
4
+ "sourcesContent": ["'use client'\n\nimport React from 'react'\nimport { cn } from '../../helpers/index.js'\nimport type { MediaDrawAreaProps, MediaConfig, ResponsiveMedia } from './types.js'\nimport type { Media } from '../../types/props.js'\nimport { DEFAULT_CTA_BUTTON } from './types.js'\n\nconst BREAKPOINTS = {\n tablet: '(min-width: 768px)',\n laptop: '(min-width: 1025px)',\n desktop: '(min-width: 1440px)',\n lgDesktop: '(min-width: 1920px)',\n} as const\n\n/** src \u662F Media \u5BF9\u8C61\uFF08\u5355\u5F20\u56FE\uFF0C\u542B url/alt\uFF09 */\nfunction isMediaObject(src: string | Media | ResponsiveMedia): src is Media {\n return typeof src === 'object' && 'url' in src\n}\n\n/** src \u662F ResponsiveMedia \u5BF9\u8C61\uFF08\u542B default \u65AD\u70B9\uFF09 */\nfunction isResponsiveMedia(src: string | Media | ResponsiveMedia): src is ResponsiveMedia {\n return typeof src === 'object' && 'default' in src\n}\n\n/** \u83B7\u53D6\u5A92\u4F53\u8D44\u6E90\u7684 fallback URL\uFF08\u7528\u4E8E\u89C6\u9891 src\uFF09 */\nfunction getDefaultSrc(media: MediaConfig): string {\n if (typeof media.src === 'string') return media.src\n if (isResponsiveMedia(media.src)) return media.src.default.url\n if (isMediaObject(media.src)) return media.src.url\n return ''\n}\n\nconst ResponsiveImage: React.FC<{\n media: MediaConfig\n className?: string\n}> = ({ media, className }) => {\n // \u54CD\u5E94\u5F0F\u591A\u65AD\u70B9\u56FE\u7247\n if (isResponsiveMedia(media.src)) {\n const responsive = media.src\n const alt = responsive.default.alt || media.alt || 'Product Lottery'\n return (\n <picture>\n {responsive.lgDesktop && <source media={BREAKPOINTS.lgDesktop} srcSet={responsive.lgDesktop.url} />}\n {responsive.desktop && <source media={BREAKPOINTS.desktop} srcSet={responsive.desktop.url} />}\n {responsive.laptop && <source media={BREAKPOINTS.laptop} srcSet={responsive.laptop.url} />}\n {responsive.tablet && <source media={BREAKPOINTS.tablet} srcSet={responsive.tablet.url} />}\n <img\n src={responsive.default.url}\n alt={alt}\n className={cn('size-full object-cover', className)}\n loading=\"lazy\"\n />\n </picture>\n )\n }\n\n // \u5355\u5F20\u56FE\u7247\uFF08Media \u5BF9\u8C61\uFF09\n if (isMediaObject(media.src)) {\n const img = media.src\n const alt = img.alt || media.alt || 'Product Lottery'\n return <img src={img.url} alt={alt} className={cn('size-full object-cover', className)} loading=\"lazy\" />\n }\n\n // \u5B57\u7B26\u4E32 URL \u517C\u5BB9\u8DEF\u5F84\n const alt = media.alt || 'Product Lottery'\n return <img src={media.src as string} alt={alt} className={cn('size-full object-cover', className)} loading=\"lazy\" />\n}\n\nconst VideoMedia: React.FC<{\n media: MediaConfig\n className?: string\n}> = ({ media, className }) => {\n const src = getDefaultSrc(media)\n\n return (\n <video\n src={src}\n poster={media.poster}\n autoPlay={media.autoPlay ?? true}\n muted={media.muted ?? true}\n loop={media.loop ?? true}\n playsInline\n className={cn('size-full object-cover', className)}\n aria-label={media.alt || 'Product Lottery Video'}\n />\n )\n}\n\nconst CTA_STYLE_MAP = {\n primary: cn('bg-btn-primary text-btn-primary-foreground', 'shadow-lg'),\n secondary: cn('bg-[#1D1D1F] text-white', 'shadow-lg hover:bg-[#1D1D1F]/90'),\n outline: cn('border-2 border-white bg-transparent text-white', 'hover:bg-white/10'),\n} as const\n\nexport const MediaDrawArea: React.FC<MediaDrawAreaProps> = ({\n media,\n ctaButton,\n isDrawing = false,\n isDisabled = false,\n onClick,\n className,\n}) => {\n const buttonText = ctaButton?.text ?? ''\n const buttonStyle = ctaButton?.style || 'primary'\n\n return (\n <div className={cn('media-draw-area', 'size-full overflow-hidden', className)}>\n {/* Media Layer */}\n <div className=\"absolute inset-0\">\n {media.type === 'video' ? <VideoMedia media={media} /> : <ResponsiveImage media={media} />}\n </div>\n\n {/* Clickable overlay \u2014 entire area triggers draw */}\n <button\n type=\"button\"\n onClick={onClick}\n disabled={isDisabled || isDrawing}\n className={cn(\n 'absolute inset-0 z-10 flex cursor-pointer items-end justify-center',\n 'tablet:pb-5 laptop:pb-6 desktop:pb-8 lg-desktop:pb-10 pb-4',\n 'disabled:cursor-not-allowed',\n 'focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-white/60 focus-visible:ring-offset-2'\n )}\n aria-label={isDrawing ? 'Drawing in progress...' : buttonText}\n aria-busy={isDrawing}\n >\n {/* CTA Button visual \u2014 hidden when no text configured */}\n {buttonText && (\n <span\n className={cn(\n 'inline-flex items-center justify-center gap-2',\n 'rounded-btn px-6 py-2.5',\n 'text-sm font-semibold',\n 'laptop:px-8 laptop:py-3 laptop:text-base',\n 'desktop:px-10 desktop:py-3.5',\n 'transition-all duration-200',\n 'hover:scale-105 active:scale-95',\n CTA_STYLE_MAP[buttonStyle],\n isDrawing && 'pointer-events-none opacity-80',\n isDisabled && 'pointer-events-none opacity-50'\n )}\n >\n {isDrawing && (\n <svg className=\"size-4 animate-spin\" viewBox=\"0 0 24 24\" fill=\"none\" aria-hidden=\"true\">\n <circle\n cx=\"12\"\n cy=\"12\"\n r=\"10\"\n stroke=\"currentColor\"\n strokeWidth=\"3\"\n strokeLinecap=\"round\"\n className=\"opacity-25\"\n />\n <path\n d=\"M4 12a8 8 0 018-8\"\n stroke=\"currentColor\"\n strokeWidth=\"3\"\n strokeLinecap=\"round\"\n className=\"opacity-75\"\n />\n </svg>\n )}\n {buttonText}\n </span>\n )}\n </button>\n </div>\n )\n}\n\nMediaDrawArea.displayName = 'MediaDrawArea'\n\nexport default MediaDrawArea\n"],
5
+ "mappings": "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",
6
+ "names": ["jsx", "jsxs", "cn", "BREAKPOINTS", "isMediaObject", "src", "isResponsiveMedia", "getDefaultSrc", "media", "ResponsiveImage", "className", "responsive", "alt", "img", "VideoMedia", "CTA_STYLE_MAP", "MediaDrawArea", "ctaButton", "isDrawing", "isDisabled", "onClick", "buttonText", "buttonStyle", "MediaDrawArea_default"]
7
+ }
@@ -0,0 +1,17 @@
1
+ import type { ProductLotteryProps, ProductLotteryHandle } from './types.js';
2
+ export declare const ProductLottery: import("react").ForwardRefExoticComponent<ProductLotteryProps & import("react").RefAttributes<ProductLotteryHandle>>;
3
+ declare const _default: any;
4
+ export default _default;
5
+ export { WinnerModal } from '../LotteryShared/WinnerModal.js';
6
+ export { RulesModal } from '../LotteryShared/RulesModal.js';
7
+ export { MyRewardsModal } from '../LotteryShared/MyRewardsModal.js';
8
+ export { ErrorModal } from '../LotteryShared/ErrorModal.js';
9
+ export { ShareModal } from '../LotteryShared/ShareModal.js';
10
+ export { BaseModal } from '../LotteryShared/BaseModal.js';
11
+ export type { ProductLotteryProps, ProductLotteryHandle, MediaConfig, CtaButtonConfig, ResponsiveMedia, MediaDrawAreaProps, } from './types.js';
12
+ export type { Prize, ChanceMethod, ChanceMethodStatus, WinningInfo, PrizePoolProps, ChanceMethodsProps, WinnerModalProps, WinnerModalConfig, UserData, ShareModalConfig, SocialPlatform, SharePlatformConfig, } from '../LotteryShared/types.js';
13
+ export type { RulesModalProps, RuleItem } from '../LotteryShared/RulesModal.js';
14
+ export type { MyRewardsModalProps, Reward, RewardStatus } from '../LotteryShared/MyRewardsModal.js';
15
+ export type { ErrorModalProps } from '../LotteryShared/ErrorModal.js';
16
+ export type { ShareModalProps } from '../LotteryShared/ShareModal.js';
17
+ export type { BaseModalProps } from '../LotteryShared/BaseModal.js';
@@ -0,0 +1,2 @@
1
+ "use client";import{jsx as e,jsxs as n}from"react/jsx-runtime";import{useState as t,useCallback as P,useImperativeHandle as Le,forwardRef as Ie}from"react";import{cn as i}from"../../helpers/index.js";import{DEFAULT_CHANCE_TITLE as Ae}from"./types.js";import{DEFAULT_CHANCE_METHODS as De}from"../LotteryShared/types.js";import{Grid as Oe,GridItem as F}from"../../components/grid.js";import{MediaDrawArea as je}from"./MediaDrawArea.js";import{PrizePool as Be}from"../LotteryShared/PrizePool.js";import{ChanceMethods as Ue}from"../LotteryShared/ChanceMethods.js";import{WinnerModal as He}from"../LotteryShared/WinnerModal.js";import{RulesModal as Ge}from"../LotteryShared/RulesModal.js";import{MyRewardsModal as Fe}from"../LotteryShared/MyRewardsModal.js";import{ErrorModal as _}from"../LotteryShared/ErrorModal.js";import{ShareModal as _e}from"../LotteryShared/ShareModal.js";import{withLayout as Ke}from"../../shared/Styles.js";const K=Ie(({prizes:g,media:Y,theme:o,ctaButton:$,chanceMethods:k=De,chanceTitle:J=Ae,chanceSubtitle:Q,chanceFooterNote:V,chanceMethodsText:T,mechanismType:R,inputConfig:X,winningInfos:Z=[],prizesTitle:q,onDrawStart:v,onDrawEnd:C,onDrawError:L,winnerModalConfig:s,rulesModalConfig:ee={},myRewardsModalConfig:te={},errorModalConfig:p={},shareModalConfig:c={},userData:d,loginPromptText:Ye="Please log in to participate",loginButtonText:$e="Log In",noChancesText:oe="You have no chances left",onLoginRequired:m,onCopyCode:re,opportunitiesText:I=["Number of draws remaining today:"],className:se},ae)=>{const{rulesData:N,rulesText:A="Rules"}=ee,{rewardsData:S,myRewardsText:D="My Rewards",codeText:le="CODE:",copyText:ie="COPY",copiedText:ne="COPIED",prizeText:pe="Prize time:"}=te,de=T?.completedText,ce=T?.usedText,M=d?.isLoggedIn??!1,O=d?.availableChances||0,j=k.length>0||R==="input",B=M&&O<=0,[f,E]=t(!1),[z,U]=t(null),[me,u]=t(!1),[fe,x]=t(!1),[ue,h]=t(!1),[xe,y]=t(!1),[he,w]=t(!1),[ye,b]=t(!1),[we,H]=t(""),[be,ge]=t(),[Te,Me]=t(),[Pe,ve]=t(),[Ce,Ne]=t(),[Se,Ee]=t(),[a,ze]=t();Le(ae,()=>({showError:({message:r,title:l,confirmText:W})=>{H(r),ge(l),Me(W),y(!0)},hideError:()=>{y(!1)},showNoWin:r=>{ve(r?.title),Ne(r?.message),Ee(r?.confirmText),w(!0)},hideNoWin:()=>{w(!1)},showWinner:(r,l)=>{U(r),ze(l),u(!0)},hideWinner:()=>{u(!1)},showRules:()=>{x(!0)},hideRules:()=>{x(!1)},showRewards:()=>{h(!0)},hideRewards:()=>{h(!1)},showShare:()=>{b(!0)},hideShare:()=>{b(!1)},hideAllModals:()=>{u(!1),x(!1),h(!1),y(!1),w(!1),b(!1)}}),[]);const G=P(async()=>{if(!f){if(!d?.isLoggedIn){m?.();return}if(!(d.availableChances<=0)){E(!0);try{let r;v&&(r=await v());const l=g.find(W=>W.prizeKey===r)||g[0];U(l),E(!1),C?C(l):setTimeout(()=>{l.prizeKey==="try-again"?w(!0):u(!0)},300)}catch(r){E(!1),H(r.message||"An error occurred"),y(!0),L?.(r)}}}},[f,g,v,C,L,d,m]),We=P(()=>{if(!M){m?.();return}G()},[G,M,m]),ke=P(()=>{u(!1)},[]),Re=P(()=>{w(!1)},[]);return n("div",{className:i("product-lottery-container","w-full",o==="dark"?"aiui-dark":"",se),children:[n("div",{role:"status","aria-live":"polite","aria-atomic":"true",className:"sr-only",children:[f&&"Drawing in progress...",z&&!f&&`Prize won: ${z.name}`]}),n(Oe,{className:i("product-lottery-main","tablet:mb-4 mb-3"),children:[e(F,{span:j?7:12,className:i("media-section","relative flex w-full flex-1 items-center justify-center overflow-hidden","rounded-box","laptop:min-h-[288px] min-h-[240px]","lg-desktop:aspect-w-[964] lg-desktop:aspect-h-[480]","desktop:aspect-w-[759] desktop:aspect-h-[384]","laptop:aspect-w-[516] laptop:aspect-h-[288]","l-tablet:col-span-12","l-tablet:mb-3",o==="dark"?"bg-[#1E2024]":"bg-[#EAEAEC]"),children:n("div",{className:i("size-full px-[16px] pt-[16px]","lg-desktop:pb-[32px] lg-desktop:px-[32px]","desktop:pt-[24px] desktop:px-[24px]","laptop:pt-[16px] laptop:px-[16px]","tablet:px-[24px]","l-tablet:absolute l-tablet:top-0 l-tablet:inset-x-0 l-tablet:z-10"),children:[n("div",{className:"relative z-10 mb-2 flex max-h-[24px] w-full flex-wrap items-center justify-between gap-3",children:[e("div",{children:n("p",{className:"text-info-primary font-[700]",children:[I?.[0],e("span",{className:"ml-1 text-[#FF6B35]",children:O}),I?.[1]||""]})}),n("div",{className:"flex items-center gap-4",children:[N&&e("button",{onClick:()=>x(!0),className:"cursor-pointer touch-manipulation",type:"button",children:e("span",{className:"text-info-primary font-[700] underline",children:A})}),S&&e("button",{onClick:()=>{if(!M){m?.();return}h(!0)},className:"cursor-pointer touch-manipulation whitespace-nowrap",type:"button",children:e("span",{className:"text-info-primary font-[700] underline",children:D})})]})]}),e(je,{theme:o,media:Y,ctaButton:$,isDrawing:f,isDisabled:B,onClick:We}),B&&e("div",{className:i("rounded-box absolute inset-0 z-20 flex items-center justify-center bg-black/60 backdrop-blur-sm","px-6 text-center"),children:e("div",{className:"flex flex-col items-center gap-4",children:e("p",{className:"lg-desktop:text-[24px] text-[18px] font-semibold text-white",children:oe})})})]})}),j&&e(F,{span:5,className:i("info-section","rounded-box","relative flex flex-col overflow-hidden","lg-desktop:aspect-w-[684] lg-desktop:aspect-h-[480]","desktop:aspect-w-[536] desktop:aspect-h-[384]","laptop:aspect-w-[364] laptop:aspect-h-[288]","l-tablet:min-h-[280px] laptop:max-h-[320px]","w-full","l-tablet:col-span-12",o==="dark"?"bg-[#1E2024]":"bg-[#EAEAEC]"),children:e(Ue,{theme:o,userData:d,methods:k,title:J,subtitle:Q,footerNote:V,onOpenShareModal:()=>b(!0),chanceBadgeText:T?.chanceBadgeText,completedText:de,usedText:ce,loadingText:T?.loadingText,mechanismType:R,inputConfig:X})})]}),e("div",{className:i("product-lottery-footer","rounded-box","flex flex-col overflow-hidden",o==="dark"?"bg-[#1E2024]":"bg-[#EAEAEC]"),children:e(Be,{theme:o,prizes:g,title:q,winningInfos:Z})}),e(He,{isOpen:me,prize:z,title:a?.title||s?.title,prizeTitle:a?.prizeTitle||s?.prizeTitle,prizeImage:a?.prizeImage||s?.prizeImage,prizeDescription:a?.prizeDescription||s?.prizeDescription,learnMoreUrl:a?.learnMoreUrl||s?.learnMoreUrl,learnMoreText:a?.learnMoreText||s?.learnMoreText,couponCode:a?.couponCode||s?.couponCode,expiresAt:a?.expiresAt||s?.expiresAt,couponDiscount:a?.couponDiscount||s?.couponDiscount,couponUnit:a?.couponUnit||s?.couponUnit,confirmText:a?.confirmText||s?.confirmText,onClose:ke,theme:o}),N&&e(Ge,{title:A,isOpen:fe,onClose:()=>x(!1),rules:N,theme:o}),S&&e(Fe,{isOpen:ue,onClose:()=>h(!1),rewards:S,onCopyCode:re,codeText:le,copyText:ie,copiedText:ne,prizeText:pe,theme:o,title:D}),e(_,{isOpen:xe,onClose:()=>y(!1),title:be||p?.title,message:we||p?.message,confirmText:Te||p?.confirmText,theme:o}),e(_,{isOpen:he,onClose:Re,title:Pe||p?.title,message:Ce||p?.message,confirmText:Se||p?.confirmText,theme:o}),e(_e,{isOpen:ye,onClose:()=>b(!1),title:c?.title,subtitle:c?.subtitle,note:c?.note,platforms:c?.platforms,onShareSuccess:c?.onShareSuccess,theme:o})]})});K.displayName="ProductLottery";var nt=Ke(K);import{WinnerModal as ct}from"../LotteryShared/WinnerModal.js";import{RulesModal as ft}from"../LotteryShared/RulesModal.js";import{MyRewardsModal as xt}from"../LotteryShared/MyRewardsModal.js";import{ErrorModal as yt}from"../LotteryShared/ErrorModal.js";import{ShareModal as bt}from"../LotteryShared/ShareModal.js";import{BaseModal as Tt}from"../LotteryShared/BaseModal.js";export{Tt as BaseModal,yt as ErrorModal,xt as MyRewardsModal,K as ProductLottery,ft as RulesModal,bt as ShareModal,ct as WinnerModal,nt as default};
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../src/biz-components/ProductLottery/index.tsx"],
4
+ "sourcesContent": ["'use client'\n\nimport { useState, useCallback, useImperativeHandle, forwardRef } from 'react'\nimport { cn } from '../../helpers/index.js'\nimport { DEFAULT_CHANCE_TITLE } from './types.js'\nimport { DEFAULT_CHANCE_METHODS } from '../LotteryShared/types.js'\nimport { Grid, GridItem } from '../../components/grid.js'\nimport { MediaDrawArea } from './MediaDrawArea.js'\nimport { PrizePool } from '../LotteryShared/PrizePool.js'\nimport { ChanceMethods } from '../LotteryShared/ChanceMethods.js'\nimport { WinnerModal } from '../LotteryShared/WinnerModal.js'\nimport { RulesModal } from '../LotteryShared/RulesModal.js'\nimport { MyRewardsModal } from '../LotteryShared/MyRewardsModal.js'\nimport { ErrorModal } from '../LotteryShared/ErrorModal.js'\nimport { ShareModal } from '../LotteryShared/ShareModal.js'\nimport { withLayout } from '../../shared/Styles.js'\n\nimport type { ProductLotteryProps, ProductLotteryHandle } from './types.js'\nimport type { Prize, WinnerModalConfig } from '../LotteryShared/types.js'\n\nexport const ProductLottery = forwardRef<ProductLotteryHandle, ProductLotteryProps>(\n (\n {\n prizes,\n media,\n theme,\n ctaButton,\n chanceMethods = DEFAULT_CHANCE_METHODS,\n chanceTitle = DEFAULT_CHANCE_TITLE,\n chanceSubtitle,\n chanceFooterNote,\n chanceMethodsText,\n mechanismType,\n inputConfig,\n winningInfos = [],\n prizesTitle,\n onDrawStart,\n onDrawEnd,\n onDrawError,\n winnerModalConfig,\n rulesModalConfig = {},\n myRewardsModalConfig = {},\n errorModalConfig = {},\n shareModalConfig = {},\n userData,\n loginPromptText = 'Please log in to participate',\n loginButtonText = 'Log In',\n noChancesText = 'You have no chances left',\n onLoginRequired,\n onCopyCode,\n opportunitiesText = ['Number of draws remaining today:'],\n className,\n },\n ref\n ) => {\n const { rulesData, rulesText = 'Rules' } = rulesModalConfig\n const {\n rewardsData,\n myRewardsText = 'My Rewards',\n codeText = 'CODE:',\n copyText = 'COPY',\n copiedText = 'COPIED',\n prizeText = 'Prize time:',\n } = myRewardsModalConfig\n const completedText = chanceMethodsText?.completedText\n const usedText = chanceMethodsText?.usedText\n const isLoggedIn = userData?.isLoggedIn ?? false\n const availableChances = userData?.availableChances || 0\n const hasRightPanel = chanceMethods.length > 0 || mechanismType === 'input'\n const showNoChancesOverlay = isLoggedIn && availableChances <= 0\n\n // State\n const [isDrawing, setIsDrawing] = useState(false)\n const [winningPrize, setWinningPrize] = useState<Prize | null>(null)\n const [showWinnerModal, setShowWinnerModal] = useState(false)\n const [showRulesModal, setShowRulesModal] = useState(false)\n const [showRewardsModal, setShowRewardsModal] = useState(false)\n const [showErrorModal, setShowErrorModal] = useState(false)\n const [showNoWinModal, setShowNoWinModal] = useState(false)\n const [showShareModal, setShowShareModal] = useState(false)\n const [errorMessage, setErrorMessage] = useState('')\n const [errorTitle, setErrorTitle] = useState<string | undefined>()\n const [errorConfirmText, setErrorConfirmText] = useState<string | undefined>()\n const [noWinTitle, setNoWinTitle] = useState<string | undefined>()\n const [noWinMessage, setNoWinMessage] = useState<string | undefined>()\n const [noWinConfirmText, setNoWinConfirmText] = useState<string | undefined>()\n const [externalWinnerConfig, setExternalWinnerConfig] = useState<Partial<WinnerModalConfig> | undefined>()\n\n useImperativeHandle(\n ref,\n () => ({\n showError: ({ message, title, confirmText }) => {\n setErrorMessage(message)\n setErrorTitle(title)\n setErrorConfirmText(confirmText)\n setShowErrorModal(true)\n },\n hideError: () => {\n setShowErrorModal(false)\n },\n showNoWin: config => {\n setNoWinTitle(config?.title)\n setNoWinMessage(config?.message)\n setNoWinConfirmText(config?.confirmText)\n setShowNoWinModal(true)\n },\n hideNoWin: () => {\n setShowNoWinModal(false)\n },\n showWinner: (prize, config) => {\n setWinningPrize(prize)\n setExternalWinnerConfig(config)\n setShowWinnerModal(true)\n },\n hideWinner: () => {\n setShowWinnerModal(false)\n },\n showRules: () => {\n setShowRulesModal(true)\n },\n hideRules: () => {\n setShowRulesModal(false)\n },\n showRewards: () => {\n setShowRewardsModal(true)\n },\n hideRewards: () => {\n setShowRewardsModal(false)\n },\n showShare: () => {\n setShowShareModal(true)\n },\n hideShare: () => {\n setShowShareModal(false)\n },\n hideAllModals: () => {\n setShowWinnerModal(false)\n setShowRulesModal(false)\n setShowRewardsModal(false)\n setShowErrorModal(false)\n setShowNoWinModal(false)\n setShowShareModal(false)\n },\n }),\n []\n )\n\n const handleDrawStart = useCallback(async () => {\n if (isDrawing) return\n\n if (!userData?.isLoggedIn) {\n onLoginRequired?.()\n return\n }\n\n if (userData.availableChances <= 0) {\n return\n }\n\n setIsDrawing(true)\n\n try {\n let prizeId: string | undefined\n\n if (onDrawStart) {\n prizeId = await onDrawStart()\n }\n\n const prize = prizes.find(p => p.prizeKey === prizeId) || prizes[0]\n setWinningPrize(prize)\n setIsDrawing(false)\n\n if (onDrawEnd) {\n onDrawEnd(prize)\n } else {\n setTimeout(() => {\n if (prize.prizeKey === 'try-again') {\n setShowNoWinModal(true)\n } else {\n setShowWinnerModal(true)\n }\n }, 300)\n }\n } catch (error) {\n setIsDrawing(false)\n setErrorMessage((error as Error).message || 'An error occurred')\n setShowErrorModal(true)\n onDrawError?.(error as Error)\n }\n }, [isDrawing, prizes, onDrawStart, onDrawEnd, onDrawError, userData, onLoginRequired])\n\n const handleDrawClick = useCallback(() => {\n if (!isLoggedIn) {\n onLoginRequired?.()\n return\n }\n void handleDrawStart()\n }, [handleDrawStart, isLoggedIn, onLoginRequired])\n\n const handleCloseWinnerModal = useCallback(() => {\n setShowWinnerModal(false)\n }, [])\n\n const handleCloseNoWinModal = useCallback(() => {\n setShowNoWinModal(false)\n }, [])\n\n return (\n <div className={cn('product-lottery-container', 'w-full', theme === 'dark' ? 'aiui-dark' : '', className)}>\n {/* ARIA Live Region */}\n <div role=\"status\" aria-live=\"polite\" aria-atomic=\"true\" className=\"sr-only\">\n {isDrawing && 'Drawing in progress...'}\n {winningPrize && !isDrawing && `Prize won: ${winningPrize.name}`}\n </div>\n\n {/* Main Content \u2014 Responsive Grid */}\n <Grid className={cn('product-lottery-main', 'tablet:mb-4 mb-3')}>\n {/* Left: Media Draw Area */}\n <GridItem\n span={hasRightPanel ? 7 : 12}\n className={cn(\n 'media-section',\n 'relative flex w-full flex-1 items-center justify-center overflow-hidden',\n 'rounded-box',\n 'laptop:min-h-[288px] min-h-[240px]',\n 'lg-desktop:aspect-w-[964] lg-desktop:aspect-h-[480]',\n 'desktop:aspect-w-[759] desktop:aspect-h-[384]',\n 'laptop:aspect-w-[516] laptop:aspect-h-[288]',\n 'l-tablet:col-span-12',\n 'l-tablet:mb-3',\n theme === 'dark' ? 'bg-[#1E2024]' : 'bg-[#EAEAEC]'\n )}\n >\n <div\n className={cn(\n 'size-full px-[16px] pt-[16px]',\n 'lg-desktop:pb-[32px] lg-desktop:px-[32px]',\n 'desktop:pt-[24px] desktop:px-[24px]',\n 'laptop:pt-[16px] laptop:px-[16px]',\n 'tablet:px-[24px]',\n 'l-tablet:absolute l-tablet:top-0 l-tablet:inset-x-0 l-tablet:z-10'\n )}\n >\n {/* Top bar: chances + rules/rewards links */}\n <div className=\"relative z-10 mb-2 flex max-h-[24px] w-full flex-wrap items-center justify-between gap-3\">\n <div>\n <p className=\"text-info-primary font-[700]\">\n {opportunitiesText?.[0]}\n <span className=\"ml-1 text-[#FF6B35]\">{availableChances}</span>\n {opportunitiesText?.[1] || ''}\n </p>\n </div>\n <div className=\"flex items-center gap-4\">\n {rulesData && (\n <button\n onClick={() => setShowRulesModal(true)}\n className=\"cursor-pointer touch-manipulation\"\n type=\"button\"\n >\n <span className=\"text-info-primary font-[700] underline\">{rulesText}</span>\n </button>\n )}\n {rewardsData && (\n <button\n onClick={() => {\n if (!isLoggedIn) {\n onLoginRequired?.()\n return\n }\n setShowRewardsModal(true)\n }}\n className=\"cursor-pointer touch-manipulation whitespace-nowrap\"\n type=\"button\"\n >\n <span className=\"text-info-primary font-[700] underline\">{myRewardsText}</span>\n </button>\n )}\n </div>\n </div>\n\n {/* Media Draw Area */}\n <MediaDrawArea\n theme={theme}\n media={media}\n ctaButton={ctaButton}\n isDrawing={isDrawing}\n isDisabled={showNoChancesOverlay}\n onClick={handleDrawClick}\n />\n\n {showNoChancesOverlay && (\n <div\n className={cn(\n 'rounded-box absolute inset-0 z-20 flex items-center justify-center bg-black/60 backdrop-blur-sm',\n 'px-6 text-center'\n )}\n >\n <div className=\"flex flex-col items-center gap-4\">\n <p className=\"lg-desktop:text-[24px] text-[18px] font-semibold text-white\">{noChancesText}</p>\n </div>\n </div>\n )}\n </div>\n </GridItem>\n\n {/* Right: Chance Methods */}\n {hasRightPanel && (\n <GridItem\n span={5}\n className={cn(\n 'info-section',\n 'rounded-box',\n 'relative flex flex-col overflow-hidden',\n 'lg-desktop:aspect-w-[684] lg-desktop:aspect-h-[480]',\n 'desktop:aspect-w-[536] desktop:aspect-h-[384]',\n 'laptop:aspect-w-[364] laptop:aspect-h-[288]',\n 'l-tablet:min-h-[280px] laptop:max-h-[320px]',\n 'w-full',\n 'l-tablet:col-span-12',\n theme === 'dark' ? 'bg-[#1E2024]' : 'bg-[#EAEAEC]'\n )}\n >\n <ChanceMethods\n theme={theme}\n userData={userData}\n methods={chanceMethods}\n title={chanceTitle}\n subtitle={chanceSubtitle}\n footerNote={chanceFooterNote}\n onOpenShareModal={() => setShowShareModal(true)}\n chanceBadgeText={chanceMethodsText?.chanceBadgeText}\n completedText={completedText}\n usedText={usedText}\n loadingText={chanceMethodsText?.loadingText}\n mechanismType={mechanismType}\n inputConfig={inputConfig}\n />\n </GridItem>\n )}\n </Grid>\n\n {/* Footer: Prize Pool */}\n <div\n className={cn(\n 'product-lottery-footer',\n 'rounded-box',\n 'flex flex-col overflow-hidden',\n theme === 'dark' ? 'bg-[#1E2024]' : 'bg-[#EAEAEC]'\n )}\n >\n <PrizePool theme={theme} prizes={prizes} title={prizesTitle} winningInfos={winningInfos} />\n </div>\n\n {/* Winner Modal */}\n <WinnerModal\n isOpen={showWinnerModal}\n prize={winningPrize}\n title={externalWinnerConfig?.title || winnerModalConfig?.title}\n prizeTitle={externalWinnerConfig?.prizeTitle || winnerModalConfig?.prizeTitle}\n prizeImage={externalWinnerConfig?.prizeImage || winnerModalConfig?.prizeImage}\n prizeDescription={externalWinnerConfig?.prizeDescription || winnerModalConfig?.prizeDescription}\n learnMoreUrl={externalWinnerConfig?.learnMoreUrl || winnerModalConfig?.learnMoreUrl}\n learnMoreText={externalWinnerConfig?.learnMoreText || winnerModalConfig?.learnMoreText}\n couponCode={externalWinnerConfig?.couponCode || winnerModalConfig?.couponCode}\n expiresAt={externalWinnerConfig?.expiresAt || winnerModalConfig?.expiresAt}\n couponDiscount={externalWinnerConfig?.couponDiscount || winnerModalConfig?.couponDiscount}\n couponUnit={externalWinnerConfig?.couponUnit || winnerModalConfig?.couponUnit}\n confirmText={externalWinnerConfig?.confirmText || winnerModalConfig?.confirmText}\n onClose={handleCloseWinnerModal}\n theme={theme}\n />\n\n {/* Rules Modal */}\n {rulesData && (\n <RulesModal\n title={rulesText}\n isOpen={showRulesModal}\n onClose={() => setShowRulesModal(false)}\n rules={rulesData}\n theme={theme}\n />\n )}\n\n {/* My Rewards Modal */}\n {rewardsData && (\n <MyRewardsModal\n isOpen={showRewardsModal}\n onClose={() => setShowRewardsModal(false)}\n rewards={rewardsData}\n onCopyCode={onCopyCode}\n codeText={codeText}\n copyText={copyText}\n copiedText={copiedText}\n prizeText={prizeText}\n theme={theme}\n title={myRewardsText}\n />\n )}\n\n {/* Error Modal */}\n <ErrorModal\n isOpen={showErrorModal}\n onClose={() => setShowErrorModal(false)}\n title={errorTitle || errorModalConfig?.title}\n message={errorMessage || errorModalConfig?.message}\n confirmText={errorConfirmText || errorModalConfig?.confirmText}\n theme={theme}\n />\n\n {/* No-Win Modal */}\n <ErrorModal\n isOpen={showNoWinModal}\n onClose={handleCloseNoWinModal}\n title={noWinTitle || errorModalConfig?.title}\n message={noWinMessage || errorModalConfig?.message}\n confirmText={noWinConfirmText || errorModalConfig?.confirmText}\n theme={theme}\n />\n\n {/* Share Modal */}\n <ShareModal\n isOpen={showShareModal}\n onClose={() => setShowShareModal(false)}\n title={shareModalConfig?.title}\n subtitle={shareModalConfig?.subtitle}\n note={shareModalConfig?.note}\n platforms={shareModalConfig?.platforms}\n onShareSuccess={shareModalConfig?.onShareSuccess}\n theme={theme}\n />\n </div>\n )\n }\n)\n\nProductLottery.displayName = 'ProductLottery'\n\nexport default withLayout(ProductLottery)\nexport { WinnerModal } from '../LotteryShared/WinnerModal.js'\nexport { RulesModal } from '../LotteryShared/RulesModal.js'\nexport { MyRewardsModal } from '../LotteryShared/MyRewardsModal.js'\nexport { ErrorModal } from '../LotteryShared/ErrorModal.js'\nexport { ShareModal } from '../LotteryShared/ShareModal.js'\nexport { BaseModal } from '../LotteryShared/BaseModal.js'\nexport type {\n ProductLotteryProps,\n ProductLotteryHandle,\n MediaConfig,\n CtaButtonConfig,\n ResponsiveMedia,\n MediaDrawAreaProps,\n} from './types.js'\nexport type {\n Prize,\n ChanceMethod,\n ChanceMethodStatus,\n WinningInfo,\n PrizePoolProps,\n ChanceMethodsProps,\n WinnerModalProps,\n WinnerModalConfig,\n UserData,\n ShareModalConfig,\n SocialPlatform,\n SharePlatformConfig,\n} from '../LotteryShared/types.js'\nexport type { RulesModalProps, RuleItem } from '../LotteryShared/RulesModal.js'\nexport type { MyRewardsModalProps, Reward, RewardStatus } from '../LotteryShared/MyRewardsModal.js'\nexport type { ErrorModalProps } from '../LotteryShared/ErrorModal.js'\nexport type { ShareModalProps } from '../LotteryShared/ShareModal.js'\nexport type { BaseModalProps } from '../LotteryShared/BaseModal.js'\n"],
5
+ "mappings": "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",
6
+ "names": ["jsx", "jsxs", "useState", "useCallback", "useImperativeHandle", "forwardRef", "cn", "DEFAULT_CHANCE_TITLE", "DEFAULT_CHANCE_METHODS", "Grid", "GridItem", "MediaDrawArea", "PrizePool", "ChanceMethods", "WinnerModal", "RulesModal", "MyRewardsModal", "ErrorModal", "ShareModal", "withLayout", "ProductLottery", "prizes", "media", "theme", "ctaButton", "chanceMethods", "chanceTitle", "chanceSubtitle", "chanceFooterNote", "chanceMethodsText", "mechanismType", "inputConfig", "winningInfos", "prizesTitle", "onDrawStart", "onDrawEnd", "onDrawError", "winnerModalConfig", "rulesModalConfig", "myRewardsModalConfig", "errorModalConfig", "shareModalConfig", "userData", "loginPromptText", "loginButtonText", "noChancesText", "onLoginRequired", "onCopyCode", "opportunitiesText", "className", "ref", "rulesData", "rulesText", "rewardsData", "myRewardsText", "codeText", "copyText", "copiedText", "prizeText", "completedText", "usedText", "isLoggedIn", "availableChances", "hasRightPanel", "showNoChancesOverlay", "isDrawing", "setIsDrawing", "winningPrize", "setWinningPrize", "showWinnerModal", "setShowWinnerModal", "showRulesModal", "setShowRulesModal", "showRewardsModal", "setShowRewardsModal", "showErrorModal", "setShowErrorModal", "showNoWinModal", "setShowNoWinModal", "showShareModal", "setShowShareModal", "errorMessage", "setErrorMessage", "errorTitle", "setErrorTitle", "errorConfirmText", "setErrorConfirmText", "noWinTitle", "setNoWinTitle", "noWinMessage", "setNoWinMessage", "noWinConfirmText", "setNoWinConfirmText", "externalWinnerConfig", "setExternalWinnerConfig", "message", "title", "confirmText", "config", "prize", "handleDrawStart", "prizeId", "p", "error", "handleDrawClick", "handleCloseWinnerModal", "handleCloseNoWinModal", "ProductLottery_default", "BaseModal"]
7
+ }