@anker-in/campaign-ui 0.3.4 → 0.4.0-beta.1
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.js +1 -1
- package/dist/cjs/components/LiveChatWidget/LiveChatWidget.js.map +3 -3
- package/dist/cjs/components/LiveChatWidget/components/MessageContent/PromotionList.js.map +2 -2
- package/dist/cjs/components/LiveChatWidget/components/MessageList.js +3 -3
- package/dist/cjs/components/LiveChatWidget/components/MessageList.js.map +3 -3
- package/dist/cjs/components/LiveChatWidget/hooks/useChatState.d.ts +2 -1
- package/dist/cjs/components/LiveChatWidget/hooks/useChatState.js +1 -1
- package/dist/cjs/components/LiveChatWidget/hooks/useChatState.js.map +2 -2
- package/dist/cjs/components/LiveChatWidget/types.d.ts +2 -1
- package/dist/cjs/components/LiveChatWidget/types.js.map +1 -1
- package/dist/cjs/components/credits/context/const.d.ts +10 -2
- package/dist/cjs/components/credits/context/const.js +1 -1
- package/dist/cjs/components/credits/context/const.js.map +2 -2
- package/dist/cjs/components/credits/context/hooks/useFunctionMemberPrice.d.ts +7 -0
- package/dist/cjs/components/credits/context/hooks/useFunctionMemberPrice.js +2 -0
- package/dist/cjs/components/credits/context/hooks/useFunctionMemberPrice.js.map +7 -0
- package/dist/cjs/components/credits/context/hooks/useMyRewards.js +1 -1
- package/dist/cjs/components/credits/context/hooks/useMyRewards.js.map +3 -3
- package/dist/cjs/components/credits/context/hooks/useRedeemGoGift.d.ts +17 -0
- package/dist/cjs/components/credits/context/hooks/useRedeemGoGift.js +2 -0
- package/dist/cjs/components/credits/context/hooks/useRedeemGoGift.js.map +7 -0
- package/dist/cjs/components/credits/context/hooks/useRedeemableList.d.ts +7 -2
- package/dist/cjs/components/credits/context/hooks/useRedeemableList.js +1 -1
- package/dist/cjs/components/credits/context/hooks/useRedeemableList.js.map +3 -3
- package/dist/cjs/components/credits/context/provider.d.ts +5 -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/response.d.ts +1 -0
- package/dist/cjs/components/credits/context/response.js.map +1 -1
- package/dist/cjs/components/credits/context/utils/atobID.d.ts +1 -0
- package/dist/cjs/components/credits/context/utils/atobID.js +2 -0
- package/dist/cjs/components/credits/context/utils/atobID.js.map +7 -0
- package/dist/cjs/components/credits/context/utils/functionDiscountCalculate.d.ts +5 -0
- package/dist/cjs/components/credits/context/utils/functionDiscountCalculate.js +2 -0
- package/dist/cjs/components/credits/context/utils/functionDiscountCalculate.js.map +7 -0
- package/dist/cjs/components/credits/context/utils/getFunctionMemberPrice.d.ts +8 -0
- package/dist/cjs/components/credits/context/utils/getFunctionMemberPrice.js +2 -0
- package/dist/cjs/components/credits/context/utils/getFunctionMemberPrice.js.map +7 -0
- package/dist/cjs/components/credits/context/utils/getFunctionMemberPriceDiscountConfig.d.ts +9 -0
- package/dist/cjs/components/credits/context/utils/getFunctionMemberPriceDiscountConfig.js +2 -0
- package/dist/cjs/components/credits/context/utils/getFunctionMemberPriceDiscountConfig.js.map +7 -0
- package/dist/cjs/components/credits/context/utils/variantGetCoupon.d.ts +6 -0
- package/dist/cjs/components/credits/context/utils/variantGetCoupon.js +2 -0
- package/dist/cjs/components/credits/context/utils/variantGetCoupon.js.map +7 -0
- package/dist/cjs/components/credits/creditsAnkersolixTask/CreditsAnkersolixTask.js +1 -1
- package/dist/cjs/components/credits/creditsAnkersolixTask/CreditsAnkersolixTask.js.map +2 -2
- package/dist/cjs/components/credits/creditsBanner/index.js +2 -2
- package/dist/cjs/components/credits/creditsBanner/index.js.map +2 -2
- package/dist/cjs/components/credits/creditsCash/CreditsCash.js +1 -1
- package/dist/cjs/components/credits/creditsCash/CreditsCash.js.map +2 -2
- package/dist/cjs/components/credits/creditsGoGift/CreditsGoGift.d.ts +5 -0
- package/dist/cjs/components/credits/creditsGoGift/CreditsGoGift.js +2 -0
- package/dist/cjs/components/credits/creditsGoGift/CreditsGoGift.js.map +7 -0
- package/dist/cjs/components/credits/creditsGoGift/index.d.ts +2 -0
- package/dist/cjs/components/credits/creditsGoGift/index.js +2 -0
- package/dist/cjs/components/credits/creditsGoGift/index.js.map +7 -0
- package/dist/cjs/components/credits/creditsGoGift/type.d.ts +22 -0
- package/dist/cjs/components/credits/creditsGoGift/type.js +2 -0
- package/dist/cjs/components/credits/creditsGoGift/type.js.map +7 -0
- package/dist/cjs/components/credits/creditsGofit/CreditsGofit.d.ts +5 -0
- package/dist/cjs/components/credits/creditsGofit/CreditsGofit.js +2 -0
- package/dist/cjs/components/credits/creditsGofit/CreditsGofit.js.map +7 -0
- package/dist/cjs/components/credits/creditsGofit/index.d.ts +2 -0
- package/dist/cjs/components/credits/creditsGofit/index.js +2 -0
- package/dist/cjs/components/credits/creditsGofit/index.js.map +7 -0
- package/dist/cjs/components/credits/creditsGofit/type.d.ts +22 -0
- package/dist/cjs/components/credits/creditsGofit/type.js +2 -0
- package/dist/cjs/components/credits/creditsGofit/type.js.map +7 -0
- 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 +2 -2
- 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/RedeemCouponModal/CouponInit.d.ts +10 -0
- package/dist/cjs/components/credits/creditsRedeemList/RedeemCouponModal/CouponInit.js +2 -0
- package/dist/cjs/components/credits/creditsRedeemList/RedeemCouponModal/CouponInit.js.map +7 -0
- package/dist/cjs/components/credits/creditsRedeemList/RedeemCouponModal/CouponSuccess.d.ts +10 -0
- package/dist/cjs/components/credits/creditsRedeemList/RedeemCouponModal/CouponSuccess.js +2 -0
- package/dist/cjs/components/credits/creditsRedeemList/RedeemCouponModal/CouponSuccess.js.map +7 -0
- package/dist/cjs/components/credits/creditsRedeemList/RedeemCouponModal.d.ts +4 -5
- package/dist/cjs/components/credits/creditsRedeemList/RedeemCouponModal.js +1 -1
- package/dist/cjs/components/credits/creditsRedeemList/RedeemCouponModal.js.map +3 -3
- package/dist/cjs/components/credits/creditsRedeemList/RedeemProductModal/Address.d.ts +2 -3
- package/dist/cjs/components/credits/creditsRedeemList/RedeemProductModal/Address.js +1 -1
- package/dist/cjs/components/credits/creditsRedeemList/RedeemProductModal/Address.js.map +2 -2
- package/dist/cjs/components/credits/creditsRedeemList/RedeemProductModal/Init.d.ts +2 -3
- package/dist/cjs/components/credits/creditsRedeemList/RedeemProductModal/Init.js +1 -1
- package/dist/cjs/components/credits/creditsRedeemList/RedeemProductModal/Init.js.map +2 -2
- package/dist/cjs/components/credits/creditsRedeemList/RedeemProductModal/NonProductValue.d.ts +1 -3
- package/dist/cjs/components/credits/creditsRedeemList/RedeemProductModal/NonProductValue.js +1 -1
- package/dist/cjs/components/credits/creditsRedeemList/RedeemProductModal/NonProductValue.js.map +3 -3
- package/dist/cjs/components/credits/creditsRedeemList/RedeemProductModal/ProductInfo.d.ts +3 -4
- 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.d.ts +2 -3
- package/dist/cjs/components/credits/creditsRedeemList/RedeemProductModal/Success.js +1 -1
- package/dist/cjs/components/credits/creditsRedeemList/RedeemProductModal/Success.js.map +2 -2
- package/dist/cjs/components/credits/creditsRedeemList/RedeemProductModal/index.d.ts +4 -5
- package/dist/cjs/components/credits/creditsRedeemList/RedeemProductModal/index.js +1 -1
- package/dist/cjs/components/credits/creditsRedeemList/RedeemProductModal/index.js.map +3 -3
- package/dist/cjs/components/credits/creditsRedeemList/RedeemVirtualProductModal/VirtualProductInit.d.ts +10 -0
- package/dist/cjs/components/credits/creditsRedeemList/RedeemVirtualProductModal/VirtualProductInit.js +2 -0
- package/dist/cjs/components/credits/creditsRedeemList/RedeemVirtualProductModal/VirtualProductInit.js.map +7 -0
- package/dist/cjs/components/credits/creditsRedeemList/RedeemVirtualProductModal/VirtualProductSuccess.d.ts +9 -0
- package/dist/cjs/components/credits/creditsRedeemList/RedeemVirtualProductModal/VirtualProductSuccess.js +2 -0
- package/dist/cjs/components/credits/creditsRedeemList/RedeemVirtualProductModal/VirtualProductSuccess.js.map +7 -0
- package/dist/cjs/components/credits/creditsRedeemList/RedeemVirtualProductModal.d.ts +8 -0
- package/dist/cjs/components/credits/creditsRedeemList/RedeemVirtualProductModal.js +2 -0
- package/dist/cjs/components/credits/creditsRedeemList/RedeemVirtualProductModal.js.map +7 -0
- package/dist/cjs/components/credits/creditsRedeemList/RedeemableItem.js +1 -1
- package/dist/cjs/components/credits/creditsRedeemList/RedeemableItem.js.map +2 -2
- package/dist/cjs/components/credits/creditsRedeemList/type.d.ts +11 -0
- package/dist/cjs/components/credits/creditsRedeemList/type.js +1 -1
- package/dist/cjs/components/credits/creditsRedeemList/type.js.map +1 -1
- package/dist/cjs/components/credits/creditsWaysToGetCredits/CreditsWaysToGetCredits.js +1 -1
- package/dist/cjs/components/credits/creditsWaysToGetCredits/CreditsWaysToGetCredits.js.map +2 -2
- package/dist/cjs/components/credits/creditsWaysToGetCredits/type.d.ts +2 -2
- package/dist/cjs/components/credits/creditsWaysToGetCredits/type.js.map +1 -1
- package/dist/cjs/components/credits/index.d.ts +2 -1
- package/dist/cjs/components/credits/index.js +1 -1
- package/dist/cjs/components/credits/index.js.map +3 -3
- package/dist/cjs/components/credits/modal/MyRewardsModal.d.ts +16 -0
- 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/RewardsModal.d.ts +64 -0
- package/dist/cjs/components/credits/modal/RewardsModal.js +2 -0
- package/dist/cjs/components/credits/modal/RewardsModal.js.map +7 -0
- package/dist/cjs/components/credits/modal/activitiesModal.d.ts +1 -1
- package/dist/cjs/components/credits/modal/activitiesModal.js +2 -2
- package/dist/cjs/components/credits/modal/activitiesModal.js.map +3 -3
- package/dist/cjs/components/credits/modal/creditsUploadReceiptModal.js +2 -2
- package/dist/cjs/components/credits/modal/creditsUploadReceiptModal.js.map +3 -3
- package/dist/cjs/components/credits/modal/loadingDots.js +1 -1
- package/dist/cjs/components/credits/modal/loadingDots.js.map +2 -2
- package/dist/cjs/components/credits/modal/modalContainer.js +2 -2
- package/dist/cjs/components/credits/modal/modalContainer.js.map +4 -4
- package/dist/cjs/components/credits/modal/rulesModal.d.ts +1 -1
- package/dist/cjs/components/credits/modal/rulesModal.js +2 -2
- package/dist/cjs/components/credits/modal/rulesModal.js.map +3 -3
- package/dist/cjs/components/credits/modal/subscribeModal.d.ts +1 -1
- package/dist/cjs/components/credits/modal/subscribeModal.js +2 -2
- 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 +2 -2
- package/dist/cjs/components/credits/type.d.ts +67 -5
- package/dist/cjs/components/credits/type.js +1 -1
- package/dist/cjs/components/credits/type.js.map +1 -1
- package/dist/cjs/stories/LiveChatWidget.stories.js +2 -9
- package/dist/cjs/stories/LiveChatWidget.stories.js.map +2 -2
- package/dist/cjs/templates/Credits.d.ts +1 -87
- package/dist/cjs/templates/Credits.js +1 -1
- package/dist/cjs/templates/Credits.js.map +3 -3
- package/dist/cjs/templates/Credits.types.d.ts +96 -0
- package/dist/cjs/templates/Credits.types.js +2 -0
- package/dist/cjs/templates/Credits.types.js.map +7 -0
- package/dist/esm/components/LiveChatWidget/LiveChatWidget.js +1 -1
- package/dist/esm/components/LiveChatWidget/LiveChatWidget.js.map +3 -3
- package/dist/esm/components/LiveChatWidget/components/MessageContent/PromotionList.js.map +2 -2
- package/dist/esm/components/LiveChatWidget/components/MessageList.js +3 -3
- package/dist/esm/components/LiveChatWidget/components/MessageList.js.map +3 -3
- package/dist/esm/components/LiveChatWidget/hooks/useChatState.d.ts +2 -1
- package/dist/esm/components/LiveChatWidget/hooks/useChatState.js +1 -1
- package/dist/esm/components/LiveChatWidget/hooks/useChatState.js.map +2 -2
- package/dist/esm/components/LiveChatWidget/types.d.ts +2 -1
- package/dist/esm/components/credits/context/const.d.ts +10 -2
- package/dist/esm/components/credits/context/const.js +1 -1
- package/dist/esm/components/credits/context/const.js.map +2 -2
- package/dist/esm/components/credits/context/hooks/useFunctionMemberPrice.d.ts +7 -0
- package/dist/esm/components/credits/context/hooks/useFunctionMemberPrice.js +2 -0
- package/dist/esm/components/credits/context/hooks/useFunctionMemberPrice.js.map +7 -0
- package/dist/esm/components/credits/context/hooks/useMyRewards.js +1 -1
- package/dist/esm/components/credits/context/hooks/useMyRewards.js.map +3 -3
- package/dist/esm/components/credits/context/hooks/useRedeemGoGift.d.ts +17 -0
- package/dist/esm/components/credits/context/hooks/useRedeemGoGift.js +2 -0
- package/dist/esm/components/credits/context/hooks/useRedeemGoGift.js.map +7 -0
- package/dist/esm/components/credits/context/hooks/useRedeemableList.d.ts +7 -2
- package/dist/esm/components/credits/context/hooks/useRedeemableList.js +1 -1
- package/dist/esm/components/credits/context/hooks/useRedeemableList.js.map +3 -3
- package/dist/esm/components/credits/context/provider.d.ts +5 -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/response.d.ts +1 -0
- package/dist/esm/components/credits/context/utils/atobID.d.ts +1 -0
- package/dist/esm/components/credits/context/utils/atobID.js +2 -0
- package/dist/esm/components/credits/context/utils/atobID.js.map +7 -0
- package/dist/esm/components/credits/context/utils/functionDiscountCalculate.d.ts +5 -0
- package/dist/esm/components/credits/context/utils/functionDiscountCalculate.js +2 -0
- package/dist/esm/components/credits/context/utils/functionDiscountCalculate.js.map +7 -0
- package/dist/esm/components/credits/context/utils/getFunctionMemberPrice.d.ts +8 -0
- package/dist/esm/components/credits/context/utils/getFunctionMemberPrice.js +2 -0
- package/dist/esm/components/credits/context/utils/getFunctionMemberPrice.js.map +7 -0
- package/dist/esm/components/credits/context/utils/getFunctionMemberPriceDiscountConfig.d.ts +9 -0
- package/dist/esm/components/credits/context/utils/getFunctionMemberPriceDiscountConfig.js +2 -0
- package/dist/esm/components/credits/context/utils/getFunctionMemberPriceDiscountConfig.js.map +7 -0
- package/dist/esm/components/credits/context/utils/variantGetCoupon.d.ts +6 -0
- package/dist/esm/components/credits/context/utils/variantGetCoupon.js +2 -0
- package/dist/esm/components/credits/context/utils/variantGetCoupon.js.map +7 -0
- package/dist/esm/components/credits/creditsAnkersolixTask/CreditsAnkersolixTask.js +1 -1
- package/dist/esm/components/credits/creditsAnkersolixTask/CreditsAnkersolixTask.js.map +1 -1
- package/dist/esm/components/credits/creditsBanner/index.js +2 -2
- package/dist/esm/components/credits/creditsBanner/index.js.map +2 -2
- package/dist/esm/components/credits/creditsCash/CreditsCash.js +1 -1
- package/dist/esm/components/credits/creditsCash/CreditsCash.js.map +1 -1
- package/dist/esm/components/credits/creditsGoGift/CreditsGoGift.d.ts +5 -0
- package/dist/esm/components/credits/creditsGoGift/CreditsGoGift.js +2 -0
- package/dist/esm/components/credits/creditsGoGift/CreditsGoGift.js.map +7 -0
- package/dist/esm/components/credits/creditsGoGift/index.d.ts +2 -0
- package/dist/esm/components/credits/creditsGoGift/index.js +2 -0
- package/dist/esm/components/credits/creditsGoGift/index.js.map +7 -0
- package/dist/esm/components/credits/creditsGoGift/type.d.ts +22 -0
- package/dist/esm/components/credits/creditsGoGift/type.js +1 -0
- package/dist/esm/components/credits/creditsGoGift/type.js.map +7 -0
- package/dist/esm/components/credits/creditsGofit/CreditsGofit.d.ts +5 -0
- package/dist/esm/components/credits/creditsGofit/CreditsGofit.js +2 -0
- package/dist/esm/components/credits/creditsGofit/CreditsGofit.js.map +7 -0
- package/dist/esm/components/credits/creditsGofit/index.d.ts +2 -0
- package/dist/esm/components/credits/creditsGofit/index.js +2 -0
- package/dist/esm/components/credits/creditsGofit/index.js.map +7 -0
- package/dist/esm/components/credits/creditsGofit/type.d.ts +22 -0
- package/dist/esm/components/credits/creditsGofit/type.js +1 -0
- package/dist/esm/components/credits/creditsGofit/type.js.map +7 -0
- package/dist/esm/components/credits/creditsInfoCard/index.js +1 -1
- package/dist/esm/components/credits/creditsInfoCard/index.js.map +3 -3
- package/dist/esm/components/credits/creditsMemberPrice/CreditsMemberPrice.js +1 -1
- package/dist/esm/components/credits/creditsMemberPrice/CreditsMemberPrice.js.map +1 -1
- 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/RedeemCouponModal/CouponInit.d.ts +10 -0
- package/dist/esm/components/credits/creditsRedeemList/RedeemCouponModal/CouponInit.js +2 -0
- package/dist/esm/components/credits/creditsRedeemList/RedeemCouponModal/CouponInit.js.map +7 -0
- package/dist/esm/components/credits/creditsRedeemList/RedeemCouponModal/CouponSuccess.d.ts +10 -0
- package/dist/esm/components/credits/creditsRedeemList/RedeemCouponModal/CouponSuccess.js +2 -0
- package/dist/esm/components/credits/creditsRedeemList/RedeemCouponModal/CouponSuccess.js.map +7 -0
- package/dist/esm/components/credits/creditsRedeemList/RedeemCouponModal.d.ts +4 -5
- package/dist/esm/components/credits/creditsRedeemList/RedeemCouponModal.js +1 -1
- package/dist/esm/components/credits/creditsRedeemList/RedeemCouponModal.js.map +3 -3
- package/dist/esm/components/credits/creditsRedeemList/RedeemProductModal/Address.d.ts +2 -3
- package/dist/esm/components/credits/creditsRedeemList/RedeemProductModal/Address.js +1 -1
- package/dist/esm/components/credits/creditsRedeemList/RedeemProductModal/Address.js.map +2 -2
- package/dist/esm/components/credits/creditsRedeemList/RedeemProductModal/Init.d.ts +2 -3
- package/dist/esm/components/credits/creditsRedeemList/RedeemProductModal/Init.js +1 -1
- package/dist/esm/components/credits/creditsRedeemList/RedeemProductModal/Init.js.map +2 -2
- package/dist/esm/components/credits/creditsRedeemList/RedeemProductModal/NonProductValue.d.ts +1 -3
- package/dist/esm/components/credits/creditsRedeemList/RedeemProductModal/NonProductValue.js +1 -1
- package/dist/esm/components/credits/creditsRedeemList/RedeemProductModal/NonProductValue.js.map +3 -3
- package/dist/esm/components/credits/creditsRedeemList/RedeemProductModal/ProductInfo.d.ts +3 -4
- 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.d.ts +2 -3
- 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/RedeemProductModal/index.d.ts +4 -5
- package/dist/esm/components/credits/creditsRedeemList/RedeemProductModal/index.js +1 -1
- package/dist/esm/components/credits/creditsRedeemList/RedeemProductModal/index.js.map +3 -3
- package/dist/esm/components/credits/creditsRedeemList/RedeemVirtualProductModal/VirtualProductInit.d.ts +10 -0
- package/dist/esm/components/credits/creditsRedeemList/RedeemVirtualProductModal/VirtualProductInit.js +2 -0
- package/dist/esm/components/credits/creditsRedeemList/RedeemVirtualProductModal/VirtualProductInit.js.map +7 -0
- package/dist/esm/components/credits/creditsRedeemList/RedeemVirtualProductModal/VirtualProductSuccess.d.ts +9 -0
- package/dist/esm/components/credits/creditsRedeemList/RedeemVirtualProductModal/VirtualProductSuccess.js +2 -0
- package/dist/esm/components/credits/creditsRedeemList/RedeemVirtualProductModal/VirtualProductSuccess.js.map +7 -0
- package/dist/esm/components/credits/creditsRedeemList/RedeemVirtualProductModal.d.ts +8 -0
- package/dist/esm/components/credits/creditsRedeemList/RedeemVirtualProductModal.js +2 -0
- package/dist/esm/components/credits/creditsRedeemList/RedeemVirtualProductModal.js.map +7 -0
- package/dist/esm/components/credits/creditsRedeemList/RedeemableItem.js +1 -1
- package/dist/esm/components/credits/creditsRedeemList/RedeemableItem.js.map +2 -2
- package/dist/esm/components/credits/creditsRedeemList/type.d.ts +11 -0
- package/dist/esm/components/credits/creditsWaysToGetCredits/CreditsWaysToGetCredits.js +1 -1
- package/dist/esm/components/credits/creditsWaysToGetCredits/CreditsWaysToGetCredits.js.map +1 -1
- package/dist/esm/components/credits/creditsWaysToGetCredits/type.d.ts +2 -2
- package/dist/esm/components/credits/creditsWaysToGetCredits/type.js.map +1 -1
- package/dist/esm/components/credits/index.d.ts +2 -1
- package/dist/esm/components/credits/index.js +1 -1
- package/dist/esm/components/credits/index.js.map +3 -3
- package/dist/esm/components/credits/modal/MyRewardsModal.d.ts +16 -0
- package/dist/esm/components/credits/modal/MyRewardsModal.js +1 -1
- package/dist/esm/components/credits/modal/MyRewardsModal.js.map +3 -3
- package/dist/esm/components/credits/modal/RewardsModal.d.ts +64 -0
- package/dist/esm/components/credits/modal/RewardsModal.js +2 -0
- package/dist/esm/components/credits/modal/RewardsModal.js.map +7 -0
- package/dist/esm/components/credits/modal/activitiesModal.d.ts +1 -1
- package/dist/esm/components/credits/modal/activitiesModal.js +2 -2
- package/dist/esm/components/credits/modal/activitiesModal.js.map +3 -3
- package/dist/esm/components/credits/modal/creditsUploadReceiptModal.js +2 -2
- package/dist/esm/components/credits/modal/creditsUploadReceiptModal.js.map +2 -2
- package/dist/esm/components/credits/modal/loadingDots.js +1 -1
- package/dist/esm/components/credits/modal/loadingDots.js.map +2 -2
- package/dist/esm/components/credits/modal/modalContainer.js +2 -2
- package/dist/esm/components/credits/modal/modalContainer.js.map +3 -3
- package/dist/esm/components/credits/modal/rulesModal.d.ts +1 -1
- package/dist/esm/components/credits/modal/rulesModal.js +2 -2
- package/dist/esm/components/credits/modal/rulesModal.js.map +3 -3
- package/dist/esm/components/credits/modal/subscribeModal.d.ts +1 -1
- package/dist/esm/components/credits/modal/subscribeModal.js +2 -2
- package/dist/esm/components/credits/modal/subscribeModal.js.map +2 -2
- package/dist/esm/components/credits/modal/tip.js +1 -1
- package/dist/esm/components/credits/modal/tip.js.map +2 -2
- package/dist/esm/components/credits/type.d.ts +67 -5
- package/dist/esm/stories/LiveChatWidget.stories.js +1 -8
- package/dist/esm/stories/LiveChatWidget.stories.js.map +2 -2
- package/dist/esm/templates/Credits.d.ts +1 -87
- package/dist/esm/templates/Credits.js +1 -1
- package/dist/esm/templates/Credits.js.map +3 -3
- package/dist/esm/templates/Credits.types.d.ts +96 -0
- package/dist/esm/templates/Credits.types.js +2 -0
- package/dist/esm/templates/Credits.types.js.map +7 -0
- package/package.json +2 -2
- package/src/components/LiveChatWidget/LiveChatWidget.tsx +20 -0
- package/src/components/LiveChatWidget/components/MessageContent/PromotionList.tsx +1 -1
- package/src/components/LiveChatWidget/components/MessageList.tsx +39 -44
- package/src/components/LiveChatWidget/hooks/useChatState.ts +4 -3
- package/src/components/LiveChatWidget/types.ts +2 -1
- package/src/components/credits/context/const.ts +8 -0
- package/src/components/credits/context/hooks/useMyRewards.ts +7 -31
- package/src/components/credits/context/hooks/useRedeemGoGift.ts +36 -0
- package/src/components/credits/context/hooks/useRedeemableList.ts +13 -19
- package/src/components/credits/context/provider.tsx +17 -2
- package/src/components/credits/context/response.ts +1 -0
- package/src/components/credits/creditsAnkersolixTask/CreditsAnkersolixTask.tsx +2 -2
- package/src/components/credits/creditsBanner/index.tsx +5 -5
- package/src/components/credits/creditsCash/CreditsCash.tsx +1 -1
- package/src/components/credits/creditsGoGift/CreditsGoGift.tsx +210 -0
- package/src/components/credits/creditsGoGift/index.ts +2 -0
- package/src/components/credits/creditsGoGift/type.ts +23 -0
- package/src/components/credits/creditsInfoCard/index.tsx +5 -28
- package/src/components/credits/creditsMemberPrice/CreditsMemberPrice.tsx +1 -1
- package/src/components/credits/creditsRedeemList/CreditsRedeemList.tsx +39 -17
- package/src/components/credits/creditsRedeemList/RedeemCouponModal/CouponInit.tsx +77 -0
- package/src/components/credits/creditsRedeemList/RedeemCouponModal/CouponSuccess.tsx +86 -0
- package/src/components/credits/creditsRedeemList/RedeemCouponModal.tsx +29 -138
- package/src/components/credits/creditsRedeemList/RedeemProductModal/Address.tsx +5 -6
- package/src/components/credits/creditsRedeemList/RedeemProductModal/Init.tsx +11 -12
- package/src/components/credits/creditsRedeemList/RedeemProductModal/NonProductValue.tsx +23 -14
- package/src/components/credits/creditsRedeemList/RedeemProductModal/ProductInfo.tsx +11 -9
- package/src/components/credits/creditsRedeemList/RedeemProductModal/Success.tsx +4 -5
- package/src/components/credits/creditsRedeemList/RedeemProductModal/index.tsx +29 -28
- package/src/components/credits/creditsRedeemList/RedeemVirtualProductModal/VirtualProductInit.tsx +101 -0
- package/src/components/credits/creditsRedeemList/RedeemVirtualProductModal/VirtualProductSuccess.tsx +65 -0
- package/src/components/credits/creditsRedeemList/RedeemVirtualProductModal.tsx +156 -0
- package/src/components/credits/creditsRedeemList/RedeemableItem.tsx +1 -1
- package/src/components/credits/creditsRedeemList/type.ts +11 -0
- package/src/components/credits/creditsWaysToGetCredits/CreditsWaysToGetCredits.tsx +2 -2
- package/src/components/credits/creditsWaysToGetCredits/type.ts +2 -2
- package/src/components/credits/index.ts +2 -1
- package/src/components/credits/modal/{activitiesModal.tsx → ActivitiesModal.tsx} +2 -2
- package/src/components/credits/modal/{creditsUploadReceiptModal.tsx → CreditsUploadReceiptModal.tsx} +1 -1
- package/src/components/credits/modal/{modalContainer.tsx → ModalContainer.tsx} +1 -1
- package/src/components/credits/modal/{MyRewardsModal.tsx → RewardsModal.tsx} +145 -103
- package/src/components/credits/modal/{rulesModal.tsx → RulesModal.tsx} +1 -1
- package/src/components/credits/modal/{subscribeModal.tsx → SubscribeModal.tsx} +1 -1
- package/src/components/credits/type.ts +68 -5
- package/src/stories/LiveChatWidget.stories.tsx +7 -12
- package/src/styles/livechat.css +29 -0
- package/src/templates/Credits.tsx +110 -142
- package/src/templates/Credits.types.ts +110 -0
- package/dist/index.d.mts +0 -1305
- package/dist/index.d.ts +0 -1305
- package/dist/index.js +0 -26656
- package/dist/index.js.map +0 -1
- package/dist/index.mjs +0 -26641
- package/dist/index.mjs.map +0 -1
- /package/src/components/credits/modal/{loadingDots.tsx → LoadingDots.tsx} +0 -0
- /package/src/components/credits/modal/{tip.tsx → Tip.tsx} +0 -0
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";var B=Object.create;var l=Object.defineProperty;var F=Object.getOwnPropertyDescriptor;var H=Object.getOwnPropertyNames;var L=Object.getPrototypeOf,M=Object.prototype.hasOwnProperty;var P=(e,t)=>{for(var s in t)l(e,s,{get:t[s],enumerable:!0})},b=(e,t,s,o)=>{if(t&&typeof t=="object"||typeof t=="function")for(let r of H(t))!M.call(e,r)&&r!==s&&l(e,r,{get:()=>t[r],enumerable:!(o=F(t,r))||o.enumerable});return e};var C=(e,t,s)=>(s=e!=null?B(L(e)):{},b(t||!e||!e.__esModule?l(s,"default",{value:e,enumerable:!0}):s,e)),O=e=>b(l({},"__esModule",{value:!0}),e);var U={};P(U,{CreditsCash:()=>T});module.exports=O(U);var a=require("react/jsx-runtime"),c=require("@anker-in/headless-ui"),p=require("react"),h=C(require("./RedeemableItem")),y=C(require("../context/hooks/useRedeemableList")),v=C(require("../modal/
|
|
1
|
+
"use strict";var B=Object.create;var l=Object.defineProperty;var F=Object.getOwnPropertyDescriptor;var H=Object.getOwnPropertyNames;var L=Object.getPrototypeOf,M=Object.prototype.hasOwnProperty;var P=(e,t)=>{for(var s in t)l(e,s,{get:t[s],enumerable:!0})},b=(e,t,s,o)=>{if(t&&typeof t=="object"||typeof t=="function")for(let r of H(t))!M.call(e,r)&&r!==s&&l(e,r,{get:()=>t[r],enumerable:!(o=F(t,r))||o.enumerable});return e};var C=(e,t,s)=>(s=e!=null?B(L(e)):{},b(t||!e||!e.__esModule?l(s,"default",{value:e,enumerable:!0}):s,e)),O=e=>b(l({},"__esModule",{value:!0}),e);var U={};P(U,{CreditsCash:()=>T});module.exports=O(U);var a=require("react/jsx-runtime"),c=require("@anker-in/headless-ui"),p=require("react"),h=C(require("./RedeemableItem")),y=C(require("../context/hooks/useRedeemableList")),v=C(require("../modal/RulesModal")),u=require("@anker-in/lib"),g=require("@anker-in/lib"),N=require("../context/provider"),R=require("../../../constants");const T=({copy:e,id:t})=>{const[s,o]=(0,p.useState)(),{redeemableList:r}=(0,y.default)(),{pageCommon:D}=(0,N.useCreditsContext)(),{brand:I}=(0,u.useHeadlessContext)(),S=R.ROUNDED_BRANDS.includes(I),_=[],{data:f}=(0,u.useProductsByHandles)({handles:e?.list?.map(n=>n.products?.[0]?.handle)||[],metafieldIdentifiers:{variant:_}}),k=(0,p.useMemo)(()=>f?.map(n=>{const d=(e.list||[]).find(m=>m.products?.[0]?.handle===n.handle),i=r.find(m=>m.id?.toString()===d?.redeemId?.toString()),x=n.variants?.find(m=>m.sku===d?.products?.[0]?.sku)||n.variants?.[0];return!i||!x?null:{product:n,productVariant:x,alpcData:{id:i?.id,consumeCredits:i?.consume_credits,remainingInventory:i?.remaining_inventory,isLimited:i?.is_limited,consumeType:i?.consume_type,title:i?.name,desc:i?.note},config:d}}).filter(Boolean),[f,e.list,r]);return(0,a.jsxs)(c.Container,{id:t,className:(0,g.classNames)("bg-[#F5F5F5]"),children:[(0,a.jsx)(c.Heading,{as:"h2",size:"4",html:e.title}),(0,a.jsx)("div",{className:"relative mt-[24px] grid grid-cols-4 gap-[16px] l:gap-[12px] md:grid-cols-2 md-xl:grid-cols-3",children:k?.map((n,d)=>(0,a.jsx)(h.default,{copy:e,itemData:n,setRules:o,currencyCode:f?.[0]?.price.currencyCode||"USD"},d))}),s&&(0,a.jsx)(v.default,{overlayClassName:"md:px-[16px] md:items-center",className:(0,g.classNames)("md:h-fit md:rounded-b-[16px]",!S&&"md:rounded-none"),isOpen:s.length>0,onClose:()=>o([]),titleClassName:"border-b-transparent h-[56px]",rules:s,scrollClassName:"md:mt-[8px] md:mb-[24px] md:pt-0",title:D?.ruleLabel,ruleClassName:"text-[#1d1d1f] font-bold"})]})};
|
|
2
2
|
//# sourceMappingURL=CreditsCash.js.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../../../src/components/credits/creditsCash/CreditsCash.tsx"],
|
|
4
|
-
"sourcesContent": ["import { Container, Heading, Text } from '@anker-in/headless-ui'\nimport { useMemo, useState } from 'react'\n\nimport RedeemableItem from './RedeemableItem'\nimport useRedeemableList from '../context/hooks/useRedeemableList'\nimport RulesModal from '../modal/
|
|
4
|
+
"sourcesContent": ["import { Container, Heading, Text } from '@anker-in/headless-ui'\nimport { useMemo, useState } from 'react'\n\nimport RedeemableItem from './RedeemableItem'\nimport useRedeemableList from '../context/hooks/useRedeemableList'\nimport RulesModal from '../modal/RulesModal'\nimport { useProductsByHandles, useHeadlessContext } from '@anker-in/lib'\nimport { CreditsCashCopy, RedeemItem } from './type'\nimport { Product, classNames as cn } from '@anker-in/lib'\nimport { useCreditsContext } from '../context/provider'\nimport { numberFormat } from '../context/utils'\nimport { ROUNDED_BRANDS } from '../../../constants'\n\nexport const CreditsCash = ({ copy, id }: { copy: CreditsCashCopy; id?: string }) => {\n const [rules, setRules] = useState<string | string[]>()\n const { redeemableList } = useRedeemableList()\n const { pageCommon } = useCreditsContext()\n const { brand } = useHeadlessContext()\n const rounded = ROUNDED_BRANDS.includes(brand)\n\n const variantMetafieldIdentifiers: any[] = []\n\n const { data: productByHandles } = useProductsByHandles({\n handles: copy?.list?.map(item => item.products?.[0]?.handle) || [],\n metafieldIdentifiers: {\n variant: variantMetafieldIdentifiers,\n },\n })\n\n const list = useMemo(() => {\n return productByHandles\n ?.map((product: Product) => {\n const config = (copy.list || []).find(item => item.products?.[0]?.handle === product.handle)\n const alpcData = redeemableList.find(item => item.id?.toString() === config?.redeemId?.toString())\n const productVariant =\n product.variants?.find((variant: any) => variant.sku === config?.products?.[0]?.sku) || product.variants?.[0]\n if (!alpcData || !productVariant) return null\n return {\n product,\n productVariant,\n alpcData: {\n id: alpcData?.id,\n consumeCredits: alpcData?.consume_credits,\n remainingInventory: alpcData?.remaining_inventory,\n isLimited: alpcData?.is_limited,\n consumeType: alpcData?.consume_type,\n title: alpcData?.name,\n desc: alpcData?.note,\n },\n config,\n }\n })\n .filter(Boolean) as unknown as RedeemItem[]\n }, [productByHandles, copy.list, redeemableList])\n\n return (\n <Container id={id} className={cn('bg-[#F5F5F5]')}>\n <Heading as=\"h2\" size=\"4\" html={copy.title} />\n\n <div className=\"relative mt-[24px] grid grid-cols-4 gap-[16px] l:gap-[12px] md:grid-cols-2 md-xl:grid-cols-3\">\n {list?.map((item, index: number) => (\n <RedeemableItem\n key={index}\n copy={copy}\n itemData={item}\n setRules={setRules}\n currencyCode={productByHandles?.[0]?.price.currencyCode || 'USD'}\n />\n ))}\n </div>\n\n {rules && (\n <RulesModal\n overlayClassName=\"md:px-[16px] md:items-center\"\n className={cn('md:h-fit md:rounded-b-[16px]', !rounded && 'md:rounded-none')}\n isOpen={rules.length > 0}\n onClose={() => setRules([])}\n titleClassName=\"border-b-transparent h-[56px]\"\n rules={rules}\n scrollClassName=\"md:mt-[8px] md:mb-[24px] md:pt-0\"\n title={pageCommon?.ruleLabel}\n ruleClassName=\"text-[#1d1d1f] font-bold\"\n />\n )}\n </Container>\n )\n}\n"],
|
|
5
5
|
"mappings": "0jBAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,iBAAAE,IAAA,eAAAC,EAAAH,GAwDI,IAAAI,EAAA,6BAxDJC,EAAyC,iCACzCC,EAAkC,iBAElCC,EAA2B,+BAC3BC,EAA8B,iDAC9BC,EAAuB,kCACvBC,EAAyD,yBAEzDA,EAA0C,yBAC1CC,EAAkC,+BAElCC,EAA+B,8BAExB,MAAMV,EAAc,CAAC,CAAE,KAAAW,EAAM,GAAAC,CAAG,IAA8C,CACnF,KAAM,CAACC,EAAOC,CAAQ,KAAI,YAA4B,EAChD,CAAE,eAAAC,CAAe,KAAI,EAAAC,SAAkB,EACvC,CAAE,WAAAC,CAAW,KAAI,qBAAkB,EACnC,CAAE,MAAAC,CAAM,KAAI,sBAAmB,EAC/BC,EAAU,iBAAe,SAASD,CAAK,EAEvCE,EAAqC,CAAC,EAEtC,CAAE,KAAMC,CAAiB,KAAI,wBAAqB,CACtD,QAASV,GAAM,MAAM,IAAIW,GAAQA,EAAK,WAAW,CAAC,GAAG,MAAM,GAAK,CAAC,EACjE,qBAAsB,CACpB,QAASF,CACX,CACF,CAAC,EAEKG,KAAO,WAAQ,IACZF,GACH,IAAKG,GAAqB,CAC1B,MAAMC,GAAUd,EAAK,MAAQ,CAAC,GAAG,KAAKW,GAAQA,EAAK,WAAW,CAAC,GAAG,SAAWE,EAAQ,MAAM,EACrFE,EAAWX,EAAe,KAAKO,GAAQA,EAAK,IAAI,SAAS,IAAMG,GAAQ,UAAU,SAAS,CAAC,EAC3FE,EACJH,EAAQ,UAAU,KAAMI,GAAiBA,EAAQ,MAAQH,GAAQ,WAAW,CAAC,GAAG,GAAG,GAAKD,EAAQ,WAAW,CAAC,EAC9G,MAAI,CAACE,GAAY,CAACC,EAAuB,KAClC,CACL,QAAAH,EACA,eAAAG,EACA,SAAU,CACR,GAAID,GAAU,GACd,eAAgBA,GAAU,gBAC1B,mBAAoBA,GAAU,oBAC9B,UAAWA,GAAU,WACrB,YAAaA,GAAU,aACvB,MAAOA,GAAU,KACjB,KAAMA,GAAU,IAClB,EACA,OAAAD,CACF,CACF,CAAC,EACA,OAAO,OAAO,EAChB,CAACJ,EAAkBV,EAAK,KAAMI,CAAc,CAAC,EAEhD,SACE,QAAC,aAAU,GAAIH,EAAI,aAAW,EAAAiB,YAAG,cAAc,EAC7C,oBAAC,WAAQ,GAAG,KAAK,KAAK,IAAI,KAAMlB,EAAK,MAAO,KAE5C,OAAC,OAAI,UAAU,+FACZ,SAAAY,GAAM,IAAI,CAACD,EAAMQ,OAChB,OAAC,EAAAC,QAAA,CAEC,KAAMpB,EACN,SAAUW,EACV,SAAUR,EACV,aAAcO,IAAmB,CAAC,GAAG,MAAM,cAAgB,OAJtDS,CAKP,CACD,EACH,EAECjB,MACC,OAAC,EAAAmB,QAAA,CACC,iBAAiB,+BACjB,aAAW,EAAAH,YAAG,+BAAgC,CAACV,GAAW,iBAAiB,EAC3E,OAAQN,EAAM,OAAS,EACvB,QAAS,IAAMC,EAAS,CAAC,CAAC,EAC1B,eAAe,gCACf,MAAOD,EACP,gBAAgB,mCAChB,MAAOI,GAAY,UACnB,cAAc,2BAChB,GAEJ,CAEJ",
|
|
6
|
-
"names": ["CreditsCash_exports", "__export", "CreditsCash", "__toCommonJS", "import_jsx_runtime", "import_headless_ui", "import_react", "import_RedeemableItem", "import_useRedeemableList", "
|
|
6
|
+
"names": ["CreditsCash_exports", "__export", "CreditsCash", "__toCommonJS", "import_jsx_runtime", "import_headless_ui", "import_react", "import_RedeemableItem", "import_useRedeemableList", "import_RulesModal", "import_lib", "import_provider", "import_constants", "copy", "id", "rules", "setRules", "redeemableList", "useRedeemableList", "pageCommon", "brand", "rounded", "variantMetafieldIdentifiers", "productByHandles", "item", "list", "product", "config", "alpcData", "productVariant", "variant", "cn", "index", "RedeemableItem", "RulesModal"]
|
|
7
7
|
}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";var j=Object.create;var C=Object.defineProperty;var z=Object.getOwnPropertyDescriptor;var U=Object.getOwnPropertyNames;var $=Object.getPrototypeOf,V=Object.prototype.hasOwnProperty;var q=(e,l)=>{for(var s in l)C(e,s,{get:l[s],enumerable:!0})},I=(e,l,s,p)=>{if(l&&typeof l=="object"||typeof l=="function")for(let o of U(l))!V.call(e,o)&&o!==s&&C(e,o,{get:()=>l[o],enumerable:!(p=z(l,o))||p.enumerable});return e};var w=(e,l,s)=>(s=e!=null?j($(e)):{},I(l||!e||!e.__esModule?C(s,"default",{value:e,enumerable:!0}):s,e)),J=e=>I(C({},"__esModule",{value:!0}),e);var Q={};q(Q,{CreditsGoGift:()=>K});module.exports=J(Q);var t=require("react/jsx-runtime"),r=require("@anker-in/headless-ui"),d=require("react"),f=require("@anker-in/lib"),M=w(require("../creditsRedeemList/RedeemVirtualProductModal")),k=w(require("../context/hooks/useRedeemableList")),T=require("../context/provider"),O=require("../../../constants"),_=require("@anker-in/lib"),m=require("../context/const"),A=w(require("../modal/RulesModal")),G=require("../../../components/registration");const K=({copy:e,id:l})=>{const[s,p]=(0,d.useState)(!1),[o,u]=(0,d.useState)(),[v,E]=(0,d.useState)(),{redeemableList:N}=(0,k.default)({consumeType:m.AlpcConsumeType.ExternalProduct}),{pageCommon:n,profile:x,creditInfo:R,setOpenMyRewardsModal:H,openSignUpPopup:B}=(0,T.useCreditsContext)(),{authCodeActivate:L}=(0,G.useRegistration)(),{brand:y}=(0,_.useHeadlessContext)(),g=O.ROUNDED_BRANDS.includes(y),b=Object.keys(x||{}).length>0,F=n?.redeemModal||{};console.log("redeemableList",N);const c=(0,d.useMemo)(()=>{const i=N.find(a=>a.id?.toString()===e?.redeemId?.toString());return i?{alpc:{id:i.id.toString(),consumeCredits:i.consume_credits,remainingInventory:i.remaining_inventory,isLimited:!!i.is_limited,consumeType:i.consume_type,showCredit:!0,title:i.name},config:{title:e.cardTitle,desc:e.cardDesc,type:e.type,value:e.value||"",rules:e.rules,image:e.cardImg}}:null},[N,e]),P=i=>{const a=n?.redeemModal;i===m.AlpcErrorCode.CodeLpcShopifyCouponRuleRedeemLimit?u(a?.redeemLimitError):i===m.AlpcErrorCode.CodeLpcRuleInventoryNotEnough?u(a?.inventoryNotEnough):i===m.AlpcErrorCode.CodeLpcNotEnoughCredits?u(a?.creditsNotEnough):i===m.AlpcErrorCode.CodeCrossSiteError?u(a?.crossSiteError):u(a?.commonError)},S=(0,d.useMemo)(()=>x?.activated&&Number(c?.alpc?.consumeCredits)>Number(R?.available_credit||0),[x?.activated,c?.alpc?.consumeCredits,R?.available_credit]),h=Number(c?.alpc.remainingInventory)<=0,D=(0,d.useMemo)(()=>h?n?.soldOut||"Sold Out":b?e.redeemBtn:e.unlockRewards,[b,h,e,n]);return c?(0,t.jsxs)(r.Container,{id:l,children:[(0,t.jsx)(r.Heading,{as:"h2",size:"4",html:e.title}),(0,t.jsxs)("div",{className:(0,f.classNames)("mt-[24px] flex h-fit w-full items-center bg-[#eaeaec] p-[24px]","l:flex-col l:gap-[12px] l:p-[12px]","min-l:flex-row min-l:gap-[64px]",!g&&"rounded-none",g&&"rounded-[12px]"),children:[(0,t.jsx)("div",{className:"relative flex h-[200px] w-[304px] shrink-0 items-center justify-center overflow-hidden l:h-auto l:aspect-h-[120] l:aspect-w-[304] l:w-full",children:e.cardImg?.url&&(0,t.jsx)(r.Picture,{className:(0,f.classNames)("size-full",g&&"rounded-[12px]"),source:e.mCardImg?.url?`${e.cardImg.url},${e.mCardImg.url} 1024`:e.cardImg.url})}),(0,t.jsxs)("div",{className:"flex w-full items-end justify-between l:flex-col l:items-start l:gap-[24px]",children:[(0,t.jsxs)("div",{className:"flex flex-col gap-[20px] l:w-full l:gap-[12px]",children:[(0,t.jsxs)("div",{className:"flex flex-col gap-[4px]",children:[(0,t.jsx)(r.Text,{html:e.cardTitle,className:"text-[32px] font-bold leading-[1.2] text-[#1D1D1F] l:text-[18px]"}),(0,t.jsx)(r.Text,{html:e.cardDesc,className:"text-[18px] font-bold leading-[1.4] text-[#3D3D3F] l:text-[12px]"})]}),(0,t.jsx)(r.Text,{html:e.cardTip,className:"text-[18px] font-bold leading-[1.4] text-[#000] l:text-[12px]"})]}),(0,t.jsxs)("div",{className:"flex shrink-0 flex-col items-end l:w-full l:items-start",children:[(0,t.jsx)(r.Button,{variant:"primary",disabled:S||h,onClick:()=>{b?!x?.activated&&!L.isActivateSuccess?L.open():p(!0):B()},title:S?n.insufficientCredits:D,children:D}),o&&(0,t.jsx)("div",{className:"mt-[8px] text-[14px] font-bold leading-[1.2] text-[#FFC24D] l:text-[12px]",children:o}),(e.viewRedeemHistory||e.rulesLink)&&(0,t.jsxs)("div",{className:"mt-[18px] flex gap-[16px] text-[18px] font-bold leading-[1.4] l:mt-[12px] l:gap-0 l:text-[14px]",children:[e.viewRedeemHistory&&(0,t.jsx)(r.Text,{html:e.viewRedeemHistory,className:"cursor-pointer text-[#4794EC] font-bold underline",onClick:()=>H(!0)}),n.ruleLabel&&(0,t.jsx)(r.Text,{html:n.ruleLabel,className:(0,f.classNames)("cursor-pointer text-[#4794EC] font-bold underline",e.viewRedeemHistory&&"l:ml-[16px]"),onClick:()=>E(e.rules)})]})]})]})]}),s&&c&&(0,t.jsx)(M.default,{copy:F,onClose:()=>{p(!1),u(void 0)},item:c,onError:P}),v&&(0,t.jsx)(A.default,{overlayClassName:"md:px-[16px] md:items-center",className:(0,f.classNames)("md:h-fit md:rounded-b-[16px]",!g&&"md:rounded-none"),isOpen:v.length>0,onClose:()=>E(void 0),titleClassName:"border-b-transparent h-[56px]",rules:v,scrollClassName:"md:mt-[8px] mt-[8px] md:mb-[24px] md:pt-0",title:n?.ruleLabel,ruleClassName:"text-[#1d1d1f] font-bold"})]}):null};
|
|
2
|
+
//# sourceMappingURL=CreditsGoGift.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../../../src/components/credits/creditsGoGift/CreditsGoGift.tsx"],
|
|
4
|
+
"sourcesContent": ["import { Container, Heading, Picture, Button, Text } from '@anker-in/headless-ui'\nimport { useMemo, useState } from 'react'\nimport { classNames as cn } from '@anker-in/lib'\n\nimport RedeemVirtualProductModal from '../creditsRedeemList/RedeemVirtualProductModal'\nimport useRedeemableList from '../context/hooks/useRedeemableList'\nimport { useCreditsContext } from '../context/provider'\nimport { ROUNDED_BRANDS } from '../../../constants'\nimport { useHeadlessContext } from '@anker-in/lib'\nimport { CreditsGoGiftCopy } from './type'\nimport { AlpcConsumeType, AlpcErrorCode } from '../context/const'\nimport RulesModal from '../modal/RulesModal'\nimport { useRegistration } from '../../../components/registration'\n\nexport const CreditsGoGift = ({ copy, id }: { copy: CreditsGoGiftCopy; id?: string }) => {\n const [showModal, setShowModal] = useState(false)\n const [redeemError, setRedeemError] = useState<string>()\n const [rules, setRules] = useState<string | string[]>()\n const { redeemableList } = useRedeemableList({ consumeType: AlpcConsumeType.ExternalProduct })\n const { pageCommon, profile, creditInfo, setOpenMyRewardsModal, openSignUpPopup } = useCreditsContext()\n const { authCodeActivate } = useRegistration()\n const { brand } = useHeadlessContext()\n const rounded = ROUNDED_BRANDS.includes(brand)\n\n const isLogin = Object.keys(profile || {}).length > 0\n\n const redeemModalCopy = pageCommon?.redeemModal || ({} as any)\n\n console.log('redeemableList', redeemableList)\n\n const item = useMemo(() => {\n // \u6839\u636E redeemId \u67E5\u8BE2 ExternalProduct \u7684 ALPC \u6570\u636E\n const alpcData = redeemableList.find(item => item.id?.toString() === copy?.redeemId?.toString())\n if (!alpcData) return null\n\n return {\n alpc: {\n id: alpcData.id.toString(),\n consumeCredits: alpcData.consume_credits,\n remainingInventory: alpcData.remaining_inventory,\n isLimited: !!alpcData.is_limited,\n consumeType: alpcData.consume_type,\n showCredit: true,\n title: alpcData.name,\n },\n config: {\n title: copy.cardTitle,\n desc: copy.cardDesc,\n type: copy.type,\n value: copy.value || '',\n rules: copy.rules,\n image: copy.cardImg,\n },\n }\n }, [redeemableList, copy])\n\n const handleRedeemError = (code: AlpcErrorCode) => {\n const redeemModalCopy = pageCommon?.redeemModal\n if (code === AlpcErrorCode.CodeLpcShopifyCouponRuleRedeemLimit) {\n setRedeemError(redeemModalCopy?.redeemLimitError)\n } else if (code === AlpcErrorCode.CodeLpcRuleInventoryNotEnough) {\n setRedeemError(redeemModalCopy?.inventoryNotEnough)\n } else if (code === AlpcErrorCode.CodeLpcNotEnoughCredits) {\n setRedeemError(redeemModalCopy?.creditsNotEnough)\n } else if (code === AlpcErrorCode.CodeCrossSiteError) {\n setRedeemError(redeemModalCopy?.crossSiteError)\n } else {\n setRedeemError(redeemModalCopy?.commonError)\n }\n }\n\n const inSufficientCredit = useMemo(() => {\n return (\n profile?.activated && Number(item?.alpc?.consumeCredits) > Number(creditInfo?.available_credit || 0)\n )\n }, [profile?.activated, item?.alpc?.consumeCredits, creditInfo?.available_credit])\n\n const soldOut = Number(item?.alpc.remainingInventory) <= 0\n\n const redeemButtonText = useMemo(() => {\n // \u7F3A\u8D27\u6587\u6848\n if (soldOut) {\n return pageCommon?.soldOut || 'Sold Out'\n } else if (!isLogin) {\n return copy.unlockRewards\n } else {\n return copy.redeemBtn\n }\n }, [isLogin, soldOut, copy, pageCommon])\n\n if (!item) return null\n\n return (\n <Container id={id}>\n <Heading as=\"h2\" size=\"4\" html={copy.title} />\n <div\n className={cn(\n 'mt-[24px] flex h-fit w-full items-center bg-[#eaeaec] p-[24px]',\n 'l:flex-col l:gap-[12px] l:p-[12px]',\n 'min-l:flex-row min-l:gap-[64px]',\n !rounded && 'rounded-none',\n rounded && 'rounded-[12px]'\n )}\n >\n {/* Card Image */}\n <div className=\"relative flex h-[200px] w-[304px] shrink-0 items-center justify-center overflow-hidden l:h-auto l:aspect-h-[120] l:aspect-w-[304] l:w-full\">\n {copy.cardImg?.url && (\n <Picture\n className={cn('size-full', rounded && 'rounded-[12px]')}\n source={copy.mCardImg?.url ? `${copy.cardImg.url},${copy.mCardImg.url} 1024` : copy.cardImg.url}\n />\n )}\n </div>\n\n {/* Content Section */}\n <div className=\"flex w-full items-end justify-between l:flex-col l:items-start l:gap-[24px]\">\n {/* Text Content */}\n <div className=\"flex flex-col gap-[20px] l:w-full l:gap-[12px]\">\n <div className=\"flex flex-col gap-[4px]\">\n <Text\n html={copy.cardTitle}\n className=\"text-[32px] font-bold leading-[1.2] text-[#1D1D1F] l:text-[18px]\"\n />\n <Text\n html={copy.cardDesc}\n className=\"text-[18px] font-bold leading-[1.4] text-[#3D3D3F] l:text-[12px]\"\n />\n </div>\n <Text\n html={copy.cardTip}\n className=\"text-[18px] font-bold leading-[1.4] text-[#000] l:text-[12px]\"\n />\n </div>\n\n {/* Button and Links */}\n <div className=\"flex shrink-0 flex-col items-end l:w-full l:items-start\">\n <Button\n variant=\"primary\"\n disabled={inSufficientCredit || soldOut}\n onClick={() => {\n if (!isLogin) {\n openSignUpPopup()\n } else if (!profile?.activated && !authCodeActivate.isActivateSuccess) {\n authCodeActivate.open()\n } else {\n setShowModal(true)\n }\n }}\n title={inSufficientCredit ? pageCommon.insufficientCredits : redeemButtonText}\n >\n {redeemButtonText}\n </Button>\n {redeemError && (\n <div className=\"mt-[8px] text-[14px] font-bold leading-[1.2] text-[#FFC24D] l:text-[12px]\">\n {redeemError}\n </div>\n )}\n {(copy.viewRedeemHistory || copy.rulesLink) && (\n <div className=\"mt-[18px] flex gap-[16px] text-[18px] font-bold leading-[1.4] l:mt-[12px] l:gap-0 l:text-[14px]\">\n {copy.viewRedeemHistory && (\n <Text\n html={copy.viewRedeemHistory}\n className=\"cursor-pointer text-[#4794EC] font-bold underline\"\n onClick={() => setOpenMyRewardsModal(true)}\n />\n )}\n {pageCommon.ruleLabel && (\n <Text\n html={pageCommon.ruleLabel}\n className={cn(\n 'cursor-pointer text-[#4794EC] font-bold underline',\n copy.viewRedeemHistory && 'l:ml-[16px]'\n )}\n onClick={() => setRules(copy.rules)}\n />\n )}\n </div>\n )}\n </div>\n </div>\n </div>\n\n {showModal && item && (\n <RedeemVirtualProductModal\n copy={redeemModalCopy}\n onClose={() => {\n setShowModal(false)\n setRedeemError(undefined)\n }}\n item={item}\n onError={handleRedeemError}\n />\n )}\n\n {rules && (\n <RulesModal\n overlayClassName=\"md:px-[16px] md:items-center\"\n className={cn('md:h-fit md:rounded-b-[16px]', !rounded && 'md:rounded-none')}\n isOpen={rules.length > 0}\n onClose={() => setRules(undefined)}\n titleClassName=\"border-b-transparent h-[56px]\"\n rules={rules}\n scrollClassName=\"md:mt-[8px] mt-[8px] md:mb-[24px] md:pt-0\"\n title={pageCommon?.ruleLabel}\n ruleClassName=\"text-[#1d1d1f] font-bold\"\n />\n )}\n </Container>\n )\n}\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": ["CreditsGoGift_exports", "__export", "CreditsGoGift", "__toCommonJS", "import_jsx_runtime", "import_headless_ui", "import_react", "import_lib", "import_RedeemVirtualProductModal", "import_useRedeemableList", "import_provider", "import_constants", "import_const", "import_RulesModal", "import_registration", "copy", "id", "showModal", "setShowModal", "redeemError", "setRedeemError", "rules", "setRules", "redeemableList", "useRedeemableList", "pageCommon", "profile", "creditInfo", "setOpenMyRewardsModal", "openSignUpPopup", "authCodeActivate", "brand", "rounded", "isLogin", "redeemModalCopy", "item", "alpcData", "handleRedeemError", "code", "inSufficientCredit", "soldOut", "redeemButtonText", "cn", "RedeemVirtualProductModal", "RulesModal"]
|
|
7
|
+
}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";var p=Object.defineProperty;var G=Object.getOwnPropertyDescriptor;var y=Object.getOwnPropertyNames;var C=Object.prototype.hasOwnProperty;var d=(o,t)=>{for(var r in t)p(o,r,{get:t[r],enumerable:!0})},m=(o,t,r,f)=>{if(t&&typeof t=="object"||typeof t=="function")for(let e of y(t))!C.call(o,e)&&e!==r&&p(o,e,{get:()=>t[e],enumerable:!(f=G(t,e))||f.enumerable});return o};var s=o=>m(p({},"__esModule",{value:!0}),o);var x={};d(x,{CreditsGoGift:()=>i.CreditsGoGift});module.exports=s(x);var i=require("./CreditsGoGift");
|
|
2
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../../../src/components/credits/creditsGoGift/index.ts"],
|
|
4
|
+
"sourcesContent": ["export { CreditsGoGift } from './CreditsGoGift'\nexport type { CreditsGoGiftCopy } from './type'\n"],
|
|
5
|
+
"mappings": "yaAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,oDAAAE,EAAAF,GAAA,IAAAG,EAA8B",
|
|
6
|
+
"names": ["creditsGoGift_exports", "__export", "__toCommonJS", "import_CreditsGoGift"]
|
|
7
|
+
}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { ConsumeType } from '../context/const';
|
|
2
|
+
export type CreditsGoGiftCopy = {
|
|
3
|
+
title: string;
|
|
4
|
+
cardImg: {
|
|
5
|
+
url: string;
|
|
6
|
+
};
|
|
7
|
+
mCardImg?: {
|
|
8
|
+
url: string;
|
|
9
|
+
};
|
|
10
|
+
count?: string;
|
|
11
|
+
cardTitle: string;
|
|
12
|
+
cardDesc: string;
|
|
13
|
+
cardTip: string;
|
|
14
|
+
redeemBtn: string;
|
|
15
|
+
unlockRewards: string;
|
|
16
|
+
viewRedeemHistory?: string;
|
|
17
|
+
rulesLink?: string;
|
|
18
|
+
redeemId: string | number;
|
|
19
|
+
type: ConsumeType;
|
|
20
|
+
value?: string;
|
|
21
|
+
rules: string[];
|
|
22
|
+
};
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";var s=Object.defineProperty;var g=Object.getOwnPropertyDescriptor;var d=Object.getOwnPropertyNames;var m=Object.prototype.hasOwnProperty;var o=(e,r,n,i)=>{if(r&&typeof r=="object"||typeof r=="function")for(let t of d(r))!m.call(e,t)&&t!==n&&s(e,t,{get:()=>r[t],enumerable:!(i=g(r,t))||i.enumerable});return e};var u=e=>o(s({},"__esModule",{value:!0}),e);var l={};module.exports=u(l);
|
|
2
|
+
//# sourceMappingURL=type.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../../../src/components/credits/creditsGoGift/type.ts"],
|
|
4
|
+
"sourcesContent": ["import { ConsumeType } from '../context/const'\n\nexport type CreditsGoGiftCopy = {\n title: string\n cardImg: {\n url: string\n }\n mCardImg?: {\n url: string\n }\n count?: string\n cardTitle: string\n cardDesc: string\n cardTip: string\n redeemBtn: string\n unlockRewards: string\n viewRedeemHistory?: string\n rulesLink?: string\n redeemId: string | number\n type: ConsumeType\n value?: string\n rules: string[]\n}\n"],
|
|
5
|
+
"mappings": "+WAAA,IAAAA,EAAA,kBAAAC,EAAAD",
|
|
6
|
+
"names": ["type_exports", "__toCommonJS"]
|
|
7
|
+
}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";var y=Object.create;var C=Object.defineProperty;var z=Object.getOwnPropertyDescriptor;var U=Object.getOwnPropertyNames;var $=Object.getPrototypeOf,V=Object.prototype.hasOwnProperty;var q=(e,l)=>{for(var s in l)C(e,s,{get:l[s],enumerable:!0})},I=(e,l,s,c)=>{if(l&&typeof l=="object"||typeof l=="function")for(let o of U(l))!V.call(e,o)&&o!==s&&C(e,o,{get:()=>l[o],enumerable:!(c=z(l,o))||c.enumerable});return e};var b=(e,l,s)=>(s=e!=null?y($(e)):{},I(l||!e||!e.__esModule?C(s,"default",{value:e,enumerable:!0}):s,e)),J=e=>I(C({},"__esModule",{value:!0}),e);var Q={};q(Q,{CreditsGofit:()=>K});module.exports=J(Q);var t=require("react/jsx-runtime"),r=require("@anker-in/headless-ui"),d=require("react"),p=require("@anker-in/lib"),M=b(require("../creditsRedeemList/RedeemVirtualProductModal")),k=b(require("../context/hooks/useRedeemableList")),O=require("../context/provider"),_=require("../../../constants"),H=require("@anker-in/lib"),x=require("../context/const"),T=b(require("../modal/rulesModal")),A=require("../../../components/registration");const K=({copy:e,id:l})=>{const[s,c]=(0,d.useState)(!1),[o,m]=(0,d.useState)(),[v,w]=(0,d.useState)(),{redeemableList:R}=(0,k.default)(),{pageCommon:n,profile:f,creditInfo:E,setOpenMyRewardsModal:B,openSignUpPopup:F}=(0,O.useCreditsContext)(),{authCodeActivate:L}=(0,A.useRegistration)(),{brand:G}=(0,H.useHeadlessContext)(),g=_.ROUNDED_BRANDS.includes(G),N=Object.keys(f||{}).length>0,P=n?.redeemModal||{},u=(0,d.useMemo)(()=>{const i=R.find(a=>a.id?.toString()===e?.redeemId?.toString());return i?{alpc:{id:i.id.toString(),consumeCredits:i.consume_credits,remainingInventory:i.remaining_inventory,isLimited:!!i.is_limited,consumeType:i.consume_type,showCredit:!0,title:i.name},config:{title:e.cardTitle,desc:e.cardDesc,type:e.type,value:e.value||"",rules:e.rules,image:e.cardImg}}:null},[R,e]),j=i=>{const a=n?.redeemModal;i===x.AlpcErrorCode.CodeLpcShopifyCouponRuleRedeemLimit?m(a?.redeemLimitError):i===x.AlpcErrorCode.CodeLpcRuleInventoryNotEnough?m(a?.inventoryNotEnough):i===x.AlpcErrorCode.CodeLpcNotEnoughCredits?m(a?.creditsNotEnough):i===x.AlpcErrorCode.CodeCrossSiteError?m(a?.crossSiteError):m(a?.commonError)},S=(0,d.useMemo)(()=>f?.activated&&Number(u?.alpc?.consumeCredits)>Number(E?.available_credit||0),[f?.activated,u?.alpc?.consumeCredits,E?.available_credit]),h=Number(u?.alpc.remainingInventory)<=0,D=(0,d.useMemo)(()=>h?n?.soldOut||"Sold Out":N?e.redeemBtn:e.unlockRewards,[N,h,e,n]);return console.log("copy",e),u?(0,t.jsxs)(r.Container,{id:l,children:[(0,t.jsx)(r.Heading,{as:"h2",size:"4",html:e.title}),(0,t.jsxs)("div",{className:(0,p.classNames)("mt-[24px] flex h-fit w-full items-center bg-[#eaeaec] p-[24px]","l:flex-col l:gap-[12px] l:p-[12px]","min-l:flex-row min-l:gap-[64px]",!g&&"rounded-none",g&&"rounded-[12px]"),children:[(0,t.jsx)("div",{className:"relative flex h-[200px] w-[304px] shrink-0 items-center justify-center overflow-hidden l:h-[120px] l:w-full",children:e.cardImg?.url&&(0,t.jsx)(r.Picture,{className:(0,p.classNames)("size-full",g&&"rounded-[12px]"),source:e.mCardImg?.url?`${e.cardImg.url},${e.mCardImg.url} 768`:e.cardImg.url})}),(0,t.jsxs)("div",{className:"flex w-full items-end justify-between l:flex-col l:items-start l:gap-[24px]",children:[(0,t.jsxs)("div",{className:"flex flex-col gap-[20px] l:w-full l:gap-[12px]",children:[(0,t.jsxs)("div",{className:"flex flex-col gap-[4px]",children:[(0,t.jsx)(r.Text,{html:e.cardTitle,className:"text-[32px] font-bold leading-[1.2] text-[#1D1D1F] l:text-[18px]"}),(0,t.jsx)(r.Text,{html:e.cardDesc,className:"text-[18px] font-bold leading-[1.4] text-[#3D3D3F] l:text-[12px]"})]}),(0,t.jsx)(r.Text,{html:e.cardTip,className:"text-[18px] font-bold leading-[1.4] text-[#000] l:text-[12px]"})]}),(0,t.jsxs)("div",{className:"flex shrink-0 flex-col items-end l:w-full l:items-start",children:[(0,t.jsx)(r.Button,{variant:"primary",disabled:S||h,onClick:()=>{N?!f?.activated&&!L.isActivateSuccess?L.open():c(!0):F()},title:S?n.insufficientCredits:D,children:D}),o&&(0,t.jsx)("div",{className:"mt-[8px] text-[14px] font-bold leading-[1.2] text-[#FFC24D] l:text-[12px]",children:o}),(e.viewRedeemHistory||e.rulesLink)&&(0,t.jsxs)("div",{className:"mt-[18px] flex gap-[16px] text-[18px] font-bold leading-[1.4] l:mt-[12px] l:gap-0 l:text-[14px]",children:[e.viewRedeemHistory&&(0,t.jsx)(r.Text,{html:e.viewRedeemHistory,className:"cursor-pointer text-[#4794EC] underline",onClick:()=>B(!0)}),n.ruleLabel&&(0,t.jsx)(r.Text,{html:n.ruleLabel,className:(0,p.classNames)("cursor-pointer text-[#4794EC] underline",e.viewRedeemHistory&&"l:ml-[16px]"),onClick:()=>w(e.rules)})]})]})]})]}),s&&u&&(0,t.jsx)(M.default,{copy:P,onClose:()=>{c(!1),m(void 0)},item:u,onError:j}),v&&(0,t.jsx)(T.default,{overlayClassName:"md:px-[16px] md:items-center",className:(0,p.classNames)("md:h-fit md:rounded-b-[16px]",!g&&"md:rounded-none"),isOpen:v.length>0,onClose:()=>w(void 0),titleClassName:"border-b-transparent h-[56px]",rules:v,scrollClassName:"md:mt-[8px] mt-[8px] md:mb-[24px] md:pt-0",title:n?.ruleLabel,ruleClassName:"text-[#1d1d1f] font-bold"})]}):null};
|
|
2
|
+
//# sourceMappingURL=CreditsGofit.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../../../src/components/credits/creditsGofit/CreditsGofit.tsx"],
|
|
4
|
+
"sourcesContent": ["import { Container, Heading, Picture, Button, Text } from '@anker-in/headless-ui'\nimport { useMemo, useState } from 'react'\nimport { classNames as cn } from '@anker-in/lib'\n\nimport RedeemVirtualProductModal from '../creditsRedeemList/RedeemVirtualProductModal'\nimport useRedeemableList from '../context/hooks/useRedeemableList'\nimport { useCreditsContext } from '../context/provider'\nimport { ROUNDED_BRANDS } from '../../../constants'\nimport { useHeadlessContext } from '@anker-in/lib'\nimport { CreditsGofitCopy } from './type'\nimport { AlpcErrorCode } from '../context/const'\nimport RulesModal from '../modal/rulesModal'\nimport { useRegistration } from '../../../components/registration'\n\nexport const CreditsGofit = ({ copy, id }: { copy: CreditsGofitCopy; id?: string }) => {\n const [showModal, setShowModal] = useState(false)\n const [redeemError, setRedeemError] = useState<string>()\n const [rules, setRules] = useState<string | string[]>()\n const { redeemableList } = useRedeemableList()\n const { pageCommon, profile, creditInfo, setOpenMyRewardsModal, openSignUpPopup } = useCreditsContext()\n const { authCodeActivate } = useRegistration()\n const { brand } = useHeadlessContext()\n const rounded = ROUNDED_BRANDS.includes(brand)\n\n const isLogin = Object.keys(profile || {}).length > 0\n\n const redeemModalCopy = pageCommon?.redeemModal || ({} as any)\n\n const item = useMemo(() => {\n // \u6839\u636E redeemId \u67E5\u8BE2 ExternalProduct \u7684 ALPC \u6570\u636E\n const alpcData = redeemableList.find(item => item.id?.toString() === copy?.redeemId?.toString())\n if (!alpcData) return null\n\n return {\n alpc: {\n id: alpcData.id.toString(),\n consumeCredits: alpcData.consume_credits,\n remainingInventory: alpcData.remaining_inventory,\n isLimited: !!alpcData.is_limited,\n consumeType: alpcData.consume_type,\n showCredit: true,\n title: alpcData.name,\n },\n config: {\n title: copy.cardTitle,\n desc: copy.cardDesc,\n type: copy.type,\n value: copy.value || '',\n rules: copy.rules,\n image: copy.cardImg,\n },\n }\n }, [redeemableList, copy])\n\n const handleRedeemError = (code: AlpcErrorCode) => {\n const redeemModalCopy = pageCommon?.redeemModal\n if (code === AlpcErrorCode.CodeLpcShopifyCouponRuleRedeemLimit) {\n setRedeemError(redeemModalCopy?.redeemLimitError)\n } else if (code === AlpcErrorCode.CodeLpcRuleInventoryNotEnough) {\n setRedeemError(redeemModalCopy?.inventoryNotEnough)\n } else if (code === AlpcErrorCode.CodeLpcNotEnoughCredits) {\n setRedeemError(redeemModalCopy?.creditsNotEnough)\n } else if (code === AlpcErrorCode.CodeCrossSiteError) {\n setRedeemError(redeemModalCopy?.crossSiteError)\n } else {\n setRedeemError(redeemModalCopy?.commonError)\n }\n }\n\n const inSufficientCredit = useMemo(() => {\n return (\n profile?.activated && Number(item?.alpc?.consumeCredits) > Number(creditInfo?.available_credit || 0)\n )\n }, [profile?.activated, item?.alpc?.consumeCredits, creditInfo?.available_credit])\n\n const soldOut = Number(item?.alpc.remainingInventory) <= 0\n\n const redeemButtonText = useMemo(() => {\n // \u7F3A\u8D27\u6587\u6848\n if (soldOut) {\n return pageCommon?.soldOut || 'Sold Out'\n } else if (!isLogin) {\n return copy.unlockRewards\n } else {\n return copy.redeemBtn\n }\n }, [isLogin, soldOut, copy, pageCommon])\n\n console.log('copy', copy)\n\n if (!item) return null\n\n return (\n <Container id={id}>\n <Heading as=\"h2\" size=\"4\" html={copy.title} />\n <div\n className={cn(\n 'mt-[24px] flex h-fit w-full items-center bg-[#eaeaec] p-[24px]',\n 'l:flex-col l:gap-[12px] l:p-[12px]',\n 'min-l:flex-row min-l:gap-[64px]',\n !rounded && 'rounded-none',\n rounded && 'rounded-[12px]'\n )}\n >\n {/* Card Image */}\n <div className=\"relative flex h-[200px] w-[304px] shrink-0 items-center justify-center overflow-hidden l:h-[120px] l:w-full\">\n {copy.cardImg?.url && (\n <Picture\n className={cn('size-full', rounded && 'rounded-[12px]')}\n source={copy.mCardImg?.url ? `${copy.cardImg.url},${copy.mCardImg.url} 768` : copy.cardImg.url}\n />\n )}\n </div>\n\n {/* Content Section */}\n <div className=\"flex w-full items-end justify-between l:flex-col l:items-start l:gap-[24px]\">\n {/* Text Content */}\n <div className=\"flex flex-col gap-[20px] l:w-full l:gap-[12px]\">\n <div className=\"flex flex-col gap-[4px]\">\n <Text\n html={copy.cardTitle}\n className=\"text-[32px] font-bold leading-[1.2] text-[#1D1D1F] l:text-[18px]\"\n />\n <Text\n html={copy.cardDesc}\n className=\"text-[18px] font-bold leading-[1.4] text-[#3D3D3F] l:text-[12px]\"\n />\n </div>\n <Text\n html={copy.cardTip}\n className=\"text-[18px] font-bold leading-[1.4] text-[#000] l:text-[12px]\"\n />\n </div>\n\n {/* Button and Links */}\n <div className=\"flex shrink-0 flex-col items-end l:w-full l:items-start\">\n <Button\n variant=\"primary\"\n disabled={inSufficientCredit || soldOut}\n onClick={() => {\n if (!isLogin) {\n openSignUpPopup()\n } else if (!profile?.activated && !authCodeActivate.isActivateSuccess) {\n authCodeActivate.open()\n } else {\n setShowModal(true)\n }\n }}\n title={inSufficientCredit ? pageCommon.insufficientCredits : redeemButtonText}\n >\n {redeemButtonText}\n </Button>\n {redeemError && (\n <div className=\"mt-[8px] text-[14px] font-bold leading-[1.2] text-[#FFC24D] l:text-[12px]\">\n {redeemError}\n </div>\n )}\n {(copy.viewRedeemHistory || copy.rulesLink) && (\n <div className=\"mt-[18px] flex gap-[16px] text-[18px] font-bold leading-[1.4] l:mt-[12px] l:gap-0 l:text-[14px]\">\n {copy.viewRedeemHistory && (\n <Text\n html={copy.viewRedeemHistory}\n className=\"cursor-pointer text-[#4794EC] underline\"\n onClick={() => setOpenMyRewardsModal(true)}\n />\n )}\n {pageCommon.ruleLabel && (\n <Text\n html={pageCommon.ruleLabel}\n className={cn(\n 'cursor-pointer text-[#4794EC] underline',\n copy.viewRedeemHistory && 'l:ml-[16px]'\n )}\n onClick={() => setRules(copy.rules)}\n />\n )}\n </div>\n )}\n </div>\n </div>\n </div>\n\n {showModal && item && (\n <RedeemVirtualProductModal\n copy={redeemModalCopy}\n onClose={() => {\n setShowModal(false)\n setRedeemError(undefined)\n }}\n item={item}\n onError={handleRedeemError}\n />\n )}\n\n {rules && (\n <RulesModal\n overlayClassName=\"md:px-[16px] md:items-center\"\n className={cn('md:h-fit md:rounded-b-[16px]', !rounded && 'md:rounded-none')}\n isOpen={rules.length > 0}\n onClose={() => setRules(undefined)}\n titleClassName=\"border-b-transparent h-[56px]\"\n rules={rules}\n scrollClassName=\"md:mt-[8px] mt-[8px] md:mb-[24px] md:pt-0\"\n title={pageCommon?.ruleLabel}\n ruleClassName=\"text-[#1d1d1f] font-bold\"\n />\n )}\n </Container>\n )\n}\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": ["CreditsGofit_exports", "__export", "CreditsGofit", "__toCommonJS", "import_jsx_runtime", "import_headless_ui", "import_react", "import_lib", "import_RedeemVirtualProductModal", "import_useRedeemableList", "import_provider", "import_constants", "import_const", "import_rulesModal", "import_registration", "copy", "id", "showModal", "setShowModal", "redeemError", "setRedeemError", "rules", "setRules", "redeemableList", "useRedeemableList", "pageCommon", "profile", "creditInfo", "setOpenMyRewardsModal", "openSignUpPopup", "authCodeActivate", "brand", "rounded", "isLogin", "redeemModalCopy", "item", "alpcData", "handleRedeemError", "code", "inSufficientCredit", "soldOut", "redeemButtonText", "cn", "RedeemVirtualProductModal", "RulesModal"]
|
|
7
|
+
}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";var p=Object.defineProperty;var y=Object.getOwnPropertyDescriptor;var C=Object.getOwnPropertyNames;var d=Object.prototype.hasOwnProperty;var m=(o,t)=>{for(var r in t)p(o,r,{get:t[r],enumerable:!0})},s=(o,t,r,f)=>{if(t&&typeof t=="object"||typeof t=="function")for(let e of C(t))!d.call(o,e)&&e!==r&&p(o,e,{get:()=>t[e],enumerable:!(f=y(t,e))||f.enumerable});return o};var x=o=>s(p({},"__esModule",{value:!0}),o);var G={};m(G,{CreditsGofit:()=>i.CreditsGofit});module.exports=x(G);var i=require("./CreditsGofit");
|
|
2
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../../../src/components/credits/creditsGofit/index.ts"],
|
|
4
|
+
"sourcesContent": ["export { CreditsGofit } from './CreditsGofit'\nexport type { CreditsGofitCopy } from './type'\n"],
|
|
5
|
+
"mappings": "yaAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,kDAAAE,EAAAF,GAAA,IAAAG,EAA6B",
|
|
6
|
+
"names": ["creditsGofit_exports", "__export", "__toCommonJS", "import_CreditsGofit"]
|
|
7
|
+
}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { ConsumeType } from '../context/const';
|
|
2
|
+
export type CreditsGofitCopy = {
|
|
3
|
+
title: string;
|
|
4
|
+
cardImg: {
|
|
5
|
+
url: string;
|
|
6
|
+
};
|
|
7
|
+
mCardImg?: {
|
|
8
|
+
url: string;
|
|
9
|
+
};
|
|
10
|
+
count?: string;
|
|
11
|
+
cardTitle: string;
|
|
12
|
+
cardDesc: string;
|
|
13
|
+
cardTip: string;
|
|
14
|
+
redeemBtn: string;
|
|
15
|
+
unlockRewards: string;
|
|
16
|
+
viewRedeemHistory?: string;
|
|
17
|
+
rulesLink?: string;
|
|
18
|
+
redeemId: string | number;
|
|
19
|
+
type: ConsumeType;
|
|
20
|
+
value?: string;
|
|
21
|
+
rules: string[];
|
|
22
|
+
};
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";var s=Object.defineProperty;var g=Object.getOwnPropertyDescriptor;var d=Object.getOwnPropertyNames;var m=Object.prototype.hasOwnProperty;var o=(e,r,n,i)=>{if(r&&typeof r=="object"||typeof r=="function")for(let t of d(r))!m.call(e,t)&&t!==n&&s(e,t,{get:()=>r[t],enumerable:!(i=g(r,t))||i.enumerable});return e};var u=e=>o(s({},"__esModule",{value:!0}),e);var l={};module.exports=u(l);
|
|
2
|
+
//# sourceMappingURL=type.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../../../src/components/credits/creditsGofit/type.ts"],
|
|
4
|
+
"sourcesContent": ["import { ConsumeType } from '../context/const'\n\nexport type CreditsGofitCopy = {\n title: string\n cardImg: {\n url: string\n }\n mCardImg?: {\n url: string\n }\n count?: string\n cardTitle: string\n cardDesc: string\n cardTip: string\n redeemBtn: string\n unlockRewards: string\n viewRedeemHistory?: string\n rulesLink?: string\n redeemId: string | number\n type: ConsumeType\n value?: string\n rules: string[]\n}\n"],
|
|
5
|
+
"mappings": "+WAAA,IAAAA,EAAA,kBAAAC,EAAAD",
|
|
6
|
+
"names": ["type_exports", "__toCommonJS"]
|
|
7
|
+
}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";var
|
|
1
|
+
"use strict";var m=Object.defineProperty;var w=Object.getOwnPropertyDescriptor;var y=Object.getOwnPropertyNames;var k=Object.prototype.hasOwnProperty;var h=(i,a)=>{for(var s in a)m(i,s,{get:a[s],enumerable:!0})},D=(i,a,s,o)=>{if(a&&typeof a=="object"||typeof a=="function")for(let l of y(a))!k.call(i,l)&&l!==s&&m(i,l,{get:()=>a[l],enumerable:!(o=w(a,l))||o.enumerable});return i};var z=i=>D(m({},"__esModule",{value:!0}),i);var S={};h(S,{CreditsInfoCard:()=>B});module.exports=z(S);var e=require("react/jsx-runtime"),d=require("@anker-in/headless-ui"),x=require("react"),u=require("../context/provider"),c=require("../context/utils"),t=require("@anker-in/lib"),g=require("../../../constants");function B({copy:i,id:a}){const[s,o]=(0,x.useState)(!1),{creditInfo:l,pageCommon:r,setOpenMyRewardsModal:b,setOpenActivitiesModal:f}=(0,u.useCreditsContext)(),{brand:N}=(0,t.useHeadlessContext)(),p=g.ROUNDED_BRANDS.includes(N),C=(0,x.useCallback)(n=>{if((0,t.gaNormalClick)({position:"info_card",label:n.text}),n.type)switch(n.type){case"activities":f(!0);break;case"rewards":b(!0);break}},[f,b]);return(0,e.jsxs)(d.Container,{asChild:!0,id:a,className:"-mb-[86px] -translate-y-[86px] x:-mb-[30px] x:-translate-y-[30px]",children:[(0,e.jsxs)("div",{className:(0,t.classNames)("mx-auto flex justify-between items-center rounded-[12px] border border-white px-[24px] py-[40px]","l:flex-col l:items-start","min-l:px-[48px]","min-xl:px-[100px]",!p&&"rounded-none"),style:{background:"linear-gradient(119.61deg, rgba(250, 250, 250, 0.6) 38.58%, rgba(255, 255, 255, 0.6) 63.73%, rgba(249, 252, 255, 0.6) 89.37%)",backdropFilter:"blur(8px)"},children:[(0,e.jsxs)("div",{className:(0,t.classNames)("grid grid-cols-2 gap-[24px] font-bold l:w-full md:grid-cols-1 md:flex-col md:gap-[16px] min-md:items-center"),children:[(0,e.jsxs)("div",{className:"mr-[80px] md:mr-[0] md:flex-1 md-xl:mr-[64px]",children:[(0,e.jsx)("div",{className:(0,t.classNames)("mb-[24px] text-[14px] font-bold l:mb-[6px] xl:text-[16px] min-md:text-[18px] l-xl:mb-[16px]"),children:i.balanceLabel}),(0,e.jsxs)("div",{className:"flex items-baseline",children:[(0,e.jsx)("div",{className:(0,t.classNames)("mr-[8px] text-[36px] font-extrabold text-brand-color-1","min-md:text-[44px]","min-xl:text-[56px]"),children:l?(0,c.numberFormat)(l.available_credit):0}),(0,e.jsx)("div",{className:"text-[16px]",children:r?.pointUnit})]})]}),(0,e.jsxs)("div",{className:"w-fit md:flex-1",children:[(0,e.jsxs)("div",{className:(0,t.classNames)("mb-[24px] flex text-[18px] l:mb-[6px] l:text-[14px] l-xl:mb-[16px]"),children:[(0,e.jsx)(d.Text,{className:"text-[14px] font-bold xl:text-[16px] min-md:text-[18px]",html:i.comingSoonLabel}),i.comingSoonTips&&(0,e.jsxs)("div",{className:"group relative ml-[4px] flex cursor-pointer items-start",children:[(0,e.jsx)(d.Text,{as:"div",html:r?.infoIcon,className:"size-[18px] cursor-pointer [&_svg]:size-full",onClick:()=>{s?o(!1):(o(!0),setTimeout(()=>{o(!1)},5e3))}}),(0,e.jsx)("div",{className:(0,t.classNames)("absolute -bottom-[12px] -left-[32px] z-10 w-[356px] translate-y-full md:w-[276px]",s?"block":"hidden"),children:(0,e.jsxs)("div",{className:(0,t.classNames)("relative rounded-[10px] bg-[#6D6D6F] p-[16px] text-[14px] font-medium text-white shadow",!p&&"rounded-none"),children:[(0,e.jsx)(d.Text,{size:"2",html:i.comingSoonTips,className:"desktop:text-[18px]"}),(0,e.jsx)("div",{className:(0,t.classNames)("absolute -top-[10px] left-[40px] mb-2 size-[16px] origin-top-left rotate-45 transform rounded-[2px] bg-[#6D6D6F]",!p&&"rounded-none")})]})})]})]}),(0,e.jsxs)("div",{className:"flex items-baseline ",children:[(0,e.jsx)("div",{className:(0,t.classNames)("mr-[8px] text-[36px] font-extrabold","min-l:text-[44px]","min-xl:text-[56px]"),children:l?(0,c.numberFormat)(l.pending_credit):0}),(0,e.jsx)("div",{className:"text-[16px]",children:r?.pointUnit})]})]})]}),(0,e.jsx)("div",{className:(0,t.classNames)("grid w-fit md:w-full l:mt-[32px] l:gap-[12px] gap-[16px] l:pl-0 pl-[48px] md-l:grid-cols-2"),children:i.buttons?.map((n,v)=>(0,e.jsx)(d.Button,{variant:v===0?"secondary":"primary",size:"lg",className:"min-w-[156px] laptop:min-w-[189px]",onClick:()=>{C(n)},children:n.text},v))})]}),s&&(0,e.jsx)("div",{role:"button",tabIndex:0,className:"fixed inset-0 z-10",onClick:()=>o(!1),onKeyDown:n=>n.key==="Escape"&&o(!1)})]})}
|
|
2
2
|
//# sourceMappingURL=index.js.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../../../src/components/credits/creditsInfoCard/index.tsx"],
|
|
4
|
-
"sourcesContent": ["import { Button, Container, Text } from '@anker-in/headless-ui'\n\nimport { useCallback, useState } from 'react'\nimport { useCreditsContext } from '../context/provider'\nimport { numberFormat } from '../context/utils'\nimport
|
|
5
|
-
"mappings": "
|
|
6
|
-
"names": ["creditsInfoCard_exports", "__export", "CreditsInfoCard", "__toCommonJS", "import_jsx_runtime", "import_headless_ui", "import_react", "import_provider", "import_utils", "
|
|
4
|
+
"sourcesContent": ["import { Button, Container, Text } from '@anker-in/headless-ui'\n\nimport { useCallback, useState } from 'react'\nimport { useCreditsContext } from '../context/provider'\nimport { numberFormat } from '../context/utils'\nimport { gaNormalClick, classNames as cn, useHeadlessContext } from '@anker-in/lib'\nimport { ROUNDED_BRANDS } from '../../../constants'\n\ntype ButtonConfig = {\n text: string\n type: 'activities' | 'rewards'\n}\nexport type CreditsInfoCardCopy = {\n balanceLabel: string\n comingSoonLabel: string\n comingSoonTips: string\n buttons: ButtonConfig[]\n}\n\nexport function CreditsInfoCard({ copy, id }: { copy: CreditsInfoCardCopy; id?: string }) {\n const [hover, setHover] = useState<boolean>(false)\n const { creditInfo, pageCommon, setOpenMyRewardsModal, setOpenActivitiesModal } = useCreditsContext()\n const { brand } = useHeadlessContext()\n const rounded = ROUNDED_BRANDS.includes(brand)\n\n const handleButtonClick = useCallback((buttonConfig: ButtonConfig) => {\n gaNormalClick({ position: 'info_card', label: buttonConfig.text })\n\n if (buttonConfig.type) {\n switch (buttonConfig.type) {\n case 'activities':\n setOpenActivitiesModal(true)\n break\n case 'rewards':\n setOpenMyRewardsModal(true)\n break\n }\n }\n }, [setOpenActivitiesModal, setOpenMyRewardsModal])\n\n return (\n <Container asChild id={id} className=\"-mb-[86px] -translate-y-[86px] x:-mb-[30px] x:-translate-y-[30px]\">\n <div\n className={cn(\n 'mx-auto flex justify-between items-center rounded-[12px] border border-white px-[24px] py-[40px]',\n 'l:flex-col l:items-start',\n 'min-l:px-[48px]',\n 'min-xl:px-[100px]',\n !rounded && 'rounded-none'\n )}\n style={{\n background:\n 'linear-gradient(119.61deg, rgba(250, 250, 250, 0.6) 38.58%, rgba(255, 255, 255, 0.6) 63.73%, rgba(249, 252, 255, 0.6) 89.37%)',\n backdropFilter: 'blur(8px)',\n }}\n >\n <div\n className={cn(\n 'grid grid-cols-2 gap-[24px] font-bold l:w-full md:grid-cols-1 md:flex-col md:gap-[16px] min-md:items-center'\n )}\n >\n <div className=\"mr-[80px] md:mr-[0] md:flex-1 md-xl:mr-[64px]\">\n <div\n className={cn(\n 'mb-[24px] text-[14px] font-bold l:mb-[6px] xl:text-[16px] min-md:text-[18px] l-xl:mb-[16px]'\n )}\n >\n {copy.balanceLabel}\n </div>\n <div className=\"flex items-baseline\">\n <div\n className={cn(\n 'mr-[8px] text-[36px] font-extrabold text-brand-color-1',\n 'min-md:text-[44px]',\n 'min-xl:text-[56px]'\n )}\n >\n {creditInfo ? numberFormat(creditInfo.available_credit) : 0}\n </div>\n <div className=\"text-[16px]\">{pageCommon?.pointUnit}</div>\n </div>\n </div>\n <div className=\"w-fit md:flex-1\">\n <div className={cn('mb-[24px] flex text-[18px] l:mb-[6px] l:text-[14px] l-xl:mb-[16px]')}>\n <Text className=\"text-[14px] font-bold xl:text-[16px] min-md:text-[18px]\" html={copy.comingSoonLabel} />\n {copy.comingSoonTips && (\n <div className=\"group relative ml-[4px] flex cursor-pointer items-start\">\n <Text\n as=\"div\"\n html={pageCommon?.infoIcon}\n className=\"size-[18px] cursor-pointer [&_svg]:size-full\"\n onClick={() => {\n if (hover) {\n setHover(false)\n } else {\n setHover(true)\n setTimeout(() => {\n setHover(false)\n }, 5000)\n }\n }}\n />\n <div\n className={cn(\n 'absolute -bottom-[12px] -left-[32px] z-10 w-[356px] translate-y-full md:w-[276px]',\n hover ? 'block' : 'hidden'\n )}\n >\n <div\n className={cn(\n 'relative rounded-[10px] bg-[#6D6D6F] p-[16px] text-[14px] font-medium text-white shadow',\n !rounded && 'rounded-none'\n )}\n >\n <Text size=\"2\" html={copy.comingSoonTips} className=\"desktop:text-[18px]\" />\n <div\n className={cn(\n 'absolute -top-[10px] left-[40px] mb-2 size-[16px] origin-top-left rotate-45 transform rounded-[2px] bg-[#6D6D6F]',\n !rounded && 'rounded-none'\n )}\n />\n </div>\n </div>\n </div>\n )}\n </div>\n <div className=\"flex items-baseline \">\n <div className={cn('mr-[8px] text-[36px] font-extrabold', 'min-l:text-[44px]', 'min-xl:text-[56px]')}>\n {creditInfo ? numberFormat(creditInfo.pending_credit) : 0}\n </div>\n <div className=\"text-[16px]\">{pageCommon?.pointUnit}</div>\n </div>\n </div>\n </div>\n <div\n className={cn(\n 'grid w-fit md:w-full l:mt-[32px] l:gap-[12px] gap-[16px] l:pl-0 pl-[48px] md-l:grid-cols-2'\n )}\n >\n {copy.buttons?.map((item, index) => (\n <Button\n key={index}\n variant={index === 0 ? 'secondary' : 'primary'}\n size=\"lg\"\n className=\"min-w-[156px] laptop:min-w-[189px]\"\n onClick={() => {\n handleButtonClick(item)\n }}\n >\n {item.text}\n </Button>\n ))}\n </div>\n </div>\n {hover && (\n <div\n role=\"button\"\n tabIndex={0}\n className=\"fixed inset-0 z-10\"\n onClick={() => setHover(false)}\n onKeyDown={e => e.key === 'Escape' && setHover(false)}\n />\n )}\n </Container>\n )\n}\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": ["creditsInfoCard_exports", "__export", "CreditsInfoCard", "__toCommonJS", "import_jsx_runtime", "import_headless_ui", "import_react", "import_provider", "import_utils", "import_lib", "import_constants", "copy", "id", "hover", "setHover", "creditInfo", "pageCommon", "setOpenMyRewardsModal", "setOpenActivitiesModal", "brand", "rounded", "handleButtonClick", "buttonConfig", "cn", "item", "index", "e"]
|
|
7
7
|
}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";var re=Object.create;var C=Object.defineProperty;var ne=Object.getOwnPropertyDescriptor;var ae=Object.getOwnPropertyNames;var se=Object.getPrototypeOf,ie=Object.prototype.hasOwnProperty;var oe=(n,l)=>{for(var m in l)C(n,m,{get:l[m],enumerable:!0})},W=(n,l,m,_)=>{if(l&&typeof l=="object"||typeof l=="function")for(let u of ae(l))!ie.call(n,u)&&u!==m&&C(n,u,{get:()=>l[u],enumerable:!(_=ne(l,u))||_.enumerable});return n};var v=(n,l,m)=>(m=n!=null?re(se(n)):{},W(l||!n||!n.__esModule?C(m,"default",{value:n,enumerable:!0}):m,n)),le=n=>W(C({},"__esModule",{value:!0}),n);var ce={};oe(ce,{CreditsMemberPrice:()=>me});module.exports=le(ce);var o=require("react/jsx-runtime"),d=require("@anker-in/headless-ui"),i=require("react"),T=v(require("decimal.js")),q=v(require("./MemberPriceItem")),J=v(require("../creditsCash/RedeemableItem")),K=v(require("../context/hooks/useRedeemableList")),Q=v(require("../modal/
|
|
1
|
+
"use strict";var re=Object.create;var C=Object.defineProperty;var ne=Object.getOwnPropertyDescriptor;var ae=Object.getOwnPropertyNames;var se=Object.getPrototypeOf,ie=Object.prototype.hasOwnProperty;var oe=(n,l)=>{for(var m in l)C(n,m,{get:l[m],enumerable:!0})},W=(n,l,m,_)=>{if(l&&typeof l=="object"||typeof l=="function")for(let u of ae(l))!ie.call(n,u)&&u!==m&&C(n,u,{get:()=>l[u],enumerable:!(_=ne(l,u))||_.enumerable});return n};var v=(n,l,m)=>(m=n!=null?re(se(n)):{},W(l||!n||!n.__esModule?C(m,"default",{value:n,enumerable:!0}):m,n)),le=n=>W(C({},"__esModule",{value:!0}),n);var ce={};oe(ce,{CreditsMemberPrice:()=>me});module.exports=le(ce);var o=require("react/jsx-runtime"),d=require("@anker-in/headless-ui"),i=require("react"),T=v(require("decimal.js")),q=v(require("./MemberPriceItem")),J=v(require("../creditsCash/RedeemableItem")),K=v(require("../context/hooks/useRedeemableList")),Q=v(require("../modal/RulesModal")),N=require("./Pagination"),g=require("@anker-in/lib"),L=require("@anker-in/lib"),X=require("../context/provider"),x=require("../context/memberPriceConst"),Y=require("../../../constants");const me=({copy:n,id:l})=>{const[m,_]=(0,i.useState)(n.tabs[0]?.type||"memberPrice"),[u,F]=(0,i.useState)(),[p,y]=(0,i.useState)(1),[b,h]=(0,i.useState)(9),{redeemableList:A}=(0,K.default)(),{pageCommon:Z,memberPriceDiscount:I,profile:S,gtm:E}=(0,X.useCreditsContext)(),{brand:$}=(0,g.useHeadlessContext)(),j=Y.ROUNDED_BRANDS.includes($),D=(0,i.useRef)(null),H=[{namespace:"global",key:"transparentImg"},{namespace:"__discountCodeApp",key:"data"}];(0,i.useEffect)(()=>{const t=()=>{const r=window.innerWidth;r>=1440?h(12):r>=1024?h(9):r>=768?h(12):h(8)};return t(),window.addEventListener("resize",t),()=>window.removeEventListener("resize",t)},[]),(0,i.useEffect)(()=>{y(1)},[m,b]);const f=(0,i.useMemo)(()=>!I||!n.memberPriceTab.memberPriceRuleId?null:I.find(t=>String(t.rule_id)===String(n.memberPriceTab.memberPriceRuleId)),[I,n.memberPriceTab.memberPriceRuleId]),ee=(0,i.useMemo)(()=>f?(f.result_detail?.member_discounts?.filter(e=>e.user_identity===1)||[]).flatMap(e=>e.main_products?.variants?.map(s=>s.handle)||[]):[],[f]),{data:w}=(0,g.useProductsByHandles)({handles:ee,metafieldIdentifiers:{variant:H}}),{data:k}=(0,g.useProductsByHandles)({handles:n?.redeemTab?.list?.map(t=>t.products?.[0]?.handle)||[],metafieldIdentifiers:{variant:H}}),V=(0,i.useCallback)(t=>{try{const r=t?.metafields?.__discountCodeApp?.data;if(!r)return 0;const e=r;if(!Array.isArray(e)||e.length===0)return 0;const s=new Date,a=e.find(c=>{const P=c.starts_at?new Date(c.starts_at):null,U=c.ends_at?new Date(c.ends_at):null;return!(P&&P>s||U&&U<s)});return a?.fixed_value?parseFloat(a.fixed_value):0}catch(r){return console.error("Failed to get coupon discount:",r),0}},[]),B=(0,i.useCallback)((t,r,e)=>{const s=r?.discount_conf;if(!s)return null;let a=new T.default(t);switch(s.discount_type){case x.FunctionDiscountType.Percentage:a=a.mul(100-s.discount_value).div(100);break;case x.FunctionDiscountType.FixedAmount:a=a.sub(s.discount_value);break;case x.FunctionDiscountType.FixedPrice:a=new T.default(s.discount_value);break}if(e){const c=V(e);c>0&&(a=a.sub(c))}return a.lessThan(0)&&(a=new T.default(0)),{memberPrice:a.toNumber(),originalPrice:t}},[V]),R=(0,i.useMemo)(()=>!f||!w?[]:(f.result_detail?.member_discounts?.filter(e=>e.user_identity===1)||[]).flatMap(e=>(e.main_products?.variants||[]).map(s=>({...s,discount:e}))).map(e=>{const s=w.find(P=>P.handle===e.handle);if(!s)return null;const a=s.variants?.find(P=>P.sku===e.sku)||s.variants?.[0];if(!a||!a.availableForSale)return null;const c=B(a.price.amount,e.discount,a);return c?{product:s,productVariant:a,memberPrice:c.memberPrice,originalPrice:c.originalPrice}:null})?.filter(Boolean)||[],[f,w,B]),M=(0,i.useMemo)(()=>k?.map(t=>{const r=n.redeemTab.list.find(a=>a.products?.[0]?.handle===t.handle),e=A.find(a=>a.id?.toString()===r?.redeemId?.toString()),s=t.variants?.find(a=>a.sku===r?.products?.[0]?.sku)||t.variants?.[0];return!e||!s||!s.availableForSale||e.is_limited&&e.remaining_inventory<=0?null:{product:t,productVariant:s,alpcData:{id:e?.id,consumeCredits:e?.consume_credits,remainingInventory:e?.remaining_inventory,isLimited:e?.is_limited,consumeType:e?.consume_type,title:e?.name,desc:e?.note},config:r}}).filter(Boolean),[k,n.redeemTab.list,A]),z=(0,i.useMemo)(()=>{const t=R?.length||0,r=Math.ceil(t/b),e=(p-1)*b,s=e+b,a=R?.slice(e,s)||[];return{totalPages:r,currentItems:a,showPagination:r>1}},[R,p,b]),G=(0,i.useMemo)(()=>{const t=M?.length||0,r=Math.ceil(t/b),e=(p-1)*b,s=e+b,a=M?.slice(e,s)||[];return{totalPages:r,currentItems:a,showPagination:r>1}},[M,p,b]),O=(0,i.useCallback)(t=>{if(y(t),D.current){const r=D.current.offsetTop;window.scrollTo({top:r-80,behavior:"smooth"})}},[y]),te=(0,i.useCallback)(t=>{const r=t;_(r);const s=n.tabs.find(a=>a.type===r)?.label||"";(0,g.gaTrack)({event:"ga4Event",event_name:"lp_button",member_active_status:S?.activated?"active":"not active",event_parameters:{page_group:E.pageGroup,position:n.title,button_name:s}})},[n.tabs,n.title,S?.activated,E.pageGroup]);return(0,o.jsxs)(d.Container,{id:l,className:(0,L.classNames)("bg-[#F5F5F5]"),ref:D,children:[(0,o.jsx)(d.Heading,{as:"h2",size:"4",html:n.title,className:"mx:px-[16px]"}),(0,o.jsx)(d.Tabs,{align:"left",className:"mt-[24px]",value:m,onValueChange:te,children:(0,o.jsx)(d.TabsList,{children:n.tabs.map((t,r)=>(0,o.jsx)(d.TabsTrigger,{value:t.type,children:t.label},r))})}),(0,o.jsxs)("div",{className:"relative mt-[24px]",children:[m==="memberPrice"&&(0,o.jsxs)(o.Fragment,{children:[(0,o.jsx)("div",{className:"grid md:grid-cols-2 gap-[12px] grid-cols-4 md-xl:grid-cols-3 lg:gap-[16px]",children:z.currentItems?.map((t,r)=>(0,o.jsx)(q.default,{itemData:t,copy:n.memberPriceTab},r))}),(0,o.jsx)(N.Pagination,{currentPage:p,totalPages:z.totalPages,onPageChange:O})]}),m==="redeem"&&(0,o.jsxs)(o.Fragment,{children:[(0,o.jsx)("div",{className:"grid md:grid-cols-2 gap-[12px] grid-cols-4 md-xl:grid-cols-3 lg:gap-[16px]",children:G.currentItems?.map((t,r)=>(0,o.jsx)(J.default,{copy:{title:n.title,...n.redeemTab},itemData:t,setRules:F,currencyCode:k?.[0]?.price.currencyCode||"USD"},r))}),(0,o.jsx)(N.Pagination,{currentPage:p,totalPages:G.totalPages,onPageChange:O})]})]}),u&&(0,o.jsx)(Q.default,{overlayClassName:"md:px-[16px] md:items-center",className:(0,L.classNames)("md:h-fit md:rounded-b-[16px]",!j&&"md:rounded-none"),isOpen:u.length>0,onClose:()=>F([]),titleClassName:"border-b-transparent h-[56px]",rules:u,scrollClassName:"md:mt-[8px] md:mb-[24px] md:pt-0",title:Z?.ruleLabel,ruleClassName:"text-[#1d1d1f] font-bold"})]})};
|
|
2
2
|
//# sourceMappingURL=CreditsMemberPrice.js.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../../../src/components/credits/creditsMemberPrice/CreditsMemberPrice.tsx"],
|
|
4
|
-
"sourcesContent": ["import { Container, Heading, Tabs, TabsList, TabsTrigger } from '@anker-in/headless-ui'\nimport { useMemo, useState, useEffect, useCallback, useRef } from 'react'\nimport Decimal from 'decimal.js'\n\nimport MemberPriceItem from './MemberPriceItem'\nimport RedeemableItem from '../creditsCash/RedeemableItem'\nimport useRedeemableList from '../context/hooks/useRedeemableList'\nimport RulesModal from '../modal/rulesModal'\nimport { Pagination } from './Pagination'\nimport { useProductsByHandles, useHeadlessContext, gaTrack } from '@anker-in/lib'\nimport { CreditsMemberPriceCopy, MemberPriceProduct } from './type'\nimport { Product, classNames as cn } from '@anker-in/lib'\nimport { useCreditsContext } from '../context/provider'\nimport { RedeemItem } from '../creditsCash/type'\nimport { FunctionDiscountType } from '../context/memberPriceConst'\nimport { ROUNDED_BRANDS } from '../../../constants'\n\nexport const CreditsMemberPrice = ({ copy, id }: { copy: CreditsMemberPriceCopy; id?: string }) => {\n const [activeTab, setActiveTab] = useState<'memberPrice' | 'redeem'>(copy.tabs[0]?.type || 'memberPrice')\n const [rules, setRules] = useState<string | string[]>()\n const [currentPage, setCurrentPage] = useState(1)\n const [itemsPerPage, setItemsPerPage] = useState(9) // \u9ED8\u8BA4 1024px \u4EE5\u4E0A\uFF1A3\u5217 \u00D7 3\u884C = 9\n const { redeemableList } = useRedeemableList()\n const { pageCommon, memberPriceDiscount, profile, gtm } = useCreditsContext()\n const { brand } = useHeadlessContext()\n const rounded = ROUNDED_BRANDS.includes(brand)\n const containerRef = useRef<HTMLDivElement>(null)\n\n // \u5B9A\u4E49\u9700\u8981\u83B7\u53D6\u7684 metafield\uFF0C\u5305\u62EC\u900F\u660E\u56FE\u548C\u4F18\u60E0\u5238\u4FE1\u606F\n const variantMetafieldIdentifiers: any[] = [\n {\n namespace: 'global',\n key: 'transparentImg',\n },\n {\n namespace: '__discountCodeApp',\n key: 'data',\n },\n ]\n\n // \u6839\u636E\u5C4F\u5E55\u5C3A\u5BF8\u52A8\u6001\u8C03\u6574\u6BCF\u9875\u663E\u793A\u7684\u5546\u54C1\u6570\u91CF\n useEffect(() => {\n const updateItemsPerPage = () => {\n const width = window.innerWidth\n if (width >= 1440) {\n // 1920px \u4EE5\u4E0A\uFF1A4\u5217 \u00D7 3\u884C = 12\u4E2A\n setItemsPerPage(12)\n } else if (width >= 1024) {\n // 1024px - 1919px\uFF1A3\u5217 \u00D7 3\u884C = 9\u4E2A\n setItemsPerPage(9)\n } else if (width >= 768) {\n // 1024px \u4EE5\u4E0B\uFF1A3\u5217 \u00D7 4\u884C = 12\u4E2A\n setItemsPerPage(12)\n } else {\n // 768px \u4EE5\u4E0B\uFF1A2\u5217 \u00D7 4\u884C = 8\u4E2A\n setItemsPerPage(8)\n }\n }\n\n updateItemsPerPage()\n window.addEventListener('resize', updateItemsPerPage)\n return () => window.removeEventListener('resize', updateItemsPerPage)\n }, [])\n\n // \u5F53\u5207\u6362 tab \u6216\u6BCF\u9875\u6570\u91CF\u53D8\u5316\u65F6\u91CD\u7F6E\u9875\u7801\n useEffect(() => {\n setCurrentPage(1)\n }, [activeTab, itemsPerPage])\n\n // \u6839\u636E\u914D\u7F6E\u7684 ruleId \u67E5\u627E\u5BF9\u5E94\u7684\u4F1A\u5458\u4EF7\u89C4\u5219\n const targetRule = useMemo(() => {\n if (!memberPriceDiscount || !copy.memberPriceTab.memberPriceRuleId) return null\n return memberPriceDiscount.find(rule => String(rule.rule_id) === String(copy.memberPriceTab.memberPriceRuleId))\n }, [memberPriceDiscount, copy.memberPriceTab.memberPriceRuleId])\n\n const memberPriceHandles = useMemo(() => {\n if (!targetRule) return []\n\n // \u83B7\u53D6\u6240\u6709 user_identity === 1 \u7684 discounts\n const allDiscounts = targetRule.result_detail?.member_discounts?.filter(\n (discount: any) => discount.user_identity === 1\n ) || []\n\n // \u5408\u5E76\u6240\u6709 discounts \u7684 variants \u7684 handles\n const handles = allDiscounts.flatMap((discount: any) =>\n discount.main_products?.variants?.map((variant: any) => variant.handle) || []\n )\n\n return handles\n }, [targetRule])\n\n // \u83B7\u53D6\u4F1A\u5458\u4EF7\u4EA7\u54C1\u6570\u636E\uFF08\u901A\u8FC7\u4ECE memberPriceDiscount \u63D0\u53D6\u7684 handles \u83B7\u53D6\u4EA7\u54C1\uFF09\n const { data: memberPriceProducts } = useProductsByHandles({\n handles: memberPriceHandles,\n metafieldIdentifiers: {\n variant: variantMetafieldIdentifiers,\n },\n })\n\n // \u83B7\u53D6\u79EF\u5206\u5151\u6362\u4EA7\u54C1\u6570\u636E\n const { data: redeemProducts } = useProductsByHandles({\n handles: copy?.redeemTab?.list?.map(item => item.products?.[0]?.handle) || [],\n metafieldIdentifiers: {\n variant: variantMetafieldIdentifiers,\n },\n })\n\n // \u4ECE variant metafields \u4E2D\u83B7\u53D6\u6709\u6548\u7684 coupon \u6298\u6263\u91D1\u989D\n const getCouponDiscount = useCallback((variant: any) => {\n try {\n const discountData = variant?.metafields?.__discountCodeApp?.data\n if (!discountData) return 0\n\n // discountData \u5DF2\u7ECF\u662F\u5BF9\u8C61\uFF0C\u4E0D\u9700\u8981 JSON.parse\n const discounts = discountData\n if (!Array.isArray(discounts) || discounts.length === 0) return 0\n\n // \u83B7\u53D6\u7B2C\u4E00\u4E2A\u6709\u6548\u7684 coupon\uFF08\u68C0\u67E5\u65F6\u95F4\u8303\u56F4\uFF09\n const now = new Date()\n const validDiscount = discounts.find((discount: any) => {\n const startsAt = discount.starts_at ? new Date(discount.starts_at) : null\n const endsAt = discount.ends_at ? new Date(discount.ends_at) : null\n\n // \u68C0\u67E5 coupon \u662F\u5426\u5728\u6709\u6548\u671F\u5185\n if (startsAt && startsAt > now) return false\n if (endsAt && endsAt < now) return false\n\n return true\n })\n\n // \u8FD4\u56DE\u6298\u6263\u91D1\u989D\uFF08fixed_amount \u7C7B\u578B\uFF09\n if (validDiscount?.fixed_value) {\n return parseFloat(validDiscount.fixed_value)\n }\n\n return 0\n } catch (error) {\n console.error('Failed to get coupon discount:', error)\n return 0\n }\n }, [])\n\n // \u8BA1\u7B97\u4F1A\u5458\u4EF7\u7684\u8F85\u52A9\u51FD\u6570\uFF08\u4EC5\u4F7F\u7528\u666E\u901A\u4F1A\u5458 user_identity = 1 \u7684\u6298\u6263\uFF0C\u5E76\u53E0\u52A0 coupon \u6298\u6263\uFF09\n const calculateMemberPrice = useCallback(\n (price: number, discount: any, variant?: any) => {\n const discountConfig = discount?.discount_conf\n if (!discountConfig) return null\n\n // \u6839\u636E\u6298\u6263\u7C7B\u578B\u8BA1\u7B97\u4F1A\u5458\u4EF7\n let salePrice = new Decimal(price)\n switch (discountConfig.discount_type) {\n case FunctionDiscountType.Percentage:\n salePrice = salePrice.mul(100 - discountConfig.discount_value).div(100)\n break\n case FunctionDiscountType.FixedAmount:\n salePrice = salePrice.sub(discountConfig.discount_value)\n break\n case FunctionDiscountType.FixedPrice:\n salePrice = new Decimal(discountConfig.discount_value)\n break\n }\n\n // \u53E0\u52A0 coupon \u6298\u6263\n if (variant) {\n const couponDiscount = getCouponDiscount(variant)\n if (couponDiscount > 0) {\n salePrice = salePrice.sub(couponDiscount)\n }\n }\n\n // \u786E\u4FDD\u4EF7\u683C\u4E0D\u4E3A\u8D1F\u6570\n if (salePrice.lessThan(0)) {\n salePrice = new Decimal(0)\n }\n\n return {\n memberPrice: salePrice.toNumber(),\n originalPrice: price,\n }\n },\n [getCouponDiscount]\n )\n\n // \u5904\u7406\u4F1A\u5458\u4EF7\u4EA7\u54C1\u5217\u8868\uFF08\u4EC5\u666E\u901A\u4F1A\u5458 user_identity = 1 \u7684\u6298\u6263\uFF09\n const memberPriceList = useMemo(() => {\n if (!targetRule || !memberPriceProducts) return []\n\n // \u83B7\u53D6\u6240\u6709 user_identity === 1 \u7684 discounts\n const allDiscounts = targetRule.result_detail?.member_discounts?.filter(\n (discount: any) => discount.user_identity === 1\n ) || []\n\n // \u5408\u5E76\u6240\u6709 discounts \u7684 variants\uFF0C\u5E76\u4FDD\u5B58\u5BF9\u5E94\u7684 discount \u4FE1\u606F\n const allVariantsWithDiscount = allDiscounts.flatMap((discount: any) =>\n (discount.main_products?.variants || []).map((variant: any) => ({\n ...variant,\n discount, // \u5C06 discount \u4FE1\u606F\u4FDD\u5B58\u5230 variant \u4E2D\n }))\n )\n\n return (\n (allVariantsWithDiscount\n .map((variantWithDiscount: any) => {\n const product = memberPriceProducts.find(p => p.handle === variantWithDiscount.handle)\n if (!product) return null\n\n const productVariant = product.variants?.find(v => v.sku === variantWithDiscount.sku) || product.variants?.[0]\n if (!productVariant || !productVariant.availableForSale) return null\n\n const priceResult = calculateMemberPrice(\n productVariant.price.amount,\n variantWithDiscount.discount,\n productVariant\n )\n if (!priceResult) return null\n\n return {\n product,\n productVariant,\n memberPrice: priceResult.memberPrice,\n originalPrice: priceResult.originalPrice,\n }\n })\n ?.filter(Boolean) as unknown as MemberPriceProduct[]) || []\n )\n }, [targetRule, memberPriceProducts, calculateMemberPrice])\n\n // \u5904\u7406\u79EF\u5206\u5151\u6362\u4EA7\u54C1\u5217\u8868\uFF08\u590D\u7528 creditsCash \u7684\u903B\u8F91\uFF0C\u8FC7\u6EE4\u7F3A\u8D27\u5546\u54C1\uFF09\n const redeemList = useMemo(() => {\n return redeemProducts\n ?.map((product: Product) => {\n const config = copy.redeemTab.list.find(item => item.products?.[0]?.handle === product.handle)\n const alpcData = redeemableList.find(item => item.id?.toString() === config?.redeemId?.toString())\n const productVariant =\n product.variants?.find((variant: any) => variant.sku === config?.products?.[0]?.sku) || product.variants?.[0]\n\n // \u8FC7\u6EE4\u6761\u4EF6\uFF1A\n // 1. \u5FC5\u987B\u6709 alpcData \u548C productVariant\n // 2. \u5546\u54C1\u4E0D\u80FD\u7F3A\u8D27\n // 3. \u5982\u679C\u6709\u5E93\u5B58\u9650\u5236\uFF0C\u5219\u5E93\u5B58\u5FC5\u987B\u5927\u4E8E 0\n if (!alpcData || !productVariant) return null\n if (!productVariant.availableForSale) return null\n if (alpcData.is_limited && alpcData.remaining_inventory <= 0) return null\n\n return {\n product,\n productVariant,\n alpcData: {\n id: alpcData?.id,\n consumeCredits: alpcData?.consume_credits,\n remainingInventory: alpcData?.remaining_inventory,\n isLimited: alpcData?.is_limited,\n consumeType: alpcData?.consume_type,\n title: alpcData?.name,\n desc: alpcData?.note,\n },\n config,\n }\n })\n .filter(Boolean) as unknown as RedeemItem[]\n }, [redeemProducts, copy.redeemTab.list, redeemableList])\n\n // \u8BA1\u7B97\u4F1A\u5458\u4EF7\u5206\u9875\n const memberPricePagination = useMemo(() => {\n const totalItems = memberPriceList?.length || 0\n const totalPages = Math.ceil(totalItems / itemsPerPage)\n const startIndex = (currentPage - 1) * itemsPerPage\n const endIndex = startIndex + itemsPerPage\n const currentItems = memberPriceList?.slice(startIndex, endIndex) || []\n\n return {\n totalPages,\n currentItems,\n showPagination: totalPages > 1,\n }\n }, [memberPriceList, currentPage, itemsPerPage])\n\n // \u8BA1\u7B97\u79EF\u5206\u5151\u6362\u5206\u9875\n const redeemPagination = useMemo(() => {\n const totalItems = redeemList?.length || 0\n const totalPages = Math.ceil(totalItems / itemsPerPage)\n const startIndex = (currentPage - 1) * itemsPerPage\n const endIndex = startIndex + itemsPerPage\n const currentItems = redeemList?.slice(startIndex, endIndex) || []\n\n return {\n totalPages,\n currentItems,\n showPagination: totalPages > 1,\n }\n }, [redeemList, currentPage, itemsPerPage])\n\n // \u5904\u7406\u9875\u9762\u5207\u6362\uFF0C\u6EDA\u52A8\u5230\u6A21\u5757\u9876\u90E8\n const handlePageChange = useCallback(\n (page: number) => {\n setCurrentPage(page)\n // \u6EDA\u52A8\u5230\u6A21\u5757\u9876\u90E8\n if (containerRef.current) {\n const top = containerRef.current.offsetTop\n window.scrollTo({\n top: top - 80, // \u51CF\u53BB 80px \u7684\u504F\u79FB\u91CF\uFF0C\u907F\u514D\u88AB\u56FA\u5B9A\u5934\u90E8\u906E\u6321\n behavior: 'smooth',\n })\n }\n },\n [setCurrentPage]\n )\n\n // \u5904\u7406 tab \u5207\u6362\u5E76\u53D1\u9001\u57CB\u70B9\n const handleTabChange = useCallback(\n (value: string) => {\n const tabType = value as 'memberPrice' | 'redeem'\n setActiveTab(tabType)\n\n // \u67E5\u627E\u5F53\u524D tab \u7684 label\n const currentTab = copy.tabs.find(tab => tab.type === tabType)\n const tabLabel = currentTab?.label || ''\n\n // \u53D1\u9001 tab \u70B9\u51FB\u57CB\u70B9\n gaTrack({\n event: 'ga4Event',\n event_name: 'lp_button',\n member_active_status: profile?.activated ? 'active' : 'not active',\n event_parameters: {\n page_group: gtm.pageGroup,\n position: copy.title,\n button_name: tabLabel,\n },\n })\n },\n [copy.tabs, copy.title, profile?.activated, gtm.pageGroup]\n )\n\n return (\n <Container id={id} className={cn('bg-[#F5F5F5]')} ref={containerRef}>\n <Heading as=\"h2\" size=\"4\" html={copy.title} className=\"mx:px-[16px]\" />\n\n <Tabs\n align=\"left\"\n className=\"mt-[24px]\"\n value={activeTab}\n onValueChange={handleTabChange}\n >\n <TabsList>\n {copy.tabs.map((tab, index) => (\n <TabsTrigger key={index} value={tab.type}>\n {tab.label}\n </TabsTrigger>\n ))}\n </TabsList>\n </Tabs>\n\n {/* Tab \u5185\u5BB9 */}\n <div className=\"relative mt-[24px]\">\n {/* \u4F1A\u5458\u4EF7 Tab */}\n {activeTab === 'memberPrice' && (\n <>\n <div className=\"grid md:grid-cols-2 gap-[12px] grid-cols-4 md-xl:grid-cols-3 lg:gap-[16px]\">\n {memberPricePagination.currentItems?.map((item, index: number) => (\n <MemberPriceItem key={index} itemData={item} copy={copy.memberPriceTab} />\n ))}\n </div>\n <Pagination\n currentPage={currentPage}\n totalPages={memberPricePagination.totalPages}\n onPageChange={handlePageChange}\n />\n </>\n )}\n\n {/* \u79EF\u5206\u5151\u6362 Tab */}\n {activeTab === 'redeem' && (\n <>\n <div className=\"grid md:grid-cols-2 gap-[12px] grid-cols-4 md-xl:grid-cols-3 lg:gap-[16px]\">\n {redeemPagination.currentItems?.map((item, index: number) => (\n <RedeemableItem\n key={index}\n copy={{\n title: copy.title,\n ...copy.redeemTab,\n }}\n itemData={item}\n setRules={setRules}\n currencyCode={redeemProducts?.[0]?.price.currencyCode || 'USD'}\n />\n ))}\n </div>\n <Pagination\n currentPage={currentPage}\n totalPages={redeemPagination.totalPages}\n onPageChange={handlePageChange}\n />\n </>\n )}\n </div>\n\n {/* Rules Modal */}\n {rules && (\n <RulesModal\n overlayClassName=\"md:px-[16px] md:items-center\"\n className={cn('md:h-fit md:rounded-b-[16px]', !rounded && 'md:rounded-none')}\n isOpen={rules.length > 0}\n onClose={() => setRules([])}\n titleClassName=\"border-b-transparent h-[56px]\"\n rules={rules}\n scrollClassName=\"md:mt-[8px] md:mb-[24px] md:pt-0\"\n title={pageCommon?.ruleLabel}\n ruleClassName=\"text-[#1d1d1f] font-bold\"\n />\n )}\n </Container>\n )\n}\n"],
|
|
4
|
+
"sourcesContent": ["import { Container, Heading, Tabs, TabsList, TabsTrigger } from '@anker-in/headless-ui'\nimport { useMemo, useState, useEffect, useCallback, useRef } from 'react'\nimport Decimal from 'decimal.js'\n\nimport MemberPriceItem from './MemberPriceItem'\nimport RedeemableItem from '../creditsCash/RedeemableItem'\nimport useRedeemableList from '../context/hooks/useRedeemableList'\nimport RulesModal from '../modal/RulesModal'\nimport { Pagination } from './Pagination'\nimport { useProductsByHandles, useHeadlessContext, gaTrack } from '@anker-in/lib'\nimport { CreditsMemberPriceCopy, MemberPriceProduct } from './type'\nimport { Product, classNames as cn } from '@anker-in/lib'\nimport { useCreditsContext } from '../context/provider'\nimport { RedeemItem } from '../creditsCash/type'\nimport { FunctionDiscountType } from '../context/memberPriceConst'\nimport { ROUNDED_BRANDS } from '../../../constants'\n\nexport const CreditsMemberPrice = ({ copy, id }: { copy: CreditsMemberPriceCopy; id?: string }) => {\n const [activeTab, setActiveTab] = useState<'memberPrice' | 'redeem'>(copy.tabs[0]?.type || 'memberPrice')\n const [rules, setRules] = useState<string | string[]>()\n const [currentPage, setCurrentPage] = useState(1)\n const [itemsPerPage, setItemsPerPage] = useState(9) // \u9ED8\u8BA4 1024px \u4EE5\u4E0A\uFF1A3\u5217 \u00D7 3\u884C = 9\n const { redeemableList } = useRedeemableList()\n const { pageCommon, memberPriceDiscount, profile, gtm } = useCreditsContext()\n const { brand } = useHeadlessContext()\n const rounded = ROUNDED_BRANDS.includes(brand)\n const containerRef = useRef<HTMLDivElement>(null)\n\n // \u5B9A\u4E49\u9700\u8981\u83B7\u53D6\u7684 metafield\uFF0C\u5305\u62EC\u900F\u660E\u56FE\u548C\u4F18\u60E0\u5238\u4FE1\u606F\n const variantMetafieldIdentifiers: any[] = [\n {\n namespace: 'global',\n key: 'transparentImg',\n },\n {\n namespace: '__discountCodeApp',\n key: 'data',\n },\n ]\n\n // \u6839\u636E\u5C4F\u5E55\u5C3A\u5BF8\u52A8\u6001\u8C03\u6574\u6BCF\u9875\u663E\u793A\u7684\u5546\u54C1\u6570\u91CF\n useEffect(() => {\n const updateItemsPerPage = () => {\n const width = window.innerWidth\n if (width >= 1440) {\n // 1920px \u4EE5\u4E0A\uFF1A4\u5217 \u00D7 3\u884C = 12\u4E2A\n setItemsPerPage(12)\n } else if (width >= 1024) {\n // 1024px - 1919px\uFF1A3\u5217 \u00D7 3\u884C = 9\u4E2A\n setItemsPerPage(9)\n } else if (width >= 768) {\n // 1024px \u4EE5\u4E0B\uFF1A3\u5217 \u00D7 4\u884C = 12\u4E2A\n setItemsPerPage(12)\n } else {\n // 768px \u4EE5\u4E0B\uFF1A2\u5217 \u00D7 4\u884C = 8\u4E2A\n setItemsPerPage(8)\n }\n }\n\n updateItemsPerPage()\n window.addEventListener('resize', updateItemsPerPage)\n return () => window.removeEventListener('resize', updateItemsPerPage)\n }, [])\n\n // \u5F53\u5207\u6362 tab \u6216\u6BCF\u9875\u6570\u91CF\u53D8\u5316\u65F6\u91CD\u7F6E\u9875\u7801\n useEffect(() => {\n setCurrentPage(1)\n }, [activeTab, itemsPerPage])\n\n // \u6839\u636E\u914D\u7F6E\u7684 ruleId \u67E5\u627E\u5BF9\u5E94\u7684\u4F1A\u5458\u4EF7\u89C4\u5219\n const targetRule = useMemo(() => {\n if (!memberPriceDiscount || !copy.memberPriceTab.memberPriceRuleId) return null\n return memberPriceDiscount.find(rule => String(rule.rule_id) === String(copy.memberPriceTab.memberPriceRuleId))\n }, [memberPriceDiscount, copy.memberPriceTab.memberPriceRuleId])\n\n const memberPriceHandles = useMemo(() => {\n if (!targetRule) return []\n\n // \u83B7\u53D6\u6240\u6709 user_identity === 1 \u7684 discounts\n const allDiscounts = targetRule.result_detail?.member_discounts?.filter(\n (discount: any) => discount.user_identity === 1\n ) || []\n\n // \u5408\u5E76\u6240\u6709 discounts \u7684 variants \u7684 handles\n const handles = allDiscounts.flatMap((discount: any) =>\n discount.main_products?.variants?.map((variant: any) => variant.handle) || []\n )\n\n return handles\n }, [targetRule])\n\n // \u83B7\u53D6\u4F1A\u5458\u4EF7\u4EA7\u54C1\u6570\u636E\uFF08\u901A\u8FC7\u4ECE memberPriceDiscount \u63D0\u53D6\u7684 handles \u83B7\u53D6\u4EA7\u54C1\uFF09\n const { data: memberPriceProducts } = useProductsByHandles({\n handles: memberPriceHandles,\n metafieldIdentifiers: {\n variant: variantMetafieldIdentifiers,\n },\n })\n\n // \u83B7\u53D6\u79EF\u5206\u5151\u6362\u4EA7\u54C1\u6570\u636E\n const { data: redeemProducts } = useProductsByHandles({\n handles: copy?.redeemTab?.list?.map(item => item.products?.[0]?.handle) || [],\n metafieldIdentifiers: {\n variant: variantMetafieldIdentifiers,\n },\n })\n\n // \u4ECE variant metafields \u4E2D\u83B7\u53D6\u6709\u6548\u7684 coupon \u6298\u6263\u91D1\u989D\n const getCouponDiscount = useCallback((variant: any) => {\n try {\n const discountData = variant?.metafields?.__discountCodeApp?.data\n if (!discountData) return 0\n\n // discountData \u5DF2\u7ECF\u662F\u5BF9\u8C61\uFF0C\u4E0D\u9700\u8981 JSON.parse\n const discounts = discountData\n if (!Array.isArray(discounts) || discounts.length === 0) return 0\n\n // \u83B7\u53D6\u7B2C\u4E00\u4E2A\u6709\u6548\u7684 coupon\uFF08\u68C0\u67E5\u65F6\u95F4\u8303\u56F4\uFF09\n const now = new Date()\n const validDiscount = discounts.find((discount: any) => {\n const startsAt = discount.starts_at ? new Date(discount.starts_at) : null\n const endsAt = discount.ends_at ? new Date(discount.ends_at) : null\n\n // \u68C0\u67E5 coupon \u662F\u5426\u5728\u6709\u6548\u671F\u5185\n if (startsAt && startsAt > now) return false\n if (endsAt && endsAt < now) return false\n\n return true\n })\n\n // \u8FD4\u56DE\u6298\u6263\u91D1\u989D\uFF08fixed_amount \u7C7B\u578B\uFF09\n if (validDiscount?.fixed_value) {\n return parseFloat(validDiscount.fixed_value)\n }\n\n return 0\n } catch (error) {\n console.error('Failed to get coupon discount:', error)\n return 0\n }\n }, [])\n\n // \u8BA1\u7B97\u4F1A\u5458\u4EF7\u7684\u8F85\u52A9\u51FD\u6570\uFF08\u4EC5\u4F7F\u7528\u666E\u901A\u4F1A\u5458 user_identity = 1 \u7684\u6298\u6263\uFF0C\u5E76\u53E0\u52A0 coupon \u6298\u6263\uFF09\n const calculateMemberPrice = useCallback(\n (price: number, discount: any, variant?: any) => {\n const discountConfig = discount?.discount_conf\n if (!discountConfig) return null\n\n // \u6839\u636E\u6298\u6263\u7C7B\u578B\u8BA1\u7B97\u4F1A\u5458\u4EF7\n let salePrice = new Decimal(price)\n switch (discountConfig.discount_type) {\n case FunctionDiscountType.Percentage:\n salePrice = salePrice.mul(100 - discountConfig.discount_value).div(100)\n break\n case FunctionDiscountType.FixedAmount:\n salePrice = salePrice.sub(discountConfig.discount_value)\n break\n case FunctionDiscountType.FixedPrice:\n salePrice = new Decimal(discountConfig.discount_value)\n break\n }\n\n // \u53E0\u52A0 coupon \u6298\u6263\n if (variant) {\n const couponDiscount = getCouponDiscount(variant)\n if (couponDiscount > 0) {\n salePrice = salePrice.sub(couponDiscount)\n }\n }\n\n // \u786E\u4FDD\u4EF7\u683C\u4E0D\u4E3A\u8D1F\u6570\n if (salePrice.lessThan(0)) {\n salePrice = new Decimal(0)\n }\n\n return {\n memberPrice: salePrice.toNumber(),\n originalPrice: price,\n }\n },\n [getCouponDiscount]\n )\n\n // \u5904\u7406\u4F1A\u5458\u4EF7\u4EA7\u54C1\u5217\u8868\uFF08\u4EC5\u666E\u901A\u4F1A\u5458 user_identity = 1 \u7684\u6298\u6263\uFF09\n const memberPriceList = useMemo(() => {\n if (!targetRule || !memberPriceProducts) return []\n\n // \u83B7\u53D6\u6240\u6709 user_identity === 1 \u7684 discounts\n const allDiscounts = targetRule.result_detail?.member_discounts?.filter(\n (discount: any) => discount.user_identity === 1\n ) || []\n\n // \u5408\u5E76\u6240\u6709 discounts \u7684 variants\uFF0C\u5E76\u4FDD\u5B58\u5BF9\u5E94\u7684 discount \u4FE1\u606F\n const allVariantsWithDiscount = allDiscounts.flatMap((discount: any) =>\n (discount.main_products?.variants || []).map((variant: any) => ({\n ...variant,\n discount, // \u5C06 discount \u4FE1\u606F\u4FDD\u5B58\u5230 variant \u4E2D\n }))\n )\n\n return (\n (allVariantsWithDiscount\n .map((variantWithDiscount: any) => {\n const product = memberPriceProducts.find(p => p.handle === variantWithDiscount.handle)\n if (!product) return null\n\n const productVariant = product.variants?.find(v => v.sku === variantWithDiscount.sku) || product.variants?.[0]\n if (!productVariant || !productVariant.availableForSale) return null\n\n const priceResult = calculateMemberPrice(\n productVariant.price.amount,\n variantWithDiscount.discount,\n productVariant\n )\n if (!priceResult) return null\n\n return {\n product,\n productVariant,\n memberPrice: priceResult.memberPrice,\n originalPrice: priceResult.originalPrice,\n }\n })\n ?.filter(Boolean) as unknown as MemberPriceProduct[]) || []\n )\n }, [targetRule, memberPriceProducts, calculateMemberPrice])\n\n // \u5904\u7406\u79EF\u5206\u5151\u6362\u4EA7\u54C1\u5217\u8868\uFF08\u590D\u7528 creditsCash \u7684\u903B\u8F91\uFF0C\u8FC7\u6EE4\u7F3A\u8D27\u5546\u54C1\uFF09\n const redeemList = useMemo(() => {\n return redeemProducts\n ?.map((product: Product) => {\n const config = copy.redeemTab.list.find(item => item.products?.[0]?.handle === product.handle)\n const alpcData = redeemableList.find(item => item.id?.toString() === config?.redeemId?.toString())\n const productVariant =\n product.variants?.find((variant: any) => variant.sku === config?.products?.[0]?.sku) || product.variants?.[0]\n\n // \u8FC7\u6EE4\u6761\u4EF6\uFF1A\n // 1. \u5FC5\u987B\u6709 alpcData \u548C productVariant\n // 2. \u5546\u54C1\u4E0D\u80FD\u7F3A\u8D27\n // 3. \u5982\u679C\u6709\u5E93\u5B58\u9650\u5236\uFF0C\u5219\u5E93\u5B58\u5FC5\u987B\u5927\u4E8E 0\n if (!alpcData || !productVariant) return null\n if (!productVariant.availableForSale) return null\n if (alpcData.is_limited && alpcData.remaining_inventory <= 0) return null\n\n return {\n product,\n productVariant,\n alpcData: {\n id: alpcData?.id,\n consumeCredits: alpcData?.consume_credits,\n remainingInventory: alpcData?.remaining_inventory,\n isLimited: alpcData?.is_limited,\n consumeType: alpcData?.consume_type,\n title: alpcData?.name,\n desc: alpcData?.note,\n },\n config,\n }\n })\n .filter(Boolean) as unknown as RedeemItem[]\n }, [redeemProducts, copy.redeemTab.list, redeemableList])\n\n // \u8BA1\u7B97\u4F1A\u5458\u4EF7\u5206\u9875\n const memberPricePagination = useMemo(() => {\n const totalItems = memberPriceList?.length || 0\n const totalPages = Math.ceil(totalItems / itemsPerPage)\n const startIndex = (currentPage - 1) * itemsPerPage\n const endIndex = startIndex + itemsPerPage\n const currentItems = memberPriceList?.slice(startIndex, endIndex) || []\n\n return {\n totalPages,\n currentItems,\n showPagination: totalPages > 1,\n }\n }, [memberPriceList, currentPage, itemsPerPage])\n\n // \u8BA1\u7B97\u79EF\u5206\u5151\u6362\u5206\u9875\n const redeemPagination = useMemo(() => {\n const totalItems = redeemList?.length || 0\n const totalPages = Math.ceil(totalItems / itemsPerPage)\n const startIndex = (currentPage - 1) * itemsPerPage\n const endIndex = startIndex + itemsPerPage\n const currentItems = redeemList?.slice(startIndex, endIndex) || []\n\n return {\n totalPages,\n currentItems,\n showPagination: totalPages > 1,\n }\n }, [redeemList, currentPage, itemsPerPage])\n\n // \u5904\u7406\u9875\u9762\u5207\u6362\uFF0C\u6EDA\u52A8\u5230\u6A21\u5757\u9876\u90E8\n const handlePageChange = useCallback(\n (page: number) => {\n setCurrentPage(page)\n // \u6EDA\u52A8\u5230\u6A21\u5757\u9876\u90E8\n if (containerRef.current) {\n const top = containerRef.current.offsetTop\n window.scrollTo({\n top: top - 80, // \u51CF\u53BB 80px \u7684\u504F\u79FB\u91CF\uFF0C\u907F\u514D\u88AB\u56FA\u5B9A\u5934\u90E8\u906E\u6321\n behavior: 'smooth',\n })\n }\n },\n [setCurrentPage]\n )\n\n // \u5904\u7406 tab \u5207\u6362\u5E76\u53D1\u9001\u57CB\u70B9\n const handleTabChange = useCallback(\n (value: string) => {\n const tabType = value as 'memberPrice' | 'redeem'\n setActiveTab(tabType)\n\n // \u67E5\u627E\u5F53\u524D tab \u7684 label\n const currentTab = copy.tabs.find(tab => tab.type === tabType)\n const tabLabel = currentTab?.label || ''\n\n // \u53D1\u9001 tab \u70B9\u51FB\u57CB\u70B9\n gaTrack({\n event: 'ga4Event',\n event_name: 'lp_button',\n member_active_status: profile?.activated ? 'active' : 'not active',\n event_parameters: {\n page_group: gtm.pageGroup,\n position: copy.title,\n button_name: tabLabel,\n },\n })\n },\n [copy.tabs, copy.title, profile?.activated, gtm.pageGroup]\n )\n\n return (\n <Container id={id} className={cn('bg-[#F5F5F5]')} ref={containerRef}>\n <Heading as=\"h2\" size=\"4\" html={copy.title} className=\"mx:px-[16px]\" />\n\n <Tabs\n align=\"left\"\n className=\"mt-[24px]\"\n value={activeTab}\n onValueChange={handleTabChange}\n >\n <TabsList>\n {copy.tabs.map((tab, index) => (\n <TabsTrigger key={index} value={tab.type}>\n {tab.label}\n </TabsTrigger>\n ))}\n </TabsList>\n </Tabs>\n\n {/* Tab \u5185\u5BB9 */}\n <div className=\"relative mt-[24px]\">\n {/* \u4F1A\u5458\u4EF7 Tab */}\n {activeTab === 'memberPrice' && (\n <>\n <div className=\"grid md:grid-cols-2 gap-[12px] grid-cols-4 md-xl:grid-cols-3 lg:gap-[16px]\">\n {memberPricePagination.currentItems?.map((item, index: number) => (\n <MemberPriceItem key={index} itemData={item} copy={copy.memberPriceTab} />\n ))}\n </div>\n <Pagination\n currentPage={currentPage}\n totalPages={memberPricePagination.totalPages}\n onPageChange={handlePageChange}\n />\n </>\n )}\n\n {/* \u79EF\u5206\u5151\u6362 Tab */}\n {activeTab === 'redeem' && (\n <>\n <div className=\"grid md:grid-cols-2 gap-[12px] grid-cols-4 md-xl:grid-cols-3 lg:gap-[16px]\">\n {redeemPagination.currentItems?.map((item, index: number) => (\n <RedeemableItem\n key={index}\n copy={{\n title: copy.title,\n ...copy.redeemTab,\n }}\n itemData={item}\n setRules={setRules}\n currencyCode={redeemProducts?.[0]?.price.currencyCode || 'USD'}\n />\n ))}\n </div>\n <Pagination\n currentPage={currentPage}\n totalPages={redeemPagination.totalPages}\n onPageChange={handlePageChange}\n />\n </>\n )}\n </div>\n\n {/* Rules Modal */}\n {rules && (\n <RulesModal\n overlayClassName=\"md:px-[16px] md:items-center\"\n className={cn('md:h-fit md:rounded-b-[16px]', !rounded && 'md:rounded-none')}\n isOpen={rules.length > 0}\n onClose={() => setRules([])}\n titleClassName=\"border-b-transparent h-[56px]\"\n rules={rules}\n scrollClassName=\"md:mt-[8px] md:mb-[24px] md:pt-0\"\n title={pageCommon?.ruleLabel}\n ruleClassName=\"text-[#1d1d1f] font-bold\"\n />\n )}\n </Container>\n )\n}\n"],
|
|
5
5
|
"mappings": "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",
|
|
6
|
-
"names": ["CreditsMemberPrice_exports", "__export", "CreditsMemberPrice", "__toCommonJS", "import_jsx_runtime", "import_headless_ui", "import_react", "import_decimal", "import_MemberPriceItem", "import_RedeemableItem", "import_useRedeemableList", "
|
|
6
|
+
"names": ["CreditsMemberPrice_exports", "__export", "CreditsMemberPrice", "__toCommonJS", "import_jsx_runtime", "import_headless_ui", "import_react", "import_decimal", "import_MemberPriceItem", "import_RedeemableItem", "import_useRedeemableList", "import_RulesModal", "import_Pagination", "import_lib", "import_provider", "import_memberPriceConst", "import_constants", "copy", "id", "activeTab", "setActiveTab", "rules", "setRules", "currentPage", "setCurrentPage", "itemsPerPage", "setItemsPerPage", "redeemableList", "useRedeemableList", "pageCommon", "memberPriceDiscount", "profile", "gtm", "brand", "rounded", "containerRef", "variantMetafieldIdentifiers", "updateItemsPerPage", "width", "targetRule", "rule", "memberPriceHandles", "discount", "variant", "memberPriceProducts", "redeemProducts", "item", "getCouponDiscount", "discountData", "discounts", "now", "validDiscount", "startsAt", "endsAt", "error", "calculateMemberPrice", "price", "discountConfig", "salePrice", "Decimal", "couponDiscount", "memberPriceList", "variantWithDiscount", "product", "p", "productVariant", "v", "priceResult", "redeemList", "config", "alpcData", "memberPricePagination", "totalItems", "totalPages", "startIndex", "endIndex", "currentItems", "redeemPagination", "handlePageChange", "page", "top", "handleTabChange", "value", "tabType", "tabLabel", "tab", "cn", "index", "MemberPriceItem", "RedeemableItem", "RulesModal"]
|
|
7
7
|
}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";var
|
|
1
|
+
"use strict";var X=Object.create;var x=Object.defineProperty;var Y=Object.getOwnPropertyDescriptor;var Z=Object.getOwnPropertyNames;var ee=Object.getPrototypeOf,te=Object.prototype.hasOwnProperty;var re=(e,n)=>{for(var o in n)x(e,o,{get:n[o],enumerable:!0})},F=(e,n,o,C)=>{if(n&&typeof n=="object"||typeof n=="function")for(let c of Z(n))!te.call(e,c)&&c!==o&&x(e,c,{get:()=>n[c],enumerable:!(C=Y(n,c))||C.enumerable});return e};var b=(e,n,o)=>(o=e!=null?X(ee(e)):{},F(n||!e||!e.__esModule?x(o,"default",{value:e,enumerable:!0}):o,e)),ne=e=>F(x({},"__esModule",{value:!0}),e);var ie={};re(ie,{CreditsRedeemList:()=>oe});module.exports=ne(ie);var r=require("react/jsx-runtime"),l=require("@anker-in/headless-ui"),R=b(require("classnames")),d=require("react"),G=b(require("./RedeemCouponModal")),O=b(require("./RedeemProductModal")),H=b(require("./RedeemVirtualProductModal")),$=require("../context/provider"),B=b(require("../context/hooks/useRedeemableList")),s=require("../context/const"),m=require("@anker-in/lib"),U=require("./RedeemableItem"),V=require("../../../constants"),j=b(require("../modal/RulesModal")),q=require("../../../components/registration"),w=require("../context/utils");const oe=({copy:e,id:n})=>{const{profile:o,openSignUpPopup:C,gtm:{pageGroup:c},pageCommon:y,creditInfo:z}=(0,$.useCreditsContext)(),{authCodeActivate:S}=(0,q.useRegistration)(),{brand:_}=(0,m.useHeadlessContext)(),k=V.ROUNDED_BRANDS.includes(_),I=Object.keys(o||{}).length>0,[h,J]=(0,d.useState)(e.list?.[0]?.label||""),[i,v]=(0,d.useState)(void 0),[T,M]=(0,d.useState)(),{listLoading:K,redeemableList:E,getRedeemableList:A}=(0,B.default)(),g=(0,d.useMemo)(()=>({...y?.redeemModal||{},...e.redeemModal||{}}),[e.redeemModal,y?.redeemModal]),f=(0,d.useMemo)(()=>E.map(t=>({id:t.id.toString(),title:t.name,consumeCredits:t.consume_credits,remainingInventory:t.remaining_inventory,isLimited:!!t.is_limited,consumeType:t.consume_type,handle:t.sku_handle,sku:t.goods_sku,image:t.goods_url})),[e.list,h,E]),Q=f.map(t=>t.handle),{data:P}=(0,m.useProductsByHandles)({handles:Q}),W=(0,d.useMemo)(()=>(e.list?.find(a=>a.label===h)?.list||[]).filter(a=>f.some(p=>String(p.id)===String(a.id))).map(a=>{const p=f.find(u=>String(u.id)===String(a.id)),N=P?.find(u=>u.handle===p?.handle),D=N?.variants.find(u=>u.sku===p?.sku);return p?.isLimited&&(!p?.remainingInventory||p.remainingInventory<=0)||p?.consumeType===s.AlpcConsumeType.Product&&(!N||!D)?null:{alpc:f.find(u=>String(u.id)===String(a.id)),config:a,product:N,variant:D}}).filter(a=>a!==null),[f,P]),L=(0,d.useCallback)(t=>{t===s.AlpcErrorCode.CodeLpcRuleInventoryNotEnough&&A()},[A]);return(0,r.jsxs)(l.Container,{id:n,className:(0,R.default)("relative bg-[#F5F5F7]"),children:[(0,r.jsx)(l.Heading,{as:"h2",size:"4",html:e.title}),I&&e.availableCredits&&(0,r.jsx)("p",{className:"mt-[12px] text-[20px] l-xxl:text-[18px] l:text-[16px] font-bold text-[#4A4C56]",children:e.availableCredits.includes("$credits")?(0,r.jsxs)(r.Fragment,{children:[e.availableCredits.split("$credits")[0],(0,r.jsx)("span",{className:(0,m.classNames)("text-brand-color-0",_==="ankersolix"&&"bg-gradient-to-r from-[#2c7ed0] via-[#00a9e1] via-[43%] to-[#00db84] bg-clip-text text-transparent"),children:(0,w.numberFormat)(z?.available_credit||0).toString()}),e.availableCredits.split("$credits")[1]||""]}):e.availableCredits}),(0,r.jsx)(l.Tabs,{shape:k?"rounded":"square",align:"left",className:(0,R.default)("py-[24px] md:justify-center"),value:h.toString(),onValueChange:t=>{J(t),(0,m.gaTrack)({event:"ga4Event",event_name:"lp_navigation",event_parameters:{navigation:t,page_group:c}})},children:(0,r.jsx)(l.TabsList,{children:(e.list||[]).map(t=>(0,r.jsx)(l.TabsTrigger,{value:t.label,children:t.label},t.label))})}),!!f?.length&&!K&&(0,r.jsx)("div",{className:(0,R.default)("relative grid grid-cols-4 gap-[16px] md:grid-cols-2 md:gap-[12px] md-xl:grid-cols-3"),children:W?.map(t=>(0,r.jsx)(U.RedeemableItem,{copy:e,item:t,onRedeem:a=>{I?!o?.activated&&!S.isActivateSuccess?S.open():v(a):C()},onRulesOpen:M},t?.alpc?.id))}),(i?.config?.type===s.ConsumeType.Coupon||i?.config?.type===s.ConsumeType.ShippingCoupon)&&g?.coupon&&i&&(0,r.jsx)(G.default,{item:i,copy:g,onError:L,onClose:()=>{v(void 0)}}),i?.config?.type===s.ConsumeType.Product&&g?.product&&i&&(0,r.jsx)(O.default,{item:i,copy:g,onError:L,onClose:()=>{v(void 0)}}),(i?.config?.type===s.ConsumeType.GiftCard||i?.config?.type===s.ConsumeType.GoGift)&&g?.virtualProduct&&i&&(0,r.jsx)(H.default,{item:i,copy:g,onError:L,onClose:()=>{v(void 0)}}),T&&(0,r.jsx)(j.default,{overlayClassName:"md:px-[16px] md:items-center",className:(0,m.classNames)("md:h-fit md:rounded-b-[16px]",!k&&"md:rounded-none"),isOpen:T.length>0,onClose:()=>M([]),titleClassName:"border-b-transparent h-[56px]",rules:T,scrollClassName:"md:mt-[8px] md:mb-[24px] md:pt-0",title:y?.ruleLabel,ruleClassName:"text-[#1d1d1f] font-bold"})]})};
|
|
2
2
|
//# sourceMappingURL=CreditsRedeemList.js.map
|