@anker-in/campaign-ui 0.2.11-beta.3 → 0.2.11-beta.4
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/credits/context/hooks/useFunctionMemberPrice.d.ts +2 -2
- package/dist/cjs/components/credits/context/hooks/useFunctionMemberPrice.js +1 -1
- package/dist/cjs/components/credits/context/hooks/useFunctionMemberPrice.js.map +2 -2
- package/dist/cjs/components/credits/context/memberPriceConst.d.ts +0 -5
- package/dist/cjs/components/credits/context/memberPriceConst.js +1 -1
- package/dist/cjs/components/credits/context/memberPriceConst.js.map +3 -3
- package/dist/cjs/components/credits/context/memberPriceTypes.d.ts +1 -22
- package/dist/cjs/components/credits/context/memberPriceTypes.js +1 -1
- package/dist/cjs/components/credits/context/memberPriceTypes.js.map +1 -1
- package/dist/cjs/components/credits/context/provider.d.ts +15 -1
- package/dist/cjs/components/credits/context/provider.js +1 -1
- package/dist/cjs/components/credits/context/provider.js.map +3 -3
- package/dist/cjs/components/credits/context/utils/getFunctionMemberPrice.d.ts +2 -2
- package/dist/cjs/components/credits/context/utils/getFunctionMemberPrice.js +1 -1
- package/dist/cjs/components/credits/context/utils/getFunctionMemberPrice.js.map +1 -1
- package/dist/cjs/components/credits/context/utils/getFunctionMemberPriceDiscountConfig.d.ts +2 -2
- package/dist/cjs/components/credits/context/utils/getFunctionMemberPriceDiscountConfig.js +1 -1
- package/dist/cjs/components/credits/context/utils/getFunctionMemberPriceDiscountConfig.js.map +1 -1
- package/dist/cjs/components/credits/context/utils/variantGetCoupon.d.ts +2 -2
- package/dist/cjs/components/credits/context/utils/variantGetCoupon.js +1 -1
- package/dist/cjs/components/credits/context/utils/variantGetCoupon.js.map +1 -1
- package/dist/cjs/components/credits/creditsAnkersolixTask/CreditsAnkersolixTask.js +1 -1
- package/dist/cjs/components/credits/creditsAnkersolixTask/CreditsAnkersolixTask.js.map +3 -3
- package/dist/cjs/components/credits/creditsBanner/index.d.ts +2 -0
- package/dist/cjs/components/credits/creditsBanner/index.js +12 -1
- package/dist/cjs/components/credits/creditsBanner/index.js.map +3 -3
- package/dist/cjs/components/credits/creditsBenefits/BenefitItem.js +2 -0
- package/dist/cjs/components/credits/creditsBenefits/BenefitItem.js.map +7 -0
- package/dist/cjs/components/credits/creditsBenefits/{iconInfo.js → IconInfo.js} +1 -1
- package/dist/cjs/components/credits/creditsBenefits/{iconInfo.js.map → IconInfo.js.map} +1 -1
- 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/creditsCash/RedeemableItem.js +1 -1
- package/dist/cjs/components/credits/creditsCash/RedeemableItem.js.map +2 -2
- package/dist/cjs/components/credits/creditsCash/type.d.ts +1 -0
- package/dist/cjs/components/credits/creditsCash/type.js +1 -1
- package/dist/cjs/components/credits/creditsCash/type.js.map +1 -1
- package/dist/cjs/components/credits/creditsFaq/faqItem/FaqItem.js +1 -1
- package/dist/cjs/components/credits/creditsFaq/faqItem/FaqItem.js.map +3 -3
- package/dist/cjs/components/credits/creditsInfoCard/index.js +1 -1
- package/dist/cjs/components/credits/creditsInfoCard/index.js.map +2 -2
- package/dist/cjs/components/credits/creditsMemberPrice/CreditsMemberPrice.js +1 -1
- package/dist/cjs/components/credits/creditsMemberPrice/CreditsMemberPrice.js.map +3 -3
- package/dist/cjs/components/credits/creditsMemberPrice/MemberPriceItem.js +1 -1
- package/dist/cjs/components/credits/creditsMemberPrice/MemberPriceItem.js.map +3 -3
- package/dist/cjs/components/credits/creditsMemberPrice/type.d.ts +3 -5
- package/dist/cjs/components/credits/creditsMemberPrice/type.js +1 -1
- package/dist/cjs/components/credits/creditsMemberPrice/type.js.map +1 -1
- package/dist/cjs/components/credits/creditsNavigation/CreditsNavigation.js +1 -1
- package/dist/cjs/components/credits/creditsNavigation/CreditsNavigation.js.map +2 -2
- package/dist/cjs/components/credits/creditsRedeemList/CreditsRedeemList.js +1 -1
- package/dist/cjs/components/credits/creditsRedeemList/CreditsRedeemList.js.map +3 -3
- 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/creditsWaysToGetCredits/CreditsWaysToGetCredits.js +1 -1
- package/dist/cjs/components/credits/creditsWaysToGetCredits/CreditsWaysToGetCredits.js.map +3 -3
- package/dist/cjs/templates/{credits.d.ts → Credits.d.ts} +15 -1
- package/dist/cjs/templates/Credits.js +2 -0
- package/dist/cjs/templates/Credits.js.map +7 -0
- package/dist/esm/components/credits/context/hooks/useFunctionMemberPrice.d.ts +2 -2
- package/dist/esm/components/credits/context/hooks/useFunctionMemberPrice.js +1 -1
- package/dist/esm/components/credits/context/hooks/useFunctionMemberPrice.js.map +2 -2
- package/dist/esm/components/credits/context/memberPriceConst.d.ts +0 -5
- package/dist/esm/components/credits/context/memberPriceConst.js +1 -1
- package/dist/esm/components/credits/context/memberPriceConst.js.map +3 -3
- package/dist/esm/components/credits/context/memberPriceTypes.d.ts +1 -22
- package/dist/esm/components/credits/context/provider.d.ts +15 -1
- package/dist/esm/components/credits/context/provider.js +1 -1
- package/dist/esm/components/credits/context/provider.js.map +3 -3
- package/dist/esm/components/credits/context/utils/getFunctionMemberPrice.d.ts +2 -2
- package/dist/esm/components/credits/context/utils/getFunctionMemberPrice.js +1 -1
- package/dist/esm/components/credits/context/utils/getFunctionMemberPrice.js.map +1 -1
- package/dist/esm/components/credits/context/utils/getFunctionMemberPriceDiscountConfig.d.ts +2 -2
- package/dist/esm/components/credits/context/utils/getFunctionMemberPriceDiscountConfig.js +1 -1
- package/dist/esm/components/credits/context/utils/getFunctionMemberPriceDiscountConfig.js.map +1 -1
- package/dist/esm/components/credits/context/utils/variantGetCoupon.d.ts +2 -2
- package/dist/esm/components/credits/context/utils/variantGetCoupon.js +1 -1
- package/dist/esm/components/credits/context/utils/variantGetCoupon.js.map +1 -1
- package/dist/esm/components/credits/creditsAnkersolixTask/CreditsAnkersolixTask.js +1 -1
- package/dist/esm/components/credits/creditsAnkersolixTask/CreditsAnkersolixTask.js.map +3 -3
- package/dist/esm/components/credits/creditsBanner/index.d.ts +2 -0
- package/dist/esm/components/credits/creditsBanner/index.js +12 -1
- package/dist/esm/components/credits/creditsBanner/index.js.map +3 -3
- package/dist/esm/components/credits/creditsBenefits/BenefitItem.js +2 -0
- package/dist/esm/components/credits/creditsBenefits/BenefitItem.js.map +7 -0
- package/dist/esm/components/credits/creditsBenefits/{iconInfo.js → IconInfo.js} +1 -1
- package/dist/esm/components/credits/creditsBenefits/{iconInfo.js.map → IconInfo.js.map} +1 -1
- package/dist/esm/components/credits/creditsCash/CreditsCash.js +1 -1
- package/dist/esm/components/credits/creditsCash/CreditsCash.js.map +2 -2
- package/dist/esm/components/credits/creditsCash/RedeemableItem.js +1 -1
- package/dist/esm/components/credits/creditsCash/RedeemableItem.js.map +3 -3
- package/dist/esm/components/credits/creditsCash/type.d.ts +1 -0
- package/dist/esm/components/credits/creditsFaq/faqItem/FaqItem.js +1 -1
- package/dist/esm/components/credits/creditsFaq/faqItem/FaqItem.js.map +3 -3
- package/dist/esm/components/credits/creditsInfoCard/index.js +1 -1
- package/dist/esm/components/credits/creditsInfoCard/index.js.map +2 -2
- package/dist/esm/components/credits/creditsMemberPrice/CreditsMemberPrice.js +1 -1
- package/dist/esm/components/credits/creditsMemberPrice/CreditsMemberPrice.js.map +3 -3
- package/dist/esm/components/credits/creditsMemberPrice/MemberPriceItem.js +1 -1
- package/dist/esm/components/credits/creditsMemberPrice/MemberPriceItem.js.map +3 -3
- package/dist/esm/components/credits/creditsMemberPrice/type.d.ts +3 -5
- package/dist/esm/components/credits/creditsNavigation/CreditsNavigation.js +1 -1
- package/dist/esm/components/credits/creditsNavigation/CreditsNavigation.js.map +2 -2
- package/dist/esm/components/credits/creditsRedeemList/CreditsRedeemList.js +1 -1
- package/dist/esm/components/credits/creditsRedeemList/CreditsRedeemList.js.map +3 -3
- 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/creditsWaysToGetCredits/CreditsWaysToGetCredits.js +1 -1
- package/dist/esm/components/credits/creditsWaysToGetCredits/CreditsWaysToGetCredits.js.map +3 -3
- package/dist/esm/templates/{credits.d.ts → Credits.d.ts} +15 -1
- package/dist/esm/templates/Credits.js +2 -0
- package/dist/esm/templates/Credits.js.map +7 -0
- package/package.json +1 -1
- package/src/components/credits/context/memberPriceConst.ts +0 -7
- package/src/components/credits/context/memberPriceTypes.ts +1 -26
- package/src/components/credits/context/provider.tsx +14 -0
- package/src/components/credits/creditsAnkersolixTask/CreditsAnkersolixTask.tsx +25 -25
- package/src/components/credits/creditsBanner/index.tsx +31 -2
- package/src/components/credits/creditsBenefits/BenefitItem.tsx +11 -4
- package/src/components/credits/creditsBenefits/IconInfo.tsx +1 -1
- package/src/components/credits/creditsCash/CreditsCash.tsx +1 -1
- package/src/components/credits/creditsCash/RedeemableItem.tsx +17 -4
- package/src/components/credits/creditsCash/type.ts +1 -0
- package/src/components/credits/creditsFaq/faqItem/FaqItem.tsx +25 -23
- package/src/components/credits/creditsInfoCard/index.tsx +1 -1
- package/src/components/credits/creditsMemberPrice/CreditsMemberPrice.tsx +57 -5
- package/src/components/credits/creditsMemberPrice/MemberPriceItem.tsx +102 -25
- package/src/components/credits/creditsMemberPrice/type.ts +3 -5
- package/src/components/credits/creditsNavigation/CreditsNavigation.tsx +3 -3
- package/src/components/credits/creditsRedeemList/CreditsRedeemList.tsx +26 -13
- package/src/components/credits/creditsRedeemList/RedeemableItem.tsx +1 -1
- package/src/components/credits/creditsWaysToGetCredits/CreditsWaysToGetCredits.tsx +20 -17
- package/src/templates/Credits.tsx +26 -9
- package/dist/cjs/components/credits/context/hooks/useSendEmailValidation.d.ts +0 -1
- package/dist/cjs/components/credits/context/hooks/useSendEmailValidation.js +0 -2
- package/dist/cjs/components/credits/context/hooks/useSendEmailValidation.js.map +0 -7
- package/dist/cjs/components/credits/context/hooks/useSubscriptions.d.ts +0 -9
- package/dist/cjs/components/credits/context/hooks/useSubscriptions.js +0 -2
- package/dist/cjs/components/credits/context/hooks/useSubscriptions.js.map +0 -7
- package/dist/cjs/components/credits/creditsBenefits/benefitItem.js +0 -2
- package/dist/cjs/components/credits/creditsBenefits/benefitItem.js.map +0 -7
- package/dist/cjs/helpers/fetchResponse.d.ts +0 -14
- package/dist/cjs/helpers/fetchResponse.js +0 -2
- package/dist/cjs/helpers/fetchResponse.js.map +0 -7
- package/dist/cjs/helpers/fetcher.d.ts +0 -2
- package/dist/cjs/helpers/fetcher.js +0 -2
- package/dist/cjs/helpers/fetcher.js.map +0 -7
- package/dist/cjs/helpers/index.d.ts +0 -2
- package/dist/cjs/helpers/index.js +0 -2
- package/dist/cjs/helpers/index.js.map +0 -7
- package/dist/cjs/helpers/track.d.ts +0 -19
- package/dist/cjs/helpers/track.js +0 -2
- package/dist/cjs/helpers/track.js.map +0 -7
- package/dist/cjs/helpers/utils.d.ts +0 -3
- package/dist/cjs/helpers/utils.js +0 -2
- package/dist/cjs/helpers/utils.js.map +0 -7
- package/dist/cjs/templates/credits.js +0 -2
- package/dist/cjs/templates/credits.js.map +0 -7
- package/dist/esm/components/credits/context/hooks/useSendEmailValidation.d.ts +0 -1
- package/dist/esm/components/credits/context/hooks/useSendEmailValidation.js +0 -2
- package/dist/esm/components/credits/context/hooks/useSendEmailValidation.js.map +0 -7
- package/dist/esm/components/credits/context/hooks/useSubscriptions.d.ts +0 -9
- package/dist/esm/components/credits/context/hooks/useSubscriptions.js +0 -2
- package/dist/esm/components/credits/context/hooks/useSubscriptions.js.map +0 -7
- package/dist/esm/components/credits/creditsBenefits/benefitItem.js +0 -2
- package/dist/esm/components/credits/creditsBenefits/benefitItem.js.map +0 -7
- package/dist/esm/helpers/fetchResponse.d.ts +0 -14
- package/dist/esm/helpers/fetchResponse.js +0 -2
- package/dist/esm/helpers/fetchResponse.js.map +0 -7
- package/dist/esm/helpers/fetcher.d.ts +0 -2
- package/dist/esm/helpers/fetcher.js +0 -2
- package/dist/esm/helpers/fetcher.js.map +0 -7
- package/dist/esm/helpers/index.d.ts +0 -2
- package/dist/esm/helpers/index.js +0 -2
- package/dist/esm/helpers/index.js.map +0 -7
- package/dist/esm/helpers/track.d.ts +0 -19
- package/dist/esm/helpers/track.js +0 -2
- package/dist/esm/helpers/track.js.map +0 -7
- package/dist/esm/helpers/utils.d.ts +0 -3
- package/dist/esm/helpers/utils.js +0 -2
- package/dist/esm/helpers/utils.js.map +0 -7
- package/dist/esm/templates/credits.js +0 -2
- package/dist/esm/templates/credits.js.map +0 -7
- package/src/components/credits/context/hooks/useFunctionMemberPrice.ts +0 -33
- package/src/components/credits/context/utils/atobID.ts +0 -8
- package/src/components/credits/context/utils/functionDiscountCalculate.ts +0 -57
- package/src/components/credits/context/utils/getFunctionMemberPrice.ts +0 -135
- package/src/components/credits/context/utils/getFunctionMemberPriceDiscountConfig.ts +0 -51
- package/src/components/credits/context/utils/variantGetCoupon.ts +0 -34
- /package/dist/cjs/components/credits/creditsBenefits/{benefitItem.d.ts → BenefitItem.d.ts} +0 -0
- /package/dist/cjs/components/credits/creditsBenefits/{iconInfo.d.ts → IconInfo.d.ts} +0 -0
- /package/dist/esm/components/credits/creditsBenefits/{benefitItem.d.ts → BenefitItem.d.ts} +0 -0
- /package/dist/esm/components/credits/creditsBenefits/{iconInfo.d.ts → IconInfo.d.ts} +0 -0
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { Button, Text, Picture } from '@anker-in/headless-ui'
|
|
2
|
-
import { useMemo } from 'react'
|
|
1
|
+
import { Button, Text, Picture, Badge } from '@anker-in/headless-ui'
|
|
2
|
+
import { useMemo, useState } from 'react'
|
|
3
3
|
|
|
4
4
|
import { CreditsMemberPriceCopy, MemberPriceProduct } from './type'
|
|
5
5
|
import { formatPrice, extractVariantId } from '../context/utils'
|
|
@@ -17,12 +17,15 @@ function MemberPriceItem({
|
|
|
17
17
|
className?: string
|
|
18
18
|
}) {
|
|
19
19
|
const { brand, locale } = useHeadlessContext()
|
|
20
|
-
const { profile, openSignUpPopup } = useCreditsContext()
|
|
20
|
+
const { profile, openSignUpPopup, cartConfig } = useCreditsContext()
|
|
21
21
|
const rounded = ROUNDED_BRANDS.includes(brand)
|
|
22
22
|
|
|
23
23
|
// 使用 buyNow hook 来处理结算
|
|
24
24
|
const { trigger: buyNow, isMutating: isBuying } = useBuyNow({}, { throwOnError: true })
|
|
25
25
|
|
|
26
|
+
// 本地 loading 状态,避免全局 loading 影响所有卡片
|
|
27
|
+
const [isAddingToCart, setIsAddingToCart] = useState(false)
|
|
28
|
+
|
|
26
29
|
const isAvailable = useMemo(() => {
|
|
27
30
|
return itemData.productVariant?.availableForSale
|
|
28
31
|
}, [itemData.productVariant?.availableForSale])
|
|
@@ -31,13 +34,73 @@ function MemberPriceItem({
|
|
|
31
34
|
return !!profile
|
|
32
35
|
}, [profile])
|
|
33
36
|
|
|
34
|
-
//
|
|
35
|
-
const
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
37
|
+
// 从 variant metafields 中获取 coupon code
|
|
38
|
+
const getCouponCode = useMemo(() => {
|
|
39
|
+
try {
|
|
40
|
+
const discountData = itemData.productVariant?.metafields?.__discountCodeApp?.data
|
|
41
|
+
if (!discountData) return undefined
|
|
42
|
+
|
|
43
|
+
// discountData 已经是对象,不需要 JSON.parse
|
|
44
|
+
const discounts = discountData
|
|
45
|
+
if (!Array.isArray(discounts) || discounts.length === 0) return undefined
|
|
46
|
+
|
|
47
|
+
// 获取第一个有效的 coupon(检查时间范围)
|
|
48
|
+
const now = new Date()
|
|
49
|
+
const validDiscount = discounts.find((discount: any) => {
|
|
50
|
+
const startsAt = discount.starts_at ? new Date(discount.starts_at) : null
|
|
51
|
+
const endsAt = discount.ends_at ? new Date(discount.ends_at) : null
|
|
52
|
+
|
|
53
|
+
// 检查 coupon 是否在有效期内
|
|
54
|
+
if (startsAt && startsAt > now) return false
|
|
55
|
+
if (endsAt && endsAt < now) return false
|
|
56
|
+
|
|
57
|
+
return true
|
|
58
|
+
})
|
|
59
|
+
|
|
60
|
+
return validDiscount?.title
|
|
61
|
+
} catch (error) {
|
|
62
|
+
console.error('Failed to get discount code:', error)
|
|
63
|
+
return undefined
|
|
64
|
+
}
|
|
65
|
+
}, [itemData.productVariant?.metafields])
|
|
66
|
+
|
|
67
|
+
// Add to Cart 按钮点击 - 调用加购方法
|
|
68
|
+
const handleAddToCart = async () => {
|
|
69
|
+
if (!cartConfig?.addToCart) {
|
|
70
|
+
console.warn('cartConfig.addToCart is required')
|
|
71
|
+
return
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
try {
|
|
75
|
+
setIsAddingToCart(true)
|
|
76
|
+
|
|
77
|
+
// 构建 lineItem attributes
|
|
78
|
+
const lineItemAttributes: Array<{ key: string; value: string }> = []
|
|
79
|
+
if (getCouponCode) {
|
|
80
|
+
lineItemAttributes.push({
|
|
81
|
+
key: '_member_price',
|
|
82
|
+
value: JSON.stringify({ code: getCouponCode }),
|
|
83
|
+
})
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
await cartConfig.addToCart({
|
|
87
|
+
variantList: [
|
|
88
|
+
{
|
|
89
|
+
variant: itemData.productVariant,
|
|
90
|
+
quantity: 1,
|
|
91
|
+
attributes: lineItemAttributes.length > 0 ? lineItemAttributes : undefined,
|
|
92
|
+
},
|
|
93
|
+
],
|
|
94
|
+
cartAttributes: {
|
|
95
|
+
_member_type: String(profile?.memberType || 0),
|
|
96
|
+
},
|
|
97
|
+
discountCodes: getCouponCode ? [getCouponCode] : undefined,
|
|
98
|
+
})
|
|
99
|
+
} catch (error) {
|
|
100
|
+
console.error('Add to cart failed:', error)
|
|
101
|
+
} finally {
|
|
102
|
+
setIsAddingToCart(false)
|
|
103
|
+
}
|
|
41
104
|
}
|
|
42
105
|
|
|
43
106
|
// Shop Now 按钮点击 - 检查登录状态后使用 buyNow 进行结算
|
|
@@ -48,6 +111,15 @@ function MemberPriceItem({
|
|
|
48
111
|
return
|
|
49
112
|
}
|
|
50
113
|
|
|
114
|
+
// 构建 lineItem attributes
|
|
115
|
+
const lineItemAttributes: Array<{ key: string; value: string }> = []
|
|
116
|
+
if (getCouponCode) {
|
|
117
|
+
lineItemAttributes.push({
|
|
118
|
+
key: '_member_price',
|
|
119
|
+
value: JSON.stringify({ code: getCouponCode }),
|
|
120
|
+
})
|
|
121
|
+
}
|
|
122
|
+
|
|
51
123
|
// 已登录,执行购买
|
|
52
124
|
buyNow({
|
|
53
125
|
customAttributes: [
|
|
@@ -60,6 +132,7 @@ function MemberPriceItem({
|
|
|
60
132
|
{
|
|
61
133
|
variant: itemData.productVariant,
|
|
62
134
|
quantity: 1,
|
|
135
|
+
attributes: lineItemAttributes.length > 0 ? lineItemAttributes : undefined,
|
|
63
136
|
},
|
|
64
137
|
],
|
|
65
138
|
})
|
|
@@ -70,17 +143,20 @@ function MemberPriceItem({
|
|
|
70
143
|
className={cn(
|
|
71
144
|
'relative flex flex-col items-center bg-[#EAEAEC] p-[24px] l:p-[8px] rounded-[16px] md-xl:p-[16px] md:rounded-[12px]',
|
|
72
145
|
!rounded && 'rounded-none md:rounded-none',
|
|
146
|
+
copy.badgeLabel && 'pt-[48px] l:pt-[44px]',
|
|
73
147
|
className
|
|
74
148
|
)}
|
|
75
149
|
>
|
|
76
|
-
{/* Member
|
|
77
|
-
{copy.
|
|
78
|
-
<
|
|
79
|
-
className="absolute left-[24px]
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
150
|
+
{/* Member 标签 Badge */}
|
|
151
|
+
{copy.badgeLabel && (
|
|
152
|
+
<Badge
|
|
153
|
+
className="absolute left-[24px] !bg-gradient-brand l:left-[16px] top-[16px] z-10"
|
|
154
|
+
size="lg"
|
|
155
|
+
variant="promotional"
|
|
156
|
+
promotionalType="regular-member"
|
|
157
|
+
>
|
|
158
|
+
{copy.badgeLabel}
|
|
159
|
+
</Badge>
|
|
84
160
|
)}
|
|
85
161
|
|
|
86
162
|
{/* 产品图片 - 优先使用产品的 metafields 透明图 */}
|
|
@@ -109,11 +185,11 @@ function MemberPriceItem({
|
|
|
109
185
|
<Text
|
|
110
186
|
html={itemData?.product?.title}
|
|
111
187
|
title={itemData?.product?.title}
|
|
112
|
-
className="line-clamp-2 text-[24px] l-xxl:text-[20px] l:text-[16px] font-bold leading-[1.2] tracking-[-0.8px] text-[#080A0F]"
|
|
188
|
+
className="line-clamp-2 text-[24px] min-h-[58px] l-xxl:min-h-[48px] l:min-h-[38px] l-xxl:text-[20px] l:text-[16px] font-bold leading-[1.2] tracking-[-0.8px] text-[#080A0F]"
|
|
113
189
|
/>
|
|
114
190
|
|
|
115
191
|
{/* 价格信息 */}
|
|
116
|
-
<div className="mt-[
|
|
192
|
+
<div className="mt-[24px] l:mt-[12px] flex flex-col gap-[8px] l:gap-0">
|
|
117
193
|
{/* Member Price 标签 - 使用 text-brand-color-1 */}
|
|
118
194
|
<Text
|
|
119
195
|
html={copy.memberPriceLabel}
|
|
@@ -148,16 +224,17 @@ function MemberPriceItem({
|
|
|
148
224
|
</div>
|
|
149
225
|
|
|
150
226
|
{/* 按钮组 */}
|
|
151
|
-
<div className="flex w-full gap-[8px] l:flex-col">
|
|
152
|
-
{/*
|
|
227
|
+
<div className="flex w-full mt-[8px] gap-[8px] l:flex-col">
|
|
228
|
+
{/* Add to Cart 按钮 */}
|
|
153
229
|
<Button
|
|
154
230
|
variant="secondary"
|
|
155
231
|
className="flex-1 md:w-full"
|
|
156
232
|
size="lg"
|
|
157
|
-
onClick={
|
|
158
|
-
disabled={!isAvailable}
|
|
233
|
+
onClick={handleAddToCart}
|
|
234
|
+
disabled={!isAvailable || !cartConfig?.addToCart || isAddingToCart}
|
|
235
|
+
loading={isAddingToCart}
|
|
159
236
|
>
|
|
160
|
-
{copy.
|
|
237
|
+
{copy.addToCart}
|
|
161
238
|
</Button>
|
|
162
239
|
|
|
163
240
|
{/* Shop Now 按钮 */}
|
|
@@ -45,13 +45,10 @@ export type CreditsMemberPriceCopy = {
|
|
|
45
45
|
// 会员价 tab 配置(产品列表和价格完全从 memberPriceDiscount 获取)
|
|
46
46
|
memberPriceTab: {
|
|
47
47
|
memberPriceRuleId: string // 指定使用哪个会员价规则
|
|
48
|
-
|
|
48
|
+
addToCart: string
|
|
49
49
|
shopNowText: string
|
|
50
50
|
memberPriceLabel: string
|
|
51
|
-
|
|
52
|
-
url: string
|
|
53
|
-
alt?: string
|
|
54
|
-
}
|
|
51
|
+
badgeLabel?: string
|
|
55
52
|
}
|
|
56
53
|
// 积分兑换 tab 配置(复用 creditsCash 的配置)
|
|
57
54
|
redeemTab: {
|
|
@@ -62,6 +59,7 @@ export type CreditsMemberPriceCopy = {
|
|
|
62
59
|
unlockRewards: string
|
|
63
60
|
btnRedeem: string
|
|
64
61
|
off: string
|
|
62
|
+
badgeLabel?: string
|
|
65
63
|
}
|
|
66
64
|
}
|
|
67
65
|
|
|
@@ -87,7 +87,7 @@ export const CreditsNavigation = ({ copy }: { copy: CreditsNavigationCopy }) =>
|
|
|
87
87
|
}, [setupObserver])
|
|
88
88
|
|
|
89
89
|
return (
|
|
90
|
-
<nav className={cn('sticky top-0 z-50 bg-white')}>
|
|
90
|
+
<nav id="creditsNavigation" className={cn('sticky top-0 z-50 bg-white')}>
|
|
91
91
|
<Container asChild>
|
|
92
92
|
<div
|
|
93
93
|
className={cn(
|
|
@@ -95,7 +95,7 @@ export const CreditsNavigation = ({ copy }: { copy: CreditsNavigationCopy }) =>
|
|
|
95
95
|
'md:scrollbar-hide md:[&::-webkit-scrollbar]:hidden md:[-ms-overflow-style:none] md:[scrollbar-width:none]'
|
|
96
96
|
)}
|
|
97
97
|
>
|
|
98
|
-
<ul className={cn('flex items-end gap-[24px] pt-[16px] md:gap-[16px] md:pr-[16px]')}>
|
|
98
|
+
<ul className={cn('flex items-end gap-[24px] pt-[16px] md:pt-[12px] md:gap-[16px] md:pr-[16px]')}>
|
|
99
99
|
{copy.items.map((item, index) => {
|
|
100
100
|
const isActive = activeId === item.targetId
|
|
101
101
|
return (
|
|
@@ -103,7 +103,7 @@ export const CreditsNavigation = ({ copy }: { copy: CreditsNavigationCopy }) =>
|
|
|
103
103
|
<button
|
|
104
104
|
onClick={() => scrollToSection(item.targetId)}
|
|
105
105
|
className={cn(
|
|
106
|
-
'pb-[16px] text-[14px] font-bold tracking-[-0.28px] leading-[1.4]',
|
|
106
|
+
'pb-[16px] md:pb-[12px] text-[14px] font-bold tracking-[-0.28px] leading-[1.4]',
|
|
107
107
|
'transition-all duration-200 relative border-b-4 whitespace-nowrap',
|
|
108
108
|
isActive
|
|
109
109
|
? 'text-[#080a0f] border-brand-1'
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Container, Heading, Tabs, TabsList, TabsTrigger
|
|
1
|
+
import { Container, Heading, Tabs, TabsList, TabsTrigger } from '@anker-in/headless-ui'
|
|
2
2
|
import classNames from 'classnames'
|
|
3
3
|
import { useCallback, useMemo, useState } from 'react'
|
|
4
4
|
|
|
@@ -7,7 +7,7 @@ import RedeemProductModal from './RedeemProductModal'
|
|
|
7
7
|
import { useCreditsContext } from '../context/provider'
|
|
8
8
|
import useRedeemableList from '../context/hooks/useRedeemableList'
|
|
9
9
|
import { AlpcConsumeType, AlpcErrorCode } from '../context/const'
|
|
10
|
-
import { useHeadlessContext, useProductsByHandles, gaTrack } from '@anker-in/lib'
|
|
10
|
+
import { useHeadlessContext, useProductsByHandles, gaTrack, classNames as cn } from '@anker-in/lib'
|
|
11
11
|
import type { RedeemableItem as RedeemableItemType } from '../type'
|
|
12
12
|
import { RedeemableItem } from './RedeemableItem'
|
|
13
13
|
import { ROUNDED_BRANDS } from '../../../constants'
|
|
@@ -29,9 +29,8 @@ export const CreditsRedeemList = ({ copy, id }: { copy: CreditsRedeemListCopy; i
|
|
|
29
29
|
const rounded = ROUNDED_BRANDS.includes(brand)
|
|
30
30
|
|
|
31
31
|
const isLogin = Object.keys(profile || {}).length > 0
|
|
32
|
-
const isActivated = profile?.activated
|
|
33
32
|
|
|
34
|
-
const [activeTab, setActiveTab] = useState<string>(copy.list[0]
|
|
33
|
+
const [activeTab, setActiveTab] = useState<string>(copy.list?.[0]?.label || '')
|
|
35
34
|
|
|
36
35
|
const [popRedeemData, setPopRedeemData] = useState<RedeemableItemType | undefined>(undefined)
|
|
37
36
|
|
|
@@ -59,8 +58,8 @@ export const CreditsRedeemList = ({ copy, id }: { copy: CreditsRedeemListCopy; i
|
|
|
59
58
|
const { data: products } = useProductsByHandles({ handles })
|
|
60
59
|
|
|
61
60
|
const list = useMemo(() => {
|
|
62
|
-
const currentList = copy.list
|
|
63
|
-
return currentList?.list
|
|
61
|
+
const currentList = copy.list?.find(item => item.label === activeTab)
|
|
62
|
+
return (currentList?.list || [])
|
|
64
63
|
.filter(item => alpcList.some(alpcItem => alpcItem.id === item.id))
|
|
65
64
|
.map(item => {
|
|
66
65
|
const alpcItem = alpcList.find(alpcItem => alpcItem.id === item.id)
|
|
@@ -93,12 +92,26 @@ export const CreditsRedeemList = ({ copy, id }: { copy: CreditsRedeemListCopy; i
|
|
|
93
92
|
<Heading as="h2" size="4" html={copy.title} />
|
|
94
93
|
|
|
95
94
|
{/* 可用积分展示 */}
|
|
96
|
-
{isLogin &&
|
|
97
|
-
<
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
95
|
+
{isLogin && copy.availableCredits && (
|
|
96
|
+
<p className="mt-[12px] text-[20px] l-xxl:text-[18px] l:text-[16px] font-bold text-[#4A4C56]">
|
|
97
|
+
{copy.availableCredits.includes('$credits') ? (
|
|
98
|
+
<>
|
|
99
|
+
{copy.availableCredits.split('$credits')[0]}
|
|
100
|
+
<span
|
|
101
|
+
className={cn(
|
|
102
|
+
'text-brand-color-0',
|
|
103
|
+
brand === 'ankersolix' &&
|
|
104
|
+
'bg-gradient-to-r from-[#2c7ed0] via-[#00a9e1] via-[43%] to-[#00db84] bg-clip-text text-transparent'
|
|
105
|
+
)}
|
|
106
|
+
>
|
|
107
|
+
{numberFormat(creditInfo?.available_credit || 0).toString()}
|
|
108
|
+
</span>
|
|
109
|
+
{copy.availableCredits.split('$credits')[1] || ''}
|
|
110
|
+
</>
|
|
111
|
+
) : (
|
|
112
|
+
copy.availableCredits
|
|
113
|
+
)}
|
|
114
|
+
</p>
|
|
102
115
|
)}
|
|
103
116
|
|
|
104
117
|
<Tabs
|
|
@@ -119,7 +132,7 @@ export const CreditsRedeemList = ({ copy, id }: { copy: CreditsRedeemListCopy; i
|
|
|
119
132
|
}}
|
|
120
133
|
>
|
|
121
134
|
<TabsList>
|
|
122
|
-
{copy.list.map(item => (
|
|
135
|
+
{(copy.list || []).map(item => (
|
|
123
136
|
<TabsTrigger key={item.label} value={item.label}>
|
|
124
137
|
{item.label}
|
|
125
138
|
</TabsTrigger>
|
|
@@ -150,7 +150,7 @@ export function RedeemableItem({
|
|
|
150
150
|
html={`${numberFormat(item.alpc?.consumeCredits)}`}
|
|
151
151
|
size={2}
|
|
152
152
|
as="p"
|
|
153
|
-
className="ml-[4px] text-[
|
|
153
|
+
className="ml-[4px] text-[24px] font-bold mt-[4px] leading-none l-xxl:text-[20px] l:text-[16px] "
|
|
154
154
|
/>
|
|
155
155
|
</div>
|
|
156
156
|
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import { Button, Container, Heading, Picture, Text } from '@anker-in/headless-ui'
|
|
2
2
|
import { ChevronDownIcon, ChevronUpIcon } from '@heroicons/react/24/outline'
|
|
3
|
-
import {
|
|
4
|
-
import { useMemo, useState } from 'react'
|
|
3
|
+
import { useEffect, useMemo, useRef, useState } from 'react'
|
|
5
4
|
|
|
6
5
|
import { TaskType, type CreditsWaysToGetCreditsProps } from './type'
|
|
7
6
|
import { useActions } from './useActions'
|
|
@@ -14,6 +13,7 @@ import { ROUNDED_BRANDS } from '../../../constants'
|
|
|
14
13
|
|
|
15
14
|
export const CreditsWaysToGetCredits = ({ copy, classNames, id }: CreditsWaysToGetCreditsProps & { id?: string }) => {
|
|
16
15
|
const [showMore, setShowMore] = useState(false)
|
|
16
|
+
const containerRef = useRef<HTMLDivElement>(null)
|
|
17
17
|
const { profile } = useCreditsContext()
|
|
18
18
|
const { authCodeActivate } = useRegistration()
|
|
19
19
|
const { brand } = useHeadlessContext()
|
|
@@ -37,7 +37,7 @@ export const CreditsWaysToGetCredits = ({ copy, classNames, id }: CreditsWaysToG
|
|
|
37
37
|
},
|
|
38
38
|
})
|
|
39
39
|
const list = useMemo(() => {
|
|
40
|
-
const list = copy.list
|
|
40
|
+
const list = (copy.list || [])
|
|
41
41
|
.map(item => {
|
|
42
42
|
if (!actions[item.id as keyof typeof actions]) {
|
|
43
43
|
return undefined
|
|
@@ -91,6 +91,18 @@ export const CreditsWaysToGetCredits = ({ copy, classNames, id }: CreditsWaysToG
|
|
|
91
91
|
}
|
|
92
92
|
}, [actions, copy.list, isLogin])
|
|
93
93
|
|
|
94
|
+
useEffect(() => {
|
|
95
|
+
if (!showMore && window.innerWidth < 768) {
|
|
96
|
+
const section = document.getElementById('ways-to-get-credits')
|
|
97
|
+
if (section) {
|
|
98
|
+
const timer = setTimeout(() => {
|
|
99
|
+
section.scrollIntoView({ behavior: 'smooth', block: 'end' })
|
|
100
|
+
}, 300)
|
|
101
|
+
return () => clearTimeout(timer)
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
}, [showMore])
|
|
105
|
+
|
|
94
106
|
return (
|
|
95
107
|
<Container id={id} className=" bg-[#F5F5F7] [&>div]:l:!px-0">
|
|
96
108
|
<div
|
|
@@ -123,21 +135,12 @@ export const CreditsWaysToGetCredits = ({ copy, classNames, id }: CreditsWaysToG
|
|
|
123
135
|
</div>
|
|
124
136
|
|
|
125
137
|
<div className="relative">
|
|
126
|
-
<
|
|
138
|
+
<div
|
|
139
|
+
ref={containerRef}
|
|
127
140
|
className={cn(
|
|
128
|
-
'relative mt-[64px] grid grid-cols-3 gap-[16px] overflow-hidden md:mt-[16px] md:grid-cols-1 l:gap-[12px]
|
|
141
|
+
'relative mt-[64px] grid grid-cols-3 gap-[16px] overflow-hidden transition-all duration-300 md:mt-[16px] md:grid-cols-1 l:gap-[12px] md-l:mt-[32px] md-l:grid-cols-2',
|
|
142
|
+
showMore ? 'min-md:!h-auto md:h-auto' : 'md:h-[512px] min-md:!h-auto'
|
|
129
143
|
)}
|
|
130
|
-
initial={{ height: 512 }}
|
|
131
|
-
animate={{ height: showMore ? 'auto' : 512 }}
|
|
132
|
-
transition={{ duration: 0.3 }}
|
|
133
|
-
onAnimationComplete={() => {
|
|
134
|
-
if (!showMore && window.screen.width < 768) {
|
|
135
|
-
const section = document.getElementById('ways-to-get-credits')
|
|
136
|
-
if (section) {
|
|
137
|
-
section.scrollIntoView({ behavior: 'smooth', block: 'end' })
|
|
138
|
-
}
|
|
139
|
-
}
|
|
140
|
-
}}
|
|
141
144
|
>
|
|
142
145
|
{list.map(item => (
|
|
143
146
|
<div
|
|
@@ -195,7 +198,7 @@ export const CreditsWaysToGetCredits = ({ copy, classNames, id }: CreditsWaysToG
|
|
|
195
198
|
style={{ background: 'linear-gradient(180deg, rgba(29, 29, 31, 0) 66.37%, #1D1D1F 100%)' }}
|
|
196
199
|
></div>
|
|
197
200
|
)}
|
|
198
|
-
</
|
|
201
|
+
</div>
|
|
199
202
|
{showMore ? (
|
|
200
203
|
<button
|
|
201
204
|
className="mx-auto mt-[12px] block w-fit min-md:hidden"
|
|
@@ -74,6 +74,17 @@ export type CreditsTemplateProps = {
|
|
|
74
74
|
gtm: {
|
|
75
75
|
pageGroup: string
|
|
76
76
|
}
|
|
77
|
+
cartConfig?: {
|
|
78
|
+
addToCart: (params: {
|
|
79
|
+
variantList: Array<{
|
|
80
|
+
variant: any
|
|
81
|
+
quantity: number
|
|
82
|
+
attributes?: Array<{ key: string; value: string }>
|
|
83
|
+
}>
|
|
84
|
+
cartAttributes?: Record<string, string>
|
|
85
|
+
discountCodes?: string[]
|
|
86
|
+
}) => void | Promise<any>
|
|
87
|
+
}
|
|
77
88
|
}
|
|
78
89
|
|
|
79
90
|
export const CreditsTemplate = ({
|
|
@@ -84,8 +95,8 @@ export const CreditsTemplate = ({
|
|
|
84
95
|
pageConfig,
|
|
85
96
|
registrationContext,
|
|
86
97
|
gtm,
|
|
98
|
+
cartConfig,
|
|
87
99
|
}: CreditsTemplateProps) => {
|
|
88
|
-
|
|
89
100
|
console.log('siteConfig', siteConfig)
|
|
90
101
|
return (
|
|
91
102
|
<HeadlessProvider headlessConfig={headlessConfig}>
|
|
@@ -105,6 +116,7 @@ export const CreditsTemplate = ({
|
|
|
105
116
|
pageCommon={pageConfig.common}
|
|
106
117
|
memberPriceDiscount={siteConfig.memberPriceDiscount}
|
|
107
118
|
alpcBrand={creditsConfig?.alpcBrand}
|
|
119
|
+
cartConfig={cartConfig}
|
|
108
120
|
>
|
|
109
121
|
{/* 导航组件 - 固定位置,不参与 order 排序 */}
|
|
110
122
|
{pageConfig.components[ComponentKey.Navigation] && (
|
|
@@ -122,7 +134,9 @@ export const CreditsTemplate = ({
|
|
|
122
134
|
{key === ComponentKey.InfoCard && userContext?.profile && (
|
|
123
135
|
<CreditsInfoCard copy={componentCopy as CreditsInfoCardCopy} id={key} />
|
|
124
136
|
)}
|
|
125
|
-
{key === ComponentKey.Benefits &&
|
|
137
|
+
{key === ComponentKey.Benefits && (
|
|
138
|
+
<CreditsBenefits copy={componentCopy as CreditsBenefitsCopy} id={key} />
|
|
139
|
+
)}
|
|
126
140
|
{key === ComponentKey.WaysToGetCredits && (
|
|
127
141
|
<CreditsWaysToGetCredits
|
|
128
142
|
copy={componentCopy as CreditsWaysToGetCreditsCopy}
|
|
@@ -142,14 +156,17 @@ export const CreditsTemplate = ({
|
|
|
142
156
|
/>
|
|
143
157
|
)}
|
|
144
158
|
{key === ComponentKey.AnkersolixTask && (
|
|
145
|
-
<CreditsAnkersolixTask
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
/>
|
|
159
|
+
<CreditsAnkersolixTask copy={componentCopy as CreditsAnkersolixTaskCopy} id={key} />
|
|
160
|
+
)}
|
|
161
|
+
{key === ComponentKey.RedeemList && (
|
|
162
|
+
<CreditsRedeemList copy={componentCopy as CreditsRedeemListCopy} id={key} />
|
|
163
|
+
)}
|
|
164
|
+
{key === ComponentKey.SpendCreditsLikeCash && (
|
|
165
|
+
<CreditsCash copy={componentCopy as CreditsCashCopy} id={key} />
|
|
166
|
+
)}
|
|
167
|
+
{key === ComponentKey.MemberPrice && (
|
|
168
|
+
<CreditsMemberPrice copy={componentCopy as CreditsMemberPriceCopy} id={key} />
|
|
149
169
|
)}
|
|
150
|
-
{key === ComponentKey.RedeemList && <CreditsRedeemList copy={componentCopy as CreditsRedeemListCopy} id={key} />}
|
|
151
|
-
{key === ComponentKey.SpendCreditsLikeCash && <CreditsCash copy={componentCopy as CreditsCashCopy} id={key} />}
|
|
152
|
-
{key === ComponentKey.MemberPrice && <CreditsMemberPrice copy={componentCopy as CreditsMemberPriceCopy} id={key} />}
|
|
153
170
|
{key === ComponentKey.Faqs && <CreditsFaq copy={componentCopy as CreditsFaqCopy} id={key} />}
|
|
154
171
|
{key !== ComponentKey.Banner && (
|
|
155
172
|
<div className="laptop:h-16 desktop:h-[96px] lg-desktop:h-[128px] tablet:h-16 h-16" />
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export declare function useSendEmailValidation(): import("swr/mutation").SWRMutationResponse<any, any, "send-email-validation", never>;
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
"use strict";var c=Object.create;var i=Object.defineProperty;var d=Object.getOwnPropertyDescriptor;var f=Object.getOwnPropertyNames;var h=Object.getPrototypeOf,v=Object.prototype.hasOwnProperty;var x=(e,t)=>{for(var o in t)i(e,o,{get:t[o],enumerable:!0})},r=(e,t,o,n)=>{if(t&&typeof t=="object"||typeof t=="function")for(let a of f(t))!v.call(e,a)&&a!==o&&i(e,a,{get:()=>t[a],enumerable:!(n=d(t,a))||n.enumerable});return e};var m=(e,t,o)=>(o=e!=null?c(h(e)):{},r(t||!e||!e.__esModule?i(o,"default",{value:e,enumerable:!0}):o,e)),C=e=>r(i({},"__esModule",{value:!0}),e);var y={};x(y,{useSendEmailValidation:()=>S});module.exports=C(y);var s=m(require("../../../../helpers/fetcher")),l=m(require("swr/mutation")),p=require("../provider"),u=require("@anker-in/lib");function S(){const{profile:e}=(0,p.useCreditsContext)(),{appName:t,locale:o}=(0,u.useHeadlessContext)();return(0,l.default)("send-email-validation",()=>(0,s.default)({locale:o,url:"/api/multipass/account/users/send_validation_email",method:"POST",body:{email:e?.email,app:t},needRecaptcha:!0,action:"verifyAccount"}))}
|
|
2
|
-
//# sourceMappingURL=useSendEmailValidation.js.map
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../../../../../src/components/credits/context/hooks/useSendEmailValidation.ts"],
|
|
4
|
-
"sourcesContent": ["import fetcher from '../../../../helpers/fetcher'\nimport useSWRMutation from 'swr/mutation'\nimport { useCreditsContext } from '../provider'\nimport { useHeadlessContext } from '@anker-in/lib'\n\nexport function useSendEmailValidation() {\n const { profile } = useCreditsContext()\n const { appName, locale } = useHeadlessContext()\n\n return useSWRMutation('send-email-validation', () =>\n fetcher({\n locale,\n url: '/api/multipass/account/users/send_validation_email',\n method: 'POST',\n body: { email: profile?.email, app: appName },\n needRecaptcha: true,\n action: 'verifyAccount',\n })\n )\n}\n"],
|
|
5
|
-
"mappings": "0jBAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,4BAAAE,IAAA,eAAAC,EAAAH,GAAA,IAAAI,EAAoB,0CACpBC,EAA2B,2BAC3BC,EAAkC,uBAClCC,EAAmC,yBAE5B,SAASL,GAAyB,CACvC,KAAM,CAAE,QAAAM,CAAQ,KAAI,qBAAkB,EAChC,CAAE,QAAAC,EAAS,OAAAC,CAAO,KAAI,sBAAmB,EAE/C,SAAO,EAAAC,SAAe,wBAAyB,OAC7C,EAAAC,SAAQ,CACN,OAAAF,EACA,IAAK,qDACL,OAAQ,OACR,KAAM,CAAE,MAAOF,GAAS,MAAO,IAAKC,CAAQ,EAC5C,cAAe,GACf,OAAQ,eACV,CAAC,CACH,CACF",
|
|
6
|
-
"names": ["useSendEmailValidation_exports", "__export", "useSendEmailValidation", "__toCommonJS", "import_fetcher", "import_mutation", "import_provider", "import_lib", "profile", "appName", "locale", "useSWRMutation", "fetcher"]
|
|
7
|
-
}
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
import { SWRResponse } from 'swr';
|
|
2
|
-
import type { Subscription } from '../../type';
|
|
3
|
-
export type SubscriptionApiResponse = {
|
|
4
|
-
data: Subscription;
|
|
5
|
-
};
|
|
6
|
-
export type FetchSubscriptionResponse = SWRResponse<Subscription>;
|
|
7
|
-
export declare function useSubscriptions({ email }: {
|
|
8
|
-
email?: string;
|
|
9
|
-
}): FetchSubscriptionResponse;
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
"use strict";var b=Object.create;var i=Object.defineProperty;var m=Object.getOwnPropertyDescriptor;var R=Object.getOwnPropertyNames;var d=Object.getPrototypeOf,l=Object.prototype.hasOwnProperty;var y=(s,t)=>{for(var e in t)i(s,e,{get:t[e],enumerable:!0})},n=(s,t,e,p)=>{if(t&&typeof t=="object"||typeof t=="function")for(let o of R(t))!l.call(s,o)&&o!==e&&i(s,o,{get:()=>t[o],enumerable:!(p=m(t,o))||p.enumerable});return s};var r=(s,t,e)=>(e=s!=null?b(d(s)):{},n(t||!s||!s.__esModule?i(e,"default",{value:s,enumerable:!0}):e,s)),f=s=>n(i({},"__esModule",{value:!0}),s);var x={};y(x,{useSubscriptions:()=>h});module.exports=f(x);var c=r(require("swr")),u=r(require("../../../../helpers/fetcher")),a=require("@anker-in/lib");function h({email:s}){const{locale:t}=(0,a.useHeadlessContext)(),{data:e,...p}=(0,c.default)(s?["/api/multipass/account/subscriptions",s]:null,async([o,S])=>(0,u.default)({method:"GET",url:o,body:{email:S},action:"login",locale:t,headers:{},type:""}));return{data:e?.data,...p}}
|
|
2
|
-
//# sourceMappingURL=useSubscriptions.js.map
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../../../../../src/components/credits/context/hooks/useSubscriptions.ts"],
|
|
4
|
-
"sourcesContent": ["import useSWR, { SWRResponse } from 'swr'\nimport type { Subscription } from '../../type'\nimport fetcher from '../../../../helpers/fetcher'\nimport { useHeadlessContext } from '@anker-in/lib'\n\nexport type SubscriptionApiResponse = { data: Subscription }\nexport type FetchSubscriptionResponse = SWRResponse<Subscription>\n\nexport function useSubscriptions({ email }: { email?: string }): FetchSubscriptionResponse {\n const { locale } = useHeadlessContext()\n\n const { data, ...rest } = useSWR<SubscriptionApiResponse>(\n email ? ['/api/multipass/account/subscriptions', email] : null,\n async ([url, email]) =>\n fetcher({\n method: 'GET',\n url,\n body: {\n email,\n },\n action: 'login',\n locale,\n headers: {},\n type: '',\n })\n )\n\n return { data: data?.data, ...rest } as unknown as FetchSubscriptionResponse\n}\n"],
|
|
5
|
-
"mappings": "0jBAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,sBAAAE,IAAA,eAAAC,EAAAH,GAAA,IAAAI,EAAoC,kBAEpCC,EAAoB,0CACpBC,EAAmC,yBAK5B,SAASJ,EAAiB,CAAE,MAAAK,CAAM,EAAkD,CACzF,KAAM,CAAE,OAAAC,CAAO,KAAI,sBAAmB,EAEhC,CAAE,KAAAC,EAAM,GAAGC,CAAK,KAAI,EAAAC,SACxBJ,EAAQ,CAAC,uCAAwCA,CAAK,EAAI,KAC1D,MAAO,CAACK,EAAKL,CAAK,OAChB,EAAAM,SAAQ,CACN,OAAQ,MACR,IAAAD,EACA,KAAM,CACJ,MAAAL,CACF,EACA,OAAQ,QACR,OAAAC,EACA,QAAS,CAAC,EACV,KAAM,EACR,CAAC,CACL,EAEA,MAAO,CAAE,KAAMC,GAAM,KAAM,GAAGC,CAAK,CACrC",
|
|
6
|
-
"names": ["useSubscriptions_exports", "__export", "useSubscriptions", "__toCommonJS", "import_swr", "import_fetcher", "import_lib", "email", "locale", "data", "rest", "useSWR", "url", "fetcher"]
|
|
7
|
-
}
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
"use strict";var F=Object.create;var r=Object.defineProperty;var N=Object.getOwnPropertyDescriptor;var h=Object.getOwnPropertyNames;var D=Object.getPrototypeOf,C=Object.prototype.hasOwnProperty;var k=(e,o)=>{for(var n in o)r(e,n,{get:o[n],enumerable:!0})},b=(e,o,n,a)=>{if(o&&typeof o=="object"||typeof o=="function")for(let i of h(o))!C.call(e,i)&&i!==n&&r(e,i,{get:()=>o[i],enumerable:!(a=N(o,i))||a.enumerable});return e};var y=(e,o,n)=>(n=e!=null?F(D(e)):{},b(o||!e||!e.__esModule?r(n,"default",{value:e,enumerable:!0}):n,e)),z=e=>b(r({},"__esModule",{value:!0}),e);var B={};k(B,{default:()=>w});module.exports=z(B);var t=require("react/jsx-runtime"),s=require("@anker-in/headless-ui"),l=require("@anker-in/lib"),f=y(require("./IconInfo")),u=require("../../../constants");const I=({item:e,handleClick:o,isNoteActive:n,index:a,bigIcon:i,cardBgColor:x,cardBorderColor:c})=>{const{brand:g}=(0,l.useHeadlessContext)(),m=u.ROUNDED_BRANDS.includes(g),v=i?"mb-[16px] size-[64px] xl-xxl:size-[54px] xl:size-[48px] md:absolute md:bottom-[16px] md:right-[16px] md:mb-0":"mb-[16px] size-[31px] md:absolute md:bottom-[16px] md:right-[16px] md:mb-0";console.log("cardBgColor in BenefitItem",x);const d={};return x?d.background=x:d.background="linear-gradient(119.61deg, #FAFAFA 38.58%, #FFFFFF 63.73%, #F9FCFF 89.37%)",c&&(d.borderColor=c),(0,t.jsx)("div",{className:(0,l.classNames)("relative flex-1 flex flex-col rounded-[16px] border border-white px-[24px] pb-[26px] pt-[24px] md:min-h-[180px] md:p-[16px]",!m&&"rounded-none"),style:d,children:(0,t.jsxs)("div",{className:"flex flex-col",children:[(0,t.jsx)(s.Picture,{className:v,alt:e.icon?.alt,source:e.icon?.url}),(0,t.jsxs)("div",{className:"flex items-center",children:[(0,t.jsx)(s.Heading,{html:e.text,size:"2",className:"break-all md-l:line-clamp-3"}),e.note&&(0,t.jsxs)("div",{role:"button",tabIndex:0,onKeyDown:p=>{(p.key==="Enter"||p.key===" ")&&p.preventDefault()},className:"relative mb-1 ml-[4px]",onClick:()=>o({item:e,index:a}),children:[(0,t.jsx)(f.default,{}),(0,t.jsx)("div",{className:(0,l.classNames)("absolute -bottom-[12px] left-[32px] z-10 w-[356px] -translate-x-full translate-y-full md:w-[276px]",n?"block":"hidden"),children:(0,t.jsxs)("div",{className:(0,l.classNames)("relative rounded-[10px] bg-[#6D6D6F] p-[16px] text-[14px] font-medium text-white shadow",!m&&"rounded-none"),children:[(0,t.jsx)(s.Text,{as:"p",size:"2",html:e.note,className:"desktop:text-[18px]"}),(0,t.jsx)("div",{className:(0,l.classNames)("absolute -top-[10px] right-[9px] mb-2 size-[16px] origin-top-left rotate-45 transform rounded-[2px] bg-[#6D6D6F]",!m&&"rounded-none")})]})})]})]}),e.tag&&(0,t.jsx)(s.Text,{as:"div",html:e.tag,className:"mt-[2px] text-[16px] font-bold text-[#6D6D6F]"})]})})};var w=I;
|
|
2
|
-
//# sourceMappingURL=BenefitItem.js.map
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../../../../src/components/credits/creditsBenefits/BenefitItem.tsx"],
|
|
4
|
-
"sourcesContent": ["import { Heading, Picture, Text } from '@anker-in/headless-ui'\nimport { classNames as cn, useHeadlessContext } from '@anker-in/lib'\nimport IconInfo from './IconInfo'\nimport { ROUNDED_BRANDS } from '../../../constants'\n\nexport interface BenefitItemCopy {\n icon: {\n alt: string\n url: string\n }\n text: string\n note?: string\n tag?: string\n}\nconst BenefitItem = ({\n item,\n handleClick,\n isNoteActive,\n index,\n bigIcon,\n cardBgColor,\n cardBorderColor,\n}: {\n item: BenefitItemCopy\n handleClick: ({ item, index }: { item: BenefitItemCopy; index: number }) => void\n isNoteActive: boolean\n index: number\n bigIcon?: boolean\n cardBgColor?: string\n cardBorderColor?: string\n}) => {\n const { brand } = useHeadlessContext()\n const rounded = ROUNDED_BRANDS.includes(brand)\n\n // \u6839\u636E bigIcon \u8BBE\u7F6E\u4E0D\u540C\u5C4F\u5E55\u4E0B\u7684\u56FE\u6807\u5927\u5C0F\n // \u5C3A\u5BF8\uFF1A\u22651921px=64px, 1441-1920px=54px, \u22641440px=48px\n const iconSizeClass = bigIcon\n ? 'mb-[16px] size-[64px] xl-xxl:size-[54px] xl:size-[48px] md:absolute md:bottom-[16px] md:right-[16px] md:mb-0'\n : 'mb-[16px] size-[31px] md:absolute md:bottom-[16px] md:right-[16px] md:mb-0'\n\n console.log('cardBgColor in BenefitItem', cardBgColor)\n // \u80CC\u666F\u8272\u548C\u8FB9\u6846\u8272\u5904\u7406\n const cardStyle: React.CSSProperties = {}\n if (cardBgColor) {\n cardStyle.background = cardBgColor\n } else {\n cardStyle.background = 'linear-gradient(119.61deg, #FAFAFA 38.58%, #FFFFFF 63.73%, #F9FCFF 89.37%)'\n }\n if (cardBorderColor) {\n cardStyle.borderColor = cardBorderColor\n }\n\n return (\n <div\n className={cn(\n 'relative flex-1 flex flex-col rounded-[16px] border border-white px-[24px] pb-[26px] pt-[24px] md:min-h-[180px] md:p-[16px]',\n !rounded && 'rounded-none'\n )}\n style={cardStyle}\n >\n <div className=\"flex flex-col\">\n <Picture className={iconSizeClass} alt={item.icon?.alt} source={item.icon?.url} />\n <div className=\"flex items-center\">\n <Heading html={item.text} size=\"2\" className=\"break-all md-l:line-clamp-3\" />\n {item.note && (\n <div\n role=\"button\"\n tabIndex={0}\n onKeyDown={e => {\n if (e.key === 'Enter' || e.key === ' ') {\n e.preventDefault()\n }\n }}\n className=\"relative mb-1 ml-[4px]\"\n onClick={() => handleClick({ item, index })}\n >\n <IconInfo />\n <div\n className={cn(\n 'absolute -bottom-[12px] left-[32px] z-10 w-[356px] -translate-x-full translate-y-full md:w-[276px]',\n isNoteActive ? '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 as=\"p\" size=\"2\" html={item.note} className=\"desktop:text-[18px]\" />\n <div\n className={cn(\n 'absolute -top-[10px] right-[9px] 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 {item.tag && <Text as=\"div\" html={item.tag} className=\"mt-[2px] text-[16px] font-bold text-[#6D6D6F]\" />}\n </div>\n </div>\n )\n}\n\nexport default BenefitItem\n"],
|
|
5
|
-
"mappings": "0jBAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,aAAAE,IAAA,eAAAC,EAAAH,GA6DQ,IAAAI,EAAA,6BA7DRC,EAAuC,iCACvCC,EAAqD,yBACrDC,EAAqB,yBACrBC,EAA+B,8BAW/B,MAAMC,EAAc,CAAC,CACnB,KAAAC,EACA,YAAAC,EACA,aAAAC,EACA,MAAAC,EACA,QAAAC,EACA,YAAAC,EACA,gBAAAC,CACF,IAQM,CACJ,KAAM,CAAE,MAAAC,CAAM,KAAI,sBAAmB,EAC/BC,EAAU,iBAAe,SAASD,CAAK,EAIvCE,EAAgBL,EAClB,+GACA,6EAEJ,QAAQ,IAAI,6BAA8BC,CAAW,EAErD,MAAMK,EAAiC,CAAC,EACxC,OAAIL,EACFK,EAAU,WAAaL,EAEvBK,EAAU,WAAa,6EAErBJ,IACFI,EAAU,YAAcJ,MAIxB,OAAC,OACC,aAAW,EAAAK,YACT,8HACA,CAACH,GAAW,cACd,EACA,MAAOE,EAEP,oBAAC,OAAI,UAAU,gBACb,oBAAC,WAAQ,UAAWD,EAAe,IAAKT,EAAK,MAAM,IAAK,OAAQA,EAAK,MAAM,IAAK,KAChF,QAAC,OAAI,UAAU,oBACb,oBAAC,WAAQ,KAAMA,EAAK,KAAM,KAAK,IAAI,UAAU,8BAA8B,EAC1EA,EAAK,SACJ,QAAC,OACC,KAAK,SACL,SAAU,EACV,UAAWY,GAAK,EACVA,EAAE,MAAQ,SAAWA,EAAE,MAAQ,MACjCA,EAAE,eAAe,CAErB,EACA,UAAU,yBACV,QAAS,IAAMX,EAAY,CAAE,KAAAD,EAAM,MAAAG,CAAM,CAAC,EAE1C,oBAAC,EAAAU,QAAA,EAAS,KACV,OAAC,OACC,aAAW,EAAAF,YACT,qGACAT,EAAe,QAAU,QAC3B,EAEA,oBAAC,OACC,aAAW,EAAAS,YACT,0FACA,CAACH,GAAW,cACd,EAEA,oBAAC,QAAK,GAAG,IAAI,KAAK,IAAI,KAAMR,EAAK,KAAM,UAAU,sBAAsB,KACvE,OAAC,OACC,aAAW,EAAAW,YACT,mHACA,CAACH,GAAW,cACd,EACF,GACF,EACF,GACF,GAEJ,EACCR,EAAK,QAAO,OAAC,QAAK,GAAG,MAAM,KAAMA,EAAK,IAAK,UAAU,gDAAgD,GACxG,EACF,CAEJ,EAEA,IAAOR,EAAQO",
|
|
6
|
-
"names": ["BenefitItem_exports", "__export", "BenefitItem_default", "__toCommonJS", "import_jsx_runtime", "import_headless_ui", "import_lib", "import_IconInfo", "import_constants", "BenefitItem", "item", "handleClick", "isNoteActive", "index", "bigIcon", "cardBgColor", "cardBorderColor", "brand", "rounded", "iconSizeClass", "cardStyle", "cn", "e", "IconInfo"]
|
|
7
|
-
}
|
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
export declare function getAsyncError(res: {
|
|
2
|
-
json: () => any;
|
|
3
|
-
status: any;
|
|
4
|
-
statusText: any;
|
|
5
|
-
}): Promise<{
|
|
6
|
-
status: any;
|
|
7
|
-
statusText: any;
|
|
8
|
-
errors: any;
|
|
9
|
-
type: any;
|
|
10
|
-
data: any;
|
|
11
|
-
message: any;
|
|
12
|
-
} | undefined>;
|
|
13
|
-
declare const handleFetchResponse: (res: Response) => Promise<any>;
|
|
14
|
-
export default handleFetchResponse;
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
"use strict";var o=Object.defineProperty;var u=Object.getOwnPropertyDescriptor;var c=Object.getOwnPropertyNames;var y=Object.prototype.hasOwnProperty;var d=(a,t)=>{for(var s in t)o(a,s,{get:t[s],enumerable:!0})},l=(a,t,s,n)=>{if(t&&typeof t=="object"||typeof t=="function")for(let e of c(t))!y.call(a,e)&&e!==s&&o(a,e,{get:()=>t[e],enumerable:!(n=u(t,e))||n.enumerable});return a};var g=a=>l(o({},"__esModule",{value:!0}),a);var x={};d(x,{default:()=>p,getAsyncError:()=>r});module.exports=g(x);async function r(a){try{const t=await a.json();return{status:a.status,statusText:a.statusText,errors:t?.data?.error||t?.data?.code||a.statusText||a.status,type:t?.data?.type,data:t?.data,message:t?.data?.message}}catch(t){console.log(t)}}const i=async a=>{if(a.ok)try{const t=await a.json(),{errors:s}=t;return s&&s.length?{errors:s,status:a.status}:t}catch(t){console.log(t)}return await r(a)};var p=i;
|
|
2
|
-
//# sourceMappingURL=fetchResponse.js.map
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../../src/helpers/fetchResponse.ts"],
|
|
4
|
-
"sourcesContent": ["export async function getAsyncError(res: { json: () => any; status: any; statusText: any }) {\n try {\n const result = await res.json()\n return {\n status: res.status,\n statusText: res.statusText,\n errors: result?.data?.error || result?.data?.code || res.statusText || res.status,\n type: result?.data?.type,\n data: result?.data,\n message: result?.data?.message,\n }\n } catch (error) {\n console.log(error)\n }\n}\n\nconst handleFetchResponse = async (res: Response) => {\n if (res.ok) {\n try {\n const result = await res.json()\n const { errors } = result\n if (errors && errors.length) {\n return { errors, status: res.status }\n }\n\n return result\n } catch (error) {\n console.log(error)\n }\n }\n\n return await getAsyncError(res)\n}\n\nexport default handleFetchResponse\n"],
|
|
5
|
-
"mappings": "yaAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,aAAAE,EAAA,kBAAAC,IAAA,eAAAC,EAAAJ,GAAA,eAAsBG,EAAcE,EAAwD,CAC1F,GAAI,CACF,MAAMC,EAAS,MAAMD,EAAI,KAAK,EAC9B,MAAO,CACL,OAAQA,EAAI,OACZ,WAAYA,EAAI,WAChB,OAAQC,GAAQ,MAAM,OAASA,GAAQ,MAAM,MAAQD,EAAI,YAAcA,EAAI,OAC3E,KAAMC,GAAQ,MAAM,KACpB,KAAMA,GAAQ,KACd,QAASA,GAAQ,MAAM,OACzB,CACF,OAASC,EAAO,CACd,QAAQ,IAAIA,CAAK,CACnB,CACF,CAEA,MAAMC,EAAsB,MAAOH,GAAkB,CACnD,GAAIA,EAAI,GACN,GAAI,CACF,MAAMC,EAAS,MAAMD,EAAI,KAAK,EACxB,CAAE,OAAAI,CAAO,EAAIH,EACnB,OAAIG,GAAUA,EAAO,OACZ,CAAE,OAAAA,EAAQ,OAAQJ,EAAI,MAAO,EAG/BC,CACT,OAASC,EAAO,CACd,QAAQ,IAAIA,CAAK,CACnB,CAGF,OAAO,MAAMJ,EAAcE,CAAG,CAChC,EAEA,IAAOH,EAAQM",
|
|
6
|
-
"names": ["fetchResponse_exports", "__export", "fetchResponse_default", "getAsyncError", "__toCommonJS", "res", "result", "error", "handleFetchResponse", "errors"]
|
|
7
|
-
}
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
"use strict";var h=Object.create;var o=Object.defineProperty;var p=Object.getOwnPropertyDescriptor;var u=Object.getOwnPropertyNames;var y=Object.getPrototypeOf,T=Object.prototype.hasOwnProperty;var b=(e,a)=>{for(var n in a)o(e,n,{get:a[n],enumerable:!0})},i=(e,a,n,t)=>{if(a&&typeof a=="object"||typeof a=="function")for(let r of u(a))!T.call(e,r)&&r!==n&&o(e,r,{get:()=>a[r],enumerable:!(t=p(a,r))||t.enumerable});return e};var w=(e,a,n)=>(n=e!=null?h(y(e)):{},i(a||!e||!e.__esModule?o(n,"default",{value:e,enumerable:!0}):n,e)),F=e=>i(o({},"__esModule",{value:!0}),e);var m={};b(m,{default:()=>S});module.exports=F(m);var f=w(require("./fetchResponse.js"));const O=async({locale:e="en",url:a,method:n="POST",headers:t={},body:r,type:d,timeout:l=9e4})=>{let s="";d==="uploadFile"?s=r:s=r?JSON.stringify(r):"";const c=new AbortController;l&&setTimeout(()=>c.abort(),l);const g=await fetch(a,{method:n,mode:"cors",headers:{"current-language":e,...t},...l&&{signal:c.signal},...n!=="GET"&&{body:s}});return(0,f.default)(g)};var S=O;
|
|
2
|
-
//# sourceMappingURL=fetcher.js.map
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../../src/helpers/fetcher.ts"],
|
|
4
|
-
"sourcesContent": ["import handleFetchResponse from './fetchResponse.js'\n\nconst fetcher = async ({ locale = 'en', url, method = 'POST', headers = {}, body, type, timeout = 90000 }: any) => {\n // \u6DFB\u52A0\u8C37\u6B4C\u9A8C\u8BC1\n let bodyData = ''\n if (type === 'uploadFile') {\n bodyData = body\n } else {\n bodyData = body ? JSON.stringify(body) : ''\n }\n\n const controller = new AbortController()\n if (timeout) {\n // \u8D85\u65F6\u62A5\u9519\n setTimeout(() => controller.abort(), timeout)\n }\n\n const data = await fetch(url, {\n method,\n mode: 'cors',\n headers: {\n 'current-language': locale,\n ...headers,\n },\n ...(timeout && { signal: controller.signal }),\n ...(method !== 'GET' && { body: bodyData }),\n })\n return handleFetchResponse(data)\n}\n\nexport default fetcher\n"],
|
|
5
|
-
"mappings": "0jBAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,aAAAE,IAAA,eAAAC,EAAAH,GAAA,IAAAI,EAAgC,iCAEhC,MAAMC,EAAU,MAAO,CAAE,OAAAC,EAAS,KAAM,IAAAC,EAAK,OAAAC,EAAS,OAAQ,QAAAC,EAAU,CAAC,EAAG,KAAAC,EAAM,KAAAC,EAAM,QAAAC,EAAU,GAAM,IAAW,CAEjH,IAAIC,EAAW,GACXF,IAAS,aACXE,EAAWH,EAEXG,EAAWH,EAAO,KAAK,UAAUA,CAAI,EAAI,GAG3C,MAAMI,EAAa,IAAI,gBACnBF,GAEF,WAAW,IAAME,EAAW,MAAM,EAAGF,CAAO,EAG9C,MAAMG,EAAO,MAAM,MAAMR,EAAK,CAC5B,OAAAC,EACA,KAAM,OACN,QAAS,CACP,mBAAoBF,EACpB,GAAGG,CACL,EACA,GAAIG,GAAW,CAAE,OAAQE,EAAW,MAAO,EAC3C,GAAIN,IAAW,OAAS,CAAE,KAAMK,CAAS,CAC3C,CAAC,EACD,SAAO,EAAAG,SAAoBD,CAAI,CACjC,EAEA,IAAOb,EAAQG",
|
|
6
|
-
"names": ["fetcher_exports", "__export", "fetcher_default", "__toCommonJS", "import_fetchResponse", "fetcher", "locale", "url", "method", "headers", "body", "type", "timeout", "bodyData", "controller", "data", "handleFetchResponse"]
|
|
7
|
-
}
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
"use strict";var f=Object.defineProperty;var x=Object.getOwnPropertyDescriptor;var c=Object.getOwnPropertyNames;var a=Object.prototype.hasOwnProperty;var b=(r,o)=>{for(var e in o)f(r,e,{get:o[e],enumerable:!0})},d=(r,o,e,m)=>{if(o&&typeof o=="object"||typeof o=="function")for(let p of c(o))!a.call(r,p)&&p!==e&&f(r,p,{get:()=>o[p],enumerable:!(m=x(o,p))||m.enumerable});return r};var g=r=>d(f({},"__esModule",{value:!0}),r);var h={};b(h,{cn:()=>n.cn,noop:()=>t.noop});module.exports=g(h);var n=require("./utils.js"),t=require("./utils.js");
|
|
2
|
-
//# sourceMappingURL=index.js.map
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../../src/helpers/index.ts"],
|
|
4
|
-
"sourcesContent": ["export { cn } from './utils.js'\nexport { noop } from './utils.js'\n"],
|
|
5
|
-
"mappings": "yaAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,8CAAAE,EAAAF,GAAA,IAAAG,EAAmB,sBACnBA,EAAqB",
|
|
6
|
-
"names": ["helpers_exports", "__export", "__toCommonJS", "import_utils"]
|
|
7
|
-
}
|