@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,120 @@
1
+ /**
2
+ * 聊天状态管理 Hook
3
+ * 管理消息列表、窗口状态、输入框状态、流式消息累积
4
+ * 基于 specs/livechat-widget/plan.md 的状态管理策略
5
+ */
6
+ import type { Message, SSEEvent } from '../types';
7
+ export interface UseChatStateOptions {
8
+ /**
9
+ * 初始欢迎消息
10
+ */
11
+ welcomeMessage?: string;
12
+ /**
13
+ * Shopify 店铺域名
14
+ */
15
+ site?: string;
16
+ /**
17
+ * 窗口打开回调
18
+ */
19
+ onOpen?: () => void;
20
+ /**
21
+ * 窗口关闭回调
22
+ */
23
+ onClose?: () => void;
24
+ /**
25
+ * 消息发送回调
26
+ */
27
+ onMessageSend?: (message: string) => void;
28
+ /**
29
+ * 错误处理回调
30
+ */
31
+ onError?: (error: Error) => void;
32
+ /**
33
+ * 商品添加到购物车回调
34
+ */
35
+ onAddToCart?: (product: any) => void;
36
+ /**
37
+ * 购物车按钮点击回调
38
+ */
39
+ onCart?: (cartId: string, checkoutUrl?: string) => void;
40
+ }
41
+ export interface UseChatStateReturn {
42
+ /**
43
+ * 消息列表
44
+ */
45
+ messages: Message[];
46
+ /**
47
+ * 聊天窗口是否打开
48
+ */
49
+ isOpen: boolean;
50
+ /**
51
+ * 用户 ID
52
+ */
53
+ userId: string;
54
+ /**
55
+ * 会话 ID
56
+ */
57
+ sessionId: string | null;
58
+ /**
59
+ * 输入框内容
60
+ */
61
+ inputValue: string;
62
+ /**
63
+ * 是否正在接收流式消息
64
+ */
65
+ isStreaming: boolean;
66
+ /**
67
+ * 打开聊天窗口
68
+ */
69
+ openChat: () => void;
70
+ /**
71
+ * 关闭聊天窗口
72
+ */
73
+ closeChat: () => void;
74
+ /**
75
+ * 切换聊天窗口状态
76
+ */
77
+ toggleChat: () => void;
78
+ /**
79
+ * 设置输入框内容
80
+ */
81
+ setInputValue: (value: string) => void;
82
+ /**
83
+ * 添加消息到列表
84
+ */
85
+ addMessage: (message: Message) => void;
86
+ /**
87
+ * 批量设置消息列表(用于加载历史)
88
+ */
89
+ setMessages: (messages: Message[]) => void;
90
+ /**
91
+ * 清空消息列表
92
+ */
93
+ clearMessages: () => void;
94
+ /**
95
+ * 处理 SSE 事件
96
+ */
97
+ handleSSEEvent: (event: SSEEvent) => void;
98
+ /**
99
+ * 保存会话 ID
100
+ */
101
+ saveSession: (id: string) => void;
102
+ /**
103
+ * 清空会话
104
+ */
105
+ clearSession: () => void;
106
+ }
107
+ /**
108
+ * 聊天状态管理 Hook
109
+ *
110
+ * 功能:
111
+ * 1. 管理消息列表(添加、清空、批量设置)
112
+ * 2. 管理窗口状态(打开、关闭、切换)
113
+ * 3. 管理输入框状态
114
+ * 4. 处理 SSE 流式消息事件
115
+ * 5. 累积流式文本内容
116
+ *
117
+ * @param options Hook 配置选项
118
+ * @returns 状态管理工具对象
119
+ */
120
+ export declare function useChatState(options?: UseChatStateOptions): UseChatStateReturn;
@@ -0,0 +1,2 @@
1
+ import{useState as f,useCallback as c,useRef as G,useEffect as H}from"react";import{getUserId as J}from"../utils/userId";import{useSession as K}from"./useSession";import{transformProducts as w}from"../utils/productTransformers";import{transformCartData as L}from"../utils/cartTransformers";function ee(T={}){const{welcomeMessage:l,site:y,onOpen:m,onClose:C,onMessageSend:N,onError:_,onAddToCart:E,onCart:b}=T,{sessionId:h,saveSession:v,clearSession:D}=K(),[O,U]=f("");H(()=>{J().then(r=>U(r))},[]);const[A,d]=f(()=>l?[{id:`welcome-${Date.now()}`,role:"assistant",content:[{type:"text",text:l}],timestamp:Date.now()}]:[]),[P,k]=f(!1),[q,R]=f(""),[V,S]=f(!1),t=G(null),$=c(()=>{k(!0),m?.()},[m]),B=c(()=>{k(!1),C?.()},[C]),j=c(()=>{k(r=>{const u=!r;return u?m?.():C?.(),u})},[m,C]),M=c(r=>{d(u=>[...u,r])},[]),z=c(r=>{d(r)},[]),x=c(()=>{d([])},[]),F=c(r=>{const{event:u,data:p}=r;switch(u){case"message_start":{S(!0);const s=p;s.sessionId&&s.sessionId!==h&&v(s.sessionId);const n=`msg-${Date.now()}`;t.current={id:n,role:"assistant",content:[{type:"thinking",data:{status:"thinking"}}],timestamp:Date.now()},d(e=>[...e,t.current]);break}case"content_delta":{const s=p,n=s.delta||s.text||"";if(t.current&&n){t.current.content.some(o=>o.type==="thinking")&&(t.current.content=t.current.content.filter(o=>o.type!=="thinking"));const a=t.current.content[t.current.content.length-1];a&&a.type==="text"?a.text+=n:t.current.content.push({type:"text",text:n}),d(o=>{const i=[...o],g=i.findIndex(I=>I.id===t.current.id);return g>=0?i[g]={...t.current}:i.push({...t.current}),i})}break}case"content_block":{const s=p;if(t.current){const n=s.type||s.data?.type,e=s.data;if(!n||!e){console.warn("[useChatState] Invalid content_block:",s);break}let a;n==="product_list"&&Array.isArray(e)?a={type:"product_list",data:{products:w(e,y),title:void 0,onAddToCart:E}}:n==="product_comparison"&&e.products?a={type:"product_comparison",data:{products:w(e.products,y),dimensions:e.dimensions||{}}}:n==="faq_list"&&e.found!==void 0?a={type:"faq_list",data:e}:n==="quick_replies"&&e.replies?a={type:"quick_replies",data:{replies:e.replies}}:n==="policy"&&e.title&&e.content?a={type:"policy",data:{title:e.title,content:e.content}}:n==="promotion_list"&&e.found!==void 0?a={type:"promotion_list",data:e}:n==="cart"&&e.id!==void 0?a={type:"cart",data:{...L(e),onCart:b}}:a={type:n,data:e},t.current.content.push(a),d(o=>{const i=[...o],g=i.findIndex(I=>I.id===t.current.id);return g>=0?i[g]={...t.current}:i.push({...t.current}),i})}break}case"tool_start":case"tool_end":break;case"message_end":{S(!1),t.current=null;break}case"status":{p.type==="session_expired"&&(x(),D(),l&&M({id:`welcome-${Date.now()}`,role:"assistant",content:[{type:"text",text:l}],timestamp:Date.now()}));break}case"error":{const s=p;S(!1),t.current=null,M({id:`error-${Date.now()}`,role:"system",content:[{type:"error",data:{message:s.message,code:s.code}}],timestamp:Date.now()}),_?.(new Error(s.message));break}case"done":{S(!1),t.current=null;break}default:break}},[l,y,M,x,D,v,h,_,E,b]);return{messages:A,isOpen:P,userId:O,sessionId:h,inputValue:q,isStreaming:V,openChat:$,closeChat:B,toggleChat:j,setInputValue:R,addMessage:M,setMessages:z,clearMessages:x,handleSSEEvent:F,saveSession:v,clearSession:D}}export{ee as useChatState};
2
+ //# sourceMappingURL=useChatState.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../../src/components/LiveChatWidget/hooks/useChatState.ts"],
4
+ "sourcesContent": ["/**\n * \u804A\u5929\u72B6\u6001\u7BA1\u7406 Hook\n * \u7BA1\u7406\u6D88\u606F\u5217\u8868\u3001\u7A97\u53E3\u72B6\u6001\u3001\u8F93\u5165\u6846\u72B6\u6001\u3001\u6D41\u5F0F\u6D88\u606F\u7D2F\u79EF\n * \u57FA\u4E8E specs/livechat-widget/plan.md \u7684\u72B6\u6001\u7BA1\u7406\u7B56\u7565\n */\n\nimport { useState, useCallback, useRef, useEffect } from 'react'\nimport type { Message, MessageContent, SSEEvent, StatusData, ErrorData, MessageStartData, BackendCartData } from '../types'\nimport { getUserId } from '../utils/userId'\nimport { useSession } from './useSession'\nimport { transformProducts } from '../utils/productTransformers'\nimport { transformCartData } from '../utils/cartTransformers'\n\nexport interface UseChatStateOptions {\n /**\n * \u521D\u59CB\u6B22\u8FCE\u6D88\u606F\n */\n welcomeMessage?: string\n\n /**\n * Shopify \u5E97\u94FA\u57DF\u540D\n */\n site?: string\n\n /**\n * \u7A97\u53E3\u6253\u5F00\u56DE\u8C03\n */\n onOpen?: () => void\n\n /**\n * \u7A97\u53E3\u5173\u95ED\u56DE\u8C03\n */\n onClose?: () => void\n\n /**\n * \u6D88\u606F\u53D1\u9001\u56DE\u8C03\n */\n onMessageSend?: (message: string) => void\n\n /**\n * \u9519\u8BEF\u5904\u7406\u56DE\u8C03\n */\n onError?: (error: Error) => void\n\n /**\n * \u5546\u54C1\u6DFB\u52A0\u5230\u8D2D\u7269\u8F66\u56DE\u8C03\n */\n onAddToCart?: (product: any) => void\n\n /**\n * \u8D2D\u7269\u8F66\u6309\u94AE\u70B9\u51FB\u56DE\u8C03\n */\n onCart?: (cartId: string, checkoutUrl?: string) => void\n}\n\nexport interface UseChatStateReturn {\n /**\n * \u6D88\u606F\u5217\u8868\n */\n messages: Message[]\n\n /**\n * \u804A\u5929\u7A97\u53E3\u662F\u5426\u6253\u5F00\n */\n isOpen: boolean\n\n /**\n * \u7528\u6237 ID\n */\n userId: string\n\n /**\n * \u4F1A\u8BDD ID\n */\n sessionId: string | null\n\n /**\n * \u8F93\u5165\u6846\u5185\u5BB9\n */\n inputValue: string\n\n /**\n * \u662F\u5426\u6B63\u5728\u63A5\u6536\u6D41\u5F0F\u6D88\u606F\n */\n isStreaming: boolean\n\n /**\n * \u6253\u5F00\u804A\u5929\u7A97\u53E3\n */\n openChat: () => void\n\n /**\n * \u5173\u95ED\u804A\u5929\u7A97\u53E3\n */\n closeChat: () => void\n\n /**\n * \u5207\u6362\u804A\u5929\u7A97\u53E3\u72B6\u6001\n */\n toggleChat: () => void\n\n /**\n * \u8BBE\u7F6E\u8F93\u5165\u6846\u5185\u5BB9\n */\n setInputValue: (value: string) => void\n\n /**\n * \u6DFB\u52A0\u6D88\u606F\u5230\u5217\u8868\n */\n addMessage: (message: Message) => void\n\n /**\n * \u6279\u91CF\u8BBE\u7F6E\u6D88\u606F\u5217\u8868\uFF08\u7528\u4E8E\u52A0\u8F7D\u5386\u53F2\uFF09\n */\n setMessages: (messages: Message[]) => void\n\n /**\n * \u6E05\u7A7A\u6D88\u606F\u5217\u8868\n */\n clearMessages: () => void\n\n /**\n * \u5904\u7406 SSE \u4E8B\u4EF6\n */\n handleSSEEvent: (event: SSEEvent) => void\n\n /**\n * \u4FDD\u5B58\u4F1A\u8BDD ID\n */\n saveSession: (id: string) => void\n\n /**\n * \u6E05\u7A7A\u4F1A\u8BDD\n */\n clearSession: () => void\n}\n\n/**\n * \u804A\u5929\u72B6\u6001\u7BA1\u7406 Hook\n *\n * \u529F\u80FD\uFF1A\n * 1. \u7BA1\u7406\u6D88\u606F\u5217\u8868\uFF08\u6DFB\u52A0\u3001\u6E05\u7A7A\u3001\u6279\u91CF\u8BBE\u7F6E\uFF09\n * 2. \u7BA1\u7406\u7A97\u53E3\u72B6\u6001\uFF08\u6253\u5F00\u3001\u5173\u95ED\u3001\u5207\u6362\uFF09\n * 3. \u7BA1\u7406\u8F93\u5165\u6846\u72B6\u6001\n * 4. \u5904\u7406 SSE \u6D41\u5F0F\u6D88\u606F\u4E8B\u4EF6\n * 5. \u7D2F\u79EF\u6D41\u5F0F\u6587\u672C\u5185\u5BB9\n *\n * @param options Hook \u914D\u7F6E\u9009\u9879\n * @returns \u72B6\u6001\u7BA1\u7406\u5DE5\u5177\u5BF9\u8C61\n */\nexport function useChatState(options: UseChatStateOptions = {}): UseChatStateReturn {\n const { welcomeMessage, site, onOpen, onClose, onMessageSend, onError, onAddToCart, onCart } = options\n\n // \u4F1A\u8BDD\u7BA1\u7406\n const { sessionId, saveSession, clearSession } = useSession()\n\n // \u7528\u6237 ID (\u521D\u59CB\u5316\u65F6\u5F02\u6B65\u751F\u6210)\n const [userId, setUserId] = useState<string>('')\n\n // \u521D\u59CB\u5316 userId\n useEffect(() => {\n getUserId().then(id => setUserId(id))\n }, [])\n\n // \u6D88\u606F\u5217\u8868\n const [messages, setMessagesState] = useState<Message[]>(() => {\n // \u5982\u679C\u6709\u6B22\u8FCE\u6D88\u606F\uFF0C\u521D\u59CB\u5316\u65F6\u6DFB\u52A0\n if (welcomeMessage) {\n return [\n {\n id: `welcome-${Date.now()}`,\n role: 'assistant',\n content: [{ type: 'text', text: welcomeMessage }],\n timestamp: Date.now(),\n },\n ]\n }\n return []\n })\n\n // \u804A\u5929\u7A97\u53E3\u662F\u5426\u6253\u5F00\n const [isOpen, setIsOpen] = useState(false)\n\n // \u8F93\u5165\u6846\u5185\u5BB9\n const [inputValue, setInputValue] = useState('')\n\n // \u662F\u5426\u6B63\u5728\u63A5\u6536\u6D41\u5F0F\u6D88\u606F\n const [isStreaming, setIsStreaming] = useState(false)\n\n // \u5F53\u524D\u6B63\u5728\u7D2F\u79EF\u7684\u6D41\u5F0F\u6D88\u606F (\u4E34\u65F6\u5B58\u50A8)\n const currentMessageRef = useRef<Message | null>(null)\n\n /**\n * \u6253\u5F00\u804A\u5929\u7A97\u53E3\n */\n const openChat = useCallback(() => {\n setIsOpen(true)\n onOpen?.()\n }, [onOpen])\n\n /**\n * \u5173\u95ED\u804A\u5929\u7A97\u53E3\n */\n const closeChat = useCallback(() => {\n setIsOpen(false)\n onClose?.()\n }, [onClose])\n\n /**\n * \u5207\u6362\u804A\u5929\u7A97\u53E3\u72B6\u6001\n */\n const toggleChat = useCallback(() => {\n setIsOpen(prev => {\n const newState = !prev\n if (newState) {\n onOpen?.()\n } else {\n onClose?.()\n }\n return newState\n })\n }, [onOpen, onClose])\n\n /**\n * \u6DFB\u52A0\u6D88\u606F\u5230\u5217\u8868\n */\n const addMessage = useCallback((message: Message) => {\n setMessagesState(prev => [...prev, message])\n }, [])\n\n /**\n * \u6279\u91CF\u8BBE\u7F6E\u6D88\u606F\u5217\u8868\uFF08\u7528\u4E8E\u52A0\u8F7D\u5386\u53F2\uFF09\n */\n const setMessages = useCallback((newMessages: Message[]) => {\n setMessagesState(newMessages)\n }, [])\n\n /**\n * \u6E05\u7A7A\u6D88\u606F\u5217\u8868\n */\n const clearMessages = useCallback(() => {\n setMessagesState([])\n }, [])\n\n /**\n * \u5904\u7406 SSE \u4E8B\u4EF6\n * \u6839\u636E\u4E8B\u4EF6\u7C7B\u578B\u8FDB\u884C\u4E0D\u540C\u7684\u5904\u7406\n */\n const handleSSEEvent = useCallback(\n (event: SSEEvent) => {\n const { event: eventType, data } = event\n\n switch (eventType) {\n case 'message_start': {\n // \u5F00\u59CB\u63A5\u6536\u65B0\u6D88\u606F\uFF0C\u663E\u793A\u601D\u8003\u6C14\u6CE1\n setIsStreaming(true)\n\n // T039: \u4FDD\u5B58 sessionId\uFF08\u5982\u679C\u540E\u7AEF\u8FD4\u56DE\uFF09\n const messageStartData = data as MessageStartData\n if (messageStartData.sessionId && messageStartData.sessionId !== sessionId) {\n saveSession(messageStartData.sessionId)\n }\n\n const messageId = `msg-${Date.now()}`\n currentMessageRef.current = {\n id: messageId,\n role: 'assistant',\n content: [{ type: 'thinking', data: { status: 'thinking' } }], // \u6DFB\u52A0\u601D\u8003\u72B6\u6001\n timestamp: Date.now(),\n }\n\n // \u7ACB\u5373\u6DFB\u52A0\u5230\u6D88\u606F\u5217\u8868\u4EE5\u663E\u793A\u601D\u8003\u52A8\u753B\n setMessagesState(prev => [...prev, currentMessageRef.current!])\n break\n }\n\n case 'content_delta': {\n // \u7D2F\u79EF\u6D41\u5F0F\u6587\u672C\u5185\u5BB9\n // \u5B9E\u9645 API \u8FD4\u56DE\u7684\u662F {index: 0, delta: \"\u6587\u672C\"} \u800C\u4E0D\u662F {text: \"\u6587\u672C\"}\n const deltaData = data as any\n const deltaText = deltaData.delta || deltaData.text || ''\n\n if (currentMessageRef.current && deltaText) {\n // \u79FB\u9664\u601D\u8003\u6C14\u6CE1\uFF08\u5982\u679C\u5B58\u5728\uFF09\n const hasThinking = currentMessageRef.current.content.some(c => c.type === 'thinking')\n if (hasThinking) {\n currentMessageRef.current.content = currentMessageRef.current.content.filter(c => c.type !== 'thinking')\n }\n\n const lastContent = currentMessageRef.current.content[currentMessageRef.current.content.length - 1] as\n | MessageContent\n | undefined\n\n if (lastContent && lastContent.type === 'text') {\n // \u8FFD\u52A0\u5230\u73B0\u6709\u6587\u672C\u5757\n lastContent.text += deltaText\n } else {\n // \u521B\u5EFA\u65B0\u6587\u672C\u5757\n currentMessageRef.current.content.push({\n type: 'text',\n text: deltaText,\n })\n }\n\n // \u66F4\u65B0\u6D88\u606F\u5217\u8868\u4EE5\u89E6\u53D1\u6E32\u67D3\n setMessagesState(prev => {\n const updated = [...prev]\n const existingIndex = updated.findIndex(m => m.id === currentMessageRef.current!.id)\n\n if (existingIndex >= 0) {\n updated[existingIndex] = { ...currentMessageRef.current! }\n } else {\n updated.push({ ...currentMessageRef.current! })\n }\n\n return updated\n })\n }\n break\n }\n\n case 'content_block': {\n // \u63A5\u6536\u7ED3\u6784\u5316\u5185\u5BB9\u5757\uFF08\u5546\u54C1\u3001\u653F\u7B56\u7B49\uFF09\n // API \u8FD4\u56DE\u683C\u5F0F\u53D8\u66F4:\n // \u65B0\u683C\u5F0F: {index: number, type: string, data: {...}} <- type \u5728\u5916\u5C42\n // \u65E7\u683C\u5F0F: {index: number, data: {type: string, ...}} <- type \u5728 data \u5185\n const blockData = data as any\n if (currentMessageRef.current) {\n // \u83B7\u53D6 type \u548C data\n // \u4F18\u5148\u4ECE\u5916\u5C42\u83B7\u53D6 type\uFF0C\u517C\u5BB9\u65E7\u683C\u5F0F\u4ECE data \u5185\u83B7\u53D6\n const contentType = blockData.type || blockData.data?.type\n const contentData = blockData.data\n\n if (!contentType || !contentData) {\n console.warn('[useChatState] Invalid content_block:', blockData)\n break\n }\n\n // ============================================================\n // \u8F6C\u6362\u6570\u636E\u7ED3\u6784\u4EE5\u5339\u914D\u7C7B\u578B\u5B9A\u4E49\n // \u6839\u636E\u540E\u7AEF\u6570\u636E\u7ED3\u6784\u89C4\u8303\uFF08\u98DE\u4E66\u6587\u6863\uFF09\u8FDB\u884C\u8F6C\u6362\n // ============================================================\n let messageContent: MessageContent\n\n // ========== 1. \u4EA7\u54C1\u5217\u8868\u5361\u7247 (Product List) ==========\n // \u540E\u7AEF\u683C\u5F0F: {type: \"product_list\", data: [product1, product2, ...]}\n // data \u76F4\u63A5\u662F\u4EA7\u54C1\u6570\u7EC4\uFF0C\u4E0D\u662F {products: [...]}\n if (contentType === 'product_list' && Array.isArray(contentData)) {\n // \u4F7F\u7528\u7EDF\u4E00\u7684\u4EA7\u54C1\u8F6C\u6362\u5DE5\u5177\u51FD\u6570\n const transformedProducts = transformProducts(contentData, site)\n\n messageContent = {\n type: 'product_list',\n data: {\n products: transformedProducts,\n title: undefined, // \u540E\u7AEF\u65B0\u89C4\u8303\u4E0D\u8FD4\u56DE title\n onAddToCart: onAddToCart, // \u6CE8\u5165\u8D2D\u7269\u8F66\u56DE\u8C03\n },\n } as MessageContent\n }\n // ========== 2. \u4EA7\u54C1\u5BF9\u6BD4\u5361\u7247 (Product Comparison) ==========\n // \u540E\u7AEF\u683C\u5F0F: {type: \"product_comparison\", data: {products: [...], dimensions: {...}}}\n else if (contentType === 'product_comparison' && contentData.products) {\n // \u4F7F\u7528\u7EDF\u4E00\u7684\u4EA7\u54C1\u8F6C\u6362\u5DE5\u5177\u51FD\u6570\n const transformedProducts = transformProducts(contentData.products, site)\n\n messageContent = {\n type: 'product_comparison',\n data: {\n products: transformedProducts,\n dimensions: contentData.dimensions || {},\n },\n } as MessageContent\n }\n // ========== 3. FAQ \u5217\u8868\u5361\u7247 (FAQ List) ==========\n // \u540E\u7AEF\u683C\u5F0F: {type: \"faq_list\", data: {found, count, total, results: [...]}}\n else if (contentType === 'faq_list' && contentData.found !== undefined) {\n messageContent = {\n type: 'faq_list',\n data: contentData, // \u76F4\u63A5\u4F7F\u7528\uFF0C\u7ED3\u6784\u5DF2\u5339\u914D\n } as MessageContent\n }\n // ========== 4. \u5FEB\u6377\u56DE\u590D (Quick Replies) ==========\n else if (contentType === 'quick_replies' && contentData.replies) {\n messageContent = {\n type: 'quick_replies',\n data: {\n replies: contentData.replies,\n },\n } as MessageContent\n }\n // ========== 5. \u653F\u7B56\u5185\u5BB9 (Policy) ==========\n else if (contentType === 'policy' && contentData.title && contentData.content) {\n messageContent = {\n type: 'policy',\n data: {\n title: contentData.title,\n content: contentData.content,\n },\n } as MessageContent\n }\n // ========== 6. \u4FC3\u9500\u6D3B\u52A8\u5217\u8868 (Promotion List) ==========\n // \u540E\u7AEF\u683C\u5F0F: {type: \"promotion_list\", data: {found, count, total, results: [...]}}\n else if (contentType === 'promotion_list' && contentData.found !== undefined) {\n messageContent = {\n type: 'promotion_list',\n data: contentData, // \u76F4\u63A5\u4F7F\u7528\uFF0C\u7ED3\u6784\u5DF2\u5339\u914D\n } as MessageContent\n }\n // ========== 7. \u8D2D\u7269\u8F66 (Cart) ==========\n // \u540E\u7AEF\u683C\u5F0F: {type: \"cart\", data: {id, lines: {edges: [...]}, cost, ...}} (Shopify GraphQL)\n // \u9700\u8981\u8F6C\u6362\u4E3A\u524D\u7AEF\u683C\u5F0F: {cartId, lines: [...], cost, ...}\n else if (contentType === 'cart' && contentData.id !== undefined) {\n // \u8F6C\u6362\u540E\u7AEF Shopify GraphQL \u683C\u5F0F\u4E3A\u524D\u7AEF\u6807\u51C6\u683C\u5F0F\n const transformedData = transformCartData(contentData as BackendCartData)\n messageContent = {\n type: 'cart',\n data: {\n ...transformedData,\n onCart: onCart, // \u6CE8\u5165\u8D2D\u7269\u8F66\u6309\u94AE\u56DE\u8C03\n },\n } as MessageContent\n }\n // ========== 8. \u5176\u4ED6\u7C7B\u578B\uFF08\u901A\u7528\u5904\u7406\uFF09 ==========\n else {\n messageContent = {\n type: contentType,\n data: contentData,\n } as MessageContent\n }\n\n currentMessageRef.current.content.push(messageContent)\n\n setMessagesState(prev => {\n const updated = [...prev]\n const existingIndex = updated.findIndex(m => m.id === currentMessageRef.current!.id)\n\n if (existingIndex >= 0) {\n updated[existingIndex] = { ...currentMessageRef.current! }\n } else {\n updated.push({ ...currentMessageRef.current! })\n }\n\n return updated\n })\n }\n break\n }\n\n case 'tool_start':\n case 'tool_end': {\n // \u5DE5\u5177\u8C03\u7528\u4E8B\u4EF6\uFF0C\u6682\u65F6\u5FFD\u7565\n // \u53EF\u4EE5\u5728\u672A\u6765\u7528\u4E8E\u663E\u793A\u5DE5\u5177\u8C03\u7528\u72B6\u6001\n break\n }\n\n case 'message_end': {\n // \u6D88\u606F\u63A5\u6536\u5B8C\u6210\n setIsStreaming(false)\n currentMessageRef.current = null\n break\n }\n\n case 'status': {\n // T040: \u72B6\u6001\u66F4\u65B0\uFF08\u5982\u4F1A\u8BDD\u8FC7\u671F\uFF09\n const statusData = data as StatusData\n if (statusData.type === 'session_expired') {\n // \u4F1A\u8BDD\u8FC7\u671F\uFF0C\u6E05\u7A7A\u6D88\u606F\u5217\u8868\u548C\u4F1A\u8BDD\n clearMessages()\n clearSession()\n if (welcomeMessage) {\n addMessage({\n id: `welcome-${Date.now()}`,\n role: 'assistant',\n content: [{ type: 'text', text: welcomeMessage }],\n timestamp: Date.now(),\n })\n }\n }\n break\n }\n\n case 'error': {\n // \u9519\u8BEF\u5904\u7406\n const errorData = data as ErrorData\n setIsStreaming(false)\n currentMessageRef.current = null\n\n // \u6DFB\u52A0\u9519\u8BEF\u6D88\u606F\u5230\u754C\u9762\n addMessage({\n id: `error-${Date.now()}`,\n role: 'system',\n content: [\n {\n type: 'error',\n data: {\n message: errorData.message,\n code: errorData.code,\n },\n },\n ],\n timestamp: Date.now(),\n })\n\n onError?.(new Error(errorData.message))\n break\n }\n\n case 'done': {\n // \u6D41\u7ED3\u675F\n setIsStreaming(false)\n currentMessageRef.current = null\n break\n }\n\n default:\n // \u5176\u4ED6\u4E8B\u4EF6\u7C7B\u578B\uFF08tool_start, tool_end \u7B49\uFF09\n break\n }\n },\n [welcomeMessage, site, addMessage, clearMessages, clearSession, saveSession, sessionId, onError, onAddToCart, onCart]\n )\n\n return {\n messages,\n isOpen,\n userId,\n sessionId,\n inputValue,\n isStreaming,\n openChat,\n closeChat,\n toggleChat,\n setInputValue,\n addMessage,\n setMessages,\n clearMessages,\n handleSSEEvent,\n saveSession,\n clearSession,\n }\n}\n"],
5
+ "mappings": "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",
6
+ "names": ["useState", "useCallback", "useRef", "useEffect", "getUserId", "useSession", "transformProducts", "transformCartData", "useChatState", "options", "welcomeMessage", "site", "onOpen", "onClose", "onMessageSend", "onError", "onAddToCart", "onCart", "sessionId", "saveSession", "clearSession", "userId", "setUserId", "id", "messages", "setMessagesState", "isOpen", "setIsOpen", "inputValue", "setInputValue", "isStreaming", "setIsStreaming", "currentMessageRef", "openChat", "closeChat", "toggleChat", "prev", "newState", "addMessage", "message", "setMessages", "newMessages", "clearMessages", "handleSSEEvent", "event", "eventType", "data", "messageStartData", "messageId", "deltaData", "deltaText", "c", "lastContent", "updated", "existingIndex", "m", "blockData", "contentType", "contentData", "messageContent", "errorData"]
7
+ }
@@ -0,0 +1,37 @@
1
+ /**
2
+ * 会话管理 Hook
3
+ * 负责 sessionId 的持久化和生命周期管理
4
+ * 基于 specs/livechat-widget/plan.md 的会话管理策略
5
+ */
6
+ export interface UseSessionReturn {
7
+ /**
8
+ * 当前会话 ID
9
+ */
10
+ sessionId: string | null;
11
+ /**
12
+ * 保存会话 ID 到 localStorage 和状态
13
+ * @param id 会话 ID (UUID 格式)
14
+ */
15
+ saveSession: (id: string) => void;
16
+ /**
17
+ * 清空会话 ID (会话过期或新会话)
18
+ */
19
+ clearSession: () => void;
20
+ /**
21
+ * 检查是否有活动会话
22
+ */
23
+ hasSession: boolean;
24
+ }
25
+ /**
26
+ * 会话管理 Hook
27
+ *
28
+ * 会话管理策略:
29
+ * 1. 首次对话: 不传 session_id,后端从 message_start 事件返回
30
+ * 2. 存储位置: localStorage.livechat_session_id
31
+ * 3. 会话恢复: 打开聊天窗口时自动加载历史消息
32
+ * 4. 会话过期: 监听 status 事件 (type: "session_expired"),清空消息列表和 sessionId
33
+ * 5. 新会话按钮: 调用 POST /api/chat/new-session,更新 sessionId
34
+ *
35
+ * @returns 会话管理工具对象
36
+ */
37
+ export declare function useSession(): UseSessionReturn;
@@ -0,0 +1,2 @@
1
+ import{useState as l,useCallback as t,useEffect as u}from"react";const s="livechat_session_id";function S(){const[r,n]=l(()=>{if(typeof window>"u")return null;try{return localStorage.getItem(s)}catch(e){return console.error("[useSession] Failed to read from localStorage:",e),null}}),i=t(e=>{if(!e||typeof e!="string"){console.warn("[useSession] Invalid session ID:",e);return}if(n(e),typeof window<"u")try{localStorage.setItem(s,e)}catch(o){console.error("[useSession] Failed to save to localStorage:",o)}},[]),a=t(()=>{if(n(null),typeof window<"u")try{localStorage.removeItem(s)}catch(e){console.error("[useSession] Failed to remove from localStorage:",e)}},[]);return u(()=>{if(typeof window>"u")return;const e=o=>{o.key===s&&n(o.newValue)};return window.addEventListener("storage",e),()=>{window.removeEventListener("storage",e)}},[]),{sessionId:r,saveSession:i,clearSession:a,hasSession:r!==null}}export{S as useSession};
2
+ //# sourceMappingURL=useSession.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../../src/components/LiveChatWidget/hooks/useSession.ts"],
4
+ "sourcesContent": ["/**\n * \u4F1A\u8BDD\u7BA1\u7406 Hook\n * \u8D1F\u8D23 sessionId \u7684\u6301\u4E45\u5316\u548C\u751F\u547D\u5468\u671F\u7BA1\u7406\n * \u57FA\u4E8E specs/livechat-widget/plan.md \u7684\u4F1A\u8BDD\u7BA1\u7406\u7B56\u7565\n */\n\nimport { useState, useCallback, useEffect } from 'react'\n\nconst SESSION_KEY = 'livechat_session_id'\n\nexport interface UseSessionReturn {\n /**\n * \u5F53\u524D\u4F1A\u8BDD ID\n */\n sessionId: string | null\n\n /**\n * \u4FDD\u5B58\u4F1A\u8BDD ID \u5230 localStorage \u548C\u72B6\u6001\n * @param id \u4F1A\u8BDD ID (UUID \u683C\u5F0F)\n */\n saveSession: (id: string) => void\n\n /**\n * \u6E05\u7A7A\u4F1A\u8BDD ID (\u4F1A\u8BDD\u8FC7\u671F\u6216\u65B0\u4F1A\u8BDD)\n */\n clearSession: () => void\n\n /**\n * \u68C0\u67E5\u662F\u5426\u6709\u6D3B\u52A8\u4F1A\u8BDD\n */\n hasSession: boolean\n}\n\n/**\n * \u4F1A\u8BDD\u7BA1\u7406 Hook\n *\n * \u4F1A\u8BDD\u7BA1\u7406\u7B56\u7565\uFF1A\n * 1. \u9996\u6B21\u5BF9\u8BDD: \u4E0D\u4F20 session_id,\u540E\u7AEF\u4ECE message_start \u4E8B\u4EF6\u8FD4\u56DE\n * 2. \u5B58\u50A8\u4F4D\u7F6E: localStorage.livechat_session_id\n * 3. \u4F1A\u8BDD\u6062\u590D: \u6253\u5F00\u804A\u5929\u7A97\u53E3\u65F6\u81EA\u52A8\u52A0\u8F7D\u5386\u53F2\u6D88\u606F\n * 4. \u4F1A\u8BDD\u8FC7\u671F: \u76D1\u542C status \u4E8B\u4EF6 (type: \"session_expired\"),\u6E05\u7A7A\u6D88\u606F\u5217\u8868\u548C sessionId\n * 5. \u65B0\u4F1A\u8BDD\u6309\u94AE: \u8C03\u7528 POST /api/chat/new-session,\u66F4\u65B0 sessionId\n *\n * @returns \u4F1A\u8BDD\u7BA1\u7406\u5DE5\u5177\u5BF9\u8C61\n */\nexport function useSession(): UseSessionReturn {\n // \u4ECE localStorage \u521D\u59CB\u5316\u4F1A\u8BDD ID\n const [sessionId, setSessionId] = useState<string | null>(() => {\n if (typeof window === 'undefined') return null\n\n try {\n return localStorage.getItem(SESSION_KEY)\n } catch (error) {\n console.error('[useSession] Failed to read from localStorage:', error)\n return null\n }\n })\n\n /**\n * \u4FDD\u5B58\u4F1A\u8BDD ID\n * \u540C\u65F6\u66F4\u65B0\u72B6\u6001\u548C localStorage\n */\n const saveSession = useCallback((id: string) => {\n if (!id || typeof id !== 'string') {\n console.warn('[useSession] Invalid session ID:', id)\n return\n }\n\n setSessionId(id)\n\n if (typeof window !== 'undefined') {\n try {\n localStorage.setItem(SESSION_KEY, id)\n } catch (error) {\n console.error('[useSession] Failed to save to localStorage:', error)\n }\n }\n }, [])\n\n /**\n * \u6E05\u7A7A\u4F1A\u8BDD ID\n * \u7528\u4E8E\u4F1A\u8BDD\u8FC7\u671F\u6216\u5F00\u59CB\u65B0\u4F1A\u8BDD\n */\n const clearSession = useCallback(() => {\n setSessionId(null)\n\n if (typeof window !== 'undefined') {\n try {\n localStorage.removeItem(SESSION_KEY)\n } catch (error) {\n console.error('[useSession] Failed to remove from localStorage:', error)\n }\n }\n }, [])\n\n /**\n * \u76D1\u542C localStorage \u53D8\u5316\uFF08\u8DE8\u6807\u7B7E\u9875\u540C\u6B65\uFF09\n * \u6CE8\u610F\uFF1A\u6839\u636E\u8BA1\u5212\u6587\u6863\uFF0C\u591A\u6807\u7B7E\u9875\u4E0D\u652F\u6301\u5B9E\u65F6\u540C\u6B65\n * \u8FD9\u91CC\u4EC5\u76D1\u542C\u662F\u4E3A\u4E86\u9632\u6B62\u540C\u4E00\u6D4F\u89C8\u5668\u591A\u6807\u7B7E\u9875\u5BFC\u81F4\u7684\u72B6\u6001\u4E0D\u4E00\u81F4\n */\n useEffect(() => {\n if (typeof window === 'undefined') return\n\n const handleStorageChange = (event: StorageEvent) => {\n if (event.key === SESSION_KEY) {\n setSessionId(event.newValue)\n }\n }\n\n window.addEventListener('storage', handleStorageChange)\n\n return () => {\n window.removeEventListener('storage', handleStorageChange)\n }\n }, [])\n\n return {\n sessionId,\n saveSession,\n clearSession,\n hasSession: sessionId !== null,\n }\n}\n"],
5
+ "mappings": "AAMA,OAAS,YAAAA,EAAU,eAAAC,EAAa,aAAAC,MAAiB,QAEjD,MAAMC,EAAc,sBAqCb,SAASC,GAA+B,CAE7C,KAAM,CAACC,EAAWC,CAAY,EAAIN,EAAwB,IAAM,CAC9D,GAAI,OAAO,OAAW,IAAa,OAAO,KAE1C,GAAI,CACF,OAAO,aAAa,QAAQG,CAAW,CACzC,OAASI,EAAO,CACd,eAAQ,MAAM,iDAAkDA,CAAK,EAC9D,IACT,CACF,CAAC,EAMKC,EAAcP,EAAaQ,GAAe,CAC9C,GAAI,CAACA,GAAM,OAAOA,GAAO,SAAU,CACjC,QAAQ,KAAK,mCAAoCA,CAAE,EACnD,MACF,CAIA,GAFAH,EAAaG,CAAE,EAEX,OAAO,OAAW,IACpB,GAAI,CACF,aAAa,QAAQN,EAAaM,CAAE,CACtC,OAASF,EAAO,CACd,QAAQ,MAAM,+CAAgDA,CAAK,CACrE,CAEJ,EAAG,CAAC,CAAC,EAMCG,EAAeT,EAAY,IAAM,CAGrC,GAFAK,EAAa,IAAI,EAEb,OAAO,OAAW,IACpB,GAAI,CACF,aAAa,WAAWH,CAAW,CACrC,OAASI,EAAO,CACd,QAAQ,MAAM,mDAAoDA,CAAK,CACzE,CAEJ,EAAG,CAAC,CAAC,EAOL,OAAAL,EAAU,IAAM,CACd,GAAI,OAAO,OAAW,IAAa,OAEnC,MAAMS,EAAuBC,GAAwB,CAC/CA,EAAM,MAAQT,GAChBG,EAAaM,EAAM,QAAQ,CAE/B,EAEA,cAAO,iBAAiB,UAAWD,CAAmB,EAE/C,IAAM,CACX,OAAO,oBAAoB,UAAWA,CAAmB,CAC3D,CACF,EAAG,CAAC,CAAC,EAEE,CACL,UAAAN,EACA,YAAAG,EACA,aAAAE,EACA,WAAYL,IAAc,IAC5B,CACF",
6
+ "names": ["useState", "useCallback", "useEffect", "SESSION_KEY", "useSession", "sessionId", "setSessionId", "error", "saveSession", "id", "clearSession", "handleStorageChange", "event"]
7
+ }
@@ -0,0 +1,12 @@
1
+ /**
2
+ * LiveChatWidget 组件入口
3
+ */
4
+ export { LiveChatWidget } from './LiveChatWidget';
5
+ export type { LiveChatWidgetProps, Message, MessageContent, MessageRole, MessageContentType, MessageMetadata, Product, QuickReply, Session, BubblePosition, MessageRenderer, ProductCardContent, ProductListContent, PolicyContent, QuickRepliesContent, ThinkingContent, ErrorContent, FAQListContent, FAQItem, FAQCategory, PromotionListContent, PromotionItem, CartContent, CartData, CartLine, CartCost, CartAmount, CartDiscountCode, SSEEvent, ChatStreamRequest, } from './types';
6
+ export { useChatState } from './hooks/useChatState';
7
+ export { useChatAPI } from './hooks/useChatAPI';
8
+ export { useSession } from './hooks/useSession';
9
+ export { MessageRendererRegistry } from './utils/messageRenderers';
10
+ export { getUserId } from './utils/userId';
11
+ export { sanitizeInput, isValidUrl, isValidUUID, isValidMessageContent, escapeHtml } from './utils/validation';
12
+ export { TextBlock, ProductCard, ProductList, PolicyBlock, QuickReplies, ThinkingBlock, ErrorBlock, FAQList, PromotionList, CartCard, createQuickRepliesRenderer, } from './components/MessageContent/index.js';
@@ -0,0 +1,2 @@
1
+ import{LiveChatWidget as o}from"./LiveChatWidget";import{useChatState as s}from"./hooks/useChatState";import{useChatAPI as i}from"./hooks/useChatAPI";import{useSession as C}from"./hooks/useSession";import{MessageRendererRegistry as p}from"./utils/messageRenderers";import{getUserId as l}from"./utils/userId";import{sanitizeInput as u,isValidUrl as g,isValidUUID as P,isValidMessageContent as k,escapeHtml as x}from"./utils/validation";import{TextBlock as f,ProductCard as L,ProductList as M,PolicyBlock as y,QuickReplies as Q,ThinkingBlock as h,ErrorBlock as A,FAQList as I,PromotionList as S,CartCard as B,createQuickRepliesRenderer as E}from"./components/MessageContent/index.js";export{B as CartCard,A as ErrorBlock,I as FAQList,o as LiveChatWidget,p as MessageRendererRegistry,y as PolicyBlock,L as ProductCard,M as ProductList,S as PromotionList,Q as QuickReplies,f as TextBlock,h as ThinkingBlock,E as createQuickRepliesRenderer,x as escapeHtml,l as getUserId,k as isValidMessageContent,P as isValidUUID,g as isValidUrl,u as sanitizeInput,i as useChatAPI,s as useChatState,C as useSession};
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../src/components/LiveChatWidget/index.tsx"],
4
+ "sourcesContent": ["/**\n * LiveChatWidget \u7EC4\u4EF6\u5165\u53E3\n */\n\nexport { LiveChatWidget } from './LiveChatWidget'\nexport type {\n LiveChatWidgetProps,\n Message,\n MessageContent,\n MessageRole,\n MessageContentType,\n MessageMetadata,\n Product,\n QuickReply,\n Session,\n BubblePosition,\n MessageRenderer,\n ProductCardContent,\n ProductListContent,\n PolicyContent,\n QuickRepliesContent,\n ThinkingContent,\n ErrorContent,\n FAQListContent,\n FAQItem,\n FAQCategory,\n PromotionListContent,\n PromotionItem,\n CartContent,\n CartData,\n CartLine,\n CartCost,\n CartAmount,\n CartDiscountCode,\n SSEEvent,\n ChatStreamRequest,\n} from './types'\n\n// \u5BFC\u51FA Hook (\u4F9B\u9AD8\u7EA7\u7528\u6237\u81EA\u5B9A\u4E49\u4F7F\u7528)\nexport { useChatState } from './hooks/useChatState'\nexport { useChatAPI } from './hooks/useChatAPI'\nexport { useSession } from './hooks/useSession'\n\n// \u5BFC\u51FA\u5DE5\u5177\u7C7B\nexport { MessageRendererRegistry } from './utils/messageRenderers'\nexport { getUserId } from './utils/userId'\nexport { sanitizeInput, isValidUrl, isValidUUID, isValidMessageContent, escapeHtml } from './utils/validation'\n\n// \u5BFC\u51FA\u6D88\u606F\u6E32\u67D3\u5668\uFF08\u4F9B\u81EA\u5B9A\u4E49\u4F7F\u7528\uFF09\nexport {\n TextBlock,\n ProductCard,\n ProductList,\n PolicyBlock,\n QuickReplies,\n ThinkingBlock,\n ErrorBlock,\n FAQList,\n PromotionList,\n CartCard,\n createQuickRepliesRenderer,\n} from './components/MessageContent/index.js'\n"],
5
+ "mappings": "AAIA,OAAS,kBAAAA,MAAsB,mBAmC/B,OAAS,gBAAAC,MAAoB,uBAC7B,OAAS,cAAAC,MAAkB,qBAC3B,OAAS,cAAAC,MAAkB,qBAG3B,OAAS,2BAAAC,MAA+B,2BACxC,OAAS,aAAAC,MAAiB,iBAC1B,OAAS,iBAAAC,EAAe,cAAAC,EAAY,eAAAC,EAAa,yBAAAC,EAAuB,cAAAC,MAAkB,qBAG1F,OACE,aAAAC,EACA,eAAAC,EACA,eAAAC,EACA,eAAAC,EACA,gBAAAC,EACA,iBAAAC,EACA,cAAAC,EACA,WAAAC,EACA,iBAAAC,EACA,YAAAC,EACA,8BAAAC,MACK",
6
+ "names": ["LiveChatWidget", "useChatState", "useChatAPI", "useSession", "MessageRendererRegistry", "getUserId", "sanitizeInput", "isValidUrl", "isValidUUID", "isValidMessageContent", "escapeHtml", "TextBlock", "ProductCard", "ProductList", "PolicyBlock", "QuickReplies", "ThinkingBlock", "ErrorBlock", "FAQList", "PromotionList", "CartCard", "createQuickRepliesRenderer"]
7
+ }