@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,609 @@
1
+ /**
2
+ * LiveChat 组件核心类型定义
3
+ * 基于 specs/livechat-widget/data-model.md
4
+ */
5
+ export type SessionStatus = 'active' | 'expired';
6
+ export interface Session {
7
+ sessionId: string;
8
+ userId: string;
9
+ site: string;
10
+ status: SessionStatus;
11
+ createdAt?: number;
12
+ lastActivityAt?: number;
13
+ }
14
+ export type MessageRole = 'user' | 'assistant' | 'system' | 'tool';
15
+ export interface MessageMetadata {
16
+ tokenUsage?: {
17
+ inputTokens: number;
18
+ outputTokens: number;
19
+ };
20
+ toolCalls?: Array<{
21
+ id: string;
22
+ type: string;
23
+ name: string;
24
+ }>;
25
+ }
26
+ export interface Message {
27
+ id: string;
28
+ sessionId?: string;
29
+ role: MessageRole;
30
+ content: MessageContent[];
31
+ timestamp: number;
32
+ metadata?: MessageMetadata;
33
+ }
34
+ export type MessageContentType = 'text' | 'product_card' | 'product_list' | 'product_comparison' | 'policy' | 'quick_replies' | 'thinking' | 'error' | 'faq_list' | 'cart';
35
+ export type MessageContent = TextContent | ProductCardContent | ProductListContent | ProductComparisonContent | PolicyContent | QuickRepliesContent | ThinkingContent | ErrorContent | FAQListContent | PromotionListContent | CartContent;
36
+ export interface TextContent {
37
+ type: 'text';
38
+ text: string;
39
+ }
40
+ export interface ProductCardContent {
41
+ type: 'product_card';
42
+ data: {
43
+ product: Product;
44
+ };
45
+ }
46
+ export interface ProductListContent {
47
+ type: 'product_list';
48
+ data: {
49
+ products: Product[];
50
+ title?: string;
51
+ onAddToCart?: (product: Product) => void;
52
+ };
53
+ }
54
+ export interface ProductComparisonContent {
55
+ type: 'product_comparison';
56
+ data: {
57
+ products: Product[];
58
+ dimensions: {
59
+ price?: {
60
+ label: string;
61
+ values: Array<{
62
+ product_id: string;
63
+ min: number;
64
+ max: number;
65
+ currency: string;
66
+ has_discount: boolean;
67
+ }>;
68
+ };
69
+ variants?: {
70
+ label: string;
71
+ values: Array<{
72
+ product_id: string;
73
+ count: number;
74
+ }>;
75
+ };
76
+ member_price?: {
77
+ label: string;
78
+ values: Array<{
79
+ product_id: string;
80
+ available: boolean;
81
+ min: number;
82
+ max: number;
83
+ currency: string;
84
+ }>;
85
+ };
86
+ discount?: {
87
+ label: string;
88
+ values: Array<{
89
+ product_id: string;
90
+ has_discount: boolean;
91
+ }>;
92
+ };
93
+ [key: string]: any;
94
+ };
95
+ onAddToCart?: (product: Product) => void;
96
+ };
97
+ }
98
+ export interface PolicyContent {
99
+ type: 'policy';
100
+ data: {
101
+ title: string;
102
+ content: string;
103
+ };
104
+ }
105
+ export interface QuickRepliesContent {
106
+ type: 'quick_replies';
107
+ data: {
108
+ replies: QuickReply[];
109
+ };
110
+ }
111
+ export interface ThinkingContent {
112
+ type: 'thinking';
113
+ data: {
114
+ status: string;
115
+ };
116
+ }
117
+ export interface ErrorContent {
118
+ type: 'error';
119
+ data: {
120
+ message: string;
121
+ code?: string;
122
+ };
123
+ }
124
+ export interface FAQListContent {
125
+ type: 'faq_list';
126
+ data: {
127
+ found: boolean;
128
+ count: number;
129
+ total?: number;
130
+ results: FAQItem[];
131
+ };
132
+ }
133
+ export interface PromotionListContent {
134
+ type: 'promotion_list';
135
+ data: {
136
+ found: boolean;
137
+ count: number;
138
+ total?: number;
139
+ results: PromotionItem[];
140
+ };
141
+ }
142
+ export type FAQCategory = 'shipping' | 'return' | 'product' | 'payment' | 'general';
143
+ export interface FAQItem {
144
+ id: string;
145
+ question: string;
146
+ answer: string;
147
+ category: FAQCategory;
148
+ keywords?: string[];
149
+ relatedQuestions?: string[];
150
+ metadata?: {
151
+ language?: string;
152
+ priority?: number;
153
+ lastUpdated?: string;
154
+ };
155
+ }
156
+ export interface PromotionItem {
157
+ id: string;
158
+ title: string;
159
+ subtitle?: string;
160
+ description?: string;
161
+ banner_url?: string;
162
+ url?: string;
163
+ time_range: {
164
+ start: string;
165
+ end?: string | null;
166
+ is_active: boolean;
167
+ };
168
+ priority?: number;
169
+ product_count?: number;
170
+ metadata?: {
171
+ display_order?: number;
172
+ target_audience?: string;
173
+ };
174
+ }
175
+ export type StockStatus = 'in_stock' | 'low_stock' | 'out_of_stock';
176
+ export interface Price {
177
+ amount: number;
178
+ currency: string;
179
+ }
180
+ export interface PriceRange {
181
+ min: number;
182
+ max: number;
183
+ currency: string;
184
+ }
185
+ export interface VariantDiscount {
186
+ has_discount: boolean;
187
+ discount_price?: number;
188
+ discount_code?: string;
189
+ discount_percentage?: number;
190
+ /** 折扣类型:fixed_amount 固定金额折扣,percentage 百分比折扣 */
191
+ discount_type?: 'fixed_amount' | 'percentage';
192
+ /** 折扣数值(可能是字符串或数字) */
193
+ discount_value?: string | number;
194
+ }
195
+ export interface VariantMemberPrice {
196
+ has_member_price: boolean;
197
+ price?: number;
198
+ }
199
+ export interface ProductFeatures {
200
+ is_new?: boolean;
201
+ has_rental?: boolean;
202
+ has_presale?: boolean;
203
+ has_member_price?: boolean;
204
+ has_discount?: boolean;
205
+ }
206
+ export interface Variant {
207
+ id: string;
208
+ title: string;
209
+ sku?: string;
210
+ price?: Price;
211
+ availableForSale: boolean;
212
+ color?: string;
213
+ discount?: VariantDiscount;
214
+ memberPrice?: VariantMemberPrice;
215
+ inventoryQuantity?: number;
216
+ option1?: string;
217
+ option2?: string;
218
+ option3?: string;
219
+ }
220
+ export interface Product {
221
+ shopifyId: string;
222
+ sku?: string;
223
+ handle: string;
224
+ title: string;
225
+ description?: string;
226
+ vendor?: string;
227
+ price: Price;
228
+ priceRange?: PriceRange;
229
+ memberPriceRange?: PriceRange;
230
+ imageUrl: string;
231
+ productUrl: string;
232
+ stockStatus: StockStatus;
233
+ hotScore?: number;
234
+ averageRating?: number;
235
+ reviewCount?: number;
236
+ variants?: Variant[];
237
+ variantCount?: number;
238
+ availableCount?: number;
239
+ features?: ProductFeatures;
240
+ tags?: string[];
241
+ }
242
+ export interface QuickReply {
243
+ id: string;
244
+ label: string;
245
+ value: string;
246
+ icon?: string;
247
+ }
248
+ export interface Policy {
249
+ title: string;
250
+ content: string;
251
+ }
252
+ /**
253
+ * 购物车金额信息
254
+ */
255
+ export interface CartAmount {
256
+ /** 金额字符串(如 "99.99") */
257
+ amount: string;
258
+ /** 货币代码(如 "USD") */
259
+ currencyCode: string;
260
+ }
261
+ /**
262
+ * 购物车价格汇总
263
+ */
264
+ export interface CartCost {
265
+ /** 应付总价(已应用折扣) */
266
+ totalAmount: CartAmount;
267
+ /** 原价小计(未应用折扣) */
268
+ subtotalAmount: CartAmount;
269
+ }
270
+ /**
271
+ * 购物车商品变体信息
272
+ */
273
+ export interface CartMerchandise {
274
+ /** 变体 ID (Shopify ProductVariant GID) */
275
+ id: string;
276
+ /** 变体标题(如 "Black", "Large" 等) */
277
+ title: string;
278
+ /** 单价 */
279
+ price: CartAmount;
280
+ /** 商品图片 URL */
281
+ image?: {
282
+ url: string;
283
+ altText?: string;
284
+ };
285
+ /** 关联的商品信息 */
286
+ product: {
287
+ /** 商品 ID */
288
+ id: string;
289
+ /** 商品标题 */
290
+ title: string;
291
+ /** 商品 handle */
292
+ handle: string;
293
+ };
294
+ }
295
+ /**
296
+ * 购物车商品行
297
+ */
298
+ export interface CartLine {
299
+ /** 购物车行 ID (用于更新/删除操作) */
300
+ id: string;
301
+ /** 商品数量 */
302
+ quantity: number;
303
+ /** 价格信息 */
304
+ cost: {
305
+ /** 行总价(单价 × 数量,已应用折扣) */
306
+ totalAmount: CartAmount;
307
+ /** 单价 */
308
+ amountPerQuantity: CartAmount;
309
+ /** 行小计(单价 × 数量,未应用折扣) */
310
+ subtotalAmount: CartAmount;
311
+ };
312
+ /** 商品变体信息 */
313
+ merchandise: CartMerchandise;
314
+ /** 自定义属性(可选) */
315
+ attributes?: Array<{
316
+ key: string;
317
+ value: string;
318
+ }>;
319
+ }
320
+ /**
321
+ * 购物车折扣码
322
+ */
323
+ export interface CartDiscountCode {
324
+ /** 折扣码 */
325
+ code: string;
326
+ /** 是否有效/适用 */
327
+ applicable: boolean;
328
+ }
329
+ /**
330
+ * 购物车数据
331
+ */
332
+ export interface CartData {
333
+ /** 购物车是否为空 */
334
+ isEmpty: boolean;
335
+ /** 购物车 ID (Shopify Cart GID) */
336
+ cartId: string;
337
+ /** 商品总数量 */
338
+ totalQuantity: number;
339
+ /** 商品列表 */
340
+ lines: CartLine[];
341
+ /** 价格汇总 */
342
+ cost: CartCost;
343
+ /** 折扣码列表 */
344
+ discountCodes?: CartDiscountCode[];
345
+ /** 结账页面 URL */
346
+ checkoutUrl?: string;
347
+ /** 购物车按钮回调函数 */
348
+ onCart?: (cartId: string, checkoutUrl?: string) => void;
349
+ }
350
+ /**
351
+ * 购物车内容块
352
+ */
353
+ export interface CartContent {
354
+ type: 'cart';
355
+ data: CartData;
356
+ }
357
+ /**
358
+ * 后端返回的购物车商品行数据 (Shopify GraphQL 格式)
359
+ */
360
+ export interface BackendCartLineNode {
361
+ id: string;
362
+ quantity: number;
363
+ cost: {
364
+ totalAmount: CartAmount;
365
+ amountPerQuantity: CartAmount;
366
+ compareAtAmountPerQuantity?: CartAmount | null;
367
+ subtotalAmount: CartAmount;
368
+ };
369
+ discountAllocations: any[];
370
+ merchandise: {
371
+ id: string;
372
+ title: string;
373
+ availableForSale: boolean;
374
+ quantityAvailable?: number;
375
+ price: CartAmount;
376
+ compareAtPrice?: CartAmount | null;
377
+ image?: {
378
+ url: string;
379
+ altText?: string | null;
380
+ width?: number;
381
+ height?: number;
382
+ } | null;
383
+ product: {
384
+ id: string;
385
+ title: string;
386
+ handle: string;
387
+ vendor?: string;
388
+ featuredImage?: {
389
+ url: string;
390
+ altText?: string | null;
391
+ width?: number;
392
+ height?: number;
393
+ } | null;
394
+ tags?: string[];
395
+ };
396
+ };
397
+ attributes?: Array<{
398
+ key: string;
399
+ value: string;
400
+ }>;
401
+ }
402
+ /**
403
+ * 后端返回的购物车数据 (Shopify GraphQL 格式)
404
+ */
405
+ export interface BackendCartData {
406
+ id: string;
407
+ checkoutUrl?: string;
408
+ totalQuantity: number;
409
+ lines: {
410
+ edges: Array<{
411
+ node: BackendCartLineNode;
412
+ }>;
413
+ };
414
+ cost: {
415
+ totalAmount: CartAmount;
416
+ subtotalAmount: CartAmount;
417
+ checkoutChargeAmount?: CartAmount;
418
+ totalAmountEstimated?: boolean;
419
+ subtotalAmountEstimated?: boolean;
420
+ totalTaxAmount?: CartAmount | null;
421
+ totalDutyAmount?: CartAmount | null;
422
+ };
423
+ discountAllocations?: any[];
424
+ buyerIdentity?: any;
425
+ attributes?: Array<{
426
+ key: string;
427
+ value: string;
428
+ }>;
429
+ discountCodes?: any[];
430
+ createdAt?: string;
431
+ updatedAt?: string;
432
+ }
433
+ export type SSEEventType = 'message_start' | 'content_delta' | 'content_block' | 'message_end' | 'tool_start' | 'tool_end' | 'status' | 'error' | 'done';
434
+ export interface SSEEvent<T = any> {
435
+ event: SSEEventType | null;
436
+ data: T;
437
+ }
438
+ export interface MessageStartData {
439
+ sessionId: string;
440
+ }
441
+ export interface ContentDeltaData {
442
+ text: string;
443
+ }
444
+ export interface ContentBlockData {
445
+ type: string;
446
+ data: any;
447
+ }
448
+ export interface MessageEndData {
449
+ usage: {
450
+ inputTokens: number;
451
+ outputTokens: number;
452
+ };
453
+ }
454
+ export interface ToolStartData {
455
+ id: string;
456
+ type: string;
457
+ name: string;
458
+ }
459
+ export interface ToolEndData {
460
+ id: string;
461
+ }
462
+ export interface StatusData {
463
+ type: string;
464
+ message?: string;
465
+ }
466
+ export interface ErrorData {
467
+ message: string;
468
+ code?: string;
469
+ }
470
+ /**
471
+ * 流式对话请求参数
472
+ */
473
+ export interface ChatStreamRequest {
474
+ /** 用户的消息文本 */
475
+ message: string;
476
+ /** 用户标识符 */
477
+ user_id: string;
478
+ /** 来自 new-session 端点的会话 ID */
479
+ session_id: string;
480
+ /** 可选的上下文信息 */
481
+ context?: {
482
+ /** 用于购物车操作的 Shopify 购物车 ID */
483
+ cartId?: string;
484
+ /** Storefront API 访问令牌 */
485
+ accessToken?: string;
486
+ /** 已登录用户的 ID */
487
+ real_user_id?: string;
488
+ };
489
+ }
490
+ export interface NewSessionRequest {
491
+ user_id: string;
492
+ session_id?: string;
493
+ site?: string;
494
+ real_user_id?: string;
495
+ }
496
+ export interface NewSessionResponse {
497
+ success: boolean;
498
+ sessionId: string;
499
+ message: string;
500
+ resumed?: boolean;
501
+ messages?: Message[];
502
+ welcomeMessage?: string;
503
+ quickQuestions?: string[];
504
+ brand?: string;
505
+ }
506
+ export interface ErrorResponse {
507
+ success: boolean;
508
+ error: string;
509
+ code?: string;
510
+ details?: any;
511
+ }
512
+ export interface LiveChatWidgetProps {
513
+ /**
514
+ * API 基础 URL
515
+ * @example "https://beta-api-livechat.anker.com"
516
+ */
517
+ apiBaseUrl: string;
518
+ /**
519
+ * Shopify 店铺域名
520
+ * @example "www.eufy.com"
521
+ */
522
+ site?: string;
523
+ /**
524
+ * 已登录用户的 ID(可选)
525
+ * 如果提供,将在 API 请求中传递
526
+ */
527
+ loginUserId?: string;
528
+ /**
529
+ * Shopify 购物车 ID(可选)
530
+ * 用于购物车操作,将在 stream 接口的 context 中传递
531
+ * @example "gid://shopify/Cart/Z2NwLXVzLWVhc3QxOjAxSkZH..."
532
+ */
533
+ cartId?: string;
534
+ /**
535
+ * Storefront API 访问令牌(可选)
536
+ * 用于购物车操作,将在 stream 接口的 context 中传递
537
+ */
538
+ accessToken?: string;
539
+ /**
540
+ * 气泡按钮位置
541
+ * 自定义位置对象:{ top?: string, bottom?: string, left?: string, right?: string }
542
+ * @default { bottom: "1.5rem", right: "1.5rem" }
543
+ * @example
544
+ * // 自定义位置
545
+ * position={{ bottom: "20px", right: "30px" }}
546
+ * position={{ top: "100px", left: "50px" }}
547
+ */
548
+ position?: BubblePosition;
549
+ /**
550
+ * 欢迎消息
551
+ * @default "你好!我是 AI 助手,有什么可以帮助你的吗?"
552
+ */
553
+ welcomeMessage?: string;
554
+ /**
555
+ * 初始快捷回复按钮
556
+ */
557
+ quickReplies?: QuickReply[];
558
+ /**
559
+ * 自定义消息渲染器
560
+ */
561
+ customRenderers?: Record<string, MessageRenderer>;
562
+ /**
563
+ * Logo URL
564
+ */
565
+ logoUrl?: string;
566
+ /**
567
+ * 聊天窗口标题
568
+ * @default "AI 助手"
569
+ */
570
+ title?: string;
571
+ /**
572
+ * 聊天气泡按钮图标(图片 URL)
573
+ * 如果提供,将使用图片替代默认的 SVG 图标
574
+ */
575
+ chatBubbleIcon?: string;
576
+ /**
577
+ * 事件回调
578
+ */
579
+ onOpen?: () => void;
580
+ onClose?: () => void;
581
+ onMessageSend?: (message: string) => void;
582
+ onError?: (error: Error) => void;
583
+ /**
584
+ * 商品操作回调
585
+ */
586
+ onAddToCart?: (product: Product) => void;
587
+ /**
588
+ * 购物车按钮点击回调
589
+ */
590
+ onCart?: (cartId: string, checkoutUrl?: string) => void;
591
+ /**
592
+ * 是否显示新会话按钮
593
+ * @default true
594
+ */
595
+ showNewSessionButton?: boolean;
596
+ }
597
+ export interface MessageRenderer {
598
+ render: (content: MessageContent, isUser: boolean, isSystem: boolean) => React.ReactNode;
599
+ }
600
+ export interface CustomRendererMap {
601
+ [type: string]: MessageRenderer;
602
+ }
603
+ export interface PositionStyles {
604
+ bottom?: string;
605
+ top?: string;
606
+ left?: string;
607
+ right?: string;
608
+ }
609
+ export type BubblePosition = PositionStyles;
@@ -0,0 +1 @@
1
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": [],
4
+ "sourcesContent": [],
5
+ "mappings": "",
6
+ "names": []
7
+ }
@@ -0,0 +1,25 @@
1
+ /**
2
+ * 购物车数据转换工具
3
+ * 将后端返回的 Shopify GraphQL 格式转换为前端标准格式
4
+ */
5
+ import type { BackendCartData, CartData } from '../types';
6
+ /**
7
+ * 转换后端购物车数据为前端格式
8
+ *
9
+ * @param backendData 后端返回的 Shopify GraphQL 格式数据
10
+ * @returns 前端标准化的购物车数据
11
+ *
12
+ * @example
13
+ * ```typescript
14
+ * const backendData = {
15
+ * id: "gid://shopify/Cart/xxx",
16
+ * lines: { edges: [{ node: {...} }] },
17
+ * cost: { totalAmount: {...}, subtotalAmount: {...} },
18
+ * ...
19
+ * }
20
+ *
21
+ * const cartData = transformCartData(backendData)
22
+ * // => { cartId: "gid://shopify/Cart/xxx", lines: [...], ... }
23
+ * ```
24
+ */
25
+ export declare function transformCartData(backendData: BackendCartData): CartData;
@@ -0,0 +1,2 @@
1
+ function i(o){const n=o.lines.edges.map(t=>({id:t.node.id,quantity:t.node.quantity,cost:{totalAmount:t.node.cost.totalAmount,amountPerQuantity:t.node.cost.amountPerQuantity,subtotalAmount:t.node.cost.subtotalAmount},merchandise:{id:t.node.merchandise.id,title:t.node.merchandise.title,price:t.node.merchandise.price,image:t.node.merchandise.image?{url:t.node.merchandise.image.url,altText:t.node.merchandise.image.altText||void 0}:void 0,product:{id:t.node.merchandise.product.id,title:t.node.merchandise.product.title,handle:t.node.merchandise.product.handle}},attributes:t.node.attributes}));return{isEmpty:o.totalQuantity===0||n.length===0,cartId:o.id,totalQuantity:o.totalQuantity,lines:n,cost:{totalAmount:o.cost.totalAmount,subtotalAmount:o.cost.subtotalAmount},discountCodes:o.discountCodes?.map(t=>({code:t.code||t,applicable:t.applicable!==!1})),checkoutUrl:o.checkoutUrl}}export{i as transformCartData};
2
+ //# sourceMappingURL=cartTransformers.js.map
@@ -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": "AA0BO,SAASA,EAAkBC,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": ["transformCartData", "backendData", "lines", "edge", "code"]
7
+ }