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