@anker-in/campaign-ui 0.2.11-beta.2 → 0.2.11-beta.21

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 (510) hide show
  1. package/dist/cjs/components/LiveChatWidget/LiveChatWidget.d.ts +43 -0
  2. package/dist/cjs/components/LiveChatWidget/LiveChatWidget.js +2 -0
  3. package/dist/cjs/components/LiveChatWidget/LiveChatWidget.js.map +7 -0
  4. package/dist/cjs/components/LiveChatWidget/api/chat.d.ts +25 -0
  5. package/dist/cjs/components/LiveChatWidget/api/chat.js +3 -0
  6. package/dist/cjs/components/LiveChatWidget/api/chat.js.map +7 -0
  7. package/dist/cjs/components/LiveChatWidget/components/ChatBubble.d.ts +68 -0
  8. package/dist/cjs/components/LiveChatWidget/components/ChatBubble.js +2 -0
  9. package/dist/cjs/components/LiveChatWidget/components/ChatBubble.js.map +7 -0
  10. package/dist/cjs/components/LiveChatWidget/components/ChatHeader.d.ts +57 -0
  11. package/dist/cjs/components/LiveChatWidget/components/ChatHeader.js +2 -0
  12. package/dist/cjs/components/LiveChatWidget/components/ChatHeader.js.map +7 -0
  13. package/dist/cjs/components/LiveChatWidget/components/ChatInput.d.ts +70 -0
  14. package/dist/cjs/components/LiveChatWidget/components/ChatInput.js +2 -0
  15. package/dist/cjs/components/LiveChatWidget/components/ChatInput.js.map +7 -0
  16. package/dist/cjs/components/LiveChatWidget/components/ChatMessage.d.ts +59 -0
  17. package/dist/cjs/components/LiveChatWidget/components/ChatMessage.js +5 -0
  18. package/dist/cjs/components/LiveChatWidget/components/ChatMessage.js.map +7 -0
  19. package/dist/cjs/components/LiveChatWidget/components/ChatWindow.d.ts +127 -0
  20. package/dist/cjs/components/LiveChatWidget/components/ChatWindow.js +2 -0
  21. package/dist/cjs/components/LiveChatWidget/components/ChatWindow.js.map +7 -0
  22. package/dist/cjs/components/LiveChatWidget/components/MessageContent/CartCard.d.ts +54 -0
  23. package/dist/cjs/components/LiveChatWidget/components/MessageContent/CartCard.js +2 -0
  24. package/dist/cjs/components/LiveChatWidget/components/MessageContent/CartCard.js.map +7 -0
  25. package/dist/cjs/components/LiveChatWidget/components/MessageContent/ErrorBlock.d.ts +33 -0
  26. package/dist/cjs/components/LiveChatWidget/components/MessageContent/ErrorBlock.js +2 -0
  27. package/dist/cjs/components/LiveChatWidget/components/MessageContent/ErrorBlock.js.map +7 -0
  28. package/dist/cjs/components/LiveChatWidget/components/MessageContent/FAQList.d.ts +16 -0
  29. package/dist/cjs/components/LiveChatWidget/components/MessageContent/FAQList.js +2 -0
  30. package/dist/cjs/components/LiveChatWidget/components/MessageContent/FAQList.js.map +7 -0
  31. package/dist/cjs/components/LiveChatWidget/components/MessageContent/PolicyBlock.d.ts +45 -0
  32. package/dist/cjs/components/LiveChatWidget/components/MessageContent/PolicyBlock.js +5 -0
  33. package/dist/cjs/components/LiveChatWidget/components/MessageContent/PolicyBlock.js.map +7 -0
  34. package/dist/cjs/components/LiveChatWidget/components/MessageContent/ProductCard.d.ts +48 -0
  35. package/dist/cjs/components/LiveChatWidget/components/MessageContent/ProductCard.js +5 -0
  36. package/dist/cjs/components/LiveChatWidget/components/MessageContent/ProductCard.js.map +7 -0
  37. package/dist/cjs/components/LiveChatWidget/components/MessageContent/ProductComparison.d.ts +70 -0
  38. package/dist/cjs/components/LiveChatWidget/components/MessageContent/ProductComparison.js +2 -0
  39. package/dist/cjs/components/LiveChatWidget/components/MessageContent/ProductComparison.js.map +7 -0
  40. package/dist/cjs/components/LiveChatWidget/components/MessageContent/ProductList.d.ts +47 -0
  41. package/dist/cjs/components/LiveChatWidget/components/MessageContent/ProductList.js +2 -0
  42. package/dist/cjs/components/LiveChatWidget/components/MessageContent/ProductList.js.map +7 -0
  43. package/dist/cjs/components/LiveChatWidget/components/MessageContent/PromotionList.d.ts +78 -0
  44. package/dist/cjs/components/LiveChatWidget/components/MessageContent/PromotionList.js +2 -0
  45. package/dist/cjs/components/LiveChatWidget/components/MessageContent/PromotionList.js.map +7 -0
  46. package/dist/cjs/components/LiveChatWidget/components/MessageContent/QuickReplies.d.ts +54 -0
  47. package/dist/cjs/components/LiveChatWidget/components/MessageContent/QuickReplies.js +2 -0
  48. package/dist/cjs/components/LiveChatWidget/components/MessageContent/QuickReplies.js.map +7 -0
  49. package/dist/cjs/components/LiveChatWidget/components/MessageContent/TextBlock.d.ts +31 -0
  50. package/dist/cjs/components/LiveChatWidget/components/MessageContent/TextBlock.js +2 -0
  51. package/dist/cjs/components/LiveChatWidget/components/MessageContent/TextBlock.js.map +7 -0
  52. package/dist/cjs/components/LiveChatWidget/components/MessageContent/ThinkingBlock.d.ts +31 -0
  53. package/dist/cjs/components/LiveChatWidget/components/MessageContent/ThinkingBlock.js +2 -0
  54. package/dist/cjs/components/LiveChatWidget/components/MessageContent/ThinkingBlock.js.map +7 -0
  55. package/dist/cjs/components/LiveChatWidget/components/MessageContent/index.d.ts +15 -0
  56. package/dist/cjs/components/LiveChatWidget/components/MessageContent/index.js +2 -0
  57. package/dist/cjs/components/LiveChatWidget/components/MessageContent/index.js.map +7 -0
  58. package/dist/cjs/components/LiveChatWidget/components/MessageContent.d.ts +63 -0
  59. package/dist/cjs/components/LiveChatWidget/components/MessageContent.js +2 -0
  60. package/dist/cjs/components/LiveChatWidget/components/MessageContent.js.map +7 -0
  61. package/dist/cjs/components/LiveChatWidget/components/MessageList.d.ts +74 -0
  62. package/dist/cjs/components/LiveChatWidget/components/MessageList.js +5 -0
  63. package/dist/cjs/components/LiveChatWidget/components/MessageList.js.map +7 -0
  64. package/dist/cjs/components/LiveChatWidget/components/ScrollAnchor.d.ts +44 -0
  65. package/dist/cjs/components/LiveChatWidget/components/ScrollAnchor.js +2 -0
  66. package/dist/cjs/components/LiveChatWidget/components/ScrollAnchor.js.map +7 -0
  67. package/dist/cjs/components/LiveChatWidget/constants.d.ts +8 -0
  68. package/dist/cjs/components/LiveChatWidget/constants.js +2 -0
  69. package/dist/cjs/components/LiveChatWidget/constants.js.map +7 -0
  70. package/dist/cjs/components/LiveChatWidget/hooks/useChatAPI.d.ts +51 -0
  71. package/dist/cjs/components/LiveChatWidget/hooks/useChatAPI.js +2 -0
  72. package/dist/cjs/components/LiveChatWidget/hooks/useChatAPI.js.map +7 -0
  73. package/dist/cjs/components/LiveChatWidget/hooks/useChatState.d.ts +120 -0
  74. package/dist/cjs/components/LiveChatWidget/hooks/useChatState.js +2 -0
  75. package/dist/cjs/components/LiveChatWidget/hooks/useChatState.js.map +7 -0
  76. package/dist/cjs/components/LiveChatWidget/hooks/useSession.d.ts +37 -0
  77. package/dist/cjs/components/LiveChatWidget/hooks/useSession.js +2 -0
  78. package/dist/cjs/components/LiveChatWidget/hooks/useSession.js.map +7 -0
  79. package/dist/cjs/components/LiveChatWidget/index.d.ts +12 -0
  80. package/dist/cjs/components/LiveChatWidget/index.js +2 -0
  81. package/dist/cjs/components/LiveChatWidget/index.js.map +7 -0
  82. package/dist/cjs/components/LiveChatWidget/types.d.ts +609 -0
  83. package/dist/cjs/components/LiveChatWidget/types.js +2 -0
  84. package/dist/cjs/components/LiveChatWidget/types.js.map +7 -0
  85. package/dist/cjs/components/LiveChatWidget/utils/cartTransformers.d.ts +25 -0
  86. package/dist/cjs/components/LiveChatWidget/utils/cartTransformers.js +2 -0
  87. package/dist/cjs/components/LiveChatWidget/utils/cartTransformers.js.map +7 -0
  88. package/dist/cjs/components/LiveChatWidget/utils/messageRenderers.d.ts +64 -0
  89. package/dist/cjs/components/LiveChatWidget/utils/messageRenderers.js +2 -0
  90. package/dist/cjs/components/LiveChatWidget/utils/messageRenderers.js.map +7 -0
  91. package/dist/cjs/components/LiveChatWidget/utils/productTransformers.d.ts +43 -0
  92. package/dist/cjs/components/LiveChatWidget/utils/productTransformers.js +2 -0
  93. package/dist/cjs/components/LiveChatWidget/utils/productTransformers.js.map +7 -0
  94. package/dist/cjs/components/LiveChatWidget/utils/userId.d.ts +18 -0
  95. package/dist/cjs/components/LiveChatWidget/utils/userId.js +2 -0
  96. package/dist/cjs/components/LiveChatWidget/utils/userId.js.map +7 -0
  97. package/dist/cjs/components/LiveChatWidget/utils/validation.d.ts +37 -0
  98. package/dist/cjs/components/LiveChatWidget/utils/validation.js +2 -0
  99. package/dist/cjs/components/LiveChatWidget/utils/validation.js.map +7 -0
  100. package/dist/cjs/components/chat/markdown.js +1 -1
  101. package/dist/cjs/components/chat/markdown.js.map +2 -2
  102. package/dist/cjs/components/credits/context/hooks/useFunctionMemberPrice.d.ts +2 -2
  103. package/dist/cjs/components/credits/context/hooks/useFunctionMemberPrice.js +1 -1
  104. package/dist/cjs/components/credits/context/hooks/useFunctionMemberPrice.js.map +2 -2
  105. package/dist/cjs/components/credits/context/hooks/useRedeemableList.js +1 -1
  106. package/dist/cjs/components/credits/context/hooks/useRedeemableList.js.map +2 -2
  107. package/dist/cjs/components/credits/context/memberPriceConst.d.ts +0 -5
  108. package/dist/cjs/components/credits/context/memberPriceConst.js +1 -1
  109. package/dist/cjs/components/credits/context/memberPriceConst.js.map +3 -3
  110. package/dist/cjs/components/credits/context/memberPriceTypes.d.ts +1 -22
  111. package/dist/cjs/components/credits/context/memberPriceTypes.js +1 -1
  112. package/dist/cjs/components/credits/context/memberPriceTypes.js.map +1 -1
  113. package/dist/cjs/components/credits/context/provider.d.ts +16 -1
  114. package/dist/cjs/components/credits/context/provider.js +1 -1
  115. package/dist/cjs/components/credits/context/provider.js.map +3 -3
  116. package/dist/cjs/components/credits/context/utils/getFunctionMemberPrice.d.ts +2 -2
  117. package/dist/cjs/components/credits/context/utils/getFunctionMemberPrice.js +1 -1
  118. package/dist/cjs/components/credits/context/utils/getFunctionMemberPrice.js.map +1 -1
  119. package/dist/cjs/components/credits/context/utils/getFunctionMemberPriceDiscountConfig.d.ts +2 -2
  120. package/dist/cjs/components/credits/context/utils/getFunctionMemberPriceDiscountConfig.js +1 -1
  121. package/dist/cjs/components/credits/context/utils/getFunctionMemberPriceDiscountConfig.js.map +1 -1
  122. package/dist/cjs/components/credits/context/utils/variantGetCoupon.d.ts +2 -2
  123. package/dist/cjs/components/credits/context/utils/variantGetCoupon.js +1 -1
  124. package/dist/cjs/components/credits/context/utils/variantGetCoupon.js.map +1 -1
  125. package/dist/cjs/components/credits/context/utils.d.ts +4 -0
  126. package/dist/cjs/components/credits/context/utils.js +1 -1
  127. package/dist/cjs/components/credits/context/utils.js.map +3 -3
  128. package/dist/cjs/components/credits/creditsAnkersolixTask/CreditsAnkersolixTask.js +1 -1
  129. package/dist/cjs/components/credits/creditsAnkersolixTask/CreditsAnkersolixTask.js.map +3 -3
  130. package/dist/cjs/components/credits/creditsBanner/index.d.ts +2 -0
  131. package/dist/cjs/components/credits/creditsBanner/index.js +12 -1
  132. package/dist/cjs/components/credits/creditsBanner/index.js.map +3 -3
  133. package/dist/cjs/components/credits/creditsBenefits/BenefitItem.js +1 -1
  134. package/dist/cjs/components/credits/creditsBenefits/BenefitItem.js.map +3 -3
  135. package/dist/cjs/components/credits/creditsBenefits/IconInfo.js +1 -1
  136. package/dist/cjs/components/credits/creditsBenefits/IconInfo.js.map +1 -1
  137. package/dist/cjs/components/credits/creditsBenefits/index.js +3 -3
  138. package/dist/cjs/components/credits/creditsBenefits/index.js.map +2 -2
  139. package/dist/cjs/components/credits/creditsCash/CreditsCash.js +1 -1
  140. package/dist/cjs/components/credits/creditsCash/CreditsCash.js.map +3 -3
  141. package/dist/cjs/components/credits/creditsCash/RedeemableItem.js +1 -1
  142. package/dist/cjs/components/credits/creditsCash/RedeemableItem.js.map +3 -3
  143. package/dist/cjs/components/credits/creditsCash/type.d.ts +1 -0
  144. package/dist/cjs/components/credits/creditsCash/type.js +1 -1
  145. package/dist/cjs/components/credits/creditsCash/type.js.map +1 -1
  146. package/dist/cjs/components/credits/creditsFaq/faqItem/FaqItem.js +1 -1
  147. package/dist/cjs/components/credits/creditsFaq/faqItem/FaqItem.js.map +3 -3
  148. package/dist/cjs/components/credits/creditsFaq/index.js +1 -1
  149. package/dist/cjs/components/credits/creditsFaq/index.js.map +3 -3
  150. package/dist/cjs/components/credits/creditsInfoCard/index.js +1 -1
  151. package/dist/cjs/components/credits/creditsInfoCard/index.js.map +3 -3
  152. package/dist/cjs/components/credits/creditsMemberPrice/CreditsMemberPrice.js +1 -1
  153. package/dist/cjs/components/credits/creditsMemberPrice/CreditsMemberPrice.js.map +3 -3
  154. package/dist/cjs/components/credits/creditsMemberPrice/MemberPriceItem.js +1 -1
  155. package/dist/cjs/components/credits/creditsMemberPrice/MemberPriceItem.js.map +3 -3
  156. package/dist/cjs/components/credits/creditsMemberPrice/Pagination.d.ts +7 -0
  157. package/dist/cjs/components/credits/creditsMemberPrice/Pagination.js +2 -0
  158. package/dist/cjs/components/credits/creditsMemberPrice/Pagination.js.map +7 -0
  159. package/dist/cjs/components/credits/creditsMemberPrice/type.d.ts +3 -5
  160. package/dist/cjs/components/credits/creditsMemberPrice/type.js +1 -1
  161. package/dist/cjs/components/credits/creditsMemberPrice/type.js.map +1 -1
  162. package/dist/cjs/components/credits/creditsNavigation/CreditsNavigation.js +1 -1
  163. package/dist/cjs/components/credits/creditsNavigation/CreditsNavigation.js.map +2 -2
  164. package/dist/cjs/components/credits/creditsRedeemList/AddressForm/CountrySelect.js +1 -1
  165. package/dist/cjs/components/credits/creditsRedeemList/AddressForm/CountrySelect.js.map +3 -3
  166. package/dist/cjs/components/credits/creditsRedeemList/AddressForm/StateSelect.js +1 -1
  167. package/dist/cjs/components/credits/creditsRedeemList/AddressForm/StateSelect.js.map +3 -3
  168. package/dist/cjs/components/credits/creditsRedeemList/AddressForm/index.js +1 -1
  169. package/dist/cjs/components/credits/creditsRedeemList/AddressForm/index.js.map +3 -3
  170. package/dist/cjs/components/credits/creditsRedeemList/CreditsRedeemList.js +1 -1
  171. package/dist/cjs/components/credits/creditsRedeemList/CreditsRedeemList.js.map +3 -3
  172. package/dist/cjs/components/credits/creditsRedeemList/RedeemProductModal/Address.js +1 -1
  173. package/dist/cjs/components/credits/creditsRedeemList/RedeemProductModal/Address.js.map +3 -3
  174. package/dist/cjs/components/credits/creditsRedeemList/RedeemProductModal/ProductInfo.js +1 -1
  175. package/dist/cjs/components/credits/creditsRedeemList/RedeemProductModal/ProductInfo.js.map +2 -2
  176. package/dist/cjs/components/credits/creditsRedeemList/RedeemProductModal/Success.js +1 -1
  177. package/dist/cjs/components/credits/creditsRedeemList/RedeemProductModal/Success.js.map +3 -3
  178. package/dist/cjs/components/credits/creditsRedeemList/RedeemableItem.js +1 -1
  179. package/dist/cjs/components/credits/creditsRedeemList/RedeemableItem.js.map +3 -3
  180. package/dist/cjs/components/credits/creditsWaysToGetCredits/CreditsWaysToGetCredits.js +1 -1
  181. package/dist/cjs/components/credits/creditsWaysToGetCredits/CreditsWaysToGetCredits.js.map +3 -3
  182. package/dist/cjs/components/credits/modal/MyRewardsModal.js +1 -1
  183. package/dist/cjs/components/credits/modal/MyRewardsModal.js.map +3 -3
  184. package/dist/cjs/components/credits/modal/activitiesModal.js +1 -1
  185. package/dist/cjs/components/credits/modal/activitiesModal.js.map +3 -3
  186. package/dist/cjs/components/credits/modal/creditsUploadReceiptModal.js +1 -1
  187. package/dist/cjs/components/credits/modal/creditsUploadReceiptModal.js.map +3 -3
  188. package/dist/cjs/components/credits/modal/modalContainer.js +1 -1
  189. package/dist/cjs/components/credits/modal/modalContainer.js.map +3 -3
  190. package/dist/cjs/components/credits/modal/subscribeModal.js +1 -1
  191. package/dist/cjs/components/credits/modal/subscribeModal.js.map +3 -3
  192. package/dist/cjs/components/credits/modal/tip.js +1 -1
  193. package/dist/cjs/components/credits/modal/tip.js.map +3 -3
  194. package/dist/cjs/components/index.d.ts +3 -1
  195. package/dist/cjs/components/index.js +1 -1
  196. package/dist/cjs/components/index.js.map +3 -3
  197. package/dist/cjs/components/registration/authCodeActivate/index.js +1 -1
  198. package/dist/cjs/components/registration/authCodeActivate/index.js.map +3 -3
  199. package/dist/cjs/components/registration/modalContainer.js +1 -1
  200. package/dist/cjs/components/registration/modalContainer.js.map +3 -3
  201. package/dist/cjs/constants.d.ts +1 -0
  202. package/dist/cjs/constants.js +2 -0
  203. package/dist/cjs/constants.js.map +7 -0
  204. package/dist/cjs/index.d.ts +3 -2
  205. package/dist/cjs/index.js +1 -1
  206. package/dist/cjs/index.js.map +2 -2
  207. package/dist/cjs/stories/CartCard.stories.d.ts +33 -0
  208. package/dist/cjs/stories/CartCard.stories.js +21 -0
  209. package/dist/cjs/stories/CartCard.stories.js.map +7 -0
  210. package/dist/cjs/stories/LiveChatWidget.stories.d.ts +92 -0
  211. package/dist/cjs/stories/LiveChatWidget.stories.js +98 -0
  212. package/dist/cjs/stories/LiveChatWidget.stories.js.map +7 -0
  213. package/dist/cjs/templates/Credits.d.ts +15 -1
  214. package/dist/cjs/templates/Credits.js +1 -1
  215. package/dist/cjs/templates/Credits.js.map +3 -3
  216. package/dist/esm/components/LiveChatWidget/LiveChatWidget.d.ts +43 -0
  217. package/dist/esm/components/LiveChatWidget/LiveChatWidget.js +2 -0
  218. package/dist/esm/components/LiveChatWidget/LiveChatWidget.js.map +7 -0
  219. package/dist/esm/components/LiveChatWidget/api/chat.d.ts +25 -0
  220. package/dist/esm/components/LiveChatWidget/api/chat.js +3 -0
  221. package/dist/esm/components/LiveChatWidget/api/chat.js.map +7 -0
  222. package/dist/esm/components/LiveChatWidget/components/ChatBubble.d.ts +68 -0
  223. package/dist/esm/components/LiveChatWidget/components/ChatBubble.js +2 -0
  224. package/dist/esm/components/LiveChatWidget/components/ChatBubble.js.map +7 -0
  225. package/dist/esm/components/LiveChatWidget/components/ChatHeader.d.ts +57 -0
  226. package/dist/esm/components/LiveChatWidget/components/ChatHeader.js +2 -0
  227. package/dist/esm/components/LiveChatWidget/components/ChatHeader.js.map +7 -0
  228. package/dist/esm/components/LiveChatWidget/components/ChatInput.d.ts +70 -0
  229. package/dist/esm/components/LiveChatWidget/components/ChatInput.js +2 -0
  230. package/dist/esm/components/LiveChatWidget/components/ChatInput.js.map +7 -0
  231. package/dist/esm/components/LiveChatWidget/components/ChatMessage.d.ts +59 -0
  232. package/dist/esm/components/LiveChatWidget/components/ChatMessage.js +5 -0
  233. package/dist/esm/components/LiveChatWidget/components/ChatMessage.js.map +7 -0
  234. package/dist/esm/components/LiveChatWidget/components/ChatWindow.d.ts +127 -0
  235. package/dist/esm/components/LiveChatWidget/components/ChatWindow.js +2 -0
  236. package/dist/esm/components/LiveChatWidget/components/ChatWindow.js.map +7 -0
  237. package/dist/esm/components/LiveChatWidget/components/MessageContent/CartCard.d.ts +54 -0
  238. package/dist/esm/components/LiveChatWidget/components/MessageContent/CartCard.js +2 -0
  239. package/dist/esm/components/LiveChatWidget/components/MessageContent/CartCard.js.map +7 -0
  240. package/dist/esm/components/LiveChatWidget/components/MessageContent/ErrorBlock.d.ts +33 -0
  241. package/dist/esm/components/LiveChatWidget/components/MessageContent/ErrorBlock.js +2 -0
  242. package/dist/esm/components/LiveChatWidget/components/MessageContent/ErrorBlock.js.map +7 -0
  243. package/dist/esm/components/LiveChatWidget/components/MessageContent/FAQList.d.ts +16 -0
  244. package/dist/esm/components/LiveChatWidget/components/MessageContent/FAQList.js +2 -0
  245. package/dist/esm/components/LiveChatWidget/components/MessageContent/FAQList.js.map +7 -0
  246. package/dist/esm/components/LiveChatWidget/components/MessageContent/PolicyBlock.d.ts +45 -0
  247. package/dist/esm/components/LiveChatWidget/components/MessageContent/PolicyBlock.js +5 -0
  248. package/dist/esm/components/LiveChatWidget/components/MessageContent/PolicyBlock.js.map +7 -0
  249. package/dist/esm/components/LiveChatWidget/components/MessageContent/ProductCard.d.ts +48 -0
  250. package/dist/esm/components/LiveChatWidget/components/MessageContent/ProductCard.js +5 -0
  251. package/dist/esm/components/LiveChatWidget/components/MessageContent/ProductCard.js.map +7 -0
  252. package/dist/esm/components/LiveChatWidget/components/MessageContent/ProductComparison.d.ts +70 -0
  253. package/dist/esm/components/LiveChatWidget/components/MessageContent/ProductComparison.js +2 -0
  254. package/dist/esm/components/LiveChatWidget/components/MessageContent/ProductComparison.js.map +7 -0
  255. package/dist/esm/components/LiveChatWidget/components/MessageContent/ProductList.d.ts +47 -0
  256. package/dist/esm/components/LiveChatWidget/components/MessageContent/ProductList.js +2 -0
  257. package/dist/esm/components/LiveChatWidget/components/MessageContent/ProductList.js.map +7 -0
  258. package/dist/esm/components/LiveChatWidget/components/MessageContent/PromotionList.d.ts +78 -0
  259. package/dist/esm/components/LiveChatWidget/components/MessageContent/PromotionList.js +2 -0
  260. package/dist/esm/components/LiveChatWidget/components/MessageContent/PromotionList.js.map +7 -0
  261. package/dist/esm/components/LiveChatWidget/components/MessageContent/QuickReplies.d.ts +54 -0
  262. package/dist/esm/components/LiveChatWidget/components/MessageContent/QuickReplies.js +2 -0
  263. package/dist/esm/components/LiveChatWidget/components/MessageContent/QuickReplies.js.map +7 -0
  264. package/dist/esm/components/LiveChatWidget/components/MessageContent/TextBlock.d.ts +31 -0
  265. package/dist/esm/components/LiveChatWidget/components/MessageContent/TextBlock.js +2 -0
  266. package/dist/esm/components/LiveChatWidget/components/MessageContent/TextBlock.js.map +7 -0
  267. package/dist/esm/components/LiveChatWidget/components/MessageContent/ThinkingBlock.d.ts +31 -0
  268. package/dist/esm/components/LiveChatWidget/components/MessageContent/ThinkingBlock.js +2 -0
  269. package/dist/esm/components/LiveChatWidget/components/MessageContent/ThinkingBlock.js.map +7 -0
  270. package/dist/esm/components/LiveChatWidget/components/MessageContent/index.d.ts +15 -0
  271. package/dist/esm/components/LiveChatWidget/components/MessageContent/index.js +2 -0
  272. package/dist/esm/components/LiveChatWidget/components/MessageContent/index.js.map +7 -0
  273. package/dist/esm/components/LiveChatWidget/components/MessageContent.d.ts +63 -0
  274. package/dist/esm/components/LiveChatWidget/components/MessageContent.js +2 -0
  275. package/dist/esm/components/LiveChatWidget/components/MessageContent.js.map +7 -0
  276. package/dist/esm/components/LiveChatWidget/components/MessageList.d.ts +74 -0
  277. package/dist/esm/components/LiveChatWidget/components/MessageList.js +5 -0
  278. package/dist/esm/components/LiveChatWidget/components/MessageList.js.map +7 -0
  279. package/dist/esm/components/LiveChatWidget/components/ScrollAnchor.d.ts +44 -0
  280. package/dist/esm/components/LiveChatWidget/components/ScrollAnchor.js +2 -0
  281. package/dist/esm/components/LiveChatWidget/components/ScrollAnchor.js.map +7 -0
  282. package/dist/esm/components/LiveChatWidget/constants.d.ts +8 -0
  283. package/dist/esm/components/LiveChatWidget/constants.js +2 -0
  284. package/dist/esm/components/LiveChatWidget/constants.js.map +7 -0
  285. package/dist/esm/components/LiveChatWidget/hooks/useChatAPI.d.ts +51 -0
  286. package/dist/esm/components/LiveChatWidget/hooks/useChatAPI.js +2 -0
  287. package/dist/esm/components/LiveChatWidget/hooks/useChatAPI.js.map +7 -0
  288. package/dist/esm/components/LiveChatWidget/hooks/useChatState.d.ts +120 -0
  289. package/dist/esm/components/LiveChatWidget/hooks/useChatState.js +2 -0
  290. package/dist/esm/components/LiveChatWidget/hooks/useChatState.js.map +7 -0
  291. package/dist/esm/components/LiveChatWidget/hooks/useSession.d.ts +37 -0
  292. package/dist/esm/components/LiveChatWidget/hooks/useSession.js +2 -0
  293. package/dist/esm/components/LiveChatWidget/hooks/useSession.js.map +7 -0
  294. package/dist/esm/components/LiveChatWidget/index.d.ts +12 -0
  295. package/dist/esm/components/LiveChatWidget/index.js +2 -0
  296. package/dist/esm/components/LiveChatWidget/index.js.map +7 -0
  297. package/dist/esm/components/LiveChatWidget/types.d.ts +609 -0
  298. package/dist/esm/components/LiveChatWidget/types.js +1 -0
  299. package/dist/esm/components/LiveChatWidget/types.js.map +7 -0
  300. package/dist/esm/components/LiveChatWidget/utils/cartTransformers.d.ts +25 -0
  301. package/dist/esm/components/LiveChatWidget/utils/cartTransformers.js +2 -0
  302. package/dist/esm/components/LiveChatWidget/utils/cartTransformers.js.map +7 -0
  303. package/dist/esm/components/LiveChatWidget/utils/messageRenderers.d.ts +64 -0
  304. package/dist/esm/components/LiveChatWidget/utils/messageRenderers.js +2 -0
  305. package/dist/esm/components/LiveChatWidget/utils/messageRenderers.js.map +7 -0
  306. package/dist/esm/components/LiveChatWidget/utils/productTransformers.d.ts +43 -0
  307. package/dist/esm/components/LiveChatWidget/utils/productTransformers.js +2 -0
  308. package/dist/esm/components/LiveChatWidget/utils/productTransformers.js.map +7 -0
  309. package/dist/esm/components/LiveChatWidget/utils/userId.d.ts +18 -0
  310. package/dist/esm/components/LiveChatWidget/utils/userId.js +2 -0
  311. package/dist/esm/components/LiveChatWidget/utils/userId.js.map +7 -0
  312. package/dist/esm/components/LiveChatWidget/utils/validation.d.ts +37 -0
  313. package/dist/esm/components/LiveChatWidget/utils/validation.js +2 -0
  314. package/dist/esm/components/LiveChatWidget/utils/validation.js.map +7 -0
  315. package/dist/esm/components/chat/markdown.js +1 -1
  316. package/dist/esm/components/chat/markdown.js.map +2 -2
  317. package/dist/esm/components/credits/context/hooks/useFunctionMemberPrice.d.ts +2 -2
  318. package/dist/esm/components/credits/context/hooks/useFunctionMemberPrice.js +1 -1
  319. package/dist/esm/components/credits/context/hooks/useFunctionMemberPrice.js.map +2 -2
  320. package/dist/esm/components/credits/context/hooks/useRedeemableList.js +1 -1
  321. package/dist/esm/components/credits/context/hooks/useRedeemableList.js.map +2 -2
  322. package/dist/esm/components/credits/context/memberPriceConst.d.ts +0 -5
  323. package/dist/esm/components/credits/context/memberPriceConst.js +1 -1
  324. package/dist/esm/components/credits/context/memberPriceConst.js.map +3 -3
  325. package/dist/esm/components/credits/context/memberPriceTypes.d.ts +1 -22
  326. package/dist/esm/components/credits/context/provider.d.ts +16 -1
  327. package/dist/esm/components/credits/context/provider.js +1 -1
  328. package/dist/esm/components/credits/context/provider.js.map +3 -3
  329. package/dist/esm/components/credits/context/utils/getFunctionMemberPrice.d.ts +2 -2
  330. package/dist/esm/components/credits/context/utils/getFunctionMemberPrice.js +1 -1
  331. package/dist/esm/components/credits/context/utils/getFunctionMemberPrice.js.map +1 -1
  332. package/dist/esm/components/credits/context/utils/getFunctionMemberPriceDiscountConfig.d.ts +2 -2
  333. package/dist/esm/components/credits/context/utils/getFunctionMemberPriceDiscountConfig.js +1 -1
  334. package/dist/esm/components/credits/context/utils/getFunctionMemberPriceDiscountConfig.js.map +1 -1
  335. package/dist/esm/components/credits/context/utils/variantGetCoupon.d.ts +2 -2
  336. package/dist/esm/components/credits/context/utils/variantGetCoupon.js +1 -1
  337. package/dist/esm/components/credits/context/utils/variantGetCoupon.js.map +1 -1
  338. package/dist/esm/components/credits/context/utils.d.ts +4 -0
  339. package/dist/esm/components/credits/context/utils.js +1 -1
  340. package/dist/esm/components/credits/context/utils.js.map +3 -3
  341. package/dist/esm/components/credits/creditsAnkersolixTask/CreditsAnkersolixTask.js +1 -1
  342. package/dist/esm/components/credits/creditsAnkersolixTask/CreditsAnkersolixTask.js.map +3 -3
  343. package/dist/esm/components/credits/creditsBanner/index.d.ts +2 -0
  344. package/dist/esm/components/credits/creditsBanner/index.js +12 -1
  345. package/dist/esm/components/credits/creditsBanner/index.js.map +3 -3
  346. package/dist/esm/components/credits/creditsBenefits/BenefitItem.js +1 -1
  347. package/dist/esm/components/credits/creditsBenefits/BenefitItem.js.map +3 -3
  348. package/dist/esm/components/credits/creditsBenefits/IconInfo.js +1 -1
  349. package/dist/esm/components/credits/creditsBenefits/IconInfo.js.map +1 -1
  350. package/dist/esm/components/credits/creditsBenefits/index.js +3 -3
  351. package/dist/esm/components/credits/creditsBenefits/index.js.map +2 -2
  352. package/dist/esm/components/credits/creditsCash/CreditsCash.js +1 -1
  353. package/dist/esm/components/credits/creditsCash/CreditsCash.js.map +3 -3
  354. package/dist/esm/components/credits/creditsCash/RedeemableItem.js +1 -1
  355. package/dist/esm/components/credits/creditsCash/RedeemableItem.js.map +3 -3
  356. package/dist/esm/components/credits/creditsCash/type.d.ts +1 -0
  357. package/dist/esm/components/credits/creditsFaq/faqItem/FaqItem.js +1 -1
  358. package/dist/esm/components/credits/creditsFaq/faqItem/FaqItem.js.map +3 -3
  359. package/dist/esm/components/credits/creditsFaq/index.js +1 -1
  360. package/dist/esm/components/credits/creditsFaq/index.js.map +3 -3
  361. package/dist/esm/components/credits/creditsInfoCard/index.js +1 -1
  362. package/dist/esm/components/credits/creditsInfoCard/index.js.map +2 -2
  363. package/dist/esm/components/credits/creditsMemberPrice/CreditsMemberPrice.js +1 -1
  364. package/dist/esm/components/credits/creditsMemberPrice/CreditsMemberPrice.js.map +3 -3
  365. package/dist/esm/components/credits/creditsMemberPrice/MemberPriceItem.js +1 -1
  366. package/dist/esm/components/credits/creditsMemberPrice/MemberPriceItem.js.map +3 -3
  367. package/dist/esm/components/credits/creditsMemberPrice/Pagination.d.ts +7 -0
  368. package/dist/esm/components/credits/creditsMemberPrice/Pagination.js +2 -0
  369. package/dist/esm/components/credits/creditsMemberPrice/Pagination.js.map +7 -0
  370. package/dist/esm/components/credits/creditsMemberPrice/type.d.ts +3 -5
  371. package/dist/esm/components/credits/creditsNavigation/CreditsNavigation.js +1 -1
  372. package/dist/esm/components/credits/creditsNavigation/CreditsNavigation.js.map +2 -2
  373. package/dist/esm/components/credits/creditsRedeemList/AddressForm/CountrySelect.js +1 -1
  374. package/dist/esm/components/credits/creditsRedeemList/AddressForm/CountrySelect.js.map +2 -2
  375. package/dist/esm/components/credits/creditsRedeemList/AddressForm/StateSelect.js +1 -1
  376. package/dist/esm/components/credits/creditsRedeemList/AddressForm/StateSelect.js.map +2 -2
  377. package/dist/esm/components/credits/creditsRedeemList/AddressForm/index.js +1 -1
  378. package/dist/esm/components/credits/creditsRedeemList/AddressForm/index.js.map +2 -2
  379. package/dist/esm/components/credits/creditsRedeemList/CreditsRedeemList.js +1 -1
  380. package/dist/esm/components/credits/creditsRedeemList/CreditsRedeemList.js.map +3 -3
  381. package/dist/esm/components/credits/creditsRedeemList/RedeemProductModal/Address.js +1 -1
  382. package/dist/esm/components/credits/creditsRedeemList/RedeemProductModal/Address.js.map +3 -3
  383. package/dist/esm/components/credits/creditsRedeemList/RedeemProductModal/ProductInfo.js +1 -1
  384. package/dist/esm/components/credits/creditsRedeemList/RedeemProductModal/ProductInfo.js.map +2 -2
  385. package/dist/esm/components/credits/creditsRedeemList/RedeemProductModal/Success.js +1 -1
  386. package/dist/esm/components/credits/creditsRedeemList/RedeemProductModal/Success.js.map +2 -2
  387. package/dist/esm/components/credits/creditsRedeemList/RedeemableItem.js +1 -1
  388. package/dist/esm/components/credits/creditsRedeemList/RedeemableItem.js.map +3 -3
  389. package/dist/esm/components/credits/creditsWaysToGetCredits/CreditsWaysToGetCredits.js +1 -1
  390. package/dist/esm/components/credits/creditsWaysToGetCredits/CreditsWaysToGetCredits.js.map +3 -3
  391. package/dist/esm/components/credits/modal/MyRewardsModal.js +1 -1
  392. package/dist/esm/components/credits/modal/MyRewardsModal.js.map +2 -2
  393. package/dist/esm/components/credits/modal/activitiesModal.js +1 -1
  394. package/dist/esm/components/credits/modal/activitiesModal.js.map +3 -3
  395. package/dist/esm/components/credits/modal/creditsUploadReceiptModal.js +1 -1
  396. package/dist/esm/components/credits/modal/creditsUploadReceiptModal.js.map +3 -3
  397. package/dist/esm/components/credits/modal/modalContainer.js +1 -1
  398. package/dist/esm/components/credits/modal/modalContainer.js.map +3 -3
  399. package/dist/esm/components/credits/modal/subscribeModal.js +1 -1
  400. package/dist/esm/components/credits/modal/subscribeModal.js.map +3 -3
  401. package/dist/esm/components/credits/modal/tip.js +1 -1
  402. package/dist/esm/components/credits/modal/tip.js.map +3 -3
  403. package/dist/esm/components/index.d.ts +3 -1
  404. package/dist/esm/components/index.js +1 -1
  405. package/dist/esm/components/index.js.map +3 -3
  406. package/dist/esm/components/registration/authCodeActivate/index.js +1 -1
  407. package/dist/esm/components/registration/authCodeActivate/index.js.map +3 -3
  408. package/dist/esm/components/registration/modalContainer.js +1 -1
  409. package/dist/esm/components/registration/modalContainer.js.map +3 -3
  410. package/dist/esm/constants.d.ts +1 -0
  411. package/dist/esm/constants.js +2 -0
  412. package/dist/esm/constants.js.map +7 -0
  413. package/dist/esm/index.d.ts +3 -2
  414. package/dist/esm/index.js +1 -1
  415. package/dist/esm/index.js.map +2 -2
  416. package/dist/esm/stories/CartCard.stories.d.ts +33 -0
  417. package/dist/esm/stories/CartCard.stories.js +21 -0
  418. package/dist/esm/stories/CartCard.stories.js.map +7 -0
  419. package/dist/esm/stories/LiveChatWidget.stories.d.ts +92 -0
  420. package/dist/esm/stories/LiveChatWidget.stories.js +98 -0
  421. package/dist/esm/stories/LiveChatWidget.stories.js.map +7 -0
  422. package/dist/esm/templates/Credits.d.ts +15 -1
  423. package/dist/esm/templates/Credits.js +1 -1
  424. package/dist/esm/templates/Credits.js.map +3 -3
  425. package/package.json +7 -3
  426. package/src/components/LiveChatWidget/LiveChatWidget.tsx +599 -0
  427. package/src/components/LiveChatWidget/api/chat.ts +136 -0
  428. package/src/components/LiveChatWidget/components/ChatBubble.tsx +152 -0
  429. package/src/components/LiveChatWidget/components/ChatHeader.tsx +151 -0
  430. package/src/components/LiveChatWidget/components/ChatInput.tsx +216 -0
  431. package/src/components/LiveChatWidget/components/ChatMessage.tsx +182 -0
  432. package/src/components/LiveChatWidget/components/ChatWindow.tsx +304 -0
  433. package/src/components/LiveChatWidget/components/MessageContent/CartCard.tsx +198 -0
  434. package/src/components/LiveChatWidget/components/MessageContent/ErrorBlock.tsx +75 -0
  435. package/src/components/LiveChatWidget/components/MessageContent/FAQList.tsx +127 -0
  436. package/src/components/LiveChatWidget/components/MessageContent/PolicyBlock.tsx +150 -0
  437. package/src/components/LiveChatWidget/components/MessageContent/ProductCard.tsx +139 -0
  438. package/src/components/LiveChatWidget/components/MessageContent/ProductComparison.tsx +348 -0
  439. package/src/components/LiveChatWidget/components/MessageContent/ProductList.tsx +275 -0
  440. package/src/components/LiveChatWidget/components/MessageContent/PromotionList.tsx +207 -0
  441. package/src/components/LiveChatWidget/components/MessageContent/QuickReplies.tsx +91 -0
  442. package/src/components/LiveChatWidget/components/MessageContent/TextBlock.tsx +89 -0
  443. package/src/components/LiveChatWidget/components/MessageContent/ThinkingBlock.tsx +53 -0
  444. package/src/components/LiveChatWidget/components/MessageContent/index.ts +16 -0
  445. package/src/components/LiveChatWidget/components/MessageContent.tsx +110 -0
  446. package/src/components/LiveChatWidget/components/MessageList.tsx +261 -0
  447. package/src/components/LiveChatWidget/components/ScrollAnchor.tsx +75 -0
  448. package/src/components/LiveChatWidget/constants.ts +15 -0
  449. package/src/components/LiveChatWidget/hooks/useChatAPI.ts +136 -0
  450. package/src/components/LiveChatWidget/hooks/useChatState.ts +542 -0
  451. package/src/components/LiveChatWidget/hooks/useSession.ts +123 -0
  452. package/src/components/LiveChatWidget/index.tsx +62 -0
  453. package/src/components/LiveChatWidget/types.ts +769 -0
  454. package/src/components/LiveChatWidget/utils/cartTransformers.ts +72 -0
  455. package/src/components/LiveChatWidget/utils/messageRenderers.ts +120 -0
  456. package/src/components/LiveChatWidget/utils/productTransformers.ts +149 -0
  457. package/src/components/LiveChatWidget/utils/userId.ts +140 -0
  458. package/src/components/LiveChatWidget/utils/validation.ts +99 -0
  459. package/src/components/chat/markdown.tsx +1 -1
  460. package/src/components/credits/context/hooks/useRedeemableList.ts +1 -1
  461. package/src/components/credits/context/memberPriceConst.ts +0 -7
  462. package/src/components/credits/context/memberPriceTypes.ts +1 -26
  463. package/src/components/credits/context/provider.tsx +16 -0
  464. package/src/components/credits/context/utils.ts +9 -0
  465. package/src/components/credits/creditsAnkersolixTask/CreditsAnkersolixTask.tsx +44 -41
  466. package/src/components/credits/creditsBanner/index.tsx +31 -3
  467. package/src/components/credits/creditsBenefits/BenefitItem.tsx +13 -5
  468. package/src/components/credits/creditsBenefits/IconInfo.tsx +1 -1
  469. package/src/components/credits/creditsBenefits/index.tsx +1 -1
  470. package/src/components/credits/creditsCash/CreditsCash.tsx +6 -3
  471. package/src/components/credits/creditsCash/RedeemableItem.tsx +29 -11
  472. package/src/components/credits/creditsCash/type.ts +1 -0
  473. package/src/components/credits/creditsFaq/faqItem/FaqItem.tsx +25 -23
  474. package/src/components/credits/creditsFaq/index.tsx +2 -1
  475. package/src/components/credits/creditsInfoCard/index.tsx +10 -3
  476. package/src/components/credits/creditsMemberPrice/CreditsMemberPrice.tsx +160 -136
  477. package/src/components/credits/creditsMemberPrice/MemberPriceItem.tsx +134 -29
  478. package/src/components/credits/creditsMemberPrice/Pagination.tsx +113 -0
  479. package/src/components/credits/creditsMemberPrice/type.ts +3 -5
  480. package/src/components/credits/creditsNavigation/CreditsNavigation.tsx +3 -3
  481. package/src/components/credits/creditsRedeemList/AddressForm/CountrySelect.tsx +2 -1
  482. package/src/components/credits/creditsRedeemList/AddressForm/StateSelect.tsx +2 -1
  483. package/src/components/credits/creditsRedeemList/AddressForm/index.tsx +2 -1
  484. package/src/components/credits/creditsRedeemList/CreditsRedeemList.tsx +32 -18
  485. package/src/components/credits/creditsRedeemList/RedeemProductModal/Address.tsx +2 -1
  486. package/src/components/credits/creditsRedeemList/RedeemProductModal/ProductInfo.tsx +6 -4
  487. package/src/components/credits/creditsRedeemList/RedeemProductModal/Success.tsx +2 -1
  488. package/src/components/credits/creditsRedeemList/RedeemableItem.tsx +21 -7
  489. package/src/components/credits/creditsWaysToGetCredits/CreditsWaysToGetCredits.tsx +34 -20
  490. package/src/components/credits/modal/MyRewardsModal.tsx +2 -1
  491. package/src/components/credits/modal/activitiesModal.tsx +2 -1
  492. package/src/components/credits/modal/creditsUploadReceiptModal.tsx +2 -1
  493. package/src/components/credits/modal/modalContainer.tsx +2 -1
  494. package/src/components/credits/modal/subscribeModal.tsx +2 -1
  495. package/src/components/credits/modal/tip.tsx +2 -1
  496. package/src/components/index.ts +23 -1
  497. package/src/components/registration/authCodeActivate/index.tsx +3 -1
  498. package/src/components/registration/modalContainer.tsx +2 -1
  499. package/src/constants.ts +1 -0
  500. package/src/index.ts +3 -2
  501. package/src/stories/CartCard.stories.tsx +459 -0
  502. package/src/stories/LiveChatWidget.stories.tsx +461 -0
  503. package/src/styles/livechat.css +263 -0
  504. package/src/templates/Credits.tsx +26 -9
  505. package/src/components/credits/context/hooks/useFunctionMemberPrice.ts +0 -33
  506. package/src/components/credits/context/utils/atobID.ts +0 -8
  507. package/src/components/credits/context/utils/functionDiscountCalculate.ts +0 -57
  508. package/src/components/credits/context/utils/getFunctionMemberPrice.ts +0 -135
  509. package/src/components/credits/context/utils/getFunctionMemberPriceDiscountConfig.ts +0 -51
  510. package/src/components/credits/context/utils/variantGetCoupon.ts +0 -34
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../../src/components/LiveChatWidget/utils/cartTransformers.ts"],
4
+ "sourcesContent": ["/**\n * \u8D2D\u7269\u8F66\u6570\u636E\u8F6C\u6362\u5DE5\u5177\n * \u5C06\u540E\u7AEF\u8FD4\u56DE\u7684 Shopify GraphQL \u683C\u5F0F\u8F6C\u6362\u4E3A\u524D\u7AEF\u6807\u51C6\u683C\u5F0F\n */\n\nimport type { BackendCartData, CartData, CartLine } from '../types'\n\n/**\n * \u8F6C\u6362\u540E\u7AEF\u8D2D\u7269\u8F66\u6570\u636E\u4E3A\u524D\u7AEF\u683C\u5F0F\n *\n * @param backendData \u540E\u7AEF\u8FD4\u56DE\u7684 Shopify GraphQL \u683C\u5F0F\u6570\u636E\n * @returns \u524D\u7AEF\u6807\u51C6\u5316\u7684\u8D2D\u7269\u8F66\u6570\u636E\n *\n * @example\n * ```typescript\n * const backendData = {\n * id: \"gid://shopify/Cart/xxx\",\n * lines: { edges: [{ node: {...} }] },\n * cost: { totalAmount: {...}, subtotalAmount: {...} },\n * ...\n * }\n *\n * const cartData = transformCartData(backendData)\n * // => { cartId: \"gid://shopify/Cart/xxx\", lines: [...], ... }\n * ```\n */\nexport function transformCartData(backendData: BackendCartData): CartData {\n // \u8F6C\u6362\u5546\u54C1\u884C\u6570\u636E\uFF1A\u4ECE edges[].node \u7ED3\u6784\u8F6C\u4E3A\u6241\u5E73\u6570\u7EC4\n const lines: CartLine[] = backendData.lines.edges.map(edge => ({\n id: edge.node.id,\n quantity: edge.node.quantity,\n cost: {\n totalAmount: edge.node.cost.totalAmount,\n amountPerQuantity: edge.node.cost.amountPerQuantity,\n subtotalAmount: edge.node.cost.subtotalAmount,\n },\n merchandise: {\n id: edge.node.merchandise.id,\n title: edge.node.merchandise.title,\n price: edge.node.merchandise.price,\n image: edge.node.merchandise.image\n ? {\n url: edge.node.merchandise.image.url,\n altText: edge.node.merchandise.image.altText || undefined,\n }\n : undefined,\n product: {\n id: edge.node.merchandise.product.id,\n title: edge.node.merchandise.product.title,\n handle: edge.node.merchandise.product.handle,\n },\n },\n attributes: edge.node.attributes,\n }))\n\n // \u8FD4\u56DE\u6807\u51C6\u5316\u7684\u8D2D\u7269\u8F66\u6570\u636E\n return {\n isEmpty: backendData.totalQuantity === 0 || lines.length === 0,\n cartId: backendData.id,\n totalQuantity: backendData.totalQuantity,\n lines,\n cost: {\n totalAmount: backendData.cost.totalAmount,\n subtotalAmount: backendData.cost.subtotalAmount,\n },\n discountCodes: backendData.discountCodes?.map((code: any) => ({\n code: code.code || code,\n applicable: code.applicable !== false,\n })),\n checkoutUrl: backendData.checkoutUrl,\n }\n}\n"],
5
+ "mappings": "yaAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,uBAAAE,IAAA,eAAAC,EAAAH,GA0BO,SAASE,EAAkBE,EAAwC,CAExE,MAAMC,EAAoBD,EAAY,MAAM,MAAM,IAAIE,IAAS,CAC7D,GAAIA,EAAK,KAAK,GACd,SAAUA,EAAK,KAAK,SACpB,KAAM,CACJ,YAAaA,EAAK,KAAK,KAAK,YAC5B,kBAAmBA,EAAK,KAAK,KAAK,kBAClC,eAAgBA,EAAK,KAAK,KAAK,cACjC,EACA,YAAa,CACX,GAAIA,EAAK,KAAK,YAAY,GAC1B,MAAOA,EAAK,KAAK,YAAY,MAC7B,MAAOA,EAAK,KAAK,YAAY,MAC7B,MAAOA,EAAK,KAAK,YAAY,MACzB,CACE,IAAKA,EAAK,KAAK,YAAY,MAAM,IACjC,QAASA,EAAK,KAAK,YAAY,MAAM,SAAW,MAClD,EACA,OACJ,QAAS,CACP,GAAIA,EAAK,KAAK,YAAY,QAAQ,GAClC,MAAOA,EAAK,KAAK,YAAY,QAAQ,MACrC,OAAQA,EAAK,KAAK,YAAY,QAAQ,MACxC,CACF,EACA,WAAYA,EAAK,KAAK,UACxB,EAAE,EAGF,MAAO,CACL,QAASF,EAAY,gBAAkB,GAAKC,EAAM,SAAW,EAC7D,OAAQD,EAAY,GACpB,cAAeA,EAAY,cAC3B,MAAAC,EACA,KAAM,CACJ,YAAaD,EAAY,KAAK,YAC9B,eAAgBA,EAAY,KAAK,cACnC,EACA,cAAeA,EAAY,eAAe,IAAKG,IAAe,CAC5D,KAAMA,EAAK,MAAQA,EACnB,WAAYA,EAAK,aAAe,EAClC,EAAE,EACF,YAAaH,EAAY,WAC3B,CACF",
6
+ "names": ["cartTransformers_exports", "__export", "transformCartData", "__toCommonJS", "backendData", "lines", "edge", "code"]
7
+ }
@@ -0,0 +1,64 @@
1
+ /**
2
+ * 消息渲染器注册表
3
+ * 支持自定义消息类型的扩展机制
4
+ * 基于 specs/livechat-widget/plan.md 的扩展机制设计
5
+ */
6
+ import type { MessageContent, MessageRenderer } from '../types';
7
+ /**
8
+ * 消息渲染器注册表
9
+ * 允许注册自定义的消息类型渲染器
10
+ */
11
+ export declare class MessageRendererRegistry {
12
+ private renderers;
13
+ /**
14
+ * 注册自定义渲染器
15
+ * @param type 消息内容类型
16
+ * @param renderer 渲染器实现
17
+ */
18
+ register(type: string, renderer: MessageRenderer): void;
19
+ /**
20
+ * 批量注册渲染器
21
+ * @param renderers 渲染器映射表
22
+ */
23
+ registerMany(renderers: Record<string, MessageRenderer>): void;
24
+ /**
25
+ * 获取指定类型的渲染器
26
+ * @param type 消息内容类型
27
+ * @returns 渲染器实现,如果未注册则返回 undefined
28
+ */
29
+ get(type: string): MessageRenderer | undefined;
30
+ /**
31
+ * 检查是否已注册指定类型的渲染器
32
+ * @param type 消息内容类型
33
+ * @returns 是否已注册
34
+ */
35
+ has(type: string): boolean;
36
+ /**
37
+ * 移除指定类型的渲染器
38
+ * @param type 消息内容类型
39
+ * @returns 是否成功移除
40
+ */
41
+ unregister(type: string): boolean;
42
+ /**
43
+ * 清空所有已注册的渲染器
44
+ */
45
+ clear(): void;
46
+ /**
47
+ * 渲染消息内容
48
+ * @param content 消息内容
49
+ * @param isUser 是否为用户消息
50
+ * @param isSystem 是否为系统消息
51
+ * @returns 渲染结果,如果未找到对应渲染器则返回 null
52
+ */
53
+ render(content: MessageContent, isUser: boolean, isSystem: boolean): React.ReactNode;
54
+ /**
55
+ * 获取所有已注册的消息类型
56
+ * @returns 消息类型数组
57
+ */
58
+ getRegisteredTypes(): string[];
59
+ }
60
+ /**
61
+ * 创建默认的渲染器注册表实例
62
+ * @returns 新的注册表实例
63
+ */
64
+ export declare function createRendererRegistry(): MessageRendererRegistry;
@@ -0,0 +1,2 @@
1
+ "use strict";var i=Object.defineProperty;var a=Object.getOwnPropertyDescriptor;var R=Object.getOwnPropertyNames;var u=Object.prototype.hasOwnProperty;var y=(s,e,r)=>e in s?i(s,e,{enumerable:!0,configurable:!0,writable:!0,value:r}):s[e]=r;var h=(s,e)=>{for(var r in e)i(s,r,{get:e[r],enumerable:!0})},f=(s,e,r,t)=>{if(e&&typeof e=="object"||typeof e=="function")for(let n of R(e))!u.call(s,n)&&n!==r&&i(s,n,{get:()=>e[n],enumerable:!(t=a(e,n))||t.enumerable});return s};var c=s=>f(i({},"__esModule",{value:!0}),s);var o=(s,e,r)=>(y(s,typeof e!="symbol"?e+"":e,r),r);var p={};h(p,{MessageRendererRegistry:()=>d,createRendererRegistry:()=>l});module.exports=c(p);class d{constructor(){o(this,"renderers",new Map)}register(e,r){if(!e||typeof e!="string")throw new Error("Message type must be a non-empty string");if(!r)throw new Error("Renderer is required");if(!("render"in r)||typeof r.render!="function")throw new Error("Renderer must have a render function");this.renderers.set(e,r)}registerMany(e){Object.entries(e).forEach(([r,t])=>{this.register(r,t)})}get(e){return this.renderers.get(e)}has(e){return this.renderers.has(e)}unregister(e){return this.renderers.delete(e)}clear(){this.renderers.clear()}render(e,r,t){const n=this.renderers.get(e.type);if(!n)return console.warn(`[MessageRendererRegistry] No renderer found for type: ${e.type}`),null;try{return n.render(e,r,t)}catch(g){return console.error(`[MessageRendererRegistry] Error rendering ${e.type}:`,g),null}}getRegisteredTypes(){return Array.from(this.renderers.keys())}}function l(){return new d}
2
+ //# sourceMappingURL=messageRenderers.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../../src/components/LiveChatWidget/utils/messageRenderers.ts"],
4
+ "sourcesContent": ["/**\n * \u6D88\u606F\u6E32\u67D3\u5668\u6CE8\u518C\u8868\n * \u652F\u6301\u81EA\u5B9A\u4E49\u6D88\u606F\u7C7B\u578B\u7684\u6269\u5C55\u673A\u5236\n * \u57FA\u4E8E specs/livechat-widget/plan.md \u7684\u6269\u5C55\u673A\u5236\u8BBE\u8BA1\n */\n\nimport type { MessageContent, MessageRenderer } from '../types'\n\n/**\n * \u6D88\u606F\u6E32\u67D3\u5668\u6CE8\u518C\u8868\n * \u5141\u8BB8\u6CE8\u518C\u81EA\u5B9A\u4E49\u7684\u6D88\u606F\u7C7B\u578B\u6E32\u67D3\u5668\n */\nexport class MessageRendererRegistry {\n private renderers = new Map<string, MessageRenderer>()\n\n /**\n * \u6CE8\u518C\u81EA\u5B9A\u4E49\u6E32\u67D3\u5668\n * @param type \u6D88\u606F\u5185\u5BB9\u7C7B\u578B\n * @param renderer \u6E32\u67D3\u5668\u5B9E\u73B0\n */\n register(type: string, renderer: MessageRenderer): void {\n if (!type || typeof type !== 'string') {\n throw new Error('Message type must be a non-empty string')\n }\n\n if (!renderer) {\n throw new Error('Renderer is required')\n }\n\n // \u68C0\u67E5 renderer \u662F\u5426\u6709 render \u5C5E\u6027\n if (!('render' in renderer) || typeof renderer.render !== 'function') {\n throw new Error('Renderer must have a render function')\n }\n\n this.renderers.set(type, renderer)\n }\n\n /**\n * \u6279\u91CF\u6CE8\u518C\u6E32\u67D3\u5668\n * @param renderers \u6E32\u67D3\u5668\u6620\u5C04\u8868\n */\n registerMany(renderers: Record<string, MessageRenderer>): void {\n Object.entries(renderers).forEach(([type, renderer]) => {\n this.register(type, renderer)\n })\n }\n\n /**\n * \u83B7\u53D6\u6307\u5B9A\u7C7B\u578B\u7684\u6E32\u67D3\u5668\n * @param type \u6D88\u606F\u5185\u5BB9\u7C7B\u578B\n * @returns \u6E32\u67D3\u5668\u5B9E\u73B0\uFF0C\u5982\u679C\u672A\u6CE8\u518C\u5219\u8FD4\u56DE undefined\n */\n get(type: string): MessageRenderer | undefined {\n return this.renderers.get(type)\n }\n\n /**\n * \u68C0\u67E5\u662F\u5426\u5DF2\u6CE8\u518C\u6307\u5B9A\u7C7B\u578B\u7684\u6E32\u67D3\u5668\n * @param type \u6D88\u606F\u5185\u5BB9\u7C7B\u578B\n * @returns \u662F\u5426\u5DF2\u6CE8\u518C\n */\n has(type: string): boolean {\n return this.renderers.has(type)\n }\n\n /**\n * \u79FB\u9664\u6307\u5B9A\u7C7B\u578B\u7684\u6E32\u67D3\u5668\n * @param type \u6D88\u606F\u5185\u5BB9\u7C7B\u578B\n * @returns \u662F\u5426\u6210\u529F\u79FB\u9664\n */\n unregister(type: string): boolean {\n return this.renderers.delete(type)\n }\n\n /**\n * \u6E05\u7A7A\u6240\u6709\u5DF2\u6CE8\u518C\u7684\u6E32\u67D3\u5668\n */\n clear(): void {\n this.renderers.clear()\n }\n\n /**\n * \u6E32\u67D3\u6D88\u606F\u5185\u5BB9\n * @param content \u6D88\u606F\u5185\u5BB9\n * @param isUser \u662F\u5426\u4E3A\u7528\u6237\u6D88\u606F\n * @param isSystem \u662F\u5426\u4E3A\u7CFB\u7EDF\u6D88\u606F\n * @returns \u6E32\u67D3\u7ED3\u679C\uFF0C\u5982\u679C\u672A\u627E\u5230\u5BF9\u5E94\u6E32\u67D3\u5668\u5219\u8FD4\u56DE null\n */\n render(content: MessageContent, isUser: boolean, isSystem: boolean): React.ReactNode {\n const renderer = this.renderers.get(content.type)\n\n if (!renderer) {\n console.warn(`[MessageRendererRegistry] No renderer found for type: ${content.type}`)\n return null\n }\n\n try {\n return renderer.render(content, isUser, isSystem)\n } catch (error) {\n console.error(`[MessageRendererRegistry] Error rendering ${content.type}:`, error)\n return null\n }\n }\n\n /**\n * \u83B7\u53D6\u6240\u6709\u5DF2\u6CE8\u518C\u7684\u6D88\u606F\u7C7B\u578B\n * @returns \u6D88\u606F\u7C7B\u578B\u6570\u7EC4\n */\n getRegisteredTypes(): string[] {\n return Array.from(this.renderers.keys())\n }\n}\n\n/**\n * \u521B\u5EFA\u9ED8\u8BA4\u7684\u6E32\u67D3\u5668\u6CE8\u518C\u8868\u5B9E\u4F8B\n * @returns \u65B0\u7684\u6CE8\u518C\u8868\u5B9E\u4F8B\n */\nexport function createRendererRegistry(): MessageRendererRegistry {\n return new MessageRendererRegistry()\n}\n"],
5
+ "mappings": "qjBAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,6BAAAE,EAAA,2BAAAC,IAAA,eAAAC,EAAAJ,GAYO,MAAMK,CAAwB,CAA9B,cACLC,EAAA,KAAQ,YAAY,IAAI,KAOxB,SAASC,EAAcC,EAAiC,CACtD,GAAI,CAACD,GAAQ,OAAOA,GAAS,SAC3B,MAAM,IAAI,MAAM,yCAAyC,EAG3D,GAAI,CAACC,EACH,MAAM,IAAI,MAAM,sBAAsB,EAIxC,GAAI,EAAE,WAAYA,IAAa,OAAOA,EAAS,QAAW,WACxD,MAAM,IAAI,MAAM,sCAAsC,EAGxD,KAAK,UAAU,IAAID,EAAMC,CAAQ,CACnC,CAMA,aAAaC,EAAkD,CAC7D,OAAO,QAAQA,CAAS,EAAE,QAAQ,CAAC,CAACF,EAAMC,CAAQ,IAAM,CACtD,KAAK,SAASD,EAAMC,CAAQ,CAC9B,CAAC,CACH,CAOA,IAAID,EAA2C,CAC7C,OAAO,KAAK,UAAU,IAAIA,CAAI,CAChC,CAOA,IAAIA,EAAuB,CACzB,OAAO,KAAK,UAAU,IAAIA,CAAI,CAChC,CAOA,WAAWA,EAAuB,CAChC,OAAO,KAAK,UAAU,OAAOA,CAAI,CACnC,CAKA,OAAc,CACZ,KAAK,UAAU,MAAM,CACvB,CASA,OAAOG,EAAyBC,EAAiBC,EAAoC,CACnF,MAAMJ,EAAW,KAAK,UAAU,IAAIE,EAAQ,IAAI,EAEhD,GAAI,CAACF,EACH,eAAQ,KAAK,yDAAyDE,EAAQ,IAAI,EAAE,EAC7E,KAGT,GAAI,CACF,OAAOF,EAAS,OAAOE,EAASC,EAAQC,CAAQ,CAClD,OAASC,EAAO,CACd,eAAQ,MAAM,6CAA6CH,EAAQ,IAAI,IAAKG,CAAK,EAC1E,IACT,CACF,CAMA,oBAA+B,CAC7B,OAAO,MAAM,KAAK,KAAK,UAAU,KAAK,CAAC,CACzC,CACF,CAMO,SAASC,GAAkD,CAChE,OAAO,IAAIT,CACb",
6
+ "names": ["messageRenderers_exports", "__export", "MessageRendererRegistry", "createRendererRegistry", "__toCommonJS", "MessageRendererRegistry", "__publicField", "type", "renderer", "renderers", "content", "isUser", "isSystem", "error", "createRendererRegistry"]
7
+ }
@@ -0,0 +1,43 @@
1
+ /**
2
+ * 产品数据转换工具函数
3
+ * 将后端返回的产品数据转换为前端使用的格式
4
+ */
5
+ import type { Product } from '../types';
6
+ /**
7
+ * 转换产品数据
8
+ * 将后端返回的产品对象转换为前端使用的 Product 类型
9
+ *
10
+ * @param product - 后端返回的产品数据
11
+ * @param site - 站点域名,用于构建产品 URL(可选,默认为空字符串)
12
+ * @returns 转换后的 Product 对象
13
+ *
14
+ * @example
15
+ * ```ts
16
+ * const backendProduct = {
17
+ * shopify_product_id: "gid://shopify/Product/123",
18
+ * handle: "product-handle",
19
+ * title: "Product Title",
20
+ * price_range: { min: 99.99, max: 149.99, currency: "USD" },
21
+ * // ... 其他字段
22
+ * }
23
+ *
24
+ * const product = transformProduct(backendProduct, "www.example.com")
25
+ * // product.shopifyId === "gid://shopify/Product/123"
26
+ * // product.productUrl === "https://www.example.com/products/product-handle"
27
+ * ```
28
+ */
29
+ export declare function transformProduct(product: any, site?: string): Product;
30
+ /**
31
+ * 批量转换产品列表
32
+ *
33
+ * @param products - 后端返回的产品数组
34
+ * @param site - 站点域名(可选)
35
+ * @returns 转换后的 Product 数组
36
+ *
37
+ * @example
38
+ * ```ts
39
+ * const backendProducts = [product1, product2, product3]
40
+ * const products = transformProducts(backendProducts, "www.example.com")
41
+ * ```
42
+ */
43
+ export declare function transformProducts(products: any[], site?: string): Product[];
@@ -0,0 +1,2 @@
1
+ "use strict";var s=Object.defineProperty;var c=Object.getOwnPropertyDescriptor;var _=Object.getOwnPropertyNames;var o=Object.prototype.hasOwnProperty;var m=(e,n)=>{for(var i in n)s(e,i,{get:n[i],enumerable:!0})},u=(e,n,i,a)=>{if(n&&typeof n=="object"||typeof n=="function")for(let r of _(n))!o.call(e,r)&&r!==i&&s(e,r,{get:()=>n[r],enumerable:!(a=c(n,r))||a.enumerable});return e};var l=e=>u(s({},"__esModule",{value:!0}),e);var d={};m(d,{transformProduct:()=>t,transformProducts:()=>y});module.exports=l(d);function f(e){return{id:e.shopify_variant_id||e.id,title:e.title||e.option1,sku:e.sku,price:e.price?{amount:e.price,currency:e.currency||"USD"}:void 0,availableForSale:e.available,discount:e.discount?{has_discount:e.discount.has_discount,discount_price:e.discount.discount_price,discount_code:e.discount.discount_code,discount_percentage:e.discount.discount_percentage,discount_type:e.discount.discount_type,discount_value:e.discount.discount_value}:void 0,memberPrice:e.member_price?{has_member_price:e.member_price.has_member_price,price:e.member_price.price}:void 0,inventoryQuantity:e.inventory_quantity,option1:e.option1,option2:e.option2,option3:e.option3}}function t(e,n=""){return{shopifyId:e.shopify_product_id||e.id,sku:e.variants?.[0]?.sku||"",handle:e.handle,title:e.title,description:e.description,vendor:e.vendor,price:{amount:e.price_range?.min||e.variants?.[0]?.price||0,currency:e.price_range?.currency||e.variants?.[0]?.currency||"USD"},priceRange:e.price_range?{min:e.price_range.min,max:e.price_range.max,currency:e.price_range.currency}:void 0,memberPriceRange:e.member_price_range?{min:e.member_price_range.min,max:e.member_price_range.max,currency:e.member_price_range.currency}:void 0,imageUrl:e.featured_image||"",productUrl:n?`https://${n}/products/${e.handle}`:`/products/${e.handle}`,stockStatus:e.variants?.[0]?.available?"in_stock":"out_of_stock",hotScore:e.popularity_score,averageRating:e.average_rating,reviewCount:e.review_count,variantCount:e.variant_count,availableCount:e.available_count,variants:e.variants?.map(f),features:e.features?{is_new:e.features.is_new,has_rental:e.features.has_rental,has_presale:e.features.has_presale,has_member_price:e.features.has_member_price,has_discount:e.features.has_discount}:void 0,tags:e.tags}}function y(e,n){return Array.isArray(e)?e.map(i=>t(i,n)):[]}
2
+ //# sourceMappingURL=productTransformers.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../../src/components/LiveChatWidget/utils/productTransformers.ts"],
4
+ "sourcesContent": ["/**\n * \u4EA7\u54C1\u6570\u636E\u8F6C\u6362\u5DE5\u5177\u51FD\u6570\n * \u5C06\u540E\u7AEF\u8FD4\u56DE\u7684\u4EA7\u54C1\u6570\u636E\u8F6C\u6362\u4E3A\u524D\u7AEF\u4F7F\u7528\u7684\u683C\u5F0F\n */\n\nimport type { Product, Variant } from '../types'\n\n/**\n * \u8F6C\u6362\u5355\u4E2A\u53D8\u4F53\u6570\u636E\n */\nfunction transformVariant(variant: any): Variant {\n return {\n id: variant.shopify_variant_id || variant.id,\n title: variant.title || variant.option1,\n sku: variant.sku,\n price: variant.price\n ? {\n amount: variant.price,\n currency: variant.currency || 'USD',\n }\n : undefined,\n availableForSale: variant.available,\n discount: variant.discount\n ? {\n has_discount: variant.discount.has_discount,\n discount_price: variant.discount.discount_price,\n discount_code: variant.discount.discount_code,\n discount_percentage: variant.discount.discount_percentage,\n discount_type: variant.discount.discount_type,\n discount_value: variant.discount.discount_value,\n }\n : undefined,\n memberPrice: variant.member_price\n ? {\n has_member_price: variant.member_price.has_member_price,\n price: variant.member_price.price,\n }\n : undefined,\n inventoryQuantity: variant.inventory_quantity,\n option1: variant.option1,\n option2: variant.option2,\n option3: variant.option3,\n }\n}\n\n/**\n * \u8F6C\u6362\u4EA7\u54C1\u6570\u636E\n * \u5C06\u540E\u7AEF\u8FD4\u56DE\u7684\u4EA7\u54C1\u5BF9\u8C61\u8F6C\u6362\u4E3A\u524D\u7AEF\u4F7F\u7528\u7684 Product \u7C7B\u578B\n *\n * @param product - \u540E\u7AEF\u8FD4\u56DE\u7684\u4EA7\u54C1\u6570\u636E\n * @param site - \u7AD9\u70B9\u57DF\u540D\uFF0C\u7528\u4E8E\u6784\u5EFA\u4EA7\u54C1 URL\uFF08\u53EF\u9009\uFF0C\u9ED8\u8BA4\u4E3A\u7A7A\u5B57\u7B26\u4E32\uFF09\n * @returns \u8F6C\u6362\u540E\u7684 Product \u5BF9\u8C61\n *\n * @example\n * ```ts\n * const backendProduct = {\n * shopify_product_id: \"gid://shopify/Product/123\",\n * handle: \"product-handle\",\n * title: \"Product Title\",\n * price_range: { min: 99.99, max: 149.99, currency: \"USD\" },\n * // ... \u5176\u4ED6\u5B57\u6BB5\n * }\n *\n * const product = transformProduct(backendProduct, \"www.example.com\")\n * // product.shopifyId === \"gid://shopify/Product/123\"\n * // product.productUrl === \"https://www.example.com/products/product-handle\"\n * ```\n */\nexport function transformProduct(product: any, site: string = ''): Product {\n return {\n // \u57FA\u672C\u4FE1\u606F\n shopifyId: product.shopify_product_id || product.id,\n sku: product.variants?.[0]?.sku || '',\n handle: product.handle,\n title: product.title,\n description: product.description,\n vendor: product.vendor,\n\n // \u4EF7\u683C\u4FE1\u606F\n price: {\n amount: product.price_range?.min || product.variants?.[0]?.price || 0,\n currency: product.price_range?.currency || product.variants?.[0]?.currency || 'USD',\n },\n priceRange: product.price_range\n ? {\n min: product.price_range.min,\n max: product.price_range.max,\n currency: product.price_range.currency,\n }\n : undefined,\n memberPriceRange: product.member_price_range\n ? {\n min: product.member_price_range.min,\n max: product.member_price_range.max,\n currency: product.member_price_range.currency,\n }\n : undefined,\n\n // \u5A92\u4F53\u548C\u94FE\u63A5\n imageUrl: product.featured_image || '',\n productUrl: site ? `https://${site}/products/${product.handle}` : `/products/${product.handle}`,\n\n // \u5E93\u5B58\u548C\u72B6\u6001\n stockStatus: product.variants?.[0]?.available ? 'in_stock' : 'out_of_stock',\n\n // \u8BC4\u5206\u548C\u70ED\u5EA6\n hotScore: product.popularity_score,\n averageRating: product.average_rating,\n reviewCount: product.review_count,\n\n // \u53D8\u4F53\u4FE1\u606F\n variantCount: product.variant_count,\n availableCount: product.available_count,\n variants: product.variants?.map(transformVariant),\n\n // \u7279\u6027\u548C\u6807\u7B7E\n features: product.features\n ? {\n is_new: product.features.is_new,\n has_rental: product.features.has_rental,\n has_presale: product.features.has_presale,\n has_member_price: product.features.has_member_price,\n has_discount: product.features.has_discount,\n }\n : undefined,\n tags: product.tags,\n }\n}\n\n/**\n * \u6279\u91CF\u8F6C\u6362\u4EA7\u54C1\u5217\u8868\n *\n * @param products - \u540E\u7AEF\u8FD4\u56DE\u7684\u4EA7\u54C1\u6570\u7EC4\n * @param site - \u7AD9\u70B9\u57DF\u540D\uFF08\u53EF\u9009\uFF09\n * @returns \u8F6C\u6362\u540E\u7684 Product \u6570\u7EC4\n *\n * @example\n * ```ts\n * const backendProducts = [product1, product2, product3]\n * const products = transformProducts(backendProducts, \"www.example.com\")\n * ```\n */\nexport function transformProducts(products: any[], site?: string): Product[] {\n if (!Array.isArray(products)) {\n return []\n }\n\n return products.map(product => transformProduct(product, site))\n}\n"],
5
+ "mappings": "yaAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,sBAAAE,EAAA,sBAAAC,IAAA,eAAAC,EAAAJ,GAUA,SAASK,EAAiBC,EAAuB,CAC/C,MAAO,CACL,GAAIA,EAAQ,oBAAsBA,EAAQ,GAC1C,MAAOA,EAAQ,OAASA,EAAQ,QAChC,IAAKA,EAAQ,IACb,MAAOA,EAAQ,MACX,CACE,OAAQA,EAAQ,MAChB,SAAUA,EAAQ,UAAY,KAChC,EACA,OACJ,iBAAkBA,EAAQ,UAC1B,SAAUA,EAAQ,SACd,CACE,aAAcA,EAAQ,SAAS,aAC/B,eAAgBA,EAAQ,SAAS,eACjC,cAAeA,EAAQ,SAAS,cAChC,oBAAqBA,EAAQ,SAAS,oBACtC,cAAeA,EAAQ,SAAS,cAChC,eAAgBA,EAAQ,SAAS,cACnC,EACA,OACJ,YAAaA,EAAQ,aACjB,CACE,iBAAkBA,EAAQ,aAAa,iBACvC,MAAOA,EAAQ,aAAa,KAC9B,EACA,OACJ,kBAAmBA,EAAQ,mBAC3B,QAASA,EAAQ,QACjB,QAASA,EAAQ,QACjB,QAASA,EAAQ,OACnB,CACF,CAyBO,SAASJ,EAAiBK,EAAcC,EAAe,GAAa,CACzE,MAAO,CAEL,UAAWD,EAAQ,oBAAsBA,EAAQ,GACjD,IAAKA,EAAQ,WAAW,CAAC,GAAG,KAAO,GACnC,OAAQA,EAAQ,OAChB,MAAOA,EAAQ,MACf,YAAaA,EAAQ,YACrB,OAAQA,EAAQ,OAGhB,MAAO,CACL,OAAQA,EAAQ,aAAa,KAAOA,EAAQ,WAAW,CAAC,GAAG,OAAS,EACpE,SAAUA,EAAQ,aAAa,UAAYA,EAAQ,WAAW,CAAC,GAAG,UAAY,KAChF,EACA,WAAYA,EAAQ,YAChB,CACE,IAAKA,EAAQ,YAAY,IACzB,IAAKA,EAAQ,YAAY,IACzB,SAAUA,EAAQ,YAAY,QAChC,EACA,OACJ,iBAAkBA,EAAQ,mBACtB,CACE,IAAKA,EAAQ,mBAAmB,IAChC,IAAKA,EAAQ,mBAAmB,IAChC,SAAUA,EAAQ,mBAAmB,QACvC,EACA,OAGJ,SAAUA,EAAQ,gBAAkB,GACpC,WAAYC,EAAO,WAAWA,CAAI,aAAaD,EAAQ,MAAM,GAAK,aAAaA,EAAQ,MAAM,GAG7F,YAAaA,EAAQ,WAAW,CAAC,GAAG,UAAY,WAAa,eAG7D,SAAUA,EAAQ,iBAClB,cAAeA,EAAQ,eACvB,YAAaA,EAAQ,aAGrB,aAAcA,EAAQ,cACtB,eAAgBA,EAAQ,gBACxB,SAAUA,EAAQ,UAAU,IAAIF,CAAgB,EAGhD,SAAUE,EAAQ,SACd,CACE,OAAQA,EAAQ,SAAS,OACzB,WAAYA,EAAQ,SAAS,WAC7B,YAAaA,EAAQ,SAAS,YAC9B,iBAAkBA,EAAQ,SAAS,iBACnC,aAAcA,EAAQ,SAAS,YACjC,EACA,OACJ,KAAMA,EAAQ,IAChB,CACF,CAeO,SAASJ,EAAkBM,EAAiBD,EAA0B,CAC3E,OAAK,MAAM,QAAQC,CAAQ,EAIpBA,EAAS,IAAIF,GAAWL,EAAiBK,EAASC,CAAI,CAAC,EAHrD,CAAC,CAIZ",
6
+ "names": ["productTransformers_exports", "__export", "transformProduct", "transformProducts", "__toCommonJS", "transformVariant", "variant", "product", "site", "products"]
7
+ }
@@ -0,0 +1,18 @@
1
+ /**
2
+ * userId 生成和管理工具
3
+ * 基于 specs/livechat-widget/research.md 的决策
4
+ *
5
+ * 策略:
6
+ * 1. 优先从 localStorage 读取
7
+ * 2. 尝试获取 Google Analytics ID (GAID)
8
+ * 3. 兜底:时间戳 + 随机数哈希
9
+ */
10
+ /**
11
+ * 获取用户唯一标识符(异步版本)
12
+ * @returns userId (GAID 或哈希值)
13
+ */
14
+ export declare function getUserId(): Promise<string>;
15
+ /**
16
+ * 清除保存的 userId(用于测试或重置)
17
+ */
18
+ export declare function clearUserId(): void;
@@ -0,0 +1,2 @@
1
+ "use strict";var s=Object.defineProperty;var l=Object.getOwnPropertyDescriptor;var f=Object.getOwnPropertyNames;var u=Object.prototype.hasOwnProperty;var g=(e,t)=>{for(var n in t)s(e,n,{get:t[n],enumerable:!0})},h=(e,t,n,r)=>{if(t&&typeof t=="object"||typeof t=="function")for(let o of f(t))!u.call(e,o)&&o!==n&&s(e,o,{get:()=>t[o],enumerable:!(r=l(t,o))||r.enumerable});return e};var w=e=>h(s({},"__esModule",{value:!0}),e);var A={};g(A,{clearUserId:()=>I,getUserId:()=>y});module.exports=w(A);const i="livechat_user_id";async function y(){if(typeof window<"u"){const t=localStorage.getItem(i);if(t)return t}const e=m();if(e)return typeof window<"u"&&localStorage.setItem(i,e),e;try{const t=await S();return typeof window<"u"&&localStorage.setItem(i,t),t}catch(t){console.warn("[LiveChat userId] SHA-256 failed, using sync fallback:",t);const n=p();return typeof window<"u"&&localStorage.setItem(i,n),n}}function m(){if(typeof window>"u")return null;if(typeof window.gtag!="function")return console.warn("[LiveChat userId] Google Analytics gtag is not available"),null;try{const e=window.dataLayer||[];for(const t of e)if(t&&t[1]&&typeof t[1]=="object"){const n=t[1].client_id||t[1].clientId;if(n&&typeof n=="string")return`G-${n}`}return null}catch(e){return console.error("[LiveChat userId] Failed to get GAID:",e),null}}async function S(){const e=Date.now(),t=Math.random().toString(36).substring(2,15),n=`${e}${t}`,o=new TextEncoder().encode(n),a=await crypto.subtle.digest("SHA-256",o);return`user-${Array.from(new Uint8Array(a)).map(d=>d.toString(16).padStart(2,"0")).join("").substring(0,16)}`}function p(){const e=Date.now(),t=Math.random().toString(36).substring(2,15),n=`${e}${t}`;let r=0;for(let a=0;a<n.length;a++){const c=n.charCodeAt(a);r=(r<<5)-r+c,r=r&r}return`user-${Math.abs(r).toString(16).padStart(8,"0")}`}function I(){typeof window<"u"&&localStorage.removeItem(i)}
2
+ //# sourceMappingURL=userId.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../../src/components/LiveChatWidget/utils/userId.ts"],
4
+ "sourcesContent": ["/**\n * userId \u751F\u6210\u548C\u7BA1\u7406\u5DE5\u5177\n * \u57FA\u4E8E specs/livechat-widget/research.md \u7684\u51B3\u7B56\n *\n * \u7B56\u7565\uFF1A\n * 1. \u4F18\u5148\u4ECE localStorage \u8BFB\u53D6\n * 2. \u5C1D\u8BD5\u83B7\u53D6 Google Analytics ID (GAID)\n * 3. \u515C\u5E95\uFF1A\u65F6\u95F4\u6233 + \u968F\u673A\u6570\u54C8\u5E0C\n */\n\nconst STORAGE_KEY = 'livechat_user_id'\n\n/**\n * \u83B7\u53D6\u7528\u6237\u552F\u4E00\u6807\u8BC6\u7B26\uFF08\u5F02\u6B65\u7248\u672C\uFF09\n * @returns userId (GAID \u6216\u54C8\u5E0C\u503C)\n */\nexport async function getUserId(): Promise<string> {\n // 1. \u5C1D\u8BD5\u4ECE localStorage \u8BFB\u53D6\n if (typeof window !== 'undefined') {\n const stored = localStorage.getItem(STORAGE_KEY)\n if (stored) return stored\n }\n\n // 2. \u5C1D\u8BD5\u83B7\u53D6 GAID\n const gaid = getGAID()\n if (gaid) {\n if (typeof window !== 'undefined') {\n localStorage.setItem(STORAGE_KEY, gaid)\n }\n return gaid\n }\n\n // 3. \u515C\u5E95\uFF1A\u4F7F\u7528 SHA-256 \u751F\u6210\u54C8\u5E0C\n try {\n const fallback = await generateHashedUserId()\n if (typeof window !== 'undefined') {\n localStorage.setItem(STORAGE_KEY, fallback)\n }\n return fallback\n } catch (error) {\n // \u5982\u679C SHA-256 \u5931\u8D25\uFF0C\u4F7F\u7528\u540C\u6B65\u515C\u5E95\u65B9\u6848\n console.warn('[LiveChat userId] SHA-256 failed, using sync fallback:', error)\n const fallback = generateHashedUserIdSync()\n if (typeof window !== 'undefined') {\n localStorage.setItem(STORAGE_KEY, fallback)\n }\n return fallback\n }\n}\n\n/**\n * \u4ECE Google Analytics \u83B7\u53D6 Client ID (GAID)\n * @returns GAID \u6216 null\n */\nfunction getGAID(): string | null {\n if (typeof window === 'undefined') return null\n\n // \u68C0\u67E5 gtag \u662F\u5426\u53EF\u7528\n if (typeof (window as any).gtag !== 'function') {\n console.warn('[LiveChat userId] Google Analytics gtag is not available')\n return null\n }\n\n try {\n // Google Analytics 4 \u65B9\u6CD5\n // \u6CE8\u610F\uFF1Agtag \u7684 'get' \u547D\u4EE4\u662F\u5F02\u6B65\u7684\uFF0C\u8FD9\u91CC\u4F7F\u7528\u540C\u6B65 fallback\n // \u5728\u5B9E\u9645\u9879\u76EE\u4E2D\uFF0C\u5982\u679C GA \u5DF2\u521D\u59CB\u5316\uFF0C\u53EF\u4EE5\u4ECE dataLayer \u8BFB\u53D6\n const dataLayer = (window as any).dataLayer || []\n\n // \u5C1D\u8BD5\u4ECE dataLayer \u4E2D\u67E5\u627E\u5DF2\u5B58\u5728\u7684 client_id\n for (const item of dataLayer) {\n if (item && item[1] && typeof item[1] === 'object') {\n const clientId = item[1].client_id || item[1].clientId\n if (clientId && typeof clientId === 'string') {\n return `G-${clientId}`\n }\n }\n }\n\n // \u5982\u679C\u6CA1\u6709\u627E\u5230\uFF0C\u8FD4\u56DE null\uFF0C\u4F7F\u7528\u515C\u5E95\u65B9\u6848\n return null\n } catch (error) {\n console.error('[LiveChat userId] Failed to get GAID:', error)\n return null\n }\n}\n\n/**\n * \u751F\u6210\u54C8\u5E0C\u7528\u6237 ID\uFF08\u515C\u5E95\u65B9\u6848\uFF09\n * @returns \u683C\u5F0F\u4E3A user-{hash} \u7684\u7528\u6237 ID\uFF0Chash \u7531 timestamp + random \u901A\u8FC7 SHA-256 \u751F\u6210\n */\nasync function generateHashedUserId(): Promise<string> {\n const timestamp = Date.now()\n const random = Math.random().toString(36).substring(2, 15) // \u751F\u6210\u968F\u673A\u5B57\u7B26\u4E32\n\n // \u5C06 timestamp \u548C random \u7EC4\u5408\u6210\u5B57\u7B26\u4E32\n const rawString = `${timestamp}${random}`\n\n // \u4F7F\u7528 Web Crypto API \u751F\u6210 SHA-256 \u54C8\u5E0C\n const encoder = new TextEncoder()\n const data = encoder.encode(rawString)\n const hashBuffer = await crypto.subtle.digest('SHA-256', data)\n\n // \u5C06 ArrayBuffer \u8F6C\u6362\u4E3A 16 \u8FDB\u5236\u5B57\u7B26\u4E32\n const hashArray = Array.from(new Uint8Array(hashBuffer))\n const hashHex = hashArray.map(b => b.toString(16).padStart(2, '0')).join('')\n\n // \u53D6\u524D 16 \u4F4D\u4F5C\u4E3A\u7528\u6237 ID\uFF08\u4FDD\u6301\u7B80\u6D01\uFF09\n return `user-${hashHex.substring(0, 16)}`\n}\n\n/**\n * \u540C\u6B65\u7248\u672C\u7684\u54C8\u5E0C\u7528\u6237 ID \u751F\u6210\uFF08\u515C\u5E95\u7684\u515C\u5E95\uFF09\n * \u5F53 Web Crypto API \u4E0D\u53EF\u7528\u65F6\u4F7F\u7528\n */\nfunction generateHashedUserIdSync(): string {\n const timestamp = Date.now()\n const random = Math.random().toString(36).substring(2, 15)\n const rawString = `${timestamp}${random}`\n\n // \u4F7F\u7528\u7B80\u5355\u7684\u54C8\u5E0C\u7B97\u6CD5\u4F5C\u4E3A\u515C\u5E95\n let hash = 0\n for (let i = 0; i < rawString.length; i++) {\n const char = rawString.charCodeAt(i)\n hash = (hash << 5) - hash + char\n hash = hash & hash\n }\n\n const hashString = Math.abs(hash).toString(16).padStart(8, '0')\n return `user-${hashString}`\n}\n\n/**\n * \u6E05\u9664\u4FDD\u5B58\u7684 userId\uFF08\u7528\u4E8E\u6D4B\u8BD5\u6216\u91CD\u7F6E\uFF09\n */\nexport function clearUserId(): void {\n if (typeof window !== 'undefined') {\n localStorage.removeItem(STORAGE_KEY)\n }\n}\n"],
5
+ "mappings": "yaAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,iBAAAE,EAAA,cAAAC,IAAA,eAAAC,EAAAJ,GAUA,MAAMK,EAAc,mBAMpB,eAAsBF,GAA6B,CAEjD,GAAI,OAAO,OAAW,IAAa,CACjC,MAAMG,EAAS,aAAa,QAAQD,CAAW,EAC/C,GAAIC,EAAQ,OAAOA,CACrB,CAGA,MAAMC,EAAOC,EAAQ,EACrB,GAAID,EACF,OAAI,OAAO,OAAW,KACpB,aAAa,QAAQF,EAAaE,CAAI,EAEjCA,EAIT,GAAI,CACF,MAAME,EAAW,MAAMC,EAAqB,EAC5C,OAAI,OAAO,OAAW,KACpB,aAAa,QAAQL,EAAaI,CAAQ,EAErCA,CACT,OAASE,EAAO,CAEd,QAAQ,KAAK,yDAA0DA,CAAK,EAC5E,MAAMF,EAAWG,EAAyB,EAC1C,OAAI,OAAO,OAAW,KACpB,aAAa,QAAQP,EAAaI,CAAQ,EAErCA,CACT,CACF,CAMA,SAASD,GAAyB,CAChC,GAAI,OAAO,OAAW,IAAa,OAAO,KAG1C,GAAI,OAAQ,OAAe,MAAS,WAClC,eAAQ,KAAK,0DAA0D,EAChE,KAGT,GAAI,CAIF,MAAMK,EAAa,OAAe,WAAa,CAAC,EAGhD,UAAWC,KAAQD,EACjB,GAAIC,GAAQA,EAAK,CAAC,GAAK,OAAOA,EAAK,CAAC,GAAM,SAAU,CAClD,MAAMC,EAAWD,EAAK,CAAC,EAAE,WAAaA,EAAK,CAAC,EAAE,SAC9C,GAAIC,GAAY,OAAOA,GAAa,SAClC,MAAO,KAAKA,CAAQ,EAExB,CAIF,OAAO,IACT,OAASJ,EAAO,CACd,eAAQ,MAAM,wCAAyCA,CAAK,EACrD,IACT,CACF,CAMA,eAAeD,GAAwC,CACrD,MAAMM,EAAY,KAAK,IAAI,EACrBC,EAAS,KAAK,OAAO,EAAE,SAAS,EAAE,EAAE,UAAU,EAAG,EAAE,EAGnDC,EAAY,GAAGF,CAAS,GAAGC,CAAM,GAIjCE,EADU,IAAI,YAAY,EACX,OAAOD,CAAS,EAC/BE,EAAa,MAAM,OAAO,OAAO,OAAO,UAAWD,CAAI,EAO7D,MAAO,QAJW,MAAM,KAAK,IAAI,WAAWC,CAAU,CAAC,EAC7B,IAAIC,GAAKA,EAAE,SAAS,EAAE,EAAE,SAAS,EAAG,GAAG,CAAC,EAAE,KAAK,EAAE,EAGpD,UAAU,EAAG,EAAE,CAAC,EACzC,CAMA,SAAST,GAAmC,CAC1C,MAAMI,EAAY,KAAK,IAAI,EACrBC,EAAS,KAAK,OAAO,EAAE,SAAS,EAAE,EAAE,UAAU,EAAG,EAAE,EACnDC,EAAY,GAAGF,CAAS,GAAGC,CAAM,GAGvC,IAAIK,EAAO,EACX,QAASC,EAAI,EAAGA,EAAIL,EAAU,OAAQK,IAAK,CACzC,MAAMC,EAAON,EAAU,WAAWK,CAAC,EACnCD,GAAQA,GAAQ,GAAKA,EAAOE,EAC5BF,EAAOA,EAAOA,CAChB,CAGA,MAAO,QADY,KAAK,IAAIA,CAAI,EAAE,SAAS,EAAE,EAAE,SAAS,EAAG,GAAG,CACrC,EAC3B,CAKO,SAASpB,GAAoB,CAC9B,OAAO,OAAW,KACpB,aAAa,WAAWG,CAAW,CAEvC",
6
+ "names": ["userId_exports", "__export", "clearUserId", "getUserId", "__toCommonJS", "STORAGE_KEY", "stored", "gaid", "getGAID", "fallback", "generateHashedUserId", "error", "generateHashedUserIdSync", "dataLayer", "item", "clientId", "timestamp", "random", "rawString", "data", "hashBuffer", "b", "hash", "i", "char"]
7
+ }
@@ -0,0 +1,37 @@
1
+ /**
2
+ * 输入验证工具
3
+ * 基于 specs/livechat-widget/research.md 的 XSS 防护策略
4
+ */
5
+ /**
6
+ * 清理用户输入
7
+ * - 移除控制字符
8
+ * - 限制长度
9
+ * @param input 用户输入的字符串
10
+ * @param maxLength 最大长度
11
+ * @returns 清理后的字符串
12
+ */
13
+ export declare function sanitizeInput(input: string, maxLength?: number): string;
14
+ /**
15
+ * 验证 URL 是否安全
16
+ * @param url URL 字符串
17
+ * @returns 是否为安全的 URL
18
+ */
19
+ export declare function isValidUrl(url: string): boolean;
20
+ /**
21
+ * 验证 sessionId 是否为有效的 UUID
22
+ * @param sessionId 会话 ID
23
+ * @returns 是否为有效的 UUID
24
+ */
25
+ export declare function isValidUUID(sessionId: string): boolean;
26
+ /**
27
+ * 验证消息内容是否有效
28
+ * @param content 消息内容
29
+ * @returns 是否有效
30
+ */
31
+ export declare function isValidMessageContent(content: string): boolean;
32
+ /**
33
+ * 转义 HTML 特殊字符
34
+ * @param text 原始文本
35
+ * @returns 转义后的文本
36
+ */
37
+ export declare function escapeHtml(text: string): string;
@@ -0,0 +1,2 @@
1
+ "use strict";var i=Object.defineProperty;var s=Object.getOwnPropertyDescriptor;var f=Object.getOwnPropertyNames;var a=Object.prototype.hasOwnProperty;var g=(t,r)=>{for(var e in r)i(t,e,{get:r[e],enumerable:!0})},u=(t,r,e,o)=>{if(r&&typeof r=="object"||typeof r=="function")for(let n of f(r))!a.call(t,n)&&n!==e&&i(t,n,{get:()=>r[n],enumerable:!(o=s(r,n))||o.enumerable});return t};var l=t=>u(i({},"__esModule",{value:!0}),t);var b={};g(b,{escapeHtml:()=>x,isValidMessageContent:()=>m,isValidUUID:()=>d,isValidUrl:()=>c,sanitizeInput:()=>p});module.exports=l(b);function p(t,r=5e3){if(!t||typeof t!="string")return"";let e=t.replace(/[\x00-\x1F\x7F]/g,"");return e.length>r&&(e=e.substring(0,r)),e.trim()}function c(t){if(!t||typeof t!="string")return!1;try{const r=new URL(t);return r.protocol==="http:"||r.protocol==="https:"}catch{return!1}}function d(t){return!t||typeof t!="string"?!1:/^[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i.test(t)}function m(t){if(!t||typeof t!="string")return!1;const r=t.trim();return r.length>0&&r.length<=5e3}function x(t){if(!t||typeof t!="string")return"";const r={"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;","'":"&#39;"};return t.replace(/[&<>"']/g,e=>r[e]||e)}
2
+ //# sourceMappingURL=validation.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../../src/components/LiveChatWidget/utils/validation.ts"],
4
+ "sourcesContent": ["/**\n * \u8F93\u5165\u9A8C\u8BC1\u5DE5\u5177\n * \u57FA\u4E8E specs/livechat-widget/research.md \u7684 XSS \u9632\u62A4\u7B56\u7565\n */\n\n/**\n * \u6E05\u7406\u7528\u6237\u8F93\u5165\n * - \u79FB\u9664\u63A7\u5236\u5B57\u7B26\n * - \u9650\u5236\u957F\u5EA6\n * @param input \u7528\u6237\u8F93\u5165\u7684\u5B57\u7B26\u4E32\n * @param maxLength \u6700\u5927\u957F\u5EA6\n * @returns \u6E05\u7406\u540E\u7684\u5B57\u7B26\u4E32\n */\nexport function sanitizeInput(input: string, maxLength: number = 5000): string {\n if (!input || typeof input !== 'string') {\n return ''\n }\n\n // \u79FB\u9664\u63A7\u5236\u5B57\u7B26\uFF08ASCII 0-31 \u548C 127\uFF09\n let sanitized = input.replace(/[\\x00-\\x1F\\x7F]/g, '')\n\n // \u9650\u5236\u957F\u5EA6\n if (sanitized.length > maxLength) {\n sanitized = sanitized.substring(0, maxLength)\n }\n\n // \u53BB\u9664\u9996\u5C3E\u7A7A\u767D\n return sanitized.trim()\n}\n\n/**\n * \u9A8C\u8BC1 URL \u662F\u5426\u5B89\u5168\n * @param url URL \u5B57\u7B26\u4E32\n * @returns \u662F\u5426\u4E3A\u5B89\u5168\u7684 URL\n */\nexport function isValidUrl(url: string): boolean {\n if (!url || typeof url !== 'string') {\n return false\n }\n\n try {\n const parsed = new URL(url)\n // \u53EA\u5141\u8BB8 http \u548C https \u534F\u8BAE\n return parsed.protocol === 'http:' || parsed.protocol === 'https:'\n } catch {\n return false\n }\n}\n\n/**\n * \u9A8C\u8BC1 sessionId \u662F\u5426\u4E3A\u6709\u6548\u7684 UUID\n * @param sessionId \u4F1A\u8BDD ID\n * @returns \u662F\u5426\u4E3A\u6709\u6548\u7684 UUID\n */\nexport function isValidUUID(sessionId: string): boolean {\n if (!sessionId || typeof sessionId !== 'string') {\n return false\n }\n\n // UUID v4 \u683C\u5F0F\uFF1Axxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx\n const uuidRegex = /^[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i\n return uuidRegex.test(sessionId)\n}\n\n/**\n * \u9A8C\u8BC1\u6D88\u606F\u5185\u5BB9\u662F\u5426\u6709\u6548\n * @param content \u6D88\u606F\u5185\u5BB9\n * @returns \u662F\u5426\u6709\u6548\n */\nexport function isValidMessageContent(content: string): boolean {\n if (!content || typeof content !== 'string') {\n return false\n }\n\n // \u53BB\u9664\u7A7A\u767D\u540E\u4E0D\u80FD\u4E3A\u7A7A\n const trimmed = content.trim()\n return trimmed.length > 0 && trimmed.length <= 5000\n}\n\n/**\n * \u8F6C\u4E49 HTML \u7279\u6B8A\u5B57\u7B26\n * @param text \u539F\u59CB\u6587\u672C\n * @returns \u8F6C\u4E49\u540E\u7684\u6587\u672C\n */\nexport function escapeHtml(text: string): string {\n if (!text || typeof text !== 'string') {\n return ''\n }\n\n const map: Record<string, string> = {\n '&': '&amp;',\n '<': '&lt;',\n '>': '&gt;',\n '\"': '&quot;',\n \"'\": '&#39;',\n }\n\n return text.replace(/[&<>\"']/g, char => map[char] || char)\n}\n"],
5
+ "mappings": "yaAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,gBAAAE,EAAA,0BAAAC,EAAA,gBAAAC,EAAA,eAAAC,EAAA,kBAAAC,IAAA,eAAAC,EAAAP,GAaO,SAASM,EAAcE,EAAeC,EAAoB,IAAc,CAC7E,GAAI,CAACD,GAAS,OAAOA,GAAU,SAC7B,MAAO,GAIT,IAAIE,EAAYF,EAAM,QAAQ,mBAAoB,EAAE,EAGpD,OAAIE,EAAU,OAASD,IACrBC,EAAYA,EAAU,UAAU,EAAGD,CAAS,GAIvCC,EAAU,KAAK,CACxB,CAOO,SAASL,EAAWM,EAAsB,CAC/C,GAAI,CAACA,GAAO,OAAOA,GAAQ,SACzB,MAAO,GAGT,GAAI,CACF,MAAMC,EAAS,IAAI,IAAID,CAAG,EAE1B,OAAOC,EAAO,WAAa,SAAWA,EAAO,WAAa,QAC5D,MAAQ,CACN,MAAO,EACT,CACF,CAOO,SAASR,EAAYS,EAA4B,CACtD,MAAI,CAACA,GAAa,OAAOA,GAAc,SAC9B,GAIS,yEACD,KAAKA,CAAS,CACjC,CAOO,SAASV,EAAsBW,EAA0B,CAC9D,GAAI,CAACA,GAAW,OAAOA,GAAY,SACjC,MAAO,GAIT,MAAMC,EAAUD,EAAQ,KAAK,EAC7B,OAAOC,EAAQ,OAAS,GAAKA,EAAQ,QAAU,GACjD,CAOO,SAASb,EAAWc,EAAsB,CAC/C,GAAI,CAACA,GAAQ,OAAOA,GAAS,SAC3B,MAAO,GAGT,MAAMC,EAA8B,CAClC,IAAK,QACL,IAAK,OACL,IAAK,OACL,IAAK,SACL,IAAK,OACP,EAEA,OAAOD,EAAK,QAAQ,WAAYE,GAAQD,EAAIC,CAAI,GAAKA,CAAI,CAC3D",
6
+ "names": ["validation_exports", "__export", "escapeHtml", "isValidMessageContent", "isValidUUID", "isValidUrl", "sanitizeInput", "__toCommonJS", "input", "maxLength", "sanitized", "url", "parsed", "sessionId", "content", "trimmed", "text", "map", "char"]
7
+ }
@@ -1,2 +1,2 @@
1
- "use strict";var k=Object.create;var a=Object.defineProperty;var M=Object.getOwnPropertyDescriptor;var w=Object.getOwnPropertyNames;var f=Object.getPrototypeOf,u=Object.prototype.hasOwnProperty;var y=(o,e)=>{for(var r in e)a(o,r,{get:e[r],enumerable:!0})},i=(o,e,r,p)=>{if(e&&typeof e=="object"||typeof e=="function")for(let n of w(e))!u.call(o,n)&&n!==r&&a(o,n,{get:()=>e[n],enumerable:!(p=M(e,n))||p.enumerable});return o};var m=(o,e,r)=>(r=o!=null?k(f(o)):{},i(e||!o||!o.__esModule?a(r,"default",{value:o,enumerable:!0}):r,o)),C=o=>i(a({},"__esModule",{value:!0}),o);var R={};y(R,{Markdown:()=>h});module.exports=C(R);var t=require("react/jsx-runtime"),s=require("react"),c=m(require("react-markdown")),d=m(require("remark-gfm")),l=m(require("remark-math"));const g=(0,s.memo)(c.default,(o,e)=>o.children===e.children&&o.className===e.className),h=({content:o})=>(0,t.jsx)("div",{className:"copilotKitMarkdown",children:(0,t.jsx)(g,{components:N,remarkPlugins:[d.default,l.default],children:o})}),N={p({children:o}){return(0,t.jsx)("p",{children:o})},a({children:o,...e}){return(0,t.jsx)("a",{style:{color:"blue",textDecoration:"underline"},...e,target:"_blank",rel:"noopener noreferrer",children:o})}};
1
+ "use strict";var l=Object.create;var p=Object.defineProperty;var M=Object.getOwnPropertyDescriptor;var w=Object.getOwnPropertyNames;var f=Object.getPrototypeOf,u=Object.prototype.hasOwnProperty;var y=(o,r)=>{for(var e in r)p(o,e,{get:r[e],enumerable:!0})},i=(o,r,e,m)=>{if(r&&typeof r=="object"||typeof r=="function")for(let n of w(r))!u.call(o,n)&&n!==e&&p(o,n,{get:()=>r[n],enumerable:!(m=M(r,n))||m.enumerable});return o};var a=(o,r,e)=>(e=o!=null?l(f(o)):{},i(r||!o||!o.__esModule?p(e,"default",{value:o,enumerable:!0}):e,o)),C=o=>i(p({},"__esModule",{value:!0}),o);var R={};y(R,{Markdown:()=>h});module.exports=C(R);var t=require("react/jsx-runtime"),s=require("react"),c=a(require("react-markdown")),d=a(require("remark-gfm")),k=a(require("remark-math"));const g=(0,s.memo)(c.default,(o,r)=>o.children===r.children),h=({content:o})=>(0,t.jsx)("div",{className:"copilotKitMarkdown",children:(0,t.jsx)(g,{components:P,remarkPlugins:[d.default,k.default],children:o})}),P={p({children:o}){return(0,t.jsx)("p",{children:o})},a({children:o,...r}){return(0,t.jsx)("a",{style:{color:"blue",textDecoration:"underline"},...r,target:"_blank",rel:"noopener noreferrer",children:o})}};
2
2
  //# sourceMappingURL=markdown.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../src/components/chat/markdown.tsx"],
4
- "sourcesContent": ["import { type FC, memo } from 'react'\nimport ReactMarkdown, { type Options, type Components } from 'react-markdown'\nimport remarkGfm from 'remark-gfm'\nimport remarkMath from 'remark-math'\n\nconst MemoizedReactMarkdown: FC<Options> = memo(\n ReactMarkdown,\n (prevProps, nextProps) => prevProps.children === nextProps.children && prevProps.className === nextProps.className\n)\n\ntype MarkdownProps = {\n content: string\n}\n\nexport const Markdown = ({ content }: MarkdownProps) => {\n return (\n <div className=\"copilotKitMarkdown\">\n <MemoizedReactMarkdown components={components} remarkPlugins={[remarkGfm, remarkMath]}>\n {content}\n </MemoizedReactMarkdown>\n </div>\n )\n}\n\nconst components: Components = {\n p({ children }) {\n return <p>{children}</p>\n },\n a({ children, ...props }) {\n return (\n <a style={{ color: 'blue', textDecoration: 'underline' }} {...props} target=\"_blank\" rel=\"noopener noreferrer\">\n {children}\n </a>\n )\n },\n}\n"],
5
- "mappings": "0jBAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,cAAAE,IAAA,eAAAC,EAAAH,GAiBM,IAAAI,EAAA,6BAjBNC,EAA8B,iBAC9BC,EAA6D,6BAC7DC,EAAsB,yBACtBC,EAAuB,0BAEvB,MAAMC,KAAqC,QACzC,EAAAC,QACA,CAACC,EAAWC,IAAcD,EAAU,WAAaC,EAAU,UAAYD,EAAU,YAAcC,EAAU,SAC3G,EAMaV,EAAW,CAAC,CAAE,QAAAW,CAAQ,OAE/B,OAAC,OAAI,UAAU,qBACb,mBAACJ,EAAA,CAAsB,WAAYK,EAAY,cAAe,CAAC,EAAAC,QAAW,EAAAC,OAAU,EACjF,SAAAH,EACH,EACF,EAIEC,EAAyB,CAC7B,EAAE,CAAE,SAAAG,CAAS,EAAG,CACd,SAAO,OAAC,KAAG,SAAAA,EAAS,CACtB,EACA,EAAE,CAAE,SAAAA,EAAU,GAAGC,CAAM,EAAG,CACxB,SACE,OAAC,KAAE,MAAO,CAAE,MAAO,OAAQ,eAAgB,WAAY,EAAI,GAAGA,EAAO,OAAO,SAAS,IAAI,sBACtF,SAAAD,EACH,CAEJ,CACF",
4
+ "sourcesContent": ["import { type FC, memo } from 'react'\nimport ReactMarkdown, { type Options, type Components } from 'react-markdown'\nimport remarkGfm from 'remark-gfm'\nimport remarkMath from 'remark-math'\n\nconst MemoizedReactMarkdown: FC<Options> = memo(\n ReactMarkdown,\n (prevProps, nextProps) => prevProps.children === nextProps.children\n)\n\ntype MarkdownProps = {\n content: string\n}\n\nexport const Markdown = ({ content }: MarkdownProps) => {\n return (\n <div className=\"copilotKitMarkdown\">\n <MemoizedReactMarkdown components={components} remarkPlugins={[remarkGfm, remarkMath]}>\n {content}\n </MemoizedReactMarkdown>\n </div>\n )\n}\n\nconst components: Components = {\n p({ children }) {\n return <p>{children}</p>\n },\n a({ children, ...props }) {\n return (\n <a style={{ color: 'blue', textDecoration: 'underline' }} {...props} target=\"_blank\" rel=\"noopener noreferrer\">\n {children}\n </a>\n )\n },\n}\n"],
5
+ "mappings": "0jBAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,cAAAE,IAAA,eAAAC,EAAAH,GAiBM,IAAAI,EAAA,6BAjBNC,EAA8B,iBAC9BC,EAA6D,6BAC7DC,EAAsB,yBACtBC,EAAuB,0BAEvB,MAAMC,KAAqC,QACzC,EAAAC,QACA,CAACC,EAAWC,IAAcD,EAAU,WAAaC,EAAU,QAC7D,EAMaV,EAAW,CAAC,CAAE,QAAAW,CAAQ,OAE/B,OAAC,OAAI,UAAU,qBACb,mBAACJ,EAAA,CAAsB,WAAYK,EAAY,cAAe,CAAC,EAAAC,QAAW,EAAAC,OAAU,EACjF,SAAAH,EACH,EACF,EAIEC,EAAyB,CAC7B,EAAE,CAAE,SAAAG,CAAS,EAAG,CACd,SAAO,OAAC,KAAG,SAAAA,EAAS,CACtB,EACA,EAAE,CAAE,SAAAA,EAAU,GAAGC,CAAM,EAAG,CACxB,SACE,OAAC,KAAE,MAAO,CAAE,MAAO,OAAQ,eAAgB,WAAY,EAAI,GAAGA,EAAO,OAAO,SAAS,IAAI,sBACtF,SAAAD,EACH,CAEJ,CACF",
6
6
  "names": ["markdown_exports", "__export", "Markdown", "__toCommonJS", "import_jsx_runtime", "import_react", "import_react_markdown", "import_remark_gfm", "import_remark_math", "MemoizedReactMarkdown", "ReactMarkdown", "prevProps", "nextProps", "content", "components", "remarkGfm", "remarkMath", "children", "props"]
7
7
  }
@@ -1,7 +1,7 @@
1
- import { ProductVariant } from '@anker-in/lib';
1
+ import { NormalizedProductVariant } from '@anker-in/shopify-react';
2
2
  import { FunctionMemberPriceResult } from '../memberPriceTypes';
3
3
  export declare const useFunctionMemberPrice: ({ variant }: {
4
- variant?: ProductVariant;
4
+ variant?: NormalizedProductVariant;
5
5
  }) => FunctionMemberPriceResult | (Partial<FunctionMemberPriceResult> & {
6
6
  hasMemberPrice: false;
7
7
  });
@@ -1,2 +1,2 @@
1
- "use strict";var i=Object.defineProperty;var P=Object.getOwnPropertyDescriptor;var b=Object.getOwnPropertyNames;var a=Object.prototype.hasOwnProperty;var l=(r,e)=>{for(var o in e)i(r,o,{get:e[o],enumerable:!0})},f=(r,e,o,c)=>{if(e&&typeof e=="object"||typeof e=="function")for(let t of b(e))!a.call(r,t)&&t!==o&&i(r,t,{get:()=>e[t],enumerable:!(c=P(e,t))||c.enumerable});return r};var M=r=>f(i({},"__esModule",{value:!0}),r);var d={};l(d,{useFunctionMemberPrice:()=>p});module.exports=M(d);var m=require("../utils/getFunctionMemberPrice"),n=require("react"),s=require("../provider"),u=require("@anker-in/lib");const p=({variant:r})=>{const{memberPriceDiscount:e}=(0,s.useCreditsContext)(),{locale:o=""}=(0,u.useHeadlessContext)();return(0,n.useMemo)(()=>{const t=(0,m.getFunctionMemberPrice)({memberPriceDiscount:e,currencyCode:r?.price.currencyCode,variant:r,locale:o});return t||{hasMemberPrice:!1}},[o,e,r])};
1
+ "use strict";var i=Object.defineProperty;var P=Object.getOwnPropertyDescriptor;var a=Object.getOwnPropertyNames;var l=Object.prototype.hasOwnProperty;var b=(r,e)=>{for(var o in e)i(r,o,{get:e[o],enumerable:!0})},f=(r,e,o,c)=>{if(e&&typeof e=="object"||typeof e=="function")for(let t of a(e))!l.call(r,t)&&t!==o&&i(r,t,{get:()=>e[t],enumerable:!(c=P(e,t))||c.enumerable});return r};var M=r=>f(i({},"__esModule",{value:!0}),r);var p={};b(p,{useFunctionMemberPrice:()=>d});module.exports=M(p);var m=require("../utils/getFunctionMemberPrice"),n=require("react"),s=require("../provider"),u=require("@anker-in/lib");const d=({variant:r})=>{const{memberPriceDiscount:e}=(0,s.useCreditsContext)(),{locale:o=""}=(0,u.useHeadlessContext)();return(0,n.useMemo)(()=>{const t=(0,m.getFunctionMemberPrice)({memberPriceDiscount:e,currencyCode:r?.price.currencyCode,variant:r,locale:o});return t||{hasMemberPrice:!1}},[o,e,r])};
2
2
  //# sourceMappingURL=useFunctionMemberPrice.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../../../src/components/credits/context/hooks/useFunctionMemberPrice.ts"],
4
- "sourcesContent": ["import { ProductVariant } from '@anker-in/lib'\nimport { FunctionMemberPriceResult } from '../memberPriceTypes'\nimport { getFunctionMemberPrice } from '../utils/getFunctionMemberPrice'\nimport { useMemo } from 'react'\nimport { useCreditsContext } from '../provider'\nimport { useHeadlessContext } from '@anker-in/lib'\n\n// \u8BA1\u7B97\u5355\u4EF6\u5546\u54C1\u7684\u4F1A\u5458\u4EF7\nexport const useFunctionMemberPrice = ({ variant }: { variant?: ProductVariant }) => {\n const { memberPriceDiscount } = useCreditsContext()\n const { locale = '' } = useHeadlessContext()\n\n const memberPrice:\n | FunctionMemberPriceResult\n | (Partial<FunctionMemberPriceResult> & {\n hasMemberPrice: false\n }) = useMemo(() => {\n const result = getFunctionMemberPrice({\n memberPriceDiscount: memberPriceDiscount,\n currencyCode: variant?.price.currencyCode,\n variant,\n locale,\n })\n\n if (result) {\n return result as FunctionMemberPriceResult\n }\n\n return { hasMemberPrice: false }\n }, [locale, memberPriceDiscount, variant])\n\n return memberPrice\n}\n"],
5
- "mappings": "yaAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,4BAAAE,IAAA,eAAAC,EAAAH,GAEA,IAAAI,EAAuC,2CACvCC,EAAwB,iBACxBC,EAAkC,uBAClCC,EAAmC,yBAG5B,MAAML,EAAyB,CAAC,CAAE,QAAAM,CAAQ,IAAoC,CACnF,KAAM,CAAE,oBAAAC,CAAoB,KAAI,qBAAkB,EAC5C,CAAE,OAAAC,EAAS,EAAG,KAAI,sBAAmB,EAqB3C,SAfS,WAAQ,IAAM,CACrB,MAAMC,KAAS,0BAAuB,CACpC,oBAAqBF,EACrB,aAAcD,GAAS,MAAM,aAC7B,QAAAA,EACA,OAAAE,CACF,CAAC,EAED,OAAIC,GAIG,CAAE,eAAgB,EAAM,CACjC,EAAG,CAACD,EAAQD,EAAqBD,CAAO,CAAC,CAG3C",
4
+ "sourcesContent": ["import { NormalizedProductVariant } from '@anker-in/shopify-react'\nimport { FunctionMemberPriceResult } from '../memberPriceTypes'\nimport { getFunctionMemberPrice } from '../utils/getFunctionMemberPrice'\nimport { useMemo } from 'react'\nimport { useCreditsContext } from '../provider'\nimport { useHeadlessContext } from '@anker-in/lib'\n\n// \u8BA1\u7B97\u5355\u4EF6\u5546\u54C1\u7684\u4F1A\u5458\u4EF7\nexport const useFunctionMemberPrice = ({ variant }: { variant?: NormalizedProductVariant }) => {\n const { memberPriceDiscount } = useCreditsContext()\n const { locale = '' } = useHeadlessContext()\n\n const memberPrice:\n | FunctionMemberPriceResult\n | (Partial<FunctionMemberPriceResult> & {\n hasMemberPrice: false\n }) = useMemo(() => {\n const result = getFunctionMemberPrice({\n memberPriceDiscount: memberPriceDiscount,\n currencyCode: variant?.price.currencyCode,\n variant,\n locale,\n })\n\n if (result) {\n return result as FunctionMemberPriceResult\n }\n\n return { hasMemberPrice: false }\n }, [locale, memberPriceDiscount, variant])\n\n return memberPrice\n}\n"],
5
+ "mappings": "yaAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,4BAAAE,IAAA,eAAAC,EAAAH,GAEA,IAAAI,EAAuC,2CACvCC,EAAwB,iBACxBC,EAAkC,uBAClCC,EAAmC,yBAG5B,MAAML,EAAyB,CAAC,CAAE,QAAAM,CAAQ,IAA8C,CAC7F,KAAM,CAAE,oBAAAC,CAAoB,KAAI,qBAAkB,EAC5C,CAAE,OAAAC,EAAS,EAAG,KAAI,sBAAmB,EAqB3C,SAfS,WAAQ,IAAM,CACrB,MAAMC,KAAS,0BAAuB,CACpC,oBAAqBF,EACrB,aAAcD,GAAS,MAAM,aAC7B,QAAAA,EACA,OAAAE,CACF,CAAC,EAED,OAAIC,GAIG,CAAE,eAAgB,EAAM,CACjC,EAAG,CAACD,EAAQD,EAAqBD,CAAO,CAAC,CAG3C",
6
6
  "names": ["useFunctionMemberPrice_exports", "__export", "useFunctionMemberPrice", "__toCommonJS", "import_getFunctionMemberPrice", "import_react", "import_provider", "import_lib", "variant", "memberPriceDiscount", "locale", "result"]
7
7
  }
@@ -1,2 +1,2 @@
1
- "use strict";var d=Object.defineProperty;var M=Object.getOwnPropertyDescriptor;var P=Object.getOwnPropertyNames;var B=Object.prototype.hasOwnProperty;var D=(e,t)=>{for(var r in t)d(e,r,{get:t[r],enumerable:!0})},N=(e,t,r,n)=>{if(t&&typeof t=="object"||typeof t=="function")for(let s of P(t))!B.call(e,s)&&s!==r&&d(e,s,{get:()=>t[s],enumerable:!(n=M(t,s))||n.enumerable});return e};var O=e=>N(d({},"__esModule",{value:!0}),e);var k={};D(k,{default:()=>h});module.exports=O(k);var i=require("react"),f=require("./useAlpcFetch"),g=require("../const"),C=require("../provider"),L=require("@anker-in/lib");function U(){let e="";const{profile:t,isLoadingProfile:r,alpcBrand:n}=(0,C.useCreditsContext)(),{locale:s,brand:R}=(0,L.useHeadlessContext)(),b=n||R;s==="pl"?e="eu":e=s;const[x,y]=(0,i.useState)([]),{isMutating:S,trigger:m}=(0,f.useAlpcMutation)({url:"/v1/credit/consume_credit_rules",initData:{brand:b,page:1,page_size:20,country:(g.ALPC_COUNTRY_MAP.get(e)||e)?.toUpperCase()}}),c=(0,i.useCallback)(()=>{m({user_id:t?.user_id},{onSuccess(A){let p=A.data.consume_credit_rules||[],u=p.filter(o=>o.consume_type==1)||[],l=p.filter(o=>o.consume_type==2)||[];u=u.sort((o,a)=>o.consume_credits-a.consume_credits),l=l.sort((o,a)=>o.consume_credits-a.consume_credits);const _=u.concat(l);y(_),localStorage?.setItem(`consume_credit_rules-${e}`,JSON.stringify({expire:Date.now()+10*60*1e3,consume_credit_rules:_}))}})},[t,m,e]);return(0,i.useEffect)(()=>{r||c()},[c,r]),{listLoading:S,redeemableList:x,getRedeemableList:c}}var h=U;
1
+ "use strict";var d=Object.defineProperty;var M=Object.getOwnPropertyDescriptor;var P=Object.getOwnPropertyNames;var B=Object.prototype.hasOwnProperty;var D=(e,t)=>{for(var r in t)d(e,r,{get:t[r],enumerable:!0})},N=(e,t,r,n)=>{if(t&&typeof t=="object"||typeof t=="function")for(let s of P(t))!B.call(e,s)&&s!==r&&d(e,s,{get:()=>t[s],enumerable:!(n=M(t,s))||n.enumerable});return e};var O=e=>N(d({},"__esModule",{value:!0}),e);var k={};D(k,{default:()=>h});module.exports=O(k);var i=require("react"),f=require("./useAlpcFetch"),g=require("../const"),C=require("../provider"),L=require("@anker-in/lib");function U(){let e="";const{profile:t,isLoadingProfile:r,alpcBrand:n}=(0,C.useCreditsContext)(),{locale:s,brand:R}=(0,L.useHeadlessContext)(),b=n||R;s==="pl"?e="eu":e=s;const[x,y]=(0,i.useState)([]),{isMutating:S,trigger:m}=(0,f.useAlpcMutation)({url:"/v1/credit/consume_credit_rules",initData:{brand:b,page:1,page_size:999,country:(g.ALPC_COUNTRY_MAP.get(e)||e)?.toUpperCase()}}),c=(0,i.useCallback)(()=>{m({user_id:t?.user_id},{onSuccess(A){let p=A.data.consume_credit_rules||[],u=p.filter(o=>o.consume_type==1)||[],l=p.filter(o=>o.consume_type==2)||[];u=u.sort((o,a)=>o.consume_credits-a.consume_credits),l=l.sort((o,a)=>o.consume_credits-a.consume_credits);const _=u.concat(l);y(_),localStorage?.setItem(`consume_credit_rules-${e}`,JSON.stringify({expire:Date.now()+10*60*1e3,consume_credit_rules:_}))}})},[t,m,e]);return(0,i.useEffect)(()=>{r||c()},[c,r]),{listLoading:S,redeemableList:x,getRedeemableList:c}}var h=U;
2
2
  //# sourceMappingURL=useRedeemableList.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../../../src/components/credits/context/hooks/useRedeemableList.ts"],
4
- "sourcesContent": ["import { useCallback, useEffect, useState } from 'react'\n\nimport { useAlpcMutation } from './useAlpcFetch'\nimport { ALPC_COUNTRY_MAP } from '../const'\nimport { useCreditsContext } from '../provider'\nimport type { ConsumeCreditRuleResponse } from '../response'\nimport { useHeadlessContext } from '@anker-in/lib'\n\nfunction useRedeemableList() {\n let locale = '' as string\n const { profile, isLoadingProfile, alpcBrand } = useCreditsContext()\n const { locale: contextLocale, brand: headlessBrand } = useHeadlessContext()\n const brand = alpcBrand || headlessBrand\n\n if (contextLocale === 'pl') {\n locale = 'eu'\n } else {\n locale = contextLocale\n }\n\n const [redeemableList, setRedeemableList] = useState<ConsumeCreditRuleResponse[]>([])\n const { isMutating: listLoading, trigger } = useAlpcMutation<\n {\n data: { consume_credit_rules: ConsumeCreditRuleResponse[] }\n },\n { user_id?: string }\n >({\n url: `/v1/credit/consume_credit_rules`,\n initData: {\n brand,\n page: 1,\n page_size: 20,\n country: (ALPC_COUNTRY_MAP.get(locale) || locale)?.toUpperCase(),\n },\n })\n\n const getRedeemableList = useCallback(() => {\n trigger(\n {\n user_id: profile?.user_id,\n },\n {\n onSuccess(responseData) {\n let list = responseData.data.consume_credit_rules || []\n let cList = list.filter(i => i.consume_type == 1) || []\n let pList = list.filter(i => i.consume_type == 2) || []\n cList = cList.sort((prev, next) => prev.consume_credits - next.consume_credits)\n pList = pList.sort((prev, next) => prev.consume_credits - next.consume_credits)\n const resultList = cList.concat(pList)\n setRedeemableList(resultList)\n\n localStorage?.setItem(\n `consume_credit_rules-${locale}`,\n JSON.stringify({\n expire: Date.now() + 10 * 60 * 1000,\n consume_credit_rules: resultList,\n })\n )\n },\n }\n )\n }, [profile, trigger, locale])\n\n useEffect(() => {\n if (!isLoadingProfile) {\n getRedeemableList()\n }\n }, [getRedeemableList, isLoadingProfile])\n\n return {\n listLoading,\n redeemableList,\n getRedeemableList,\n }\n}\n\nexport default useRedeemableList\n"],
5
- "mappings": "yaAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,aAAAE,IAAA,eAAAC,EAAAH,GAAA,IAAAI,EAAiD,iBAEjDC,EAAgC,0BAChCC,EAAiC,oBACjCC,EAAkC,uBAElCC,EAAmC,yBAEnC,SAASC,GAAoB,CAC3B,IAAIC,EAAS,GACb,KAAM,CAAE,QAAAC,EAAS,iBAAAC,EAAkB,UAAAC,CAAU,KAAI,qBAAkB,EAC7D,CAAE,OAAQC,EAAe,MAAOC,CAAc,KAAI,sBAAmB,EACrEC,EAAQH,GAAaE,EAEvBD,IAAkB,KACpBJ,EAAS,KAETA,EAASI,EAGX,KAAM,CAACG,EAAgBC,CAAiB,KAAI,YAAsC,CAAC,CAAC,EAC9E,CAAE,WAAYC,EAAa,QAAAC,CAAQ,KAAI,mBAK3C,CACA,IAAK,kCACL,SAAU,CACR,MAAAJ,EACA,KAAM,EACN,UAAW,GACX,SAAU,mBAAiB,IAAIN,CAAM,GAAKA,IAAS,YAAY,CACjE,CACF,CAAC,EAEKW,KAAoB,eAAY,IAAM,CAC1CD,EACE,CACE,QAAST,GAAS,OACpB,EACA,CACE,UAAUW,EAAc,CACtB,IAAIC,EAAOD,EAAa,KAAK,sBAAwB,CAAC,EAClDE,EAAQD,EAAK,OAAOE,GAAKA,EAAE,cAAgB,CAAC,GAAK,CAAC,EAClDC,EAAQH,EAAK,OAAOE,GAAKA,EAAE,cAAgB,CAAC,GAAK,CAAC,EACtDD,EAAQA,EAAM,KAAK,CAACG,EAAMC,IAASD,EAAK,gBAAkBC,EAAK,eAAe,EAC9EF,EAAQA,EAAM,KAAK,CAACC,EAAMC,IAASD,EAAK,gBAAkBC,EAAK,eAAe,EAC9E,MAAMC,EAAaL,EAAM,OAAOE,CAAK,EACrCR,EAAkBW,CAAU,EAE5B,cAAc,QACZ,wBAAwBnB,CAAM,GAC9B,KAAK,UAAU,CACb,OAAQ,KAAK,IAAI,EAAI,GAAK,GAAK,IAC/B,qBAAsBmB,CACxB,CAAC,CACH,CACF,CACF,CACF,CACF,EAAG,CAAClB,EAASS,EAASV,CAAM,CAAC,EAE7B,sBAAU,IAAM,CACTE,GACHS,EAAkB,CAEtB,EAAG,CAACA,EAAmBT,CAAgB,CAAC,EAEjC,CACL,YAAAO,EACA,eAAAF,EACA,kBAAAI,CACF,CACF,CAEA,IAAOnB,EAAQO",
4
+ "sourcesContent": ["import { useCallback, useEffect, useState } from 'react'\n\nimport { useAlpcMutation } from './useAlpcFetch'\nimport { ALPC_COUNTRY_MAP } from '../const'\nimport { useCreditsContext } from '../provider'\nimport type { ConsumeCreditRuleResponse } from '../response'\nimport { useHeadlessContext } from '@anker-in/lib'\n\nfunction useRedeemableList() {\n let locale = '' as string\n const { profile, isLoadingProfile, alpcBrand } = useCreditsContext()\n const { locale: contextLocale, brand: headlessBrand } = useHeadlessContext()\n const brand = alpcBrand || headlessBrand\n\n if (contextLocale === 'pl') {\n locale = 'eu'\n } else {\n locale = contextLocale\n }\n\n const [redeemableList, setRedeemableList] = useState<ConsumeCreditRuleResponse[]>([])\n const { isMutating: listLoading, trigger } = useAlpcMutation<\n {\n data: { consume_credit_rules: ConsumeCreditRuleResponse[] }\n },\n { user_id?: string }\n >({\n url: `/v1/credit/consume_credit_rules`,\n initData: {\n brand,\n page: 1,\n page_size: 999,\n country: (ALPC_COUNTRY_MAP.get(locale) || locale)?.toUpperCase(),\n },\n })\n\n const getRedeemableList = useCallback(() => {\n trigger(\n {\n user_id: profile?.user_id,\n },\n {\n onSuccess(responseData) {\n let list = responseData.data.consume_credit_rules || []\n let cList = list.filter(i => i.consume_type == 1) || []\n let pList = list.filter(i => i.consume_type == 2) || []\n cList = cList.sort((prev, next) => prev.consume_credits - next.consume_credits)\n pList = pList.sort((prev, next) => prev.consume_credits - next.consume_credits)\n const resultList = cList.concat(pList)\n setRedeemableList(resultList)\n\n localStorage?.setItem(\n `consume_credit_rules-${locale}`,\n JSON.stringify({\n expire: Date.now() + 10 * 60 * 1000,\n consume_credit_rules: resultList,\n })\n )\n },\n }\n )\n }, [profile, trigger, locale])\n\n useEffect(() => {\n if (!isLoadingProfile) {\n getRedeemableList()\n }\n }, [getRedeemableList, isLoadingProfile])\n\n return {\n listLoading,\n redeemableList,\n getRedeemableList,\n }\n}\n\nexport default useRedeemableList\n"],
5
+ "mappings": "yaAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,aAAAE,IAAA,eAAAC,EAAAH,GAAA,IAAAI,EAAiD,iBAEjDC,EAAgC,0BAChCC,EAAiC,oBACjCC,EAAkC,uBAElCC,EAAmC,yBAEnC,SAASC,GAAoB,CAC3B,IAAIC,EAAS,GACb,KAAM,CAAE,QAAAC,EAAS,iBAAAC,EAAkB,UAAAC,CAAU,KAAI,qBAAkB,EAC7D,CAAE,OAAQC,EAAe,MAAOC,CAAc,KAAI,sBAAmB,EACrEC,EAAQH,GAAaE,EAEvBD,IAAkB,KACpBJ,EAAS,KAETA,EAASI,EAGX,KAAM,CAACG,EAAgBC,CAAiB,KAAI,YAAsC,CAAC,CAAC,EAC9E,CAAE,WAAYC,EAAa,QAAAC,CAAQ,KAAI,mBAK3C,CACA,IAAK,kCACL,SAAU,CACR,MAAAJ,EACA,KAAM,EACN,UAAW,IACX,SAAU,mBAAiB,IAAIN,CAAM,GAAKA,IAAS,YAAY,CACjE,CACF,CAAC,EAEKW,KAAoB,eAAY,IAAM,CAC1CD,EACE,CACE,QAAST,GAAS,OACpB,EACA,CACE,UAAUW,EAAc,CACtB,IAAIC,EAAOD,EAAa,KAAK,sBAAwB,CAAC,EAClDE,EAAQD,EAAK,OAAOE,GAAKA,EAAE,cAAgB,CAAC,GAAK,CAAC,EAClDC,EAAQH,EAAK,OAAOE,GAAKA,EAAE,cAAgB,CAAC,GAAK,CAAC,EACtDD,EAAQA,EAAM,KAAK,CAACG,EAAMC,IAASD,EAAK,gBAAkBC,EAAK,eAAe,EAC9EF,EAAQA,EAAM,KAAK,CAACC,EAAMC,IAASD,EAAK,gBAAkBC,EAAK,eAAe,EAC9E,MAAMC,EAAaL,EAAM,OAAOE,CAAK,EACrCR,EAAkBW,CAAU,EAE5B,cAAc,QACZ,wBAAwBnB,CAAM,GAC9B,KAAK,UAAU,CACb,OAAQ,KAAK,IAAI,EAAI,GAAK,GAAK,IAC/B,qBAAsBmB,CACxB,CAAC,CACH,CACF,CACF,CACF,CACF,EAAG,CAAClB,EAASS,EAASV,CAAM,CAAC,EAE7B,sBAAU,IAAM,CACTE,GACHS,EAAkB,CAEtB,EAAG,CAACA,EAAmBT,CAAgB,CAAC,EAEjC,CACL,YAAAO,EACA,eAAAF,EACA,kBAAAI,CACF,CACF,CAEA,IAAOnB,EAAQO",
6
6
  "names": ["useRedeemableList_exports", "__export", "useRedeemableList_default", "__toCommonJS", "import_react", "import_useAlpcFetch", "import_const", "import_provider", "import_lib", "useRedeemableList", "locale", "profile", "isLoadingProfile", "alpcBrand", "contextLocale", "headlessBrand", "brand", "redeemableList", "setRedeemableList", "listLoading", "trigger", "getRedeemableList", "responseData", "list", "cList", "i", "pList", "prev", "next", "resultList"]
7
7
  }
@@ -3,8 +3,3 @@ export declare enum FunctionDiscountType {
3
3
  FixedAmount = 2,
4
4
  FixedPrice = 3
5
5
  }
6
- export declare enum RoundSelected {
7
- RoundHighest = "round_highest",
8
- RoundLowest = "round_lowest",
9
- RoundNearest = "round_nearest"
10
- }
@@ -1,2 +1,2 @@
1
- "use strict";var h=Object.defineProperty;var d=Object.getOwnPropertyDescriptor;var w=Object.getOwnPropertyNames;var P=Object.prototype.hasOwnProperty;var A=(a,x)=>{for(var g in x)h(a,g,{get:x[g],enumerable:!0})},H=(a,x,g,r)=>{if(x&&typeof x=="object"||typeof x=="function")for(let e of w(x))!P.call(a,e)&&e!==g&&h(a,e,{get:()=>x[e],enumerable:!(r=d(x,e))||r.enumerable});return a};var L=a=>H(h({},"__esModule",{value:!0}),a);var N={};A(N,{FunctionDiscountType:()=>m,RoundSelected:()=>_});module.exports=L(N);var m=(r=>(r[r.Percentage=1]="Percentage",r[r.FixedAmount=2]="FixedAmount",r[r.FixedPrice=3]="FixedPrice",r))(m||{}),_=(r=>(r.RoundHighest="round_highest",r.RoundLowest="round_lowest",r.RoundNearest="round_nearest",r))(_||{});
1
+ "use strict";var P=Object.defineProperty;var g=Object.getOwnPropertyDescriptor;var A=Object.getOwnPropertyNames;var b=Object.prototype.hasOwnProperty;var f=(d,r)=>{for(var m in r)P(d,m,{get:r[m],enumerable:!0})},h=(d,r,m,x)=>{if(r&&typeof r=="object"||typeof r=="function")for(let e of A(r))!b.call(d,e)&&e!==m&&P(d,e,{get:()=>r[e],enumerable:!(x=g(r,e))||x.enumerable});return d};var j=d=>h(P({},"__esModule",{value:!0}),d);var k={};f(k,{FunctionDiscountType:()=>a});module.exports=j(k);var a=(x=>(x[x.Percentage=1]="Percentage",x[x.FixedAmount=2]="FixedAmount",x[x.FixedPrice=3]="FixedPrice",x))(a||{});
2
2
  //# sourceMappingURL=memberPriceConst.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../../src/components/credits/context/memberPriceConst.ts"],
4
- "sourcesContent": ["// Function \u6298\u6263\u7C7B\u578B\nexport enum FunctionDiscountType {\n Percentage = 1,\n FixedAmount,\n FixedPrice,\n}\n\n// \u5C0F\u6570\u4F4D\u53D6\u820D\u65B9\u5F0F\nexport enum RoundSelected {\n RoundHighest = 'round_highest',\n RoundLowest = 'round_lowest',\n RoundNearest = 'round_nearest',\n}\n"],
5
- "mappings": "yaAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,0BAAAE,EAAA,kBAAAC,IAAA,eAAAC,EAAAJ,GACO,IAAKE,OACVA,IAAA,WAAa,GAAb,aACAA,IAAA,6BACAA,IAAA,2BAHUA,OAAA,IAOAC,OACVA,EAAA,aAAe,gBACfA,EAAA,YAAc,eACdA,EAAA,aAAe,gBAHLA,OAAA",
6
- "names": ["memberPriceConst_exports", "__export", "FunctionDiscountType", "RoundSelected", "__toCommonJS"]
4
+ "sourcesContent": ["// Function \u6298\u6263\u7C7B\u578B\nexport enum FunctionDiscountType {\n Percentage = 1,\n FixedAmount,\n FixedPrice,\n}\n"],
5
+ "mappings": "yaAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,0BAAAE,IAAA,eAAAC,EAAAH,GACO,IAAKE,OACVA,IAAA,WAAa,GAAb,aACAA,IAAA,6BACAA,IAAA,2BAHUA,OAAA",
6
+ "names": ["memberPriceConst_exports", "__export", "FunctionDiscountType", "__toCommonJS"]
7
7
  }
@@ -1,14 +1,7 @@
1
- import { FunctionDiscountType, RoundSelected } from './memberPriceConst';
2
- export type PriceEndingConf = {
3
- apply_price_ending: boolean;
4
- one_decimal_place: string;
5
- two_decimal_place: string;
6
- round_selected: RoundSelected;
7
- };
1
+ import { FunctionDiscountType } from './memberPriceConst';
8
2
  export type DiscountConfig = {
9
3
  discount_type: FunctionDiscountType;
10
4
  discount_value: number;
11
- price_ending_conf?: PriceEndingConf;
12
5
  };
13
6
  export type FunctionMemberPriceConfig = {
14
7
  rule_id: string;
@@ -30,17 +23,3 @@ export type FunctionMemberPriceConfig = {
30
23
  other_product_discounts: boolean;
31
24
  };
32
25
  };
33
- export type FunctionMemberPriceResult = {
34
- hasMemberPrice: boolean;
35
- useCoupon: boolean;
36
- originalPrice: number;
37
- originalPriceWithCurrency: string;
38
- salePrice: number;
39
- salePriceWithCurrency: string;
40
- salePriceWithoutCoupon: number;
41
- salePriceWithoutCouponWithCurrency: string;
42
- savePrice: number;
43
- savePriceWithCurrency: string;
44
- savePriceWithoutCoupon: number;
45
- savePriceWithoutCouponWithCurrency: string;
46
- };
@@ -1,2 +1,2 @@
1
- "use strict";var t=Object.defineProperty;var c=Object.getOwnPropertyDescriptor;var u=Object.getOwnPropertyNames;var s=Object.prototype.hasOwnProperty;var a=(n,e,o,r)=>{if(e&&typeof e=="object"||typeof e=="function")for(let i of u(e))!s.call(n,i)&&i!==o&&t(n,i,{get:()=>e[i],enumerable:!(r=c(e,i))||r.enumerable});return n};var l=n=>a(t({},"__esModule",{value:!0}),n);var d={};module.exports=l(d);
1
+ "use strict";var e=Object.defineProperty;var s=Object.getOwnPropertyDescriptor;var u=Object.getOwnPropertyNames;var c=Object.prototype.hasOwnProperty;var a=(t,n,r,o)=>{if(n&&typeof n=="object"||typeof n=="function")for(let i of u(n))!c.call(t,i)&&i!==r&&e(t,i,{get:()=>n[i],enumerable:!(o=s(n,i))||o.enumerable});return t};var _=t=>a(e({},"__esModule",{value:!0}),t);var d={};module.exports=_(d);
2
2
  //# sourceMappingURL=memberPriceTypes.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../../src/components/credits/context/memberPriceTypes.ts"],
4
- "sourcesContent": ["import { FunctionDiscountType, RoundSelected } from './memberPriceConst'\n\n// \u4EF7\u683C\u7ED3\u5C3E\u914D\u7F6E\nexport type PriceEndingConf = {\n apply_price_ending: boolean\n one_decimal_place: string\n two_decimal_place: string\n round_selected: RoundSelected\n}\n\n// \u6298\u6263\u914D\u7F6E\nexport type DiscountConfig = {\n discount_type: FunctionDiscountType\n discount_value: number\n price_ending_conf?: PriceEndingConf\n}\n\n// \u4F1A\u5458\u4EF7\u914D\u7F6E\u7C7B\u578B\nexport type FunctionMemberPriceConfig = {\n rule_id: string\n result_detail: {\n member_discounts?: {\n user_identity: number // \u7528\u6237\u8EAB\u4EFD\uFF1A1-\u666E\u901A\u4F1A\u5458\uFF0C2-\u9AD8\u7EA7\u4F1A\u5458\u7B49\n main_products: {\n all_store_variant: boolean\n variants: {\n variant_id: string\n sku: string\n handle: string\n }[]\n }\n discount_conf: DiscountConfig\n }[]\n }\n discount_combinations: {\n other_product_discounts: boolean\n }\n}\n\n// \u4F1A\u5458\u4EF7\u8BA1\u7B97\u7ED3\u679C\nexport type FunctionMemberPriceResult = {\n hasMemberPrice: boolean\n useCoupon: boolean\n originalPrice: number\n originalPriceWithCurrency: string\n salePrice: number\n salePriceWithCurrency: string\n salePriceWithoutCoupon: number\n salePriceWithoutCouponWithCurrency: string\n savePrice: number\n savePriceWithCurrency: string\n savePriceWithoutCoupon: number\n savePriceWithoutCouponWithCurrency: string\n}\n"],
4
+ "sourcesContent": ["import { FunctionDiscountType } from './memberPriceConst'\n\n// \u6298\u6263\u914D\u7F6E\nexport type DiscountConfig = {\n discount_type: FunctionDiscountType\n discount_value: number\n}\n\n// \u4F1A\u5458\u4EF7\u914D\u7F6E\u7C7B\u578B\nexport type FunctionMemberPriceConfig = {\n rule_id: string\n result_detail: {\n member_discounts?: {\n user_identity: number // \u7528\u6237\u8EAB\u4EFD\uFF1A1-\u666E\u901A\u4F1A\u5458\uFF0C2-\u9AD8\u7EA7\u4F1A\u5458\u7B49\n main_products: {\n all_store_variant: boolean\n variants: {\n variant_id: string\n sku: string\n handle: string\n }[]\n }\n discount_conf: DiscountConfig\n }[]\n }\n discount_combinations: {\n other_product_discounts: boolean\n }\n}\n"],
5
5
  "mappings": "+WAAA,IAAAA,EAAA,kBAAAC,EAAAD",
6
6
  "names": ["memberPriceTypes_exports", "__toCommonJS"]
7
7
  }
@@ -16,12 +16,27 @@ type Context = {
16
16
  fetchCreditInfo: (user_id: string) => void;
17
17
  gtm: {
18
18
  pageGroup: string;
19
+ pageHandle?: string;
19
20
  };
20
21
  pageCommon: CreditsPageCommon;
21
22
  memberPriceDiscount?: FunctionMemberPriceConfig[];
22
23
  alpcBrand?: string;
24
+ cartConfig?: {
25
+ addToCart: (params: {
26
+ variantList: Array<{
27
+ variant: any;
28
+ quantity: number;
29
+ attributes?: Array<{
30
+ key: string;
31
+ value: string;
32
+ }>;
33
+ }>;
34
+ cartAttributes?: Record<string, string>;
35
+ discountCodes?: string[];
36
+ }) => void | Promise<any>;
37
+ };
23
38
  };
24
39
  export declare const CreditsContext: import("react").Context<Context>;
25
- export declare function CreditsProvider({ children, profile, removeProfile, isLoadingProfile, openSignInPopup, openSignUpPopup, taskIdToTypeMapping, creditInfo, customer, customerLoading, fetchCreditInfo, gtm, pageCommon, memberPriceDiscount, alpcBrand, }: PropsWithChildren<Context>): import("react/jsx-runtime").JSX.Element;
40
+ export declare function CreditsProvider({ children, profile, removeProfile, isLoadingProfile, openSignInPopup, openSignUpPopup, taskIdToTypeMapping, creditInfo, customer, customerLoading, fetchCreditInfo, gtm, pageCommon, memberPriceDiscount, alpcBrand, cartConfig, }: PropsWithChildren<Context>): import("react/jsx-runtime").JSX.Element;
26
41
  export declare function useCreditsContext(): Context;
27
42
  export {};
@@ -1,2 +1,2 @@
1
- "use strict";var p=Object.defineProperty;var v=Object.getOwnPropertyDescriptor;var I=Object.getOwnPropertyNames;var T=Object.prototype.hasOwnProperty;var h=(e,o)=>{for(var n in o)p(e,n,{get:o[n],enumerable:!0})},b=(e,o,n,t)=>{if(o&&typeof o=="object"||typeof o=="function")for(let r of I(o))!T.call(e,r)&&r!==n&&p(e,r,{get:()=>o[r],enumerable:!(t=v(o,r))||t.enumerable});return e};var y=e=>b(p({},"__esModule",{value:!0}),e);var D={};h(D,{CreditsContext:()=>d,CreditsProvider:()=>S,useCreditsContext:()=>_});module.exports=y(D);var s=require("react/jsx-runtime"),i=require("react");const d=(0,i.createContext)({profile:null,isLoadingProfile:!1,taskIdToTypeMapping:{},removeProfile:()=>{},openSignInPopup:()=>{},openSignUpPopup:()=>{},creditInfo:void 0,customerLoading:!1,fetchCreditInfo:e=>{},gtm:{pageGroup:""},pageCommon:{},memberPriceDiscount:void 0,alpcBrand:void 0});function S({children:e,profile:o,removeProfile:n,isLoadingProfile:t,openSignInPopup:r,openSignUpPopup:m,taskIdToTypeMapping:C,creditInfo:f,customer:u,customerLoading:a,fetchCreditInfo:g,gtm:c,pageCommon:P,memberPriceDiscount:l,alpcBrand:x}){return(0,s.jsx)(d.Provider,{value:{profile:o,isLoadingProfile:t,removeProfile:n,openSignInPopup:r,openSignUpPopup:m,taskIdToTypeMapping:C,creditInfo:f,fetchCreditInfo:g,customer:u,customerLoading:a,gtm:c,pageCommon:P,memberPriceDiscount:l,alpcBrand:x},children:e})}function _(){const e=(0,i.useContext)(d);if(!e)throw new Error("useCreditsContext must be used within a CreditsProvider");return e}
1
+ "use strict";var s=Object.defineProperty;var x=Object.getOwnPropertyDescriptor;var T=Object.getOwnPropertyNames;var b=Object.prototype.hasOwnProperty;var I=(e,o)=>{for(var n in o)s(e,n,{get:o[n],enumerable:!0})},h=(e,o,n,t)=>{if(o&&typeof o=="object"||typeof o=="function")for(let r of T(o))!b.call(e,r)&&r!==n&&s(e,r,{get:()=>o[r],enumerable:!(t=x(o,r))||t.enumerable});return e};var S=e=>h(s({},"__esModule",{value:!0}),e);var L={};I(L,{CreditsContext:()=>d,CreditsProvider:()=>_,useCreditsContext:()=>A});module.exports=S(L);var p=require("react/jsx-runtime"),i=require("react");const d=(0,i.createContext)({profile:null,isLoadingProfile:!1,taskIdToTypeMapping:{},removeProfile:()=>{},openSignInPopup:()=>{},openSignUpPopup:()=>{},creditInfo:void 0,customerLoading:!1,fetchCreditInfo:e=>{},gtm:{pageGroup:"",pageHandle:""},pageCommon:{},memberPriceDiscount:void 0,alpcBrand:void 0,cartConfig:void 0});function _({children:e,profile:o,removeProfile:n,isLoadingProfile:t,openSignInPopup:r,openSignUpPopup:a,taskIdToTypeMapping:g,creditInfo:u,customer:C,customerLoading:m,fetchCreditInfo:f,gtm:c,pageCommon:P,memberPriceDiscount:l,alpcBrand:v,cartConfig:y}){return(0,p.jsx)(d.Provider,{value:{profile:o,isLoadingProfile:t,removeProfile:n,openSignInPopup:r,openSignUpPopup:a,taskIdToTypeMapping:g,creditInfo:u,fetchCreditInfo:f,customer:C,customerLoading:m,gtm:c,pageCommon:P,memberPriceDiscount:l,alpcBrand:v,cartConfig:y},children:e})}function A(){const e=(0,i.useContext)(d);if(!e)throw new Error("useCreditsContext must be used within a CreditsProvider");return e}
2
2
  //# sourceMappingURL=provider.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../../src/components/credits/context/provider.tsx"],
4
- "sourcesContent": ["import { createContext, PropsWithChildren, useContext } from 'react'\nimport type { DTC_TASK_TYPE } from './const'\nimport type { CreditInfoResponse } from './response'\nimport { CreditsPageCommon } from '../type'\nimport { FunctionMemberPriceConfig } from './memberPriceTypes'\n\ntype Context = {\n profile: any\n isLoadingProfile: boolean\n removeProfile: () => void\n taskIdToTypeMapping: Record<string, DTC_TASK_TYPE>\n openSignInPopup: () => void\n openSignUpPopup: () => void\n creditInfo?: CreditInfoResponse\n customer?: any\n customerLoading: boolean\n fetchCreditInfo: (user_id: string) => void\n gtm: {\n pageGroup: string\n }\n pageCommon: CreditsPageCommon\n memberPriceDiscount?: FunctionMemberPriceConfig[]\n alpcBrand?: string\n}\n\nexport const CreditsContext = createContext<Context>({\n profile: null,\n isLoadingProfile: false,\n taskIdToTypeMapping: {},\n removeProfile: () => {},\n openSignInPopup: () => {},\n openSignUpPopup: () => {},\n creditInfo: undefined,\n customerLoading: false,\n fetchCreditInfo: (user_id: string) => {},\n gtm: {\n pageGroup: '',\n },\n pageCommon: {},\n memberPriceDiscount: undefined,\n alpcBrand: undefined,\n})\n\nexport function CreditsProvider({\n children,\n profile,\n removeProfile,\n isLoadingProfile,\n openSignInPopup,\n openSignUpPopup,\n taskIdToTypeMapping,\n creditInfo,\n customer,\n customerLoading,\n fetchCreditInfo,\n gtm,\n pageCommon,\n memberPriceDiscount,\n alpcBrand,\n}: PropsWithChildren<Context>) {\n return (\n <CreditsContext.Provider\n value={{\n profile,\n isLoadingProfile,\n removeProfile,\n openSignInPopup,\n openSignUpPopup,\n taskIdToTypeMapping,\n creditInfo,\n fetchCreditInfo,\n customer,\n customerLoading,\n gtm,\n pageCommon,\n memberPriceDiscount,\n alpcBrand,\n }}\n >\n {children}\n </CreditsContext.Provider>\n )\n}\n\nexport function useCreditsContext() {\n const context = useContext(CreditsContext)\n if (!context) {\n throw new Error('useCreditsContext must be used within a CreditsProvider')\n }\n return context\n}\n"],
5
- "mappings": "yaAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,oBAAAE,EAAA,oBAAAC,EAAA,sBAAAC,IAAA,eAAAC,EAAAL,GA6DI,IAAAM,EAAA,6BA7DJC,EAA6D,iBAyBtD,MAAML,KAAiB,iBAAuB,CACnD,QAAS,KACT,iBAAkB,GAClB,oBAAqB,CAAC,EACtB,cAAe,IAAM,CAAC,EACtB,gBAAiB,IAAM,CAAC,EACxB,gBAAiB,IAAM,CAAC,EACxB,WAAY,OACZ,gBAAiB,GACjB,gBAAkBM,GAAoB,CAAC,EACvC,IAAK,CACH,UAAW,EACb,EACA,WAAY,CAAC,EACb,oBAAqB,OACrB,UAAW,MACb,CAAC,EAEM,SAASL,EAAgB,CAC9B,SAAAM,EACA,QAAAC,EACA,cAAAC,EACA,iBAAAC,EACA,gBAAAC,EACA,gBAAAC,EACA,oBAAAC,EACA,WAAAC,EACA,SAAAC,EACA,gBAAAC,EACA,gBAAAC,EACA,IAAAC,EACA,WAAAC,EACA,oBAAAC,EACA,UAAAC,CACF,EAA+B,CAC7B,SACE,OAACrB,EAAe,SAAf,CACC,MAAO,CACL,QAAAQ,EACA,iBAAAE,EACA,cAAAD,EACA,gBAAAE,EACA,gBAAAC,EACA,oBAAAC,EACA,WAAAC,EACA,gBAAAG,EACA,SAAAF,EACA,gBAAAC,EACA,IAAAE,EACA,WAAAC,EACA,oBAAAC,EACA,UAAAC,CACF,EAEC,SAAAd,EACH,CAEJ,CAEO,SAASL,GAAoB,CAClC,MAAMoB,KAAU,cAAWtB,CAAc,EACzC,GAAI,CAACsB,EACH,MAAM,IAAI,MAAM,yDAAyD,EAE3E,OAAOA,CACT",
6
- "names": ["provider_exports", "__export", "CreditsContext", "CreditsProvider", "useCreditsContext", "__toCommonJS", "import_jsx_runtime", "import_react", "user_id", "children", "profile", "removeProfile", "isLoadingProfile", "openSignInPopup", "openSignUpPopup", "taskIdToTypeMapping", "creditInfo", "customer", "customerLoading", "fetchCreditInfo", "gtm", "pageCommon", "memberPriceDiscount", "alpcBrand", "context"]
4
+ "sourcesContent": ["import { createContext, PropsWithChildren, useContext } from 'react'\nimport type { DTC_TASK_TYPE } from './const'\nimport type { CreditInfoResponse } from './response'\nimport { CreditsPageCommon } from '../type'\nimport { FunctionMemberPriceConfig } from './memberPriceTypes'\n\ntype Context = {\n profile: any\n isLoadingProfile: boolean\n removeProfile: () => void\n taskIdToTypeMapping: Record<string, DTC_TASK_TYPE>\n openSignInPopup: () => void\n openSignUpPopup: () => void\n creditInfo?: CreditInfoResponse\n customer?: any\n customerLoading: boolean\n fetchCreditInfo: (user_id: string) => void\n gtm: {\n pageGroup: string\n pageHandle?: string\n }\n pageCommon: CreditsPageCommon\n memberPriceDiscount?: FunctionMemberPriceConfig[]\n alpcBrand?: string\n cartConfig?: {\n addToCart: (params: {\n variantList: Array<{\n variant: any\n quantity: number\n attributes?: Array<{ key: string; value: string }>\n }>\n cartAttributes?: Record<string, string>\n discountCodes?: string[]\n }) => void | Promise<any>\n }\n}\n\nexport const CreditsContext = createContext<Context>({\n profile: null,\n isLoadingProfile: false,\n taskIdToTypeMapping: {},\n removeProfile: () => {},\n openSignInPopup: () => {},\n openSignUpPopup: () => {},\n creditInfo: undefined,\n customerLoading: false,\n fetchCreditInfo: (user_id: string) => {},\n gtm: {\n pageGroup: '',\n pageHandle: '',\n },\n pageCommon: {},\n memberPriceDiscount: undefined,\n alpcBrand: undefined,\n cartConfig: undefined,\n})\n\nexport function CreditsProvider({\n children,\n profile,\n removeProfile,\n isLoadingProfile,\n openSignInPopup,\n openSignUpPopup,\n taskIdToTypeMapping,\n creditInfo,\n customer,\n customerLoading,\n fetchCreditInfo,\n gtm,\n pageCommon,\n memberPriceDiscount,\n alpcBrand,\n cartConfig,\n}: PropsWithChildren<Context>) {\n return (\n <CreditsContext.Provider\n value={{\n profile,\n isLoadingProfile,\n removeProfile,\n openSignInPopup,\n openSignUpPopup,\n taskIdToTypeMapping,\n creditInfo,\n fetchCreditInfo,\n customer,\n customerLoading,\n gtm,\n pageCommon,\n memberPriceDiscount,\n alpcBrand,\n cartConfig,\n }}\n >\n {children}\n </CreditsContext.Provider>\n )\n}\n\nexport function useCreditsContext() {\n const context = useContext(CreditsContext)\n if (!context) {\n throw new Error('useCreditsContext must be used within a CreditsProvider')\n }\n return context\n}\n"],
5
+ "mappings": "yaAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,oBAAAE,EAAA,oBAAAC,EAAA,sBAAAC,IAAA,eAAAC,EAAAL,GA4EI,IAAAM,EAAA,6BA5EJC,EAA6D,iBAqCtD,MAAML,KAAiB,iBAAuB,CACnD,QAAS,KACT,iBAAkB,GAClB,oBAAqB,CAAC,EACtB,cAAe,IAAM,CAAC,EACtB,gBAAiB,IAAM,CAAC,EACxB,gBAAiB,IAAM,CAAC,EACxB,WAAY,OACZ,gBAAiB,GACjB,gBAAkBM,GAAoB,CAAC,EACvC,IAAK,CACH,UAAW,GACX,WAAY,EACd,EACA,WAAY,CAAC,EACb,oBAAqB,OACrB,UAAW,OACX,WAAY,MACd,CAAC,EAEM,SAASL,EAAgB,CAC9B,SAAAM,EACA,QAAAC,EACA,cAAAC,EACA,iBAAAC,EACA,gBAAAC,EACA,gBAAAC,EACA,oBAAAC,EACA,WAAAC,EACA,SAAAC,EACA,gBAAAC,EACA,gBAAAC,EACA,IAAAC,EACA,WAAAC,EACA,oBAAAC,EACA,UAAAC,EACA,WAAAC,CACF,EAA+B,CAC7B,SACE,OAACtB,EAAe,SAAf,CACC,MAAO,CACL,QAAAQ,EACA,iBAAAE,EACA,cAAAD,EACA,gBAAAE,EACA,gBAAAC,EACA,oBAAAC,EACA,WAAAC,EACA,gBAAAG,EACA,SAAAF,EACA,gBAAAC,EACA,IAAAE,EACA,WAAAC,EACA,oBAAAC,EACA,UAAAC,EACA,WAAAC,CACF,EAEC,SAAAf,EACH,CAEJ,CAEO,SAASL,GAAoB,CAClC,MAAMqB,KAAU,cAAWvB,CAAc,EACzC,GAAI,CAACuB,EACH,MAAM,IAAI,MAAM,yDAAyD,EAE3E,OAAOA,CACT",
6
+ "names": ["provider_exports", "__export", "CreditsContext", "CreditsProvider", "useCreditsContext", "__toCommonJS", "import_jsx_runtime", "import_react", "user_id", "children", "profile", "removeProfile", "isLoadingProfile", "openSignInPopup", "openSignUpPopup", "taskIdToTypeMapping", "creditInfo", "customer", "customerLoading", "fetchCreditInfo", "gtm", "pageCommon", "memberPriceDiscount", "alpcBrand", "cartConfig", "context"]
7
7
  }
@@ -1,8 +1,8 @@
1
1
  import { FunctionMemberPriceConfig, FunctionMemberPriceResult } from '../memberPriceTypes';
2
- import { ProductVariant } from '@anker-in/lib';
2
+ import { NormalizedProductVariant } from '@anker-in/shopify-react';
3
3
  export declare const getFunctionMemberPrice: ({ memberPriceDiscount, currencyCode, variant, locale, }: {
4
4
  memberPriceDiscount?: FunctionMemberPriceConfig[];
5
5
  currencyCode?: string;
6
- variant?: ProductVariant;
6
+ variant?: NormalizedProductVariant;
7
7
  locale: string;
8
8
  }) => false | FunctionMemberPriceResult;