@anker-in/campaign-ui 0.5.13 → 0.5.15

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (246) hide show
  1. package/dist/cjs/components/credits/context/provider.d.ts +1 -1
  2. package/dist/cjs/components/credits/context/provider.js.map +1 -1
  3. package/dist/cjs/components/credits/modal/ActivitiesModal.js +2 -0
  4. package/dist/cjs/components/credits/modal/ActivitiesModal.js.map +7 -0
  5. package/dist/cjs/components/credits/modal/RewardsModal.js +1 -1
  6. package/dist/cjs/components/credits/modal/RewardsModal.js.map +2 -2
  7. package/dist/cjs/templates/Credits.types.d.ts +1 -1
  8. package/dist/cjs/templates/Credits.types.js.map +1 -1
  9. package/dist/esm/components/credits/context/provider.d.ts +1 -1
  10. package/dist/esm/components/credits/context/provider.js.map +1 -1
  11. package/dist/esm/components/credits/modal/ActivitiesModal.js +2 -0
  12. package/dist/esm/components/credits/modal/ActivitiesModal.js.map +7 -0
  13. package/dist/esm/components/credits/modal/RewardsModal.js +1 -1
  14. package/dist/esm/components/credits/modal/RewardsModal.js.map +2 -2
  15. package/dist/esm/templates/Credits.types.d.ts +1 -1
  16. package/dist/esm/templates/Credits.types.js.map +1 -1
  17. package/package.json +19 -19
  18. package/src/components/credits/modal/ActivitiesModal.tsx +59 -66
  19. package/src/components/credits/modal/RewardsModal.tsx +1 -1
  20. package/src/templates/Credits.types.ts +1 -1
  21. package/dist/cjs/components/credits/context/hooks/useSendEmailValidation.d.ts +0 -1
  22. package/dist/cjs/components/credits/context/hooks/useSendEmailValidation.js +0 -2
  23. package/dist/cjs/components/credits/context/hooks/useSendEmailValidation.js.map +0 -7
  24. package/dist/cjs/components/credits/context/hooks/useSubscriptions.d.ts +0 -5
  25. package/dist/cjs/components/credits/context/hooks/useSubscriptions.js +0 -2
  26. package/dist/cjs/components/credits/context/hooks/useSubscriptions.js.map +0 -7
  27. package/dist/cjs/components/credits/modal/MyRewardsModal.d.ts +0 -32
  28. package/dist/cjs/components/credits/modal/MyRewardsModal.js +0 -2
  29. package/dist/cjs/components/credits/modal/MyRewardsModal.js.map +0 -7
  30. package/dist/cjs/components/credits/modal/activitiesModal.js +0 -2
  31. package/dist/cjs/components/credits/modal/activitiesModal.js.map +0 -7
  32. package/dist/cjs/helpers/fetchResponse.d.ts +0 -14
  33. package/dist/cjs/helpers/fetchResponse.js +0 -2
  34. package/dist/cjs/helpers/fetchResponse.js.map +0 -7
  35. package/dist/cjs/helpers/fetcher.d.ts +0 -2
  36. package/dist/cjs/helpers/fetcher.js +0 -2
  37. package/dist/cjs/helpers/fetcher.js.map +0 -7
  38. package/dist/cjs/helpers/index.d.ts +0 -2
  39. package/dist/cjs/helpers/index.js +0 -2
  40. package/dist/cjs/helpers/index.js.map +0 -7
  41. package/dist/cjs/helpers/track.d.ts +0 -15
  42. package/dist/cjs/helpers/track.js +0 -2
  43. package/dist/cjs/helpers/track.js.map +0 -7
  44. package/dist/cjs/helpers/utils.d.ts +0 -3
  45. package/dist/cjs/helpers/utils.js +0 -2
  46. package/dist/cjs/helpers/utils.js.map +0 -7
  47. package/dist/cjs/index.css +0 -2
  48. package/dist/cjs/index.css.map +0 -7
  49. package/dist/cjs/shopify/context/ShopifyProvider.d.ts +0 -10
  50. package/dist/cjs/shopify/fetchers/create-cart.d.ts +0 -13
  51. package/dist/cjs/shopify/fetchers/get-products-by-handles.d.ts +0 -7
  52. package/dist/cjs/shopify/fetchers/index.d.ts +0 -2
  53. package/dist/cjs/shopify/fragments/article.d.ts +0 -2
  54. package/dist/cjs/shopify/fragments/blog.d.ts +0 -1
  55. package/dist/cjs/shopify/fragments/cart.d.ts +0 -1
  56. package/dist/cjs/shopify/fragments/collection.d.ts +0 -1
  57. package/dist/cjs/shopify/fragments/image.d.ts +0 -1
  58. package/dist/cjs/shopify/fragments/index.d.ts +0 -11
  59. package/dist/cjs/shopify/fragments/metafields.d.ts +0 -2
  60. package/dist/cjs/shopify/fragments/page-info.d.ts +0 -1
  61. package/dist/cjs/shopify/fragments/page.d.ts +0 -1
  62. package/dist/cjs/shopify/fragments/product.d.ts +0 -1
  63. package/dist/cjs/shopify/fragments/seo.d.ts +0 -1
  64. package/dist/cjs/shopify/fragments/variant.d.ts +0 -1
  65. package/dist/cjs/shopify/gql/fragment-masking.d.ts +0 -15
  66. package/dist/cjs/shopify/gql/gql.d.ts +0 -87
  67. package/dist/cjs/shopify/gql/graphql.d.ts +0 -7669
  68. package/dist/cjs/shopify/gql/index.d.ts +0 -3
  69. package/dist/cjs/shopify/hooks/index.d.ts +0 -2
  70. package/dist/cjs/shopify/hooks/useCreateCart.d.ts +0 -2
  71. package/dist/cjs/shopify/hooks/useProductsByHandles.d.ts +0 -4
  72. package/dist/cjs/shopify/mutations/create-cart.d.ts +0 -1
  73. package/dist/cjs/shopify/queries/get-product-by-handles.d.ts +0 -1
  74. package/dist/cjs/shopify/queries/index.d.ts +0 -1
  75. package/dist/cjs/shopify/src/index.d.ts +0 -5
  76. package/dist/cjs/shopify/tsup.config.d.ts +0 -2
  77. package/dist/cjs/shopify/types/article.d.ts +0 -48
  78. package/dist/cjs/shopify/types/cart.d.ts +0 -173
  79. package/dist/cjs/shopify/types/checkout.d.ts +0 -42
  80. package/dist/cjs/shopify/types/collection.d.ts +0 -122
  81. package/dist/cjs/shopify/types/common.d.ts +0 -42
  82. package/dist/cjs/shopify/types/config.d.ts +0 -12
  83. package/dist/cjs/shopify/types/customer.d.ts +0 -30
  84. package/dist/cjs/shopify/types/fetcher.d.ts +0 -38
  85. package/dist/cjs/shopify/types/index.d.ts +0 -10
  86. package/dist/cjs/shopify/types/page.d.ts +0 -33
  87. package/dist/cjs/shopify/types/product.d.ts +0 -174
  88. package/dist/cjs/shopify/types/search.d.ts +0 -54
  89. package/dist/cjs/shopify/types/site.d.ts +0 -33
  90. package/dist/cjs/shopify/types/type-helper.d.ts +0 -5
  91. package/dist/cjs/shopify/utils/colors.d.ts +0 -3
  92. package/dist/cjs/shopify/utils/const.d.ts +0 -76
  93. package/dist/cjs/shopify/utils/cookie.d.ts +0 -15
  94. package/dist/cjs/shopify/utils/errors.d.ts +0 -38
  95. package/dist/cjs/shopify/utils/fetch-graphql-api.d.ts +0 -19
  96. package/dist/cjs/shopify/utils/handle-fetch-response.d.ts +0 -5
  97. package/dist/cjs/shopify/utils/helper.d.ts +0 -28
  98. package/dist/cjs/shopify/utils/normalize/cart.d.ts +0 -7
  99. package/dist/cjs/shopify/utils/normalize/customer.d.ts +0 -3
  100. package/dist/cjs/shopify/utils/normalize/index.d.ts +0 -2
  101. package/dist/cjs/shopify/utils/normalize/metafield.d.ts +0 -5
  102. package/dist/cjs/shopify/utils/normalize/product.d.ts +0 -16
  103. package/dist/cjs/shopify/utils/store.d.ts +0 -2
  104. package/dist/cjs/shopify/utils/type-helper.d.ts +0 -5
  105. package/dist/cjs/tsconfig.tsbuildinfo +0 -1
  106. package/dist/esm/components/credits/context/hooks/useSendEmailValidation.d.ts +0 -1
  107. package/dist/esm/components/credits/context/hooks/useSendEmailValidation.js +0 -2
  108. package/dist/esm/components/credits/context/hooks/useSendEmailValidation.js.map +0 -7
  109. package/dist/esm/components/credits/context/hooks/useSubscriptions.d.ts +0 -5
  110. package/dist/esm/components/credits/context/hooks/useSubscriptions.js +0 -2
  111. package/dist/esm/components/credits/context/hooks/useSubscriptions.js.map +0 -7
  112. package/dist/esm/components/credits/modal/MyRewardsModal.d.ts +0 -32
  113. package/dist/esm/components/credits/modal/MyRewardsModal.js +0 -2
  114. package/dist/esm/components/credits/modal/MyRewardsModal.js.map +0 -7
  115. package/dist/esm/components/credits/modal/activitiesModal.js +0 -2
  116. package/dist/esm/components/credits/modal/activitiesModal.js.map +0 -7
  117. package/dist/esm/helpers/fetchResponse.d.ts +0 -14
  118. package/dist/esm/helpers/fetchResponse.js +0 -2
  119. package/dist/esm/helpers/fetchResponse.js.map +0 -7
  120. package/dist/esm/helpers/fetcher.d.ts +0 -2
  121. package/dist/esm/helpers/fetcher.js +0 -2
  122. package/dist/esm/helpers/fetcher.js.map +0 -7
  123. package/dist/esm/helpers/index.d.ts +0 -2
  124. package/dist/esm/helpers/index.js +0 -2
  125. package/dist/esm/helpers/index.js.map +0 -7
  126. package/dist/esm/helpers/track.d.ts +0 -15
  127. package/dist/esm/helpers/track.js +0 -2
  128. package/dist/esm/helpers/track.js.map +0 -7
  129. package/dist/esm/helpers/utils.d.ts +0 -3
  130. package/dist/esm/helpers/utils.js +0 -2
  131. package/dist/esm/helpers/utils.js.map +0 -7
  132. package/dist/esm/index.css +0 -2
  133. package/dist/esm/index.css.map +0 -7
  134. package/dist/esm/shopify/context/ShopifyProvider.d.ts +0 -10
  135. package/dist/esm/shopify/fetchers/create-cart.d.ts +0 -13
  136. package/dist/esm/shopify/fetchers/get-products-by-handles.d.ts +0 -7
  137. package/dist/esm/shopify/fetchers/index.d.ts +0 -2
  138. package/dist/esm/shopify/fragments/article.d.ts +0 -2
  139. package/dist/esm/shopify/fragments/blog.d.ts +0 -1
  140. package/dist/esm/shopify/fragments/cart.d.ts +0 -1
  141. package/dist/esm/shopify/fragments/collection.d.ts +0 -1
  142. package/dist/esm/shopify/fragments/image.d.ts +0 -1
  143. package/dist/esm/shopify/fragments/index.d.ts +0 -11
  144. package/dist/esm/shopify/fragments/metafields.d.ts +0 -2
  145. package/dist/esm/shopify/fragments/page-info.d.ts +0 -1
  146. package/dist/esm/shopify/fragments/page.d.ts +0 -1
  147. package/dist/esm/shopify/fragments/product.d.ts +0 -1
  148. package/dist/esm/shopify/fragments/seo.d.ts +0 -1
  149. package/dist/esm/shopify/fragments/variant.d.ts +0 -1
  150. package/dist/esm/shopify/gql/fragment-masking.d.ts +0 -15
  151. package/dist/esm/shopify/gql/gql.d.ts +0 -87
  152. package/dist/esm/shopify/gql/graphql.d.ts +0 -7669
  153. package/dist/esm/shopify/gql/index.d.ts +0 -3
  154. package/dist/esm/shopify/hooks/index.d.ts +0 -2
  155. package/dist/esm/shopify/hooks/useCreateCart.d.ts +0 -2
  156. package/dist/esm/shopify/hooks/useProductsByHandles.d.ts +0 -4
  157. package/dist/esm/shopify/mutations/create-cart.d.ts +0 -1
  158. package/dist/esm/shopify/queries/get-product-by-handles.d.ts +0 -1
  159. package/dist/esm/shopify/queries/index.d.ts +0 -1
  160. package/dist/esm/shopify/src/index.d.ts +0 -5
  161. package/dist/esm/shopify/tsup.config.d.ts +0 -2
  162. package/dist/esm/shopify/types/article.d.ts +0 -48
  163. package/dist/esm/shopify/types/cart.d.ts +0 -173
  164. package/dist/esm/shopify/types/checkout.d.ts +0 -42
  165. package/dist/esm/shopify/types/collection.d.ts +0 -122
  166. package/dist/esm/shopify/types/common.d.ts +0 -42
  167. package/dist/esm/shopify/types/config.d.ts +0 -12
  168. package/dist/esm/shopify/types/customer.d.ts +0 -30
  169. package/dist/esm/shopify/types/fetcher.d.ts +0 -38
  170. package/dist/esm/shopify/types/index.d.ts +0 -10
  171. package/dist/esm/shopify/types/page.d.ts +0 -33
  172. package/dist/esm/shopify/types/product.d.ts +0 -174
  173. package/dist/esm/shopify/types/search.d.ts +0 -54
  174. package/dist/esm/shopify/types/site.d.ts +0 -33
  175. package/dist/esm/shopify/types/type-helper.d.ts +0 -5
  176. package/dist/esm/shopify/utils/colors.d.ts +0 -3
  177. package/dist/esm/shopify/utils/const.d.ts +0 -76
  178. package/dist/esm/shopify/utils/cookie.d.ts +0 -15
  179. package/dist/esm/shopify/utils/errors.d.ts +0 -38
  180. package/dist/esm/shopify/utils/fetch-graphql-api.d.ts +0 -19
  181. package/dist/esm/shopify/utils/handle-fetch-response.d.ts +0 -5
  182. package/dist/esm/shopify/utils/helper.d.ts +0 -28
  183. package/dist/esm/shopify/utils/normalize/cart.d.ts +0 -7
  184. package/dist/esm/shopify/utils/normalize/customer.d.ts +0 -3
  185. package/dist/esm/shopify/utils/normalize/index.d.ts +0 -2
  186. package/dist/esm/shopify/utils/normalize/metafield.d.ts +0 -5
  187. package/dist/esm/shopify/utils/normalize/product.d.ts +0 -16
  188. package/dist/esm/shopify/utils/store.d.ts +0 -2
  189. package/dist/esm/shopify/utils/type-helper.d.ts +0 -5
  190. package/dist/esm/tsconfig.tsbuildinfo +0 -1
  191. /package/dist/cjs/components/credits/creditsBenefits/{benefitItem.d.ts → BenefitItem.d.ts} +0 -0
  192. /package/dist/cjs/components/credits/creditsBenefits/{benefitItem.js → BenefitItem.js} +0 -0
  193. /package/dist/cjs/components/credits/creditsBenefits/{benefitItem.js.map → BenefitItem.js.map} +0 -0
  194. /package/dist/cjs/components/credits/creditsBenefits/{iconInfo.d.ts → IconInfo.d.ts} +0 -0
  195. /package/dist/cjs/components/credits/creditsBenefits/{iconInfo.js → IconInfo.js} +0 -0
  196. /package/dist/cjs/components/credits/creditsBenefits/{iconInfo.js.map → IconInfo.js.map} +0 -0
  197. /package/dist/cjs/components/credits/modal/{activitiesModal.d.ts → ActivitiesModal.d.ts} +0 -0
  198. /package/dist/cjs/components/credits/modal/{creditsUploadReceiptModal.d.ts → CreditsUploadReceiptModal.d.ts} +0 -0
  199. /package/dist/cjs/components/credits/modal/{creditsUploadReceiptModal.js → CreditsUploadReceiptModal.js} +0 -0
  200. /package/dist/cjs/components/credits/modal/{creditsUploadReceiptModal.js.map → CreditsUploadReceiptModal.js.map} +0 -0
  201. /package/dist/cjs/components/credits/modal/{loadingDots.d.ts → LoadingDots.d.ts} +0 -0
  202. /package/dist/cjs/components/credits/modal/{loadingDots.js → LoadingDots.js} +0 -0
  203. /package/dist/cjs/components/credits/modal/{loadingDots.js.map → LoadingDots.js.map} +0 -0
  204. /package/dist/cjs/components/credits/modal/{modalContainer.d.ts → ModalContainer.d.ts} +0 -0
  205. /package/dist/cjs/components/credits/modal/{modalContainer.js → ModalContainer.js} +0 -0
  206. /package/dist/cjs/components/credits/modal/{modalContainer.js.map → ModalContainer.js.map} +0 -0
  207. /package/dist/cjs/components/credits/modal/{rulesModal.d.ts → RulesModal.d.ts} +0 -0
  208. /package/dist/cjs/components/credits/modal/{rulesModal.js → RulesModal.js} +0 -0
  209. /package/dist/cjs/components/credits/modal/{rulesModal.js.map → RulesModal.js.map} +0 -0
  210. /package/dist/cjs/components/credits/modal/{subscribeModal.d.ts → SubscribeModal.d.ts} +0 -0
  211. /package/dist/cjs/components/credits/modal/{subscribeModal.js → SubscribeModal.js} +0 -0
  212. /package/dist/cjs/components/credits/modal/{subscribeModal.js.map → SubscribeModal.js.map} +0 -0
  213. /package/dist/cjs/components/credits/modal/{tip.d.ts → Tip.d.ts} +0 -0
  214. /package/dist/cjs/components/credits/modal/{tip.js → Tip.js} +0 -0
  215. /package/dist/cjs/components/credits/modal/{tip.js.map → Tip.js.map} +0 -0
  216. /package/dist/cjs/templates/{credits.d.ts → Credits.d.ts} +0 -0
  217. /package/dist/cjs/templates/{credits.js → Credits.js} +0 -0
  218. /package/dist/cjs/templates/{credits.js.map → Credits.js.map} +0 -0
  219. /package/dist/esm/components/credits/creditsBenefits/{benefitItem.d.ts → BenefitItem.d.ts} +0 -0
  220. /package/dist/esm/components/credits/creditsBenefits/{benefitItem.js → BenefitItem.js} +0 -0
  221. /package/dist/esm/components/credits/creditsBenefits/{benefitItem.js.map → BenefitItem.js.map} +0 -0
  222. /package/dist/esm/components/credits/creditsBenefits/{iconInfo.d.ts → IconInfo.d.ts} +0 -0
  223. /package/dist/esm/components/credits/creditsBenefits/{iconInfo.js → IconInfo.js} +0 -0
  224. /package/dist/esm/components/credits/creditsBenefits/{iconInfo.js.map → IconInfo.js.map} +0 -0
  225. /package/dist/esm/components/credits/modal/{activitiesModal.d.ts → ActivitiesModal.d.ts} +0 -0
  226. /package/dist/esm/components/credits/modal/{creditsUploadReceiptModal.d.ts → CreditsUploadReceiptModal.d.ts} +0 -0
  227. /package/dist/esm/components/credits/modal/{creditsUploadReceiptModal.js → CreditsUploadReceiptModal.js} +0 -0
  228. /package/dist/esm/components/credits/modal/{creditsUploadReceiptModal.js.map → CreditsUploadReceiptModal.js.map} +0 -0
  229. /package/dist/esm/components/credits/modal/{loadingDots.d.ts → LoadingDots.d.ts} +0 -0
  230. /package/dist/esm/components/credits/modal/{loadingDots.js → LoadingDots.js} +0 -0
  231. /package/dist/esm/components/credits/modal/{loadingDots.js.map → LoadingDots.js.map} +0 -0
  232. /package/dist/esm/components/credits/modal/{modalContainer.d.ts → ModalContainer.d.ts} +0 -0
  233. /package/dist/esm/components/credits/modal/{modalContainer.js → ModalContainer.js} +0 -0
  234. /package/dist/esm/components/credits/modal/{modalContainer.js.map → ModalContainer.js.map} +0 -0
  235. /package/dist/esm/components/credits/modal/{rulesModal.d.ts → RulesModal.d.ts} +0 -0
  236. /package/dist/esm/components/credits/modal/{rulesModal.js → RulesModal.js} +0 -0
  237. /package/dist/esm/components/credits/modal/{rulesModal.js.map → RulesModal.js.map} +0 -0
  238. /package/dist/esm/components/credits/modal/{subscribeModal.d.ts → SubscribeModal.d.ts} +0 -0
  239. /package/dist/esm/components/credits/modal/{subscribeModal.js → SubscribeModal.js} +0 -0
  240. /package/dist/esm/components/credits/modal/{subscribeModal.js.map → SubscribeModal.js.map} +0 -0
  241. /package/dist/esm/components/credits/modal/{tip.d.ts → Tip.d.ts} +0 -0
  242. /package/dist/esm/components/credits/modal/{tip.js → Tip.js} +0 -0
  243. /package/dist/esm/components/credits/modal/{tip.js.map → Tip.js.map} +0 -0
  244. /package/dist/esm/templates/{credits.d.ts → Credits.d.ts} +0 -0
  245. /package/dist/esm/templates/{credits.js → Credits.js} +0 -0
  246. /package/dist/esm/templates/{credits.js.map → Credits.js.map} +0 -0
@@ -8,7 +8,7 @@ type Context = {
8
8
  isLoadingProfile: boolean;
9
9
  removeProfile: () => void;
10
10
  taskIdToTypeMapping: Record<string, DTC_TASK_TYPE>;
11
- taskNameMapping: Record<string, string>;
11
+ taskNameMapping?: Record<string, string>;
12
12
  openSignInPopup: () => void;
13
13
  openSignUpPopup: () => void;
14
14
  creditInfo?: CreditInfoResponse;
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../../src/components/credits/context/provider.tsx"],
4
- "sourcesContent": ["import { createContext, PropsWithChildren, useContext, useState } from 'react'\nimport type { DTC_TASK_TYPE } from './const'\nimport type { CreditInfoResponse } from './response'\nimport { CreditsPageCommon } from '../type'\nimport { FunctionMemberPriceConfig } from './memberPriceTypes'\n\ntype Context = {\n profile: any\n isLoadingProfile: boolean\n removeProfile: () => void\n taskIdToTypeMapping: Record<string, DTC_TASK_TYPE>\n taskNameMapping: Record<string, string>\n openSignInPopup: () => void\n openSignUpPopup: () => void\n creditInfo?: CreditInfoResponse\n customer?: any\n customerLoading: boolean\n fetchCreditInfo: (user_id: string) => void\n gtm: {\n pageGroup: string\n pageHandle?: string\n }\n pageCommon: CreditsPageCommon\n memberPriceDiscount?: FunctionMemberPriceConfig[]\n alpcBrand?: string\n alpcCountry?: string\n cartConfig?: {\n addToCart: (params: {\n variantList: Array<{\n variant: any\n quantity: number\n attributes?: Array<{ key: string; value: string }>\n }>\n cartAttributes?: Record<string, string>\n discountCodes?: string[]\n }) => void | Promise<any>\n }\n openMyRewardsModal: boolean\n setOpenMyRewardsModal: (open: boolean) => void\n openActivitiesModal: boolean\n setOpenActivitiesModal: (open: boolean) => void\n apiBaseUrl?: string\n}\n\nexport const CreditsContext = createContext<Context>({\n profile: null,\n isLoadingProfile: false,\n taskIdToTypeMapping: {},\n taskNameMapping: {},\n removeProfile: () => {},\n openSignInPopup: () => {},\n openSignUpPopup: () => {},\n creditInfo: undefined,\n customerLoading: false,\n fetchCreditInfo: (user_id: string) => {},\n gtm: {\n pageGroup: '',\n pageHandle: '',\n },\n pageCommon: {},\n memberPriceDiscount: undefined,\n alpcBrand: undefined,\n alpcCountry: undefined,\n cartConfig: undefined,\n openMyRewardsModal: false,\n setOpenMyRewardsModal: () => {},\n openActivitiesModal: false,\n setOpenActivitiesModal: () => {},\n apiBaseUrl: undefined,\n})\n\nexport function CreditsProvider({\n children,\n profile,\n removeProfile,\n isLoadingProfile,\n openSignInPopup,\n openSignUpPopup,\n taskIdToTypeMapping,\n taskNameMapping,\n creditInfo,\n customer,\n customerLoading,\n fetchCreditInfo,\n gtm,\n pageCommon,\n memberPriceDiscount,\n alpcBrand,\n alpcCountry,\n cartConfig,\n apiBaseUrl,\n}: PropsWithChildren<Omit<Context, 'openMyRewardsModal' | 'setOpenMyRewardsModal' | 'openActivitiesModal' | 'setOpenActivitiesModal'>>) {\n const [openMyRewardsModal, setOpenMyRewardsModal] = useState(false)\n const [openActivitiesModal, setOpenActivitiesModal] = useState(false)\n\n return (\n <CreditsContext.Provider\n value={{\n profile,\n isLoadingProfile,\n removeProfile,\n openSignInPopup,\n openSignUpPopup,\n taskIdToTypeMapping,\n taskNameMapping,\n creditInfo,\n fetchCreditInfo,\n customer,\n customerLoading,\n gtm,\n pageCommon,\n memberPriceDiscount,\n alpcBrand,\n alpcCountry,\n cartConfig,\n apiBaseUrl,\n openMyRewardsModal,\n setOpenMyRewardsModal,\n openActivitiesModal,\n setOpenActivitiesModal,\n }}\n >\n {children}\n </CreditsContext.Provider>\n )\n}\n\nexport function useCreditsContext() {\n const context = useContext(CreditsContext)\n if (!context) {\n throw new Error('useCreditsContext must be used within a CreditsProvider')\n }\n return context\n}\n"],
4
+ "sourcesContent": ["import { createContext, PropsWithChildren, useContext, useState } from 'react'\nimport type { DTC_TASK_TYPE } from './const'\nimport type { CreditInfoResponse } from './response'\nimport { CreditsPageCommon } from '../type'\nimport { FunctionMemberPriceConfig } from './memberPriceTypes'\n\ntype Context = {\n profile: any\n isLoadingProfile: boolean\n removeProfile: () => void\n taskIdToTypeMapping: Record<string, DTC_TASK_TYPE>\n taskNameMapping?: Record<string, string>\n openSignInPopup: () => void\n openSignUpPopup: () => void\n creditInfo?: CreditInfoResponse\n customer?: any\n customerLoading: boolean\n fetchCreditInfo: (user_id: string) => void\n gtm: {\n pageGroup: string\n pageHandle?: string\n }\n pageCommon: CreditsPageCommon\n memberPriceDiscount?: FunctionMemberPriceConfig[]\n alpcBrand?: string\n alpcCountry?: string\n cartConfig?: {\n addToCart: (params: {\n variantList: Array<{\n variant: any\n quantity: number\n attributes?: Array<{ key: string; value: string }>\n }>\n cartAttributes?: Record<string, string>\n discountCodes?: string[]\n }) => void | Promise<any>\n }\n openMyRewardsModal: boolean\n setOpenMyRewardsModal: (open: boolean) => void\n openActivitiesModal: boolean\n setOpenActivitiesModal: (open: boolean) => void\n apiBaseUrl?: string\n}\n\nexport const CreditsContext = createContext<Context>({\n profile: null,\n isLoadingProfile: false,\n taskIdToTypeMapping: {},\n taskNameMapping: {},\n removeProfile: () => {},\n openSignInPopup: () => {},\n openSignUpPopup: () => {},\n creditInfo: undefined,\n customerLoading: false,\n fetchCreditInfo: (user_id: string) => {},\n gtm: {\n pageGroup: '',\n pageHandle: '',\n },\n pageCommon: {},\n memberPriceDiscount: undefined,\n alpcBrand: undefined,\n alpcCountry: undefined,\n cartConfig: undefined,\n openMyRewardsModal: false,\n setOpenMyRewardsModal: () => {},\n openActivitiesModal: false,\n setOpenActivitiesModal: () => {},\n apiBaseUrl: undefined,\n})\n\nexport function CreditsProvider({\n children,\n profile,\n removeProfile,\n isLoadingProfile,\n openSignInPopup,\n openSignUpPopup,\n taskIdToTypeMapping,\n taskNameMapping,\n creditInfo,\n customer,\n customerLoading,\n fetchCreditInfo,\n gtm,\n pageCommon,\n memberPriceDiscount,\n alpcBrand,\n alpcCountry,\n cartConfig,\n apiBaseUrl,\n}: PropsWithChildren<Omit<Context, 'openMyRewardsModal' | 'setOpenMyRewardsModal' | 'openActivitiesModal' | 'setOpenActivitiesModal'>>) {\n const [openMyRewardsModal, setOpenMyRewardsModal] = useState(false)\n const [openActivitiesModal, setOpenActivitiesModal] = useState(false)\n\n return (\n <CreditsContext.Provider\n value={{\n profile,\n isLoadingProfile,\n removeProfile,\n openSignInPopup,\n openSignUpPopup,\n taskIdToTypeMapping,\n taskNameMapping,\n creditInfo,\n fetchCreditInfo,\n customer,\n customerLoading,\n gtm,\n pageCommon,\n memberPriceDiscount,\n alpcBrand,\n alpcCountry,\n cartConfig,\n apiBaseUrl,\n openMyRewardsModal,\n setOpenMyRewardsModal,\n openActivitiesModal,\n setOpenActivitiesModal,\n }}\n >\n {children}\n </CreditsContext.Provider>\n )\n}\n\nexport function useCreditsContext() {\n const context = useContext(CreditsContext)\n if (!context) {\n throw new Error('useCreditsContext must be used within a CreditsProvider')\n }\n return context\n}\n"],
5
5
  "mappings": "yaAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,oBAAAE,EAAA,oBAAAC,EAAA,sBAAAC,IAAA,eAAAC,EAAAL,GAgGI,IAAAM,EAAA,6BAhGJC,EAAuE,iBA4ChE,MAAML,KAAiB,iBAAuB,CACnD,QAAS,KACT,iBAAkB,GAClB,oBAAqB,CAAC,EACtB,gBAAiB,CAAC,EAClB,cAAe,IAAM,CAAC,EACtB,gBAAiB,IAAM,CAAC,EACxB,gBAAiB,IAAM,CAAC,EACxB,WAAY,OACZ,gBAAiB,GACjB,gBAAkBM,GAAoB,CAAC,EACvC,IAAK,CACH,UAAW,GACX,WAAY,EACd,EACA,WAAY,CAAC,EACb,oBAAqB,OACrB,UAAW,OACX,YAAa,OACb,WAAY,OACZ,mBAAoB,GACpB,sBAAuB,IAAM,CAAC,EAC9B,oBAAqB,GACrB,uBAAwB,IAAM,CAAC,EAC/B,WAAY,MACd,CAAC,EAEM,SAASL,EAAgB,CAC9B,SAAAM,EACA,QAAAC,EACA,cAAAC,EACA,iBAAAC,EACA,gBAAAC,EACA,gBAAAC,EACA,oBAAAC,EACA,gBAAAC,EACA,WAAAC,EACA,SAAAC,EACA,gBAAAC,EACA,gBAAAC,EACA,IAAAC,EACA,WAAAC,EACA,oBAAAC,EACA,UAAAC,EACA,YAAAC,EACA,WAAAC,EACA,WAAAC,CACF,EAAwI,CACtI,KAAM,CAACC,EAAoBC,CAAqB,KAAI,YAAS,EAAK,EAC5D,CAACC,EAAqBC,CAAsB,KAAI,YAAS,EAAK,EAEpE,SACE,OAAC7B,EAAe,SAAf,CACC,MAAO,CACL,QAAAQ,EACA,iBAAAE,EACA,cAAAD,EACA,gBAAAE,EACA,gBAAAC,EACA,oBAAAC,EACA,gBAAAC,EACA,WAAAC,EACA,gBAAAG,EACA,SAAAF,EACA,gBAAAC,EACA,IAAAE,EACA,WAAAC,EACA,oBAAAC,EACA,UAAAC,EACA,YAAAC,EACA,WAAAC,EACA,WAAAC,EACA,mBAAAC,EACA,sBAAAC,EACA,oBAAAC,EACA,uBAAAC,CACF,EAEC,SAAAtB,EACH,CAEJ,CAEO,SAASL,GAAoB,CAClC,MAAM4B,KAAU,cAAW9B,CAAc,EACzC,GAAI,CAAC8B,EACH,MAAM,IAAI,MAAM,yDAAyD,EAE3E,OAAOA,CACT",
6
6
  "names": ["provider_exports", "__export", "CreditsContext", "CreditsProvider", "useCreditsContext", "__toCommonJS", "import_jsx_runtime", "import_react", "user_id", "children", "profile", "removeProfile", "isLoadingProfile", "openSignInPopup", "openSignUpPopup", "taskIdToTypeMapping", "taskNameMapping", "creditInfo", "customer", "customerLoading", "fetchCreditInfo", "gtm", "pageCommon", "memberPriceDiscount", "alpcBrand", "alpcCountry", "cartConfig", "apiBaseUrl", "openMyRewardsModal", "setOpenMyRewardsModal", "openActivitiesModal", "setOpenActivitiesModal", "context"]
7
7
  }
@@ -0,0 +1,2 @@
1
+ "use strict";var B=Object.create;var y=Object.defineProperty;var z=Object.getOwnPropertyDescriptor;var I=Object.getOwnPropertyNames;var O=Object.getPrototypeOf,V=Object.prototype.hasOwnProperty;var j=(e,n)=>{for(var r in n)y(e,r,{get:n[r],enumerable:!0})},M=(e,n,r,g)=>{if(n&&typeof n=="object"||typeof n=="function")for(let l of I(n))!V.call(e,l)&&l!==r&&y(e,l,{get:()=>n[l],enumerable:!(g=z(n,l))||g.enumerable});return e};var k=(e,n,r)=>(r=e!=null?B(O(e)):{},M(n||!e||!e.__esModule?y(r,"default",{value:e,enumerable:!0}):r,e)),F=e=>M(y({},"__esModule",{value:!0}),e);var K={};j(K,{default:()=>q});module.exports=F(K);var t=require("react/jsx-runtime"),o=require("react"),C=require("../context/provider"),s=require("../context/const"),P=k(require("../context/hooks/useActivities")),S=require("./ModalContainer"),c=require("@anker-in/lib"),d=require("@anker-in/headless-ui"),D=k(require("./LoadingDots")),f=require("@anker-in/headless-ui"),L=require("../../../constants"),v=k(require("dayjs"));function H({data:e,...n}){const[r,g]=(0,o.useState)(1),{taskIdToTypeMapping:l,taskNameMapping:b}=(0,C.useCreditsContext)(),{brand:U}=(0,c.useHeadlessContext)(),N=L.ROUNDED_BRANDS.includes(U),R=(0,o.useMemo)(()=>({page:n.isOpen?r:0,pageSize:1e3}),[n.isOpen,r]),x=(0,o.useMemo)(()=>{const i=[{title:e.allTab,type:s.CreditType.All},{title:e.earnedTab,type:s.CreditType.Earned},{title:e.deductedTab,type:s.CreditType.Deducted}];return e.expiredTab&&i.push({title:e.expiredTab,type:s.CreditType.Expired}),i},[e]),{activities:h=[],canNext:_,isLoading:A}=(0,P.default)(R),u=(0,o.useMemo)(()=>{const i={[s.TaskSubType.Activation]:e.activationTask,[s.TaskSubType.UpdateName]:e.updateNameTask,[s.TaskSubType.UpdatePhone]:e.updatePhoneTask,[s.TaskSubType.UpdateBirthday]:e.updateBirthdayTask,[s.TaskSubType.Subscription]:e.subscriptionTask,[s.TaskSubType.UpadteAppName]:e.updateAppNameTask,[s.TaskSubType.Refund]:e.refundTask,[s.TaskSubType.ProductUnApproved]:e.productUnApprovedTask},p={[s.DTC_TASK_TYPE.FirstPurchase]:e.firstPurchaseTask,[s.DTC_TASK_TYPE.UploadReceipt]:e.uploadReceiptTask,[s.DTC_TASK_TYPE.Shopping]:e.shoppingTask};function T(a){return b?.[a.task_name]?b?.[a.task_name]:a.task_type===s.TaskType.Redeem&&a.task_sub_type===s.TaskSubType.ProductUnApproved&&e.productUnApprovedTask?a.task_name.replace("Refund",e.productUnApprovedTask):l?.[String(a.task_rule_id)]?p[l?.[String(a.task_rule_id)]]||a.task_name:i[a.task_sub_type]||a.task_name}return h.map(a=>({title:T(a),date:new Date(a.create_time*1e3),value:a.credit,type:a.credit_type,pending_time:a.pending_time,credit_type:a.credit_type,status:a.status}))},[e.activationTask,e.updateNameTask,e.updatePhoneTask,e.updateBirthdayTask,e.subscriptionTask,e.updateAppNameTask,e.refundTask,e.productUnApprovedTask,e.firstPurchaseTask,e.uploadReceiptTask,e.shoppingTask,h,l]),m=(0,o.useCallback)(i=>{let{value:p,...T}=i;return i.type===s.CreditType.Deducted&&p>0&&(p=-p),{value:p,...T}},[]),E=(0,o.useMemo)(()=>{const i=new Map;return i.set(s.CreditType.All,u.map(m)),i.set(s.CreditType.Earned,u.filter(p=>p.type===1).map(m)),i.set(s.CreditType.Deducted,u.filter(p=>p.type===2&&p.status!==3).map(m)),i.set(s.CreditType.Expired,u.filter(p=>p.type===2&&p.status===3).map(m)),i},[u,m]),Y=(0,o.useCallback)(()=>{_&&g(r+1)},[r,_]),w=i=>(0,t.jsxs)(t.Fragment,{children:[(0,t.jsxs)("div",{className:"grid gap-[18px] md:gap-[12px]",children:[A&&(0,t.jsx)("div",{className:"flex flex-1 flex-col items-center justify-center",children:(0,t.jsx)(D.default,{})}),!A&&(0,t.jsx)(t.Fragment,{children:i.length>0?i.map((p,T)=>(0,t.jsxs)("div",{className:(0,c.classNames)("flex h-fit items-center justify-between rounded-[8px] bg-[#f2f0f1] px-[16px] py-[20px] text-[16px]",!N&&"rounded-none"),children:[(0,t.jsxs)("div",{className:"grid gap-[6px]",children:[(0,t.jsx)("div",{className:"font-bold",children:p.title}),(0,t.jsx)("div",{className:"text-[14px] font-semibold text-[#999]",children:(0,v.default)(p.date).format("YYYY-MM-DD HH:mm").toString()}),!e.pendingTips&&(0,t.jsxs)("div",{className:`hidden text-[14px] font-semibold text-[#777] ${p.status===2&&p.credit_type===1?"!flex":""}`,children:[(0,t.jsx)(f.Text,{html:e.pendingTips}),(0,t.jsx)("span",{children:v.default.unix(p.pending_time).add(1,"day").format("YYYY-MM-DD")}),e.pendingTips2&&(0,t.jsx)(f.Text,{html:e.pendingTips2})]})]}),(0,t.jsxs)("div",{className:(0,c.classNames)("font-bold",p.value>=0||p.credit_type===s.CreditType.Expired?"text-[#52C41A]":"text-[#F84D4F]"),children:[p.value>=0&&"+",p.value]})]},T)):(0,t.jsxs)("div",{className:"flex flex-col items-center justify-center py-[40px]",children:[(0,t.jsx)(f.Picture,{className:"mb-[16px] h-[120px] w-[160px]",source:e?.emptyListImage?.url,alt:e?.emptyListImage?.alt||"empty list image"}),(0,t.jsx)("div",{className:"leading-1.4 text-[16px] font-semibold",children:e?.emptyListLabel})]})})]}),i.length>0&&(0,t.jsx)("div",{className:"mt-[12px] pb-[24px] text-[14px] font-semibold text-[#999]",children:e.tips})]});return(0,t.jsx)(S.CreditsModalContainer,{title:e.title,className:(0,c.classNames)("h-[800px] w-[640px]"),useAnimation:!0,animationClassName:"md:translate-y-[100vh]",scrollClassName:"flex flex-col",...n,onScrollEnd:Y,children:(0,t.jsxs)(d.Tabs,{align:"left",shape:N?"rounded":"square",defaultValue:x[0]?.type?.toString(),className:"flex-1 flex flex-col",children:[(0,t.jsx)("div",{className:"w-full sticky top-0 bg-white z-10 pb-[24px] overflow-x-auto",children:(0,t.jsx)(d.TabsList,{children:x.map(i=>(0,t.jsx)(d.TabsTrigger,{value:i.type.toString(),children:i.title},i.type))})}),x.map(i=>(0,t.jsx)(d.TabsContent,{value:i.type.toString(),className:"flex-1 flex flex-col",children:w(E.get(i.type)||[])},i.type))]})})}var q=H;
2
+ //# sourceMappingURL=ActivitiesModal.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../../src/components/credits/modal/ActivitiesModal.tsx"],
4
+ "sourcesContent": ["import { useCallback, useMemo, useState } from 'react'\nimport { useCreditsContext } from '../context/provider'\nimport { CreditType, DTC_TASK_TYPE, TaskSubType, TaskType } from '../context/const'\nimport useActivities from '../context/hooks/useActivities'\nimport type { Task } from '../context/response'\nimport { CreditsModalContainer, type ModalContainerProps } from './ModalContainer'\nimport { classNames as cn, useHeadlessContext } from '@anker-in/lib'\nimport { Tabs, TabsContent, TabsList, TabsTrigger } from '@anker-in/headless-ui'\nimport LoadingDots from './LoadingDots'\nimport { Picture, Text } from '@anker-in/headless-ui'\nimport { ROUNDED_BRANDS } from '../../../constants'\nimport dayjs from 'dayjs'\n\nexport interface MyActivitiesMetafields {\n title: string\n tips: string\n allTab: string\n earnedTab: string\n deductedTab: string\n expiredTab: string\n activationTask: string\n updateNameTask: string\n updatePhoneTask: string\n updateBirthdayTask: string\n updateAppNameTask: string\n subscriptionTask: string\n refundTask: string\n productUnApprovedTask: string\n pendingTips?: string\n pendingTips2?: string\n firstPurchaseTask: string\n uploadReceiptTask: string\n shoppingTask: string\n emptyListImage: {\n url: string\n alt?: string\n }\n emptyListLabel: string\n}\n\ninterface ActivitiesModalProps extends ModalContainerProps {\n data: MyActivitiesMetafields\n}\n\nfunction ActivitiesModal({ data, ...props }: ActivitiesModalProps) {\n const [page, setPage] = useState(1)\n const { taskIdToTypeMapping, taskNameMapping } = useCreditsContext()\n const { brand } = useHeadlessContext()\n const rounded = ROUNDED_BRANDS.includes(brand)\n\n const myActivitiesOptions = useMemo(() => {\n return {\n page: props.isOpen ? page : 0,\n pageSize: 1000,\n }\n }, [props.isOpen, page])\n\n const tabs = useMemo(() => {\n const tabs = [\n {\n title: data.allTab,\n type: CreditType.All,\n },\n {\n title: data.earnedTab,\n type: CreditType.Earned,\n },\n {\n title: data.deductedTab,\n type: CreditType.Deducted,\n },\n ]\n if (data.expiredTab) {\n tabs.push({\n title: data.expiredTab,\n type: CreditType.Expired,\n })\n }\n return tabs\n }, [data])\n\n const { activities = [], canNext, isLoading } = useActivities(myActivitiesOptions)\n\n const allList = useMemo(() => {\n const taskNameMap = {\n [TaskSubType.Activation]: data.activationTask,\n [TaskSubType.UpdateName]: data.updateNameTask,\n [TaskSubType.UpdatePhone]: data.updatePhoneTask,\n [TaskSubType.UpdateBirthday]: data.updateBirthdayTask,\n [TaskSubType.Subscription]: data.subscriptionTask,\n [TaskSubType.UpadteAppName]: data.updateAppNameTask,\n [TaskSubType.Refund]: data.refundTask,\n [TaskSubType.ProductUnApproved]: data.productUnApprovedTask,\n }\n const dtcTaskTypeToNameMap = {\n [DTC_TASK_TYPE.FirstPurchase]: data.firstPurchaseTask,\n [DTC_TASK_TYPE.UploadReceipt]: data.uploadReceiptTask,\n [DTC_TASK_TYPE.Shopping]: data.shoppingTask,\n }\n\n function getTitle(item: Task) {\n if (taskNameMapping?.[item.task_name]) {\n return taskNameMapping?.[item.task_name]\n }\n\n if (\n item.task_type === TaskType.Redeem &&\n item.task_sub_type === TaskSubType.ProductUnApproved &&\n data.productUnApprovedTask\n ) {\n // \u65B0\u589E\u7684\u90E8\u5206\u4EFB\u52A1\u90FD\u4F7F\u7528\u4E86 alpc \u540C\u4E00\u4E2A\u4EFB\u52A1\u7C7B\u578B\uFF0C\u9700\u8981\u7528\u4EFB\u52A1 id \u6765\u533A\u5206\n return item.task_name.replace('Refund', data.productUnApprovedTask)\n } else if (taskIdToTypeMapping?.[String(item.task_rule_id)]) {\n return dtcTaskTypeToNameMap[taskIdToTypeMapping?.[String(item.task_rule_id)]] || item.task_name\n } else {\n return taskNameMap[item.task_sub_type] || item.task_name\n }\n }\n\n return activities.map(item => ({\n title: getTitle(item),\n date: new Date(item.create_time * 1000),\n value: item.credit,\n type: item.credit_type,\n pending_time: item.pending_time,\n credit_type: item.credit_type,\n status: item.status,\n }))\n }, [\n data.activationTask,\n data.updateNameTask,\n data.updatePhoneTask,\n data.updateBirthdayTask,\n data.subscriptionTask,\n data.updateAppNameTask,\n data.refundTask,\n data.productUnApprovedTask,\n data.firstPurchaseTask,\n data.uploadReceiptTask,\n data.shoppingTask,\n activities,\n taskIdToTypeMapping,\n ])\n\n const normalizeValue = useCallback((item: (typeof allList)[number]) => {\n let { value, ...otherItem } = item\n if (item.type === CreditType.Deducted && value > 0) {\n value = -value\n }\n return { value, ...otherItem }\n }, [])\n\n // \u6309 tab \u7C7B\u578B\u9884\u8BA1\u7B97\u5217\u8868\uFF0C\u914D\u5408 TabsContent \u58F0\u660E\u5F0F\u6E32\u67D3\uFF0C\u907F\u514D\u624B\u52A8 activeTab \u6570\u503C\u6BD4\u8F83\n const listByTab = useMemo(() => {\n const map = new Map<CreditType, ReturnType<typeof normalizeValue>[]>()\n map.set(CreditType.All, allList.map(normalizeValue))\n map.set(CreditType.Earned, allList.filter(item => item.type === 1).map(normalizeValue))\n map.set(CreditType.Deducted, allList.filter(item => item.type === 2 && item.status !== 3).map(normalizeValue))\n map.set(CreditType.Expired, allList.filter(item => item.type === 2 && item.status === 3).map(normalizeValue))\n return map\n }, [allList, normalizeValue])\n\n const handleScrollEnd = useCallback(() => {\n if (!canNext) {\n return\n }\n setPage(page + 1)\n }, [page, canNext])\n\n const renderList = (list: ReturnType<typeof normalizeValue>[]) => (\n <>\n <div className=\"grid gap-[18px] md:gap-[12px]\">\n {isLoading && (\n <div className=\"flex flex-1 flex-col items-center justify-center\">\n <LoadingDots />\n </div>\n )}\n\n {!isLoading && (\n <>\n {list.length > 0 ? (\n list.map((item, index) => (\n <div\n key={index}\n className={cn(\n 'flex h-fit items-center justify-between rounded-[8px] bg-[#f2f0f1] px-[16px] py-[20px] text-[16px]',\n !rounded && 'rounded-none'\n )}\n >\n <div className=\"grid gap-[6px]\">\n <div className=\"font-bold\">{item.title}</div>\n <div className=\"text-[14px] font-semibold text-[#999]\">\n {dayjs(item.date).format('YYYY-MM-DD HH:mm').toString()}\n </div>\n {!data.pendingTips && (\n <div\n className={`hidden text-[14px] font-semibold text-[#777] ${item.status === 2 && item.credit_type === 1 ? '!flex' : ''}`}\n >\n <Text html={data.pendingTips} />\n <span>{dayjs.unix(item.pending_time).add(1, 'day').format('YYYY-MM-DD')}</span>\n {data.pendingTips2 && <Text html={data.pendingTips2} />}\n </div>\n )}\n </div>\n <div\n className={cn(\n 'font-bold',\n item.value >= 0 || item.credit_type === CreditType.Expired ? 'text-[#52C41A]' : 'text-[#F84D4F]'\n )}\n >\n {item.value >= 0 && '+'}\n {item.value}\n </div>\n </div>\n ))\n ) : (\n <div className=\"flex flex-col items-center justify-center py-[40px]\">\n <Picture\n className=\"mb-[16px] h-[120px] w-[160px]\"\n source={data?.emptyListImage?.url}\n alt={data?.emptyListImage?.alt || 'empty list image'}\n ></Picture>\n <div className=\"leading-1.4 text-[16px] font-semibold\">{data?.emptyListLabel}</div>\n </div>\n )}\n </>\n )}\n </div>\n {/* \u79EF\u5206\u5230\u8D26\u65F6\u95F4\u63D0\u9192 */}\n {list.length > 0 && <div className=\"mt-[12px] pb-[24px] text-[14px] font-semibold text-[#999]\">{data.tips}</div>}\n </>\n )\n\n return (\n <CreditsModalContainer\n title={data.title}\n className={cn('h-[800px] w-[640px]')}\n useAnimation\n animationClassName=\"md:translate-y-[100vh]\"\n scrollClassName=\"flex flex-col\"\n {...props}\n onScrollEnd={handleScrollEnd}\n >\n <Tabs\n align=\"left\"\n shape={rounded ? 'rounded' : 'square'}\n defaultValue={tabs[0]?.type?.toString()}\n className=\"flex-1 flex flex-col\"\n >\n <div className=\"w-full sticky top-0 bg-white z-10 pb-[24px] overflow-x-auto\">\n <TabsList>\n {tabs.map(tab => (\n <TabsTrigger key={tab.type} value={tab.type.toString()}>\n {tab.title}\n </TabsTrigger>\n ))}\n </TabsList>\n </div>\n\n {tabs.map(tab => (\n <TabsContent key={tab.type} value={tab.type.toString()} className=\"flex-1 flex flex-col\">\n {renderList(listByTab.get(tab.type) || [])}\n </TabsContent>\n ))}\n </Tabs>\n </CreditsModalContainer>\n )\n}\n\nexport default ActivitiesModal\n"],
5
+ "mappings": "0jBAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,aAAAE,IAAA,eAAAC,EAAAH,GA8KY,IAAAI,EAAA,6BA9KZC,EAA+C,iBAC/CC,EAAkC,+BAClCC,EAAiE,4BACjEC,EAA0B,6CAE1BC,EAAgE,4BAChEC,EAAqD,yBACrDC,EAAyD,iCACzDC,EAAwB,4BACxBD,EAA8B,iCAC9BE,EAA+B,8BAC/BC,EAAkB,oBAiClB,SAASC,EAAgB,CAAE,KAAAC,EAAM,GAAGC,CAAM,EAAyB,CACjE,KAAM,CAACC,EAAMC,CAAO,KAAI,YAAS,CAAC,EAC5B,CAAE,oBAAAC,EAAqB,gBAAAC,CAAgB,KAAI,qBAAkB,EAC7D,CAAE,MAAAC,CAAM,KAAI,sBAAmB,EAC/BC,EAAU,iBAAe,SAASD,CAAK,EAEvCE,KAAsB,WAAQ,KAC3B,CACL,KAAMP,EAAM,OAASC,EAAO,EAC5B,SAAU,GACZ,GACC,CAACD,EAAM,OAAQC,CAAI,CAAC,EAEjBO,KAAO,WAAQ,IAAM,CACzB,MAAMA,EAAO,CACX,CACE,MAAOT,EAAK,OACZ,KAAM,aAAW,GACnB,EACA,CACE,MAAOA,EAAK,UACZ,KAAM,aAAW,MACnB,EACA,CACE,MAAOA,EAAK,YACZ,KAAM,aAAW,QACnB,CACF,EACA,OAAIA,EAAK,YACPS,EAAK,KAAK,CACR,MAAOT,EAAK,WACZ,KAAM,aAAW,OACnB,CAAC,EAEIS,CACT,EAAG,CAACT,CAAI,CAAC,EAEH,CAAE,WAAAU,EAAa,CAAC,EAAG,QAAAC,EAAS,UAAAC,CAAU,KAAI,EAAAC,SAAcL,CAAmB,EAE3EM,KAAU,WAAQ,IAAM,CAC5B,MAAMC,EAAc,CAClB,CAAC,cAAY,UAAU,EAAGf,EAAK,eAC/B,CAAC,cAAY,UAAU,EAAGA,EAAK,eAC/B,CAAC,cAAY,WAAW,EAAGA,EAAK,gBAChC,CAAC,cAAY,cAAc,EAAGA,EAAK,mBACnC,CAAC,cAAY,YAAY,EAAGA,EAAK,iBACjC,CAAC,cAAY,aAAa,EAAGA,EAAK,kBAClC,CAAC,cAAY,MAAM,EAAGA,EAAK,WAC3B,CAAC,cAAY,iBAAiB,EAAGA,EAAK,qBACxC,EACMgB,EAAuB,CAC3B,CAAC,gBAAc,aAAa,EAAGhB,EAAK,kBACpC,CAAC,gBAAc,aAAa,EAAGA,EAAK,kBACpC,CAAC,gBAAc,QAAQ,EAAGA,EAAK,YACjC,EAEA,SAASiB,EAASC,EAAY,CAC5B,OAAIb,IAAkBa,EAAK,SAAS,EAC3Bb,IAAkBa,EAAK,SAAS,EAIvCA,EAAK,YAAc,WAAS,QAC5BA,EAAK,gBAAkB,cAAY,mBACnClB,EAAK,sBAGEkB,EAAK,UAAU,QAAQ,SAAUlB,EAAK,qBAAqB,EACzDI,IAAsB,OAAOc,EAAK,YAAY,CAAC,EACjDF,EAAqBZ,IAAsB,OAAOc,EAAK,YAAY,CAAC,CAAC,GAAKA,EAAK,UAE/EH,EAAYG,EAAK,aAAa,GAAKA,EAAK,SAEnD,CAEA,OAAOR,EAAW,IAAIQ,IAAS,CAC7B,MAAOD,EAASC,CAAI,EACpB,KAAM,IAAI,KAAKA,EAAK,YAAc,GAAI,EACtC,MAAOA,EAAK,OACZ,KAAMA,EAAK,YACX,aAAcA,EAAK,aACnB,YAAaA,EAAK,YAClB,OAAQA,EAAK,MACf,EAAE,CACJ,EAAG,CACDlB,EAAK,eACLA,EAAK,eACLA,EAAK,gBACLA,EAAK,mBACLA,EAAK,iBACLA,EAAK,kBACLA,EAAK,WACLA,EAAK,sBACLA,EAAK,kBACLA,EAAK,kBACLA,EAAK,aACLU,EACAN,CACF,CAAC,EAEKe,KAAiB,eAAaD,GAAmC,CACrE,GAAI,CAAE,MAAAE,EAAO,GAAGC,CAAU,EAAIH,EAC9B,OAAIA,EAAK,OAAS,aAAW,UAAYE,EAAQ,IAC/CA,EAAQ,CAACA,GAEJ,CAAE,MAAAA,EAAO,GAAGC,CAAU,CAC/B,EAAG,CAAC,CAAC,EAGCC,KAAY,WAAQ,IAAM,CAC9B,MAAMC,EAAM,IAAI,IAChB,OAAAA,EAAI,IAAI,aAAW,IAAKT,EAAQ,IAAIK,CAAc,CAAC,EACnDI,EAAI,IAAI,aAAW,OAAQT,EAAQ,OAAOI,GAAQA,EAAK,OAAS,CAAC,EAAE,IAAIC,CAAc,CAAC,EACtFI,EAAI,IAAI,aAAW,SAAUT,EAAQ,OAAOI,GAAQA,EAAK,OAAS,GAAKA,EAAK,SAAW,CAAC,EAAE,IAAIC,CAAc,CAAC,EAC7GI,EAAI,IAAI,aAAW,QAAST,EAAQ,OAAOI,GAAQA,EAAK,OAAS,GAAKA,EAAK,SAAW,CAAC,EAAE,IAAIC,CAAc,CAAC,EACrGI,CACT,EAAG,CAACT,EAASK,CAAc,CAAC,EAEtBK,KAAkB,eAAY,IAAM,CACnCb,GAGLR,EAAQD,EAAO,CAAC,CAClB,EAAG,CAACA,EAAMS,CAAO,CAAC,EAEZc,EAAcC,MAClB,oBACE,qBAAC,OAAI,UAAU,gCACZ,UAAAd,MACC,OAAC,OAAI,UAAU,mDACb,mBAAC,EAAAe,QAAA,EAAY,EACf,EAGD,CAACf,MACA,mBACG,SAAAc,EAAK,OAAS,EACbA,EAAK,IAAI,CAACR,EAAMU,OACd,QAAC,OAEC,aAAW,EAAAC,YACT,qGACA,CAACtB,GAAW,cACd,EAEA,qBAAC,OAAI,UAAU,iBACb,oBAAC,OAAI,UAAU,YAAa,SAAAW,EAAK,MAAM,KACvC,OAAC,OAAI,UAAU,wCACZ,cAAAY,SAAMZ,EAAK,IAAI,EAAE,OAAO,kBAAkB,EAAE,SAAS,EACxD,EACC,CAAClB,EAAK,gBACL,QAAC,OACC,UAAW,gDAAgDkB,EAAK,SAAW,GAAKA,EAAK,cAAgB,EAAI,QAAU,EAAE,GAErH,oBAAC,QAAK,KAAMlB,EAAK,YAAa,KAC9B,OAAC,QAAM,WAAA8B,QAAM,KAAKZ,EAAK,YAAY,EAAE,IAAI,EAAG,KAAK,EAAE,OAAO,YAAY,EAAE,EACvElB,EAAK,iBAAgB,OAAC,QAAK,KAAMA,EAAK,aAAc,GACvD,GAEJ,KACA,QAAC,OACC,aAAW,EAAA6B,YACT,YACAX,EAAK,OAAS,GAAKA,EAAK,cAAgB,aAAW,QAAU,iBAAmB,gBAClF,EAEC,UAAAA,EAAK,OAAS,GAAK,IACnBA,EAAK,OACR,IA7BKU,CA8BP,CACD,KAED,QAAC,OAAI,UAAU,sDACb,oBAAC,WACC,UAAU,gCACV,OAAQ5B,GAAM,gBAAgB,IAC9B,IAAKA,GAAM,gBAAgB,KAAO,mBACnC,KACD,OAAC,OAAI,UAAU,wCAAyC,SAAAA,GAAM,eAAe,GAC/E,EAEJ,GAEJ,EAEC0B,EAAK,OAAS,MAAK,OAAC,OAAI,UAAU,4DAA6D,SAAA1B,EAAK,KAAK,GAC5G,EAGF,SACE,OAAC,yBACC,MAAOA,EAAK,MACZ,aAAW,EAAA6B,YAAG,qBAAqB,EACnC,aAAY,GACZ,mBAAmB,yBACnB,gBAAgB,gBACf,GAAG5B,EACJ,YAAauB,EAEb,oBAAC,QACC,MAAM,OACN,MAAOjB,EAAU,UAAY,SAC7B,aAAcE,EAAK,CAAC,GAAG,MAAM,SAAS,EACtC,UAAU,uBAEV,oBAAC,OAAI,UAAU,8DACb,mBAAC,YACE,SAAAA,EAAK,IAAIsB,MACR,OAAC,eAA2B,MAAOA,EAAI,KAAK,SAAS,EAClD,SAAAA,EAAI,OADWA,EAAI,IAEtB,CACD,EACH,EACF,EAECtB,EAAK,IAAIsB,MACR,OAAC,eAA2B,MAAOA,EAAI,KAAK,SAAS,EAAG,UAAU,uBAC/D,SAAAN,EAAWH,EAAU,IAAIS,EAAI,IAAI,GAAK,CAAC,CAAC,GADzBA,EAAI,IAEtB,CACD,GACH,EACF,CAEJ,CAEA,IAAO7C,EAAQa",
6
+ "names": ["ActivitiesModal_exports", "__export", "ActivitiesModal_default", "__toCommonJS", "import_jsx_runtime", "import_react", "import_provider", "import_const", "import_useActivities", "import_ModalContainer", "import_lib", "import_headless_ui", "import_LoadingDots", "import_constants", "import_dayjs", "ActivitiesModal", "data", "props", "page", "setPage", "taskIdToTypeMapping", "taskNameMapping", "brand", "rounded", "myActivitiesOptions", "tabs", "activities", "canNext", "isLoading", "useActivities", "allList", "taskNameMap", "dtcTaskTypeToNameMap", "getTitle", "item", "normalizeValue", "value", "otherItem", "listByTab", "map", "handleScrollEnd", "renderList", "list", "LoadingDots", "index", "cn", "dayjs", "tab"]
7
+ }
@@ -1,2 +1,2 @@
1
- "use strict";var O=Object.create;var f=Object.defineProperty;var $=Object.getOwnPropertyDescriptor;var q=Object.getOwnPropertyNames;var z=Object.getPrototypeOf,B=Object.prototype.hasOwnProperty;var K=(t,r)=>{for(var o in r)f(t,o,{get:r[o],enumerable:!0})},N=(t,r,o,u)=>{if(r&&typeof r=="object"||typeof r=="function")for(let a of q(r))!B.call(t,a)&&a!==o&&f(t,a,{get:()=>r[a],enumerable:!(u=$(r,a))||u.enumerable});return t};var d=(t,r,o)=>(o=t!=null?O(z(t)):{},N(r||!t||!t.__esModule?f(o,"default",{value:t,enumerable:!0}):o,t)),V=t=>N(f({},"__esModule",{value:!0}),t);var W={};K(W,{default:()=>Q});module.exports=V(W);var l=require("react/jsx-runtime"),p=require("@anker-in/headless-ui"),g=d(require("classnames")),P=d(require("copy-to-clipboard")),R=d(require("dayjs")),n=require("react"),e=require("../context/const"),F=require("./ModalContainer"),A=d(require("./Tip")),w=d(require("./LoadingDots")),D=d(require("../context/hooks/useMyRewards")),M=require("@anker-in/lib"),h=require("../../../constants");function J({data:t,...r}){const[o,u]=(0,n.useState)(e.AlpcConsumeType.Coupon),{brand:a}=(0,M.useHeadlessContext)(),m=h.ROUNDED_BRANDS.includes(a),[_,v]=(0,n.useState)(1),[j,x]=(0,n.useState)(-1),c=(0,n.useMemo)(()=>[{title:t.couponTab,type:e.AlpcConsumeType.Coupon},{title:t.productTab,type:e.AlpcConsumeType.Product},{title:t.externalProductTab,type:e.AlpcConsumeType.ExternalProduct}].filter(i=>!!i.title),[t.couponTab,t.productTab,t.externalProductTab]);(0,n.useEffect)(()=>{c.length&&!c.some(i=>i.type===o)&&u(c[0].type)},[c,o]),(0,n.useEffect)(()=>{v(1)},[o]);const{myRewards:C=[],canNext:y,isLoading:G}=(0,D.default)({page:_,pageSize:1e3,consumeType:o}),S=(0,n.useCallback)(i=>i.fulfillment_status&&i.fulfillment_status!=="null"?i.fulfillment_status==="fulfilled"?e.RewardType.Fulfilled:e.RewardType.Unfulfilled:i.approval_status===e.ApprovalStatus.Success||i.approval_status===e.ApprovalStatus.DoubleConfirm?e.RewardType.ApproveSuccess:i.approval_status===e.ApprovalStatus.Failed?e.RewardType.Failed:e.RewardType.Pending,[]),T=(0,n.useCallback)(i=>{const s={0:e.RewardType.GogiftPending,1:e.RewardType.GogiftApproved,2:e.RewardType.GogiftSecondConfirm,3:e.RewardType.GogiftRejected,4:e.RewardType.GogiftCallbackPending,5:e.RewardType.GogiftCallbackSuccess,6:e.RewardType.GogiftCallbackTimeout};return i!==void 0?s[i]??e.RewardType.GogiftPending:e.RewardType.GogiftPending},[]),k=(0,n.useMemo)(()=>C.map(i=>{const s={title:i.goods_title,value:i.consume_credits,date:new Date(i.create_time*1e3)};return o===e.AlpcConsumeType.Coupon?{...s,type:e.RewardType.Received,couponCode:i.coupon_code,orderNumber:"",link:""}:o===e.AlpcConsumeType.Product?{...s,type:S(i),orderNumber:i.order_number,couponCode:"",link:""}:o===e.AlpcConsumeType.ExternalProduct?{...s,type:T(i.approval_status),orderNumber:"",couponCode:"",link:i.link||""}:{...s,type:e.RewardType.Received,couponCode:"",orderNumber:"",link:""}}),[o,C,S,T]),E=(0,n.useMemo)(()=>({[e.RewardType.Received]:t.receivedLabel,[e.RewardType.Pending]:t.pendingLabel,[e.RewardType.ApproveFail]:t.failedLabel,[e.RewardType.ApproveSuccess]:t.approveSuccessLabel,[e.RewardType.Unfulfilled]:t.unfulfilledLabel,[e.RewardType.Fulfilled]:t.fulfilledLabel,[e.RewardType.Failed]:t.failedLabel,[e.RewardType.GogiftPending]:t.goGiftStatus?.pending?.label||t.pendingLabel,[e.RewardType.GogiftApproved]:t.goGiftStatus?.approved?.label||t.approveSuccessLabel,[e.RewardType.GogiftSecondConfirm]:t.goGiftStatus?.secondConfirm?.label||t.approveSuccessLabel,[e.RewardType.GogiftRejected]:t.goGiftStatus?.rejected?.label||t.failedLabel,[e.RewardType.GogiftCallbackPending]:t.goGiftStatus?.callbackPending?.label||t.pendingLabel,[e.RewardType.GogiftCallbackSuccess]:t.goGiftStatus?.callbackSuccess?.label||t.receivedLabel,[e.RewardType.GogiftCallbackTimeout]:t.goGiftStatus?.callbackTimeout?.label||t.failedLabel}),[t]),L=(0,n.useMemo)(()=>({[e.RewardType.Received]:"",[e.RewardType.Pending]:t.pendingTip,[e.RewardType.ApproveFail]:"",[e.RewardType.ApproveSuccess]:t.confirmedTip,[e.RewardType.Unfulfilled]:t.processingTip,[e.RewardType.Fulfilled]:t.ShippedTip,[e.RewardType.Failed]:"",[e.RewardType.GogiftPending]:t.goGiftStatus?.pending?.tip||"",[e.RewardType.GogiftApproved]:t.goGiftStatus?.approved?.tip||"",[e.RewardType.GogiftSecondConfirm]:t.goGiftStatus?.secondConfirm?.tip||"",[e.RewardType.GogiftRejected]:t.goGiftStatus?.rejected?.tip||"",[e.RewardType.GogiftCallbackPending]:t.goGiftStatus?.callbackPending?.tip||"",[e.RewardType.GogiftCallbackSuccess]:t.goGiftStatus?.callbackSuccess?.tip||"",[e.RewardType.GogiftCallbackTimeout]:t.goGiftStatus?.callbackTimeout?.tip||""}),[t]),U=(0,n.useMemo)(()=>({[e.RewardType.Received]:"#52C41A",[e.RewardType.Pending]:"#999",[e.RewardType.ApproveFail]:"#F84D4F",[e.RewardType.ApproveSuccess]:"#999",[e.RewardType.Unfulfilled]:"#999",[e.RewardType.Fulfilled]:"#999",[e.RewardType.Failed]:"#F84D4F",[e.RewardType.GogiftPending]:"#999",[e.RewardType.GogiftApproved]:"#999",[e.RewardType.GogiftSecondConfirm]:"#999",[e.RewardType.GogiftRejected]:"#F84D4F",[e.RewardType.GogiftCallbackPending]:"#999",[e.RewardType.GogiftCallbackSuccess]:"#52C41A",[e.RewardType.GogiftCallbackTimeout]:"#F84D4F"}),[]),I=(0,n.useCallback)(()=>{y&&v(i=>i+1)},[y]),Y=(0,n.useCallback)((i,s)=>{x(s),(0,P.default)(i),setTimeout(()=>{x(-1)},2e3)},[]),H=()=>(0,l.jsxs)(l.Fragment,{children:[G&&(0,l.jsx)("div",{className:"flex flex-1 flex-col items-center justify-center",children:(0,l.jsx)(w.default,{})}),!G&&(0,l.jsx)("div",{className:"mt-[24px] flex-1 overflow-auto overscroll-contain pb-[24px] md:pb-[48px]",children:k.length>0?(0,l.jsx)("div",{className:"grid gap-[18px] md:gap-[12px]",children:k.map((i,s)=>(0,l.jsxs)("div",{className:"grid gap-[8px]",children:[i?.orderNumber&&(0,l.jsxs)("div",{className:"text-[15px] font-semibold leading-[1.4] text-[#777]",children:[t.orderNumberLabel,": ",i.orderNumber]}),(0,l.jsxs)("div",{className:(0,g.default)("flex items-center justify-between rounded-[8px] bg-[#f7f8f9] px-[16px] py-[20px]",!m&&"rounded-none"),children:[(0,l.jsxs)("div",{className:"grid gap-[4px]",children:[(0,l.jsx)("div",{className:"text-[16px] font-bold leading-[1.4]",children:i.title}),(0,l.jsxs)("div",{className:"text-[14px] font-semibold text-[#999]",children:[t.valueLabel,": ",i.value," ",t?.pointUnit]}),(0,l.jsxs)("div",{className:"text-[14px] font-semibold text-[#999]",children:[i?.couponCode?`${t?.code||"Code"}: ${i.couponCode} `:"",i?.couponCode&&(0,l.jsx)("span",{className:"cursor-pointer text-[14px] font-semibold text-brand underline",onClick:()=>{Y(i.couponCode,s)},role:"button",tabIndex:0,onKeyDown:b=>{(b.key==="Enter"||b.key===" ")&&b.preventDefault()},children:j===s?t?.copied||"COPIED":t?.copy||"COPY"})]}),i?.link&&(0,l.jsx)("div",{className:"text-[14px] font-semibold text-[#999]",children:(0,l.jsx)("a",{href:i.link,target:"_blank",rel:"noopener noreferrer",className:"text-brand underline",children:t?.redeemLinkLabel||"Redeem Link"})})]}),(0,l.jsxs)("div",{className:"grid gap-[4px] text-right",children:[(0,l.jsxs)("div",{className:(0,g.default)("flex items-center justify-end text-[16px] font-bold leading-[1.4]",`text-[${U[i.type]}]`),children:[(0,l.jsx)("span",{children:E[i.type]}),L[i.type]&&(0,l.jsx)(A.default,{info:L[i.type],index:s})]}),(0,l.jsx)("div",{className:"text-[14px] font-semibold text-[#999]",children:(0,R.default)(i.date).format("YYYY-MM-DD HH:mm").toString()})]})]})]},s))}):(0,l.jsxs)("div",{className:"flex h-full flex-col items-center justify-center",children:[(0,l.jsx)(p.Picture,{className:"mb-[12px] w-[160px]",source:t?.emptyListImage?.url,alt:t?.emptyListImage?.alt||"empty list image"}),(0,l.jsx)("div",{className:"text-[16px] font-semibold leading-[1.4]",children:t?.emptyListLabel})]})})]});return(0,l.jsx)(F.CreditsModalContainer,{title:t.title,className:(0,g.default)("h-[800px] w-[640px]"),useAnimation:!0,animationClassName:"md:translate-y-[100vh]",scrollClassName:"md:mb-0 flex flex-col",...r,onScrollEnd:I,children:(0,l.jsxs)(p.Tabs,{align:"left",shape:m?"rounded":"square",value:o.toString(),onValueChange:i=>{u(Number(i))},className:"flex flex-1 flex-col",children:[(0,l.jsx)("div",{className:"shrink-0",children:(0,l.jsx)(p.TabsList,{children:c.map(i=>(0,l.jsx)(p.TabsTrigger,{value:i.type.toString(),children:i.title},i.type))})}),c.map(i=>(0,l.jsx)(p.TabsContent,{value:i.type.toString(),className:"flex flex-1 flex-col",children:H()},i.type))]})})}var Q=J;
1
+ "use strict";var O=Object.create;var f=Object.defineProperty;var $=Object.getOwnPropertyDescriptor;var q=Object.getOwnPropertyNames;var z=Object.getPrototypeOf,B=Object.prototype.hasOwnProperty;var K=(t,r)=>{for(var o in r)f(t,o,{get:r[o],enumerable:!0})},N=(t,r,o,u)=>{if(r&&typeof r=="object"||typeof r=="function")for(let a of q(r))!B.call(t,a)&&a!==o&&f(t,a,{get:()=>r[a],enumerable:!(u=$(r,a))||u.enumerable});return t};var d=(t,r,o)=>(o=t!=null?O(z(t)):{},N(r||!t||!t.__esModule?f(o,"default",{value:t,enumerable:!0}):o,t)),V=t=>N(f({},"__esModule",{value:!0}),t);var W={};K(W,{default:()=>Q});module.exports=V(W);var l=require("react/jsx-runtime"),p=require("@anker-in/headless-ui"),g=d(require("classnames")),P=d(require("copy-to-clipboard")),R=d(require("dayjs")),n=require("react"),e=require("../context/const"),F=require("./ModalContainer"),A=d(require("./Tip")),D=d(require("./LoadingDots")),M=d(require("../context/hooks/useMyRewards")),h=require("@anker-in/lib"),w=require("../../../constants");function J({data:t,...r}){const[o,u]=(0,n.useState)(e.AlpcConsumeType.Coupon),{brand:a}=(0,h.useHeadlessContext)(),m=w.ROUNDED_BRANDS.includes(a),[_,v]=(0,n.useState)(1),[j,x]=(0,n.useState)(-1),c=(0,n.useMemo)(()=>[{title:t.couponTab,type:e.AlpcConsumeType.Coupon},{title:t.productTab,type:e.AlpcConsumeType.Product},{title:t.externalProductTab,type:e.AlpcConsumeType.ExternalProduct}].filter(i=>!!i.title),[t.couponTab,t.productTab,t.externalProductTab]);(0,n.useEffect)(()=>{c.length&&!c.some(i=>i.type===o)&&u(c[0].type)},[c,o]),(0,n.useEffect)(()=>{v(1)},[o]);const{myRewards:C=[],canNext:y,isLoading:G}=(0,M.default)({page:_,pageSize:1e3,consumeType:o}),S=(0,n.useCallback)(i=>i.fulfillment_status&&i.fulfillment_status!=="null"?i.fulfillment_status==="fulfilled"?e.RewardType.Fulfilled:e.RewardType.Unfulfilled:i.approval_status===e.ApprovalStatus.Success||i.approval_status===e.ApprovalStatus.DoubleConfirm?e.RewardType.ApproveSuccess:i.approval_status===e.ApprovalStatus.Failed?e.RewardType.Failed:e.RewardType.Pending,[]),T=(0,n.useCallback)(i=>{const s={0:e.RewardType.GogiftPending,1:e.RewardType.GogiftApproved,2:e.RewardType.GogiftSecondConfirm,3:e.RewardType.GogiftRejected,4:e.RewardType.GogiftCallbackPending,5:e.RewardType.GogiftCallbackSuccess,6:e.RewardType.GogiftCallbackTimeout};return i!==void 0?s[i]??e.RewardType.GogiftPending:e.RewardType.GogiftPending},[]),k=(0,n.useMemo)(()=>C.map(i=>{const s={title:i.goods_title,value:i.consume_credits,date:new Date(i.create_time*1e3)};return o===e.AlpcConsumeType.Coupon?{...s,type:e.RewardType.Received,couponCode:i.coupon_code,orderNumber:"",link:""}:o===e.AlpcConsumeType.Product?{...s,type:S(i),orderNumber:i.order_number,couponCode:"",link:""}:o===e.AlpcConsumeType.ExternalProduct?{...s,type:T(i.approval_status),orderNumber:"",couponCode:"",link:i.link||""}:{...s,type:e.RewardType.Received,couponCode:"",orderNumber:"",link:""}}),[o,C,S,T]),E=(0,n.useMemo)(()=>({[e.RewardType.Received]:t.receivedLabel,[e.RewardType.Pending]:t.pendingLabel,[e.RewardType.ApproveFail]:t.failedLabel,[e.RewardType.ApproveSuccess]:t.approveSuccessLabel,[e.RewardType.Unfulfilled]:t.unfulfilledLabel,[e.RewardType.Fulfilled]:t.fulfilledLabel,[e.RewardType.Failed]:t.failedLabel,[e.RewardType.GogiftPending]:t.goGiftStatus?.pending?.label||t.pendingLabel,[e.RewardType.GogiftApproved]:t.goGiftStatus?.approved?.label||t.approveSuccessLabel,[e.RewardType.GogiftSecondConfirm]:t.goGiftStatus?.secondConfirm?.label||t.approveSuccessLabel,[e.RewardType.GogiftRejected]:t.goGiftStatus?.rejected?.label||t.failedLabel,[e.RewardType.GogiftCallbackPending]:t.goGiftStatus?.callbackPending?.label||t.pendingLabel,[e.RewardType.GogiftCallbackSuccess]:t.goGiftStatus?.callbackSuccess?.label||t.receivedLabel,[e.RewardType.GogiftCallbackTimeout]:t.goGiftStatus?.callbackTimeout?.label||t.failedLabel}),[t]),L=(0,n.useMemo)(()=>({[e.RewardType.Received]:"",[e.RewardType.Pending]:t.pendingTip,[e.RewardType.ApproveFail]:"",[e.RewardType.ApproveSuccess]:t.confirmedTip,[e.RewardType.Unfulfilled]:t.processingTip,[e.RewardType.Fulfilled]:t.ShippedTip,[e.RewardType.Failed]:"",[e.RewardType.GogiftPending]:t.goGiftStatus?.pending?.tip||"",[e.RewardType.GogiftApproved]:t.goGiftStatus?.approved?.tip||"",[e.RewardType.GogiftSecondConfirm]:t.goGiftStatus?.secondConfirm?.tip||"",[e.RewardType.GogiftRejected]:t.goGiftStatus?.rejected?.tip||"",[e.RewardType.GogiftCallbackPending]:t.goGiftStatus?.callbackPending?.tip||"",[e.RewardType.GogiftCallbackSuccess]:t.goGiftStatus?.callbackSuccess?.tip||"",[e.RewardType.GogiftCallbackTimeout]:t.goGiftStatus?.callbackTimeout?.tip||""}),[t]),U=(0,n.useMemo)(()=>({[e.RewardType.Received]:"#52C41A",[e.RewardType.Pending]:"#999",[e.RewardType.ApproveFail]:"#F84D4F",[e.RewardType.ApproveSuccess]:"#999",[e.RewardType.Unfulfilled]:"#999",[e.RewardType.Fulfilled]:"#999",[e.RewardType.Failed]:"#F84D4F",[e.RewardType.GogiftPending]:"#999",[e.RewardType.GogiftApproved]:"#999",[e.RewardType.GogiftSecondConfirm]:"#999",[e.RewardType.GogiftRejected]:"#F84D4F",[e.RewardType.GogiftCallbackPending]:"#999",[e.RewardType.GogiftCallbackSuccess]:"#52C41A",[e.RewardType.GogiftCallbackTimeout]:"#F84D4F"}),[]),I=(0,n.useCallback)(()=>{y&&v(i=>i+1)},[y]),Y=(0,n.useCallback)((i,s)=>{x(s),(0,P.default)(i),setTimeout(()=>{x(-1)},2e3)},[]),H=()=>(0,l.jsxs)(l.Fragment,{children:[G&&(0,l.jsx)("div",{className:"flex flex-1 flex-col items-center justify-center",children:(0,l.jsx)(D.default,{})}),!G&&(0,l.jsx)("div",{className:"mt-[24px] pb-[24px] md:pb-[48px]",children:k.length>0?(0,l.jsx)("div",{className:"grid gap-[18px] md:gap-[12px]",children:k.map((i,s)=>(0,l.jsxs)("div",{className:"grid gap-[8px]",children:[i?.orderNumber&&(0,l.jsxs)("div",{className:"text-[15px] font-semibold leading-[1.4] text-[#777]",children:[t.orderNumberLabel,": ",i.orderNumber]}),(0,l.jsxs)("div",{className:(0,g.default)("flex items-center justify-between rounded-[8px] bg-[#f7f8f9] px-[16px] py-[20px]",!m&&"rounded-none"),children:[(0,l.jsxs)("div",{className:"grid gap-[4px]",children:[(0,l.jsx)("div",{className:"text-[16px] font-bold leading-[1.4]",children:i.title}),(0,l.jsxs)("div",{className:"text-[14px] font-semibold text-[#999]",children:[t.valueLabel,": ",i.value," ",t?.pointUnit]}),(0,l.jsxs)("div",{className:"text-[14px] font-semibold text-[#999]",children:[i?.couponCode?`${t?.code||"Code"}: ${i.couponCode} `:"",i?.couponCode&&(0,l.jsx)("span",{className:"cursor-pointer text-[14px] font-semibold text-brand underline",onClick:()=>{Y(i.couponCode,s)},role:"button",tabIndex:0,onKeyDown:b=>{(b.key==="Enter"||b.key===" ")&&b.preventDefault()},children:j===s?t?.copied||"COPIED":t?.copy||"COPY"})]}),i?.link&&(0,l.jsx)("div",{className:"text-[14px] font-semibold text-[#999]",children:(0,l.jsx)("a",{href:i.link,target:"_blank",rel:"noopener noreferrer",className:"text-brand underline",children:t?.redeemLinkLabel||"Redeem Link"})})]}),(0,l.jsxs)("div",{className:"grid gap-[4px] text-right",children:[(0,l.jsxs)("div",{className:(0,g.default)("flex items-center justify-end text-[16px] font-bold leading-[1.4]",`text-[${U[i.type]}]`),children:[(0,l.jsx)("span",{children:E[i.type]}),L[i.type]&&(0,l.jsx)(A.default,{info:L[i.type],index:s})]}),(0,l.jsx)("div",{className:"text-[14px] font-semibold text-[#999]",children:(0,R.default)(i.date).format("YYYY-MM-DD HH:mm").toString()})]})]})]},s))}):(0,l.jsxs)("div",{className:"flex h-full flex-col items-center justify-center",children:[(0,l.jsx)(p.Picture,{className:"mb-[12px] w-[160px]",source:t?.emptyListImage?.url,alt:t?.emptyListImage?.alt||"empty list image"}),(0,l.jsx)("div",{className:"text-[16px] font-semibold leading-[1.4]",children:t?.emptyListLabel})]})})]});return(0,l.jsx)(F.CreditsModalContainer,{title:t.title,className:(0,g.default)("h-[800px] w-[640px]"),useAnimation:!0,animationClassName:"md:translate-y-[100vh]",scrollClassName:"md:mb-0 flex flex-col",...r,onScrollEnd:I,children:(0,l.jsxs)(p.Tabs,{align:"left",shape:m?"rounded":"square",value:o.toString(),onValueChange:i=>{u(Number(i))},className:"flex flex-1 flex-col",children:[(0,l.jsx)("div",{className:"shrink-0",children:(0,l.jsx)(p.TabsList,{children:c.map(i=>(0,l.jsx)(p.TabsTrigger,{value:i.type.toString(),children:i.title},i.type))})}),c.map(i=>(0,l.jsx)(p.TabsContent,{value:i.type.toString(),className:"flex flex-1 flex-col",children:H()},i.type))]})})}var Q=J;
2
2
  //# sourceMappingURL=RewardsModal.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../../src/components/credits/modal/RewardsModal.tsx"],
4
- "sourcesContent": ["import { Tabs, TabsContent, TabsList, TabsTrigger, Picture } from '@anker-in/headless-ui'\nimport classNames from 'classnames'\nimport clipboard from 'copy-to-clipboard'\nimport dayjs from 'dayjs'\nimport { useCallback, useEffect, useMemo, useState } from 'react'\n\nimport { ApprovalStatus, AlpcConsumeType, RewardType } from '../context/const'\nimport { CreditsModalContainer, type ModalContainerProps } from './ModalContainer'\nimport Tip from './Tip'\nimport LoadingDots from './LoadingDots'\nimport useMyRewards from '../context/hooks/useMyRewards'\nimport { useHeadlessContext } from '@anker-in/lib'\nimport { ROUNDED_BRANDS } from '../../../constants'\n\nexport interface RewardsCopy {\n title: string\n orderNumberLabel: string\n valueLabel: string\n receivedLabel: string\n failedLabel: string\n approveSuccessLabel: string\n couponTab: string\n productTab: string\n externalProductTab?: string\n pendingLabel: string\n unfulfilledLabel: string\n fulfilledLabel: string\n confirmedTip: string\n pendingTip: string\n processingTip: string\n ShippedTip: string\n emptyListLabel: string\n pointUnit: string\n code: string\n copied: string\n copy: string\n redeemLinkLabel?: string\n goGiftStatus?: {\n pending?: {\n label: string\n tip: string\n }\n approved?: {\n label: string\n tip: string\n }\n secondConfirm?: {\n label: string\n tip: string\n }\n rejected?: {\n label: string\n tip: string\n }\n callbackPending?: {\n label: string\n tip: string\n }\n callbackSuccess?: {\n label: string\n tip: string\n }\n callbackTimeout?: {\n label: string\n tip: string\n }\n }\n emptyListImage: {\n url: string\n alt?: string\n }\n}\ninterface RewardsModalProps extends ModalContainerProps {\n data: RewardsCopy\n}\n\nfunction RewardsModal({ data, ...props }: RewardsModalProps) {\n const [activeTab, setActiveTab] = useState(AlpcConsumeType.Coupon)\n const { brand } = useHeadlessContext()\n const rounded = ROUNDED_BRANDS.includes(brand)\n\n const [page, setPage] = useState(1)\n const [copied, setCopied] = useState(-1)\n\n const tabs = useMemo(() => {\n return [\n { title: data.couponTab, type: AlpcConsumeType.Coupon },\n { title: data.productTab, type: AlpcConsumeType.Product },\n { title: data.externalProductTab, type: AlpcConsumeType.ExternalProduct },\n ].filter((tab): tab is { title: string; type: number } => !!tab.title)\n }, [data.couponTab, data.productTab, data.externalProductTab])\n\n // tabs \u7531 data.xxxTab \u771F\u503C\u8FC7\u6EE4\u6784\u5EFA\uFF0CactiveTab \u82E5\u6307\u5411\u4E00\u4E2A\u5DF2\u88AB\u8FC7\u6EE4\u6389\u7684\u7C7B\u578B\uFF08\u4F8B\u5982 couponTab \u5C1A\u672A\u52A0\u8F7D\uFF09\uFF0C\n // \u4F1A\u5BFC\u81F4\u6CA1\u6709\u4EFB\u4F55 TabsTrigger/TabsContent \u5339\u914D\uFF0C\u521D\u59CB\u4E0D\u5C55\u793A\u5185\u5BB9\u3002\u6B64\u5904\u5728 tabs \u53D8\u5316\u65F6\u91CD\u540C\u6B65\u3002\n useEffect(() => {\n if (tabs.length && !tabs.some(tab => tab.type === activeTab)) {\n setActiveTab(tabs[0]!.type)\n }\n }, [tabs, activeTab])\n\n // Reset page when switching tabs\n useEffect(() => {\n setPage(1)\n }, [activeTab])\n\n const { myRewards = [], canNext, isLoading } = useMyRewards({\n page,\n pageSize: 1000,\n consumeType: activeTab,\n })\n\n const getProductType = useCallback((item: any) => {\n if (item.fulfillment_status && item.fulfillment_status !== 'null') {\n return item.fulfillment_status === 'fulfilled' ? RewardType.Fulfilled : RewardType.Unfulfilled\n }\n\n if (item.approval_status === ApprovalStatus.Success || item.approval_status === ApprovalStatus.DoubleConfirm) {\n return RewardType.ApproveSuccess\n }\n\n if (item.approval_status === ApprovalStatus.Failed) {\n return RewardType.Failed\n }\n\n return RewardType.Pending\n }, [])\n\n const getGoGiftType = useCallback((status?: number) => {\n const statusMap: Record<number, RewardType> = {\n 0: RewardType.GogiftPending,\n 1: RewardType.GogiftApproved,\n 2: RewardType.GogiftSecondConfirm,\n 3: RewardType.GogiftRejected,\n 4: RewardType.GogiftCallbackPending,\n 5: RewardType.GogiftCallbackSuccess,\n 6: RewardType.GogiftCallbackTimeout,\n }\n return status !== undefined ? (statusMap[status] ?? RewardType.GogiftPending) : RewardType.GogiftPending\n }, [])\n\n const list = useMemo(() => {\n return myRewards.map(item => {\n const base = {\n title: item.goods_title,\n value: item.consume_credits,\n date: new Date(item.create_time * 1000),\n }\n\n if (activeTab === AlpcConsumeType.Coupon) {\n return {\n ...base,\n type: RewardType.Received,\n couponCode: item.coupon_code,\n orderNumber: '',\n link: '',\n }\n }\n\n if (activeTab === AlpcConsumeType.Product) {\n return {\n ...base,\n type: getProductType(item),\n orderNumber: item.order_number,\n couponCode: '',\n link: '',\n }\n }\n\n if (activeTab === AlpcConsumeType.ExternalProduct) {\n return {\n ...base,\n type: getGoGiftType(item.approval_status),\n orderNumber: '',\n couponCode: '',\n link: item.link || '',\n }\n }\n\n return { ...base, type: RewardType.Received, couponCode: '', orderNumber: '', link: '' }\n })\n }, [activeTab, myRewards, getProductType, getGoGiftType])\n\n\n const TypeMap = useMemo(() => {\n return {\n [RewardType.Received]: data.receivedLabel,\n [RewardType.Pending]: data.pendingLabel,\n [RewardType.ApproveFail]: data.failedLabel,\n [RewardType.ApproveSuccess]: data.approveSuccessLabel,\n [RewardType.Unfulfilled]: data.unfulfilledLabel,\n [RewardType.Fulfilled]: data.fulfilledLabel,\n [RewardType.Failed]: data.failedLabel,\n [RewardType.GogiftPending]: data.goGiftStatus?.pending?.label || data.pendingLabel,\n [RewardType.GogiftApproved]: data.goGiftStatus?.approved?.label || data.approveSuccessLabel,\n [RewardType.GogiftSecondConfirm]: data.goGiftStatus?.secondConfirm?.label || data.approveSuccessLabel,\n [RewardType.GogiftRejected]: data.goGiftStatus?.rejected?.label || data.failedLabel,\n [RewardType.GogiftCallbackPending]: data.goGiftStatus?.callbackPending?.label || data.pendingLabel,\n [RewardType.GogiftCallbackSuccess]: data.goGiftStatus?.callbackSuccess?.label || data.receivedLabel,\n [RewardType.GogiftCallbackTimeout]: data.goGiftStatus?.callbackTimeout?.label || data.failedLabel,\n }\n }, [data])\n\n const TipMap = useMemo(() => {\n return {\n [RewardType.Received]: '',\n [RewardType.Pending]: data.pendingTip,\n [RewardType.ApproveFail]: '',\n [RewardType.ApproveSuccess]: data.confirmedTip,\n [RewardType.Unfulfilled]: data.processingTip,\n [RewardType.Fulfilled]: data.ShippedTip,\n [RewardType.Failed]: '',\n [RewardType.GogiftPending]: data.goGiftStatus?.pending?.tip || '',\n [RewardType.GogiftApproved]: data.goGiftStatus?.approved?.tip || '',\n [RewardType.GogiftSecondConfirm]: data.goGiftStatus?.secondConfirm?.tip || '',\n [RewardType.GogiftRejected]: data.goGiftStatus?.rejected?.tip || '',\n [RewardType.GogiftCallbackPending]: data.goGiftStatus?.callbackPending?.tip || '',\n [RewardType.GogiftCallbackSuccess]: data.goGiftStatus?.callbackSuccess?.tip || '',\n [RewardType.GogiftCallbackTimeout]: data.goGiftStatus?.callbackTimeout?.tip || '',\n }\n }, [data])\n\n const ColorMap = useMemo(() => {\n return {\n [RewardType.Received]: '#52C41A',\n [RewardType.Pending]: '#999',\n [RewardType.ApproveFail]: '#F84D4F',\n [RewardType.ApproveSuccess]: '#999',\n [RewardType.Unfulfilled]: '#999',\n [RewardType.Fulfilled]: '#999',\n [RewardType.Failed]: '#F84D4F',\n [RewardType.GogiftPending]: '#999',\n [RewardType.GogiftApproved]: '#999',\n [RewardType.GogiftSecondConfirm]: '#999',\n [RewardType.GogiftRejected]: '#F84D4F',\n [RewardType.GogiftCallbackPending]: '#999',\n [RewardType.GogiftCallbackSuccess]: '#52C41A',\n [RewardType.GogiftCallbackTimeout]: '#F84D4F',\n }\n }, [])\n\n const handleScrollEnd = useCallback(() => {\n if (canNext) {\n setPage(prev => prev + 1)\n }\n }, [canNext])\n\n const handleCopy = useCallback((code: string, idx: number) => {\n setCopied(idx)\n clipboard(code)\n setTimeout(() => {\n setCopied(-1)\n }, 2000)\n }, [])\n\n\n // \u6BCF\u4E2A tab \u5BF9\u5E94\u4E00\u6B21\u72EC\u7ACB\u7684\u63A5\u53E3\u8BF7\u6C42\uFF08consumeType \u4E0D\u540C\uFF09\uFF0C\u5F53\u524D\u53EA\u6709\u6FC0\u6D3B tab \u7684\u6570\u636E\u5B58\u5728\u4E8E\u5BA2\u6237\u7AEF\u3002\n // TabsContent \u53EA\u6302\u8F7D\u5F53\u524D\u6FC0\u6D3B\u7684\u4E00\u4E2A\uFF0C\u5404 tab \u590D\u7528\u540C\u4E00\u4EFD list/isLoading \u72B6\u6001\u662F\u5B89\u5168\u7684\u3002\n const renderContent = () => (\n <>\n {isLoading && (\n <div className=\"flex flex-1 flex-col items-center justify-center\">\n <LoadingDots />\n </div>\n )}\n\n {!isLoading && (\n <div className=\"mt-[24px] flex-1 overflow-auto overscroll-contain pb-[24px] md:pb-[48px]\">\n {list.length > 0 ? (\n <div className=\"grid gap-[18px] md:gap-[12px]\">\n {list.map((item, index) => (\n <div key={index} className=\"grid gap-[8px]\">\n {item?.orderNumber && (\n <div className=\"text-[15px] font-semibold leading-[1.4] text-[#777]\">\n {data.orderNumberLabel}: {item.orderNumber}\n </div>\n )}\n <div\n className={classNames(\n 'flex items-center justify-between rounded-[8px] bg-[#f7f8f9] px-[16px] py-[20px]',\n !rounded && 'rounded-none'\n )}\n >\n <div className=\"grid gap-[4px]\">\n <div className=\"text-[16px] font-bold leading-[1.4]\">{item.title}</div>\n <div className=\"text-[14px] font-semibold text-[#999]\">\n {data.valueLabel}: {item.value} {data?.pointUnit}\n </div>\n <div className=\"text-[14px] font-semibold text-[#999]\">\n {item?.couponCode ? `${data?.code || 'Code'}: ${item.couponCode} ` : ''}\n {item?.couponCode && (\n <span\n className=\"cursor-pointer text-[14px] font-semibold text-brand underline\"\n onClick={() => {\n handleCopy(item.couponCode, index)\n }}\n role=\"button\"\n tabIndex={0}\n onKeyDown={e => {\n if (e.key === 'Enter' || e.key === ' ') {\n e.preventDefault()\n }\n }}\n >\n {copied === index ? data?.copied || 'COPIED' : data?.copy || 'COPY'}\n </span>\n )}\n </div>\n {item?.link && (\n <div className=\"text-[14px] font-semibold text-[#999]\">\n <a\n href={item.link}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n className=\"text-brand underline\"\n >\n {data?.redeemLinkLabel || 'Redeem Link'}\n </a>\n </div>\n )}\n </div>\n <div className=\"grid gap-[4px] text-right\">\n <div\n className={classNames(\n 'flex items-center justify-end text-[16px] font-bold leading-[1.4]',\n `text-[${ColorMap[item.type]}]`\n )}\n >\n <span>{TypeMap[item.type]}</span>\n {TipMap[item.type] && <Tip info={TipMap[item.type]} index={index} />}\n </div>\n <div className=\"text-[14px] font-semibold text-[#999]\">\n {dayjs(item.date).format('YYYY-MM-DD HH:mm').toString()}\n </div>\n </div>\n </div>\n </div>\n ))}\n </div>\n ) : (\n <div className=\"flex h-full flex-col items-center justify-center\">\n <Picture\n className=\"mb-[12px] w-[160px]\"\n source={data?.emptyListImage?.url}\n alt={data?.emptyListImage?.alt || 'empty list image'}\n ></Picture>\n <div className=\"text-[16px] font-semibold leading-[1.4]\">{data?.emptyListLabel}</div>\n </div>\n )}\n </div>\n )}\n </>\n )\n\n return (\n <CreditsModalContainer\n title={data.title}\n className={classNames('h-[800px] w-[640px]')}\n useAnimation\n animationClassName=\"md:translate-y-[100vh]\"\n scrollClassName=\"md:mb-0 flex flex-col\"\n {...props}\n onScrollEnd={handleScrollEnd}\n >\n <Tabs\n align=\"left\"\n shape={rounded ? 'rounded' : 'square'}\n value={activeTab.toString()}\n onValueChange={value => {\n setActiveTab(Number(value))\n }}\n className=\"flex flex-1 flex-col\"\n >\n <div className=\"shrink-0\">\n <TabsList>\n {tabs.map(tab => (\n <TabsTrigger key={tab.type} value={tab.type.toString()}>\n {tab.title}\n </TabsTrigger>\n ))}\n </TabsList>\n </div>\n\n {tabs.map(tab => (\n <TabsContent key={tab.type} value={tab.type.toString()} className=\"flex flex-1 flex-col\">\n {renderContent()}\n </TabsContent>\n ))}\n </Tabs>\n </CreditsModalContainer>\n )\n}\n\nexport default RewardsModal\n"],
5
- "mappings": "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",
4
+ "sourcesContent": ["import { Tabs, TabsContent, TabsList, TabsTrigger, Picture } from '@anker-in/headless-ui'\nimport classNames from 'classnames'\nimport clipboard from 'copy-to-clipboard'\nimport dayjs from 'dayjs'\nimport { useCallback, useEffect, useMemo, useState } from 'react'\n\nimport { ApprovalStatus, AlpcConsumeType, RewardType } from '../context/const'\nimport { CreditsModalContainer, type ModalContainerProps } from './ModalContainer'\nimport Tip from './Tip'\nimport LoadingDots from './LoadingDots'\nimport useMyRewards from '../context/hooks/useMyRewards'\nimport { useHeadlessContext } from '@anker-in/lib'\nimport { ROUNDED_BRANDS } from '../../../constants'\n\nexport interface RewardsCopy {\n title: string\n orderNumberLabel: string\n valueLabel: string\n receivedLabel: string\n failedLabel: string\n approveSuccessLabel: string\n couponTab: string\n productTab: string\n externalProductTab?: string\n pendingLabel: string\n unfulfilledLabel: string\n fulfilledLabel: string\n confirmedTip: string\n pendingTip: string\n processingTip: string\n ShippedTip: string\n emptyListLabel: string\n pointUnit: string\n code: string\n copied: string\n copy: string\n redeemLinkLabel?: string\n goGiftStatus?: {\n pending?: {\n label: string\n tip: string\n }\n approved?: {\n label: string\n tip: string\n }\n secondConfirm?: {\n label: string\n tip: string\n }\n rejected?: {\n label: string\n tip: string\n }\n callbackPending?: {\n label: string\n tip: string\n }\n callbackSuccess?: {\n label: string\n tip: string\n }\n callbackTimeout?: {\n label: string\n tip: string\n }\n }\n emptyListImage: {\n url: string\n alt?: string\n }\n}\ninterface RewardsModalProps extends ModalContainerProps {\n data: RewardsCopy\n}\n\nfunction RewardsModal({ data, ...props }: RewardsModalProps) {\n const [activeTab, setActiveTab] = useState(AlpcConsumeType.Coupon)\n const { brand } = useHeadlessContext()\n const rounded = ROUNDED_BRANDS.includes(brand)\n\n const [page, setPage] = useState(1)\n const [copied, setCopied] = useState(-1)\n\n const tabs = useMemo(() => {\n return [\n { title: data.couponTab, type: AlpcConsumeType.Coupon },\n { title: data.productTab, type: AlpcConsumeType.Product },\n { title: data.externalProductTab, type: AlpcConsumeType.ExternalProduct },\n ].filter((tab): tab is { title: string; type: number } => !!tab.title)\n }, [data.couponTab, data.productTab, data.externalProductTab])\n\n // tabs \u7531 data.xxxTab \u771F\u503C\u8FC7\u6EE4\u6784\u5EFA\uFF0CactiveTab \u82E5\u6307\u5411\u4E00\u4E2A\u5DF2\u88AB\u8FC7\u6EE4\u6389\u7684\u7C7B\u578B\uFF08\u4F8B\u5982 couponTab \u5C1A\u672A\u52A0\u8F7D\uFF09\uFF0C\n // \u4F1A\u5BFC\u81F4\u6CA1\u6709\u4EFB\u4F55 TabsTrigger/TabsContent \u5339\u914D\uFF0C\u521D\u59CB\u4E0D\u5C55\u793A\u5185\u5BB9\u3002\u6B64\u5904\u5728 tabs \u53D8\u5316\u65F6\u91CD\u540C\u6B65\u3002\n useEffect(() => {\n if (tabs.length && !tabs.some(tab => tab.type === activeTab)) {\n setActiveTab(tabs[0]!.type)\n }\n }, [tabs, activeTab])\n\n // Reset page when switching tabs\n useEffect(() => {\n setPage(1)\n }, [activeTab])\n\n const { myRewards = [], canNext, isLoading } = useMyRewards({\n page,\n pageSize: 1000,\n consumeType: activeTab,\n })\n\n const getProductType = useCallback((item: any) => {\n if (item.fulfillment_status && item.fulfillment_status !== 'null') {\n return item.fulfillment_status === 'fulfilled' ? RewardType.Fulfilled : RewardType.Unfulfilled\n }\n\n if (item.approval_status === ApprovalStatus.Success || item.approval_status === ApprovalStatus.DoubleConfirm) {\n return RewardType.ApproveSuccess\n }\n\n if (item.approval_status === ApprovalStatus.Failed) {\n return RewardType.Failed\n }\n\n return RewardType.Pending\n }, [])\n\n const getGoGiftType = useCallback((status?: number) => {\n const statusMap: Record<number, RewardType> = {\n 0: RewardType.GogiftPending,\n 1: RewardType.GogiftApproved,\n 2: RewardType.GogiftSecondConfirm,\n 3: RewardType.GogiftRejected,\n 4: RewardType.GogiftCallbackPending,\n 5: RewardType.GogiftCallbackSuccess,\n 6: RewardType.GogiftCallbackTimeout,\n }\n return status !== undefined ? (statusMap[status] ?? RewardType.GogiftPending) : RewardType.GogiftPending\n }, [])\n\n const list = useMemo(() => {\n return myRewards.map(item => {\n const base = {\n title: item.goods_title,\n value: item.consume_credits,\n date: new Date(item.create_time * 1000),\n }\n\n if (activeTab === AlpcConsumeType.Coupon) {\n return {\n ...base,\n type: RewardType.Received,\n couponCode: item.coupon_code,\n orderNumber: '',\n link: '',\n }\n }\n\n if (activeTab === AlpcConsumeType.Product) {\n return {\n ...base,\n type: getProductType(item),\n orderNumber: item.order_number,\n couponCode: '',\n link: '',\n }\n }\n\n if (activeTab === AlpcConsumeType.ExternalProduct) {\n return {\n ...base,\n type: getGoGiftType(item.approval_status),\n orderNumber: '',\n couponCode: '',\n link: item.link || '',\n }\n }\n\n return { ...base, type: RewardType.Received, couponCode: '', orderNumber: '', link: '' }\n })\n }, [activeTab, myRewards, getProductType, getGoGiftType])\n\n\n const TypeMap = useMemo(() => {\n return {\n [RewardType.Received]: data.receivedLabel,\n [RewardType.Pending]: data.pendingLabel,\n [RewardType.ApproveFail]: data.failedLabel,\n [RewardType.ApproveSuccess]: data.approveSuccessLabel,\n [RewardType.Unfulfilled]: data.unfulfilledLabel,\n [RewardType.Fulfilled]: data.fulfilledLabel,\n [RewardType.Failed]: data.failedLabel,\n [RewardType.GogiftPending]: data.goGiftStatus?.pending?.label || data.pendingLabel,\n [RewardType.GogiftApproved]: data.goGiftStatus?.approved?.label || data.approveSuccessLabel,\n [RewardType.GogiftSecondConfirm]: data.goGiftStatus?.secondConfirm?.label || data.approveSuccessLabel,\n [RewardType.GogiftRejected]: data.goGiftStatus?.rejected?.label || data.failedLabel,\n [RewardType.GogiftCallbackPending]: data.goGiftStatus?.callbackPending?.label || data.pendingLabel,\n [RewardType.GogiftCallbackSuccess]: data.goGiftStatus?.callbackSuccess?.label || data.receivedLabel,\n [RewardType.GogiftCallbackTimeout]: data.goGiftStatus?.callbackTimeout?.label || data.failedLabel,\n }\n }, [data])\n\n const TipMap = useMemo(() => {\n return {\n [RewardType.Received]: '',\n [RewardType.Pending]: data.pendingTip,\n [RewardType.ApproveFail]: '',\n [RewardType.ApproveSuccess]: data.confirmedTip,\n [RewardType.Unfulfilled]: data.processingTip,\n [RewardType.Fulfilled]: data.ShippedTip,\n [RewardType.Failed]: '',\n [RewardType.GogiftPending]: data.goGiftStatus?.pending?.tip || '',\n [RewardType.GogiftApproved]: data.goGiftStatus?.approved?.tip || '',\n [RewardType.GogiftSecondConfirm]: data.goGiftStatus?.secondConfirm?.tip || '',\n [RewardType.GogiftRejected]: data.goGiftStatus?.rejected?.tip || '',\n [RewardType.GogiftCallbackPending]: data.goGiftStatus?.callbackPending?.tip || '',\n [RewardType.GogiftCallbackSuccess]: data.goGiftStatus?.callbackSuccess?.tip || '',\n [RewardType.GogiftCallbackTimeout]: data.goGiftStatus?.callbackTimeout?.tip || '',\n }\n }, [data])\n\n const ColorMap = useMemo(() => {\n return {\n [RewardType.Received]: '#52C41A',\n [RewardType.Pending]: '#999',\n [RewardType.ApproveFail]: '#F84D4F',\n [RewardType.ApproveSuccess]: '#999',\n [RewardType.Unfulfilled]: '#999',\n [RewardType.Fulfilled]: '#999',\n [RewardType.Failed]: '#F84D4F',\n [RewardType.GogiftPending]: '#999',\n [RewardType.GogiftApproved]: '#999',\n [RewardType.GogiftSecondConfirm]: '#999',\n [RewardType.GogiftRejected]: '#F84D4F',\n [RewardType.GogiftCallbackPending]: '#999',\n [RewardType.GogiftCallbackSuccess]: '#52C41A',\n [RewardType.GogiftCallbackTimeout]: '#F84D4F',\n }\n }, [])\n\n const handleScrollEnd = useCallback(() => {\n if (canNext) {\n setPage(prev => prev + 1)\n }\n }, [canNext])\n\n const handleCopy = useCallback((code: string, idx: number) => {\n setCopied(idx)\n clipboard(code)\n setTimeout(() => {\n setCopied(-1)\n }, 2000)\n }, [])\n\n\n // \u6BCF\u4E2A tab \u5BF9\u5E94\u4E00\u6B21\u72EC\u7ACB\u7684\u63A5\u53E3\u8BF7\u6C42\uFF08consumeType \u4E0D\u540C\uFF09\uFF0C\u5F53\u524D\u53EA\u6709\u6FC0\u6D3B tab \u7684\u6570\u636E\u5B58\u5728\u4E8E\u5BA2\u6237\u7AEF\u3002\n // TabsContent \u53EA\u6302\u8F7D\u5F53\u524D\u6FC0\u6D3B\u7684\u4E00\u4E2A\uFF0C\u5404 tab \u590D\u7528\u540C\u4E00\u4EFD list/isLoading \u72B6\u6001\u662F\u5B89\u5168\u7684\u3002\n const renderContent = () => (\n <>\n {isLoading && (\n <div className=\"flex flex-1 flex-col items-center justify-center\">\n <LoadingDots />\n </div>\n )}\n\n {!isLoading && (\n <div className=\"mt-[24px] pb-[24px] md:pb-[48px]\">\n {list.length > 0 ? (\n <div className=\"grid gap-[18px] md:gap-[12px]\">\n {list.map((item, index) => (\n <div key={index} className=\"grid gap-[8px]\">\n {item?.orderNumber && (\n <div className=\"text-[15px] font-semibold leading-[1.4] text-[#777]\">\n {data.orderNumberLabel}: {item.orderNumber}\n </div>\n )}\n <div\n className={classNames(\n 'flex items-center justify-between rounded-[8px] bg-[#f7f8f9] px-[16px] py-[20px]',\n !rounded && 'rounded-none'\n )}\n >\n <div className=\"grid gap-[4px]\">\n <div className=\"text-[16px] font-bold leading-[1.4]\">{item.title}</div>\n <div className=\"text-[14px] font-semibold text-[#999]\">\n {data.valueLabel}: {item.value} {data?.pointUnit}\n </div>\n <div className=\"text-[14px] font-semibold text-[#999]\">\n {item?.couponCode ? `${data?.code || 'Code'}: ${item.couponCode} ` : ''}\n {item?.couponCode && (\n <span\n className=\"cursor-pointer text-[14px] font-semibold text-brand underline\"\n onClick={() => {\n handleCopy(item.couponCode, index)\n }}\n role=\"button\"\n tabIndex={0}\n onKeyDown={e => {\n if (e.key === 'Enter' || e.key === ' ') {\n e.preventDefault()\n }\n }}\n >\n {copied === index ? data?.copied || 'COPIED' : data?.copy || 'COPY'}\n </span>\n )}\n </div>\n {item?.link && (\n <div className=\"text-[14px] font-semibold text-[#999]\">\n <a\n href={item.link}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n className=\"text-brand underline\"\n >\n {data?.redeemLinkLabel || 'Redeem Link'}\n </a>\n </div>\n )}\n </div>\n <div className=\"grid gap-[4px] text-right\">\n <div\n className={classNames(\n 'flex items-center justify-end text-[16px] font-bold leading-[1.4]',\n `text-[${ColorMap[item.type]}]`\n )}\n >\n <span>{TypeMap[item.type]}</span>\n {TipMap[item.type] && <Tip info={TipMap[item.type]} index={index} />}\n </div>\n <div className=\"text-[14px] font-semibold text-[#999]\">\n {dayjs(item.date).format('YYYY-MM-DD HH:mm').toString()}\n </div>\n </div>\n </div>\n </div>\n ))}\n </div>\n ) : (\n <div className=\"flex h-full flex-col items-center justify-center\">\n <Picture\n className=\"mb-[12px] w-[160px]\"\n source={data?.emptyListImage?.url}\n alt={data?.emptyListImage?.alt || 'empty list image'}\n ></Picture>\n <div className=\"text-[16px] font-semibold leading-[1.4]\">{data?.emptyListLabel}</div>\n </div>\n )}\n </div>\n )}\n </>\n )\n\n return (\n <CreditsModalContainer\n title={data.title}\n className={classNames('h-[800px] w-[640px]')}\n useAnimation\n animationClassName=\"md:translate-y-[100vh]\"\n scrollClassName=\"md:mb-0 flex flex-col\"\n {...props}\n onScrollEnd={handleScrollEnd}\n >\n <Tabs\n align=\"left\"\n shape={rounded ? 'rounded' : 'square'}\n value={activeTab.toString()}\n onValueChange={value => {\n setActiveTab(Number(value))\n }}\n className=\"flex flex-1 flex-col\"\n >\n <div className=\"shrink-0\">\n <TabsList>\n {tabs.map(tab => (\n <TabsTrigger key={tab.type} value={tab.type.toString()}>\n {tab.title}\n </TabsTrigger>\n ))}\n </TabsList>\n </div>\n\n {tabs.map(tab => (\n <TabsContent key={tab.type} value={tab.type.toString()} className=\"flex flex-1 flex-col\">\n {renderContent()}\n </TabsContent>\n ))}\n </Tabs>\n </CreditsModalContainer>\n )\n}\n\nexport default RewardsModal\n"],
5
+ "mappings": "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",
6
6
  "names": ["RewardsModal_exports", "__export", "RewardsModal_default", "__toCommonJS", "import_jsx_runtime", "import_headless_ui", "import_classnames", "import_copy_to_clipboard", "import_dayjs", "import_react", "import_const", "import_ModalContainer", "import_Tip", "import_LoadingDots", "import_useMyRewards", "import_lib", "import_constants", "RewardsModal", "data", "props", "activeTab", "setActiveTab", "brand", "rounded", "page", "setPage", "copied", "setCopied", "tabs", "tab", "myRewards", "canNext", "isLoading", "useMyRewards", "getProductType", "item", "getGoGiftType", "status", "statusMap", "list", "base", "TypeMap", "TipMap", "ColorMap", "handleScrollEnd", "prev", "handleCopy", "code", "idx", "clipboard", "renderContent", "LoadingDots", "index", "classNames", "e", "Tip", "dayjs", "value"]
7
7
  }
@@ -36,7 +36,7 @@ export type CreditsTemplateProps = {
36
36
  };
37
37
  taskIdToTypeMapping: Record<string, DTC_TASK_TYPE>;
38
38
  memberPriceDiscount?: FunctionMemberPriceConfig[];
39
- taskNameMapping: Record<string, string>;
39
+ taskNameMapping?: Record<string, string>;
40
40
  };
41
41
  creditsConfig?: {
42
42
  alpcBrand?: string;
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/templates/Credits.types.ts"],
4
- "sourcesContent": ["import { HeadlessConfig } from '@anker-in/lib'\nimport { DTC_TASK_TYPE } from '../components/credits/context/const'\nimport { CreditsPageCommon } from '../components/credits/type'\nimport { FunctionMemberPriceConfig } from '../components/credits/context/memberPriceTypes'\nimport { AuthCodeActivateCopy } from 'src/components/registration/authCodeActivate/type'\nimport type { CreditsBannerCopy } from '../components/credits/creditsBanner'\nimport type { CreditsInfoCardCopy } from '../components/credits/creditsInfoCard'\nimport type { CreditsBenefitsCopy } from '../components/credits/creditsBenefits'\nimport type { CreditsWaysToGetCreditsCopy } from '../components/credits/creditsWaysToGetCredits'\nimport type { CreditsAnkersolixTaskCopy } from '../components/credits/creditsAnkersolixTask'\nimport type { CreditsRedeemListCopy } from '../components/credits/creditsRedeemList'\nimport type { CreditsGoGiftCopy } from '../components/credits/creditsGoGift'\nimport type { CreditsCashCopy } from '../components/credits/creditsCash'\nimport type { CreditsMemberPriceCopy } from '../components/credits/creditsMemberPrice'\nimport type { CreditsFaqCopy } from '../components/credits/creditsFaq'\nimport type { CreditsNavigationCopy } from '../components/credits/creditsNavigation'\n\n// Re-export copy types for convenience\nexport type {\n CreditsBannerCopy,\n CreditsInfoCardCopy,\n CreditsBenefitsCopy,\n CreditsWaysToGetCreditsCopy,\n CreditsAnkersolixTaskCopy,\n CreditsRedeemListCopy,\n CreditsGoGiftCopy,\n CreditsCashCopy,\n CreditsMemberPriceCopy,\n CreditsFaqCopy,\n CreditsNavigationCopy,\n}\n\nexport enum ComponentKey {\n Navigation = 'creditsNavigation',\n Banner = 'creditsBanner',\n InfoCard = 'creditsInfoCard',\n Benefits = 'creditsBenefits',\n WaysToGetCredits = 'creditsWaysToGetCredits',\n AnkersolixTask = 'creditsAnkersolixTask',\n RedeemList = 'creditsRedeemList',\n GoGift = 'creditsGoGift',\n SpendCreditsLikeCash = 'creditsCash',\n MemberPrice = 'creditsMemberPrice',\n Faqs = 'creditsFaq',\n}\n\nexport type CreditsTemplateProps = {\n headlessConfig: HeadlessConfig\n siteConfig: {\n registrationsSettings: {\n authCodeActivate: AuthCodeActivateCopy\n }\n taskIdToTypeMapping: Record<string, DTC_TASK_TYPE>\n memberPriceDiscount?: FunctionMemberPriceConfig[]\n taskNameMapping: Record<string, string>\n }\n creditsConfig?: {\n alpcBrand?: string\n alpcCountry?: string\n }\n pageConfig: {\n order: ComponentKey[]\n common: CreditsPageCommon\n components: {\n [ComponentKey.Navigation]?: CreditsNavigationCopy\n [ComponentKey.Banner]?: CreditsBannerCopy\n [ComponentKey.InfoCard]?: CreditsInfoCardCopy\n [ComponentKey.Benefits]?: CreditsBenefitsCopy\n [ComponentKey.WaysToGetCredits]?: CreditsWaysToGetCreditsCopy\n [ComponentKey.AnkersolixTask]?: CreditsAnkersolixTaskCopy\n [ComponentKey.RedeemList]?: CreditsRedeemListCopy\n [ComponentKey.GoGift]?: CreditsGoGiftCopy\n [ComponentKey.SpendCreditsLikeCash]?: CreditsCashCopy\n [ComponentKey.MemberPrice]?: CreditsMemberPriceCopy\n [ComponentKey.Faqs]?: CreditsFaqCopy\n }\n }\n userContext: {\n profile: any\n removeProfile: () => void\n isLoadingProfile: boolean\n creditInfo: any\n customer: any\n customerLoading: boolean\n fetchCreditInfo: () => void\n apiBaseUrl?: string\n }\n registrationContext: {\n openSignUpPopup: () => void\n openSignInPopup: () => void\n }\n gtm: {\n pageGroup: string\n pageHandle?: string\n }\n cartConfig?: {\n addToCart: (params: {\n variantList: Array<{\n variant: any\n quantity: number\n attributes?: Array<{ key: string; value: string }>\n }>\n cartAttributes?: Record<string, string>\n discountCodes?: string[]\n }) => void | Promise<any>\n }\n}\n\nexport type CreditsContentProps = {\n headlessConfig: HeadlessConfig\n pageConfig: CreditsTemplateProps['pageConfig']\n userContext: CreditsTemplateProps['userContext']\n}\n"],
4
+ "sourcesContent": ["import { HeadlessConfig } from '@anker-in/lib'\nimport { DTC_TASK_TYPE } from '../components/credits/context/const'\nimport { CreditsPageCommon } from '../components/credits/type'\nimport { FunctionMemberPriceConfig } from '../components/credits/context/memberPriceTypes'\nimport { AuthCodeActivateCopy } from 'src/components/registration/authCodeActivate/type'\nimport type { CreditsBannerCopy } from '../components/credits/creditsBanner'\nimport type { CreditsInfoCardCopy } from '../components/credits/creditsInfoCard'\nimport type { CreditsBenefitsCopy } from '../components/credits/creditsBenefits'\nimport type { CreditsWaysToGetCreditsCopy } from '../components/credits/creditsWaysToGetCredits'\nimport type { CreditsAnkersolixTaskCopy } from '../components/credits/creditsAnkersolixTask'\nimport type { CreditsRedeemListCopy } from '../components/credits/creditsRedeemList'\nimport type { CreditsGoGiftCopy } from '../components/credits/creditsGoGift'\nimport type { CreditsCashCopy } from '../components/credits/creditsCash'\nimport type { CreditsMemberPriceCopy } from '../components/credits/creditsMemberPrice'\nimport type { CreditsFaqCopy } from '../components/credits/creditsFaq'\nimport type { CreditsNavigationCopy } from '../components/credits/creditsNavigation'\n\n// Re-export copy types for convenience\nexport type {\n CreditsBannerCopy,\n CreditsInfoCardCopy,\n CreditsBenefitsCopy,\n CreditsWaysToGetCreditsCopy,\n CreditsAnkersolixTaskCopy,\n CreditsRedeemListCopy,\n CreditsGoGiftCopy,\n CreditsCashCopy,\n CreditsMemberPriceCopy,\n CreditsFaqCopy,\n CreditsNavigationCopy,\n}\n\nexport enum ComponentKey {\n Navigation = 'creditsNavigation',\n Banner = 'creditsBanner',\n InfoCard = 'creditsInfoCard',\n Benefits = 'creditsBenefits',\n WaysToGetCredits = 'creditsWaysToGetCredits',\n AnkersolixTask = 'creditsAnkersolixTask',\n RedeemList = 'creditsRedeemList',\n GoGift = 'creditsGoGift',\n SpendCreditsLikeCash = 'creditsCash',\n MemberPrice = 'creditsMemberPrice',\n Faqs = 'creditsFaq',\n}\n\nexport type CreditsTemplateProps = {\n headlessConfig: HeadlessConfig\n siteConfig: {\n registrationsSettings: {\n authCodeActivate: AuthCodeActivateCopy\n }\n taskIdToTypeMapping: Record<string, DTC_TASK_TYPE>\n memberPriceDiscount?: FunctionMemberPriceConfig[]\n taskNameMapping?: Record<string, string>\n }\n creditsConfig?: {\n alpcBrand?: string\n alpcCountry?: string\n }\n pageConfig: {\n order: ComponentKey[]\n common: CreditsPageCommon\n components: {\n [ComponentKey.Navigation]?: CreditsNavigationCopy\n [ComponentKey.Banner]?: CreditsBannerCopy\n [ComponentKey.InfoCard]?: CreditsInfoCardCopy\n [ComponentKey.Benefits]?: CreditsBenefitsCopy\n [ComponentKey.WaysToGetCredits]?: CreditsWaysToGetCreditsCopy\n [ComponentKey.AnkersolixTask]?: CreditsAnkersolixTaskCopy\n [ComponentKey.RedeemList]?: CreditsRedeemListCopy\n [ComponentKey.GoGift]?: CreditsGoGiftCopy\n [ComponentKey.SpendCreditsLikeCash]?: CreditsCashCopy\n [ComponentKey.MemberPrice]?: CreditsMemberPriceCopy\n [ComponentKey.Faqs]?: CreditsFaqCopy\n }\n }\n userContext: {\n profile: any\n removeProfile: () => void\n isLoadingProfile: boolean\n creditInfo: any\n customer: any\n customerLoading: boolean\n fetchCreditInfo: () => void\n apiBaseUrl?: string\n }\n registrationContext: {\n openSignUpPopup: () => void\n openSignInPopup: () => void\n }\n gtm: {\n pageGroup: string\n pageHandle?: string\n }\n cartConfig?: {\n addToCart: (params: {\n variantList: Array<{\n variant: any\n quantity: number\n attributes?: Array<{ key: string; value: string }>\n }>\n cartAttributes?: Record<string, string>\n discountCodes?: string[]\n }) => void | Promise<any>\n }\n}\n\nexport type CreditsContentProps = {\n headlessConfig: HeadlessConfig\n pageConfig: CreditsTemplateProps['pageConfig']\n userContext: CreditsTemplateProps['userContext']\n}\n"],
5
5
  "mappings": "yaAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,kBAAAE,IAAA,eAAAC,EAAAH,GAgCO,IAAKE,OACVA,EAAA,WAAa,oBACbA,EAAA,OAAS,gBACTA,EAAA,SAAW,kBACXA,EAAA,SAAW,kBACXA,EAAA,iBAAmB,0BACnBA,EAAA,eAAiB,wBACjBA,EAAA,WAAa,oBACbA,EAAA,OAAS,gBACTA,EAAA,qBAAuB,cACvBA,EAAA,YAAc,qBACdA,EAAA,KAAO,aAXGA,OAAA",
6
6
  "names": ["Credits_types_exports", "__export", "ComponentKey", "__toCommonJS"]
7
7
  }
@@ -8,7 +8,7 @@ type Context = {
8
8
  isLoadingProfile: boolean;
9
9
  removeProfile: () => void;
10
10
  taskIdToTypeMapping: Record<string, DTC_TASK_TYPE>;
11
- taskNameMapping: Record<string, string>;
11
+ taskNameMapping?: Record<string, string>;
12
12
  openSignInPopup: () => void;
13
13
  openSignUpPopup: () => void;
14
14
  creditInfo?: CreditInfoResponse;
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../../src/components/credits/context/provider.tsx"],
4
- "sourcesContent": ["import { createContext, PropsWithChildren, useContext, useState } from 'react'\nimport type { DTC_TASK_TYPE } from './const'\nimport type { CreditInfoResponse } from './response'\nimport { CreditsPageCommon } from '../type'\nimport { FunctionMemberPriceConfig } from './memberPriceTypes'\n\ntype Context = {\n profile: any\n isLoadingProfile: boolean\n removeProfile: () => void\n taskIdToTypeMapping: Record<string, DTC_TASK_TYPE>\n taskNameMapping: Record<string, string>\n openSignInPopup: () => void\n openSignUpPopup: () => void\n creditInfo?: CreditInfoResponse\n customer?: any\n customerLoading: boolean\n fetchCreditInfo: (user_id: string) => void\n gtm: {\n pageGroup: string\n pageHandle?: string\n }\n pageCommon: CreditsPageCommon\n memberPriceDiscount?: FunctionMemberPriceConfig[]\n alpcBrand?: string\n alpcCountry?: string\n cartConfig?: {\n addToCart: (params: {\n variantList: Array<{\n variant: any\n quantity: number\n attributes?: Array<{ key: string; value: string }>\n }>\n cartAttributes?: Record<string, string>\n discountCodes?: string[]\n }) => void | Promise<any>\n }\n openMyRewardsModal: boolean\n setOpenMyRewardsModal: (open: boolean) => void\n openActivitiesModal: boolean\n setOpenActivitiesModal: (open: boolean) => void\n apiBaseUrl?: string\n}\n\nexport const CreditsContext = createContext<Context>({\n profile: null,\n isLoadingProfile: false,\n taskIdToTypeMapping: {},\n taskNameMapping: {},\n removeProfile: () => {},\n openSignInPopup: () => {},\n openSignUpPopup: () => {},\n creditInfo: undefined,\n customerLoading: false,\n fetchCreditInfo: (user_id: string) => {},\n gtm: {\n pageGroup: '',\n pageHandle: '',\n },\n pageCommon: {},\n memberPriceDiscount: undefined,\n alpcBrand: undefined,\n alpcCountry: undefined,\n cartConfig: undefined,\n openMyRewardsModal: false,\n setOpenMyRewardsModal: () => {},\n openActivitiesModal: false,\n setOpenActivitiesModal: () => {},\n apiBaseUrl: undefined,\n})\n\nexport function CreditsProvider({\n children,\n profile,\n removeProfile,\n isLoadingProfile,\n openSignInPopup,\n openSignUpPopup,\n taskIdToTypeMapping,\n taskNameMapping,\n creditInfo,\n customer,\n customerLoading,\n fetchCreditInfo,\n gtm,\n pageCommon,\n memberPriceDiscount,\n alpcBrand,\n alpcCountry,\n cartConfig,\n apiBaseUrl,\n}: PropsWithChildren<Omit<Context, 'openMyRewardsModal' | 'setOpenMyRewardsModal' | 'openActivitiesModal' | 'setOpenActivitiesModal'>>) {\n const [openMyRewardsModal, setOpenMyRewardsModal] = useState(false)\n const [openActivitiesModal, setOpenActivitiesModal] = useState(false)\n\n return (\n <CreditsContext.Provider\n value={{\n profile,\n isLoadingProfile,\n removeProfile,\n openSignInPopup,\n openSignUpPopup,\n taskIdToTypeMapping,\n taskNameMapping,\n creditInfo,\n fetchCreditInfo,\n customer,\n customerLoading,\n gtm,\n pageCommon,\n memberPriceDiscount,\n alpcBrand,\n alpcCountry,\n cartConfig,\n apiBaseUrl,\n openMyRewardsModal,\n setOpenMyRewardsModal,\n openActivitiesModal,\n setOpenActivitiesModal,\n }}\n >\n {children}\n </CreditsContext.Provider>\n )\n}\n\nexport function useCreditsContext() {\n const context = useContext(CreditsContext)\n if (!context) {\n throw new Error('useCreditsContext must be used within a CreditsProvider')\n }\n return context\n}\n"],
4
+ "sourcesContent": ["import { createContext, PropsWithChildren, useContext, useState } from 'react'\nimport type { DTC_TASK_TYPE } from './const'\nimport type { CreditInfoResponse } from './response'\nimport { CreditsPageCommon } from '../type'\nimport { FunctionMemberPriceConfig } from './memberPriceTypes'\n\ntype Context = {\n profile: any\n isLoadingProfile: boolean\n removeProfile: () => void\n taskIdToTypeMapping: Record<string, DTC_TASK_TYPE>\n taskNameMapping?: Record<string, string>\n openSignInPopup: () => void\n openSignUpPopup: () => void\n creditInfo?: CreditInfoResponse\n customer?: any\n customerLoading: boolean\n fetchCreditInfo: (user_id: string) => void\n gtm: {\n pageGroup: string\n pageHandle?: string\n }\n pageCommon: CreditsPageCommon\n memberPriceDiscount?: FunctionMemberPriceConfig[]\n alpcBrand?: string\n alpcCountry?: string\n cartConfig?: {\n addToCart: (params: {\n variantList: Array<{\n variant: any\n quantity: number\n attributes?: Array<{ key: string; value: string }>\n }>\n cartAttributes?: Record<string, string>\n discountCodes?: string[]\n }) => void | Promise<any>\n }\n openMyRewardsModal: boolean\n setOpenMyRewardsModal: (open: boolean) => void\n openActivitiesModal: boolean\n setOpenActivitiesModal: (open: boolean) => void\n apiBaseUrl?: string\n}\n\nexport const CreditsContext = createContext<Context>({\n profile: null,\n isLoadingProfile: false,\n taskIdToTypeMapping: {},\n taskNameMapping: {},\n removeProfile: () => {},\n openSignInPopup: () => {},\n openSignUpPopup: () => {},\n creditInfo: undefined,\n customerLoading: false,\n fetchCreditInfo: (user_id: string) => {},\n gtm: {\n pageGroup: '',\n pageHandle: '',\n },\n pageCommon: {},\n memberPriceDiscount: undefined,\n alpcBrand: undefined,\n alpcCountry: undefined,\n cartConfig: undefined,\n openMyRewardsModal: false,\n setOpenMyRewardsModal: () => {},\n openActivitiesModal: false,\n setOpenActivitiesModal: () => {},\n apiBaseUrl: undefined,\n})\n\nexport function CreditsProvider({\n children,\n profile,\n removeProfile,\n isLoadingProfile,\n openSignInPopup,\n openSignUpPopup,\n taskIdToTypeMapping,\n taskNameMapping,\n creditInfo,\n customer,\n customerLoading,\n fetchCreditInfo,\n gtm,\n pageCommon,\n memberPriceDiscount,\n alpcBrand,\n alpcCountry,\n cartConfig,\n apiBaseUrl,\n}: PropsWithChildren<Omit<Context, 'openMyRewardsModal' | 'setOpenMyRewardsModal' | 'openActivitiesModal' | 'setOpenActivitiesModal'>>) {\n const [openMyRewardsModal, setOpenMyRewardsModal] = useState(false)\n const [openActivitiesModal, setOpenActivitiesModal] = useState(false)\n\n return (\n <CreditsContext.Provider\n value={{\n profile,\n isLoadingProfile,\n removeProfile,\n openSignInPopup,\n openSignUpPopup,\n taskIdToTypeMapping,\n taskNameMapping,\n creditInfo,\n fetchCreditInfo,\n customer,\n customerLoading,\n gtm,\n pageCommon,\n memberPriceDiscount,\n alpcBrand,\n alpcCountry,\n cartConfig,\n apiBaseUrl,\n openMyRewardsModal,\n setOpenMyRewardsModal,\n openActivitiesModal,\n setOpenActivitiesModal,\n }}\n >\n {children}\n </CreditsContext.Provider>\n )\n}\n\nexport function useCreditsContext() {\n const context = useContext(CreditsContext)\n if (!context) {\n throw new Error('useCreditsContext must be used within a CreditsProvider')\n }\n return context\n}\n"],
5
5
  "mappings": "AAgGI,cAAAA,MAAA,oBAhGJ,OAAS,iBAAAC,EAAkC,cAAAC,EAAY,YAAAC,MAAgB,QA4ChE,MAAMC,EAAiBH,EAAuB,CACnD,QAAS,KACT,iBAAkB,GAClB,oBAAqB,CAAC,EACtB,gBAAiB,CAAC,EAClB,cAAe,IAAM,CAAC,EACtB,gBAAiB,IAAM,CAAC,EACxB,gBAAiB,IAAM,CAAC,EACxB,WAAY,OACZ,gBAAiB,GACjB,gBAAkBI,GAAoB,CAAC,EACvC,IAAK,CACH,UAAW,GACX,WAAY,EACd,EACA,WAAY,CAAC,EACb,oBAAqB,OACrB,UAAW,OACX,YAAa,OACb,WAAY,OACZ,mBAAoB,GACpB,sBAAuB,IAAM,CAAC,EAC9B,oBAAqB,GACrB,uBAAwB,IAAM,CAAC,EAC/B,WAAY,MACd,CAAC,EAEM,SAASC,EAAgB,CAC9B,SAAAC,EACA,QAAAC,EACA,cAAAC,EACA,iBAAAC,EACA,gBAAAC,EACA,gBAAAC,EACA,oBAAAC,EACA,gBAAAC,EACA,WAAAC,EACA,SAAAC,EACA,gBAAAC,EACA,gBAAAC,EACA,IAAAC,EACA,WAAAC,EACA,oBAAAC,EACA,UAAAC,EACA,YAAAC,EACA,WAAAC,EACA,WAAAC,CACF,EAAwI,CACtI,KAAM,CAACC,EAAoBC,CAAqB,EAAIxB,EAAS,EAAK,EAC5D,CAACyB,EAAqBC,CAAsB,EAAI1B,EAAS,EAAK,EAEpE,OACEH,EAACI,EAAe,SAAf,CACC,MAAO,CACL,QAAAI,EACA,iBAAAE,EACA,cAAAD,EACA,gBAAAE,EACA,gBAAAC,EACA,oBAAAC,EACA,gBAAAC,EACA,WAAAC,EACA,gBAAAG,EACA,SAAAF,EACA,gBAAAC,EACA,IAAAE,EACA,WAAAC,EACA,oBAAAC,EACA,UAAAC,EACA,YAAAC,EACA,WAAAC,EACA,WAAAC,EACA,mBAAAC,EACA,sBAAAC,EACA,oBAAAC,EACA,uBAAAC,CACF,EAEC,SAAAtB,EACH,CAEJ,CAEO,SAASuB,GAAoB,CAClC,MAAMC,EAAU7B,EAAWE,CAAc,EACzC,GAAI,CAAC2B,EACH,MAAM,IAAI,MAAM,yDAAyD,EAE3E,OAAOA,CACT",
6
6
  "names": ["jsx", "createContext", "useContext", "useState", "CreditsContext", "user_id", "CreditsProvider", "children", "profile", "removeProfile", "isLoadingProfile", "openSignInPopup", "openSignUpPopup", "taskIdToTypeMapping", "taskNameMapping", "creditInfo", "customer", "customerLoading", "fetchCreditInfo", "gtm", "pageCommon", "memberPriceDiscount", "alpcBrand", "alpcCountry", "cartConfig", "apiBaseUrl", "openMyRewardsModal", "setOpenMyRewardsModal", "openActivitiesModal", "setOpenActivitiesModal", "useCreditsContext", "context"]
7
7
  }
@@ -0,0 +1,2 @@
1
+ import{Fragment as M,jsx as p,jsxs as r}from"react/jsx-runtime";import{useCallback as h,useMemo as u,useState as R}from"react";import{useCreditsContext as E}from"../context/provider";import{CreditType as a,DTC_TASK_TYPE as g,TaskSubType as n,TaskType as Y}from"../context/const";import w from"../context/hooks/useActivities";import{CreditsModalContainer as B}from"./ModalContainer";import{classNames as y,useHeadlessContext as z}from"@anker-in/lib";import{Tabs as I,TabsContent as O,TabsList as V,TabsTrigger as j}from"@anker-in/headless-ui";import F from"./LoadingDots";import{Picture as H,Text as _}from"@anker-in/headless-ui";import{ROUNDED_BRANDS as q}from"../../../constants";import A from"dayjs";function K({data:e,...m}){const[c,C]=R(1),{taskIdToTypeMapping:T,taskNameMapping:x}=E(),{brand:P}=z(),k=q.includes(P),S=u(()=>({page:m.isOpen?c:0,pageSize:1e3}),[m.isOpen,c]),f=u(()=>{const t=[{title:e.allTab,type:a.All},{title:e.earnedTab,type:a.Earned},{title:e.deductedTab,type:a.Deducted}];return e.expiredTab&&t.push({title:e.expiredTab,type:a.Expired}),t},[e]),{activities:v=[],canNext:b,isLoading:N}=w(S),o=u(()=>{const t={[n.Activation]:e.activationTask,[n.UpdateName]:e.updateNameTask,[n.UpdatePhone]:e.updatePhoneTask,[n.UpdateBirthday]:e.updateBirthdayTask,[n.Subscription]:e.subscriptionTask,[n.UpadteAppName]:e.updateAppNameTask,[n.Refund]:e.refundTask,[n.ProductUnApproved]:e.productUnApprovedTask},s={[g.FirstPurchase]:e.firstPurchaseTask,[g.UploadReceipt]:e.uploadReceiptTask,[g.Shopping]:e.shoppingTask};function d(i){return x?.[i.task_name]?x?.[i.task_name]:i.task_type===Y.Redeem&&i.task_sub_type===n.ProductUnApproved&&e.productUnApprovedTask?i.task_name.replace("Refund",e.productUnApprovedTask):T?.[String(i.task_rule_id)]?s[T?.[String(i.task_rule_id)]]||i.task_name:t[i.task_sub_type]||i.task_name}return v.map(i=>({title:d(i),date:new Date(i.create_time*1e3),value:i.credit,type:i.credit_type,pending_time:i.pending_time,credit_type:i.credit_type,status:i.status}))},[e.activationTask,e.updateNameTask,e.updatePhoneTask,e.updateBirthdayTask,e.subscriptionTask,e.updateAppNameTask,e.refundTask,e.productUnApprovedTask,e.firstPurchaseTask,e.uploadReceiptTask,e.shoppingTask,v,T]),l=h(t=>{let{value:s,...d}=t;return t.type===a.Deducted&&s>0&&(s=-s),{value:s,...d}},[]),D=u(()=>{const t=new Map;return t.set(a.All,o.map(l)),t.set(a.Earned,o.filter(s=>s.type===1).map(l)),t.set(a.Deducted,o.filter(s=>s.type===2&&s.status!==3).map(l)),t.set(a.Expired,o.filter(s=>s.type===2&&s.status===3).map(l)),t},[o,l]),L=h(()=>{b&&C(c+1)},[c,b]),U=t=>r(M,{children:[r("div",{className:"grid gap-[18px] md:gap-[12px]",children:[N&&p("div",{className:"flex flex-1 flex-col items-center justify-center",children:p(F,{})}),!N&&p(M,{children:t.length>0?t.map((s,d)=>r("div",{className:y("flex h-fit items-center justify-between rounded-[8px] bg-[#f2f0f1] px-[16px] py-[20px] text-[16px]",!k&&"rounded-none"),children:[r("div",{className:"grid gap-[6px]",children:[p("div",{className:"font-bold",children:s.title}),p("div",{className:"text-[14px] font-semibold text-[#999]",children:A(s.date).format("YYYY-MM-DD HH:mm").toString()}),!e.pendingTips&&r("div",{className:`hidden text-[14px] font-semibold text-[#777] ${s.status===2&&s.credit_type===1?"!flex":""}`,children:[p(_,{html:e.pendingTips}),p("span",{children:A.unix(s.pending_time).add(1,"day").format("YYYY-MM-DD")}),e.pendingTips2&&p(_,{html:e.pendingTips2})]})]}),r("div",{className:y("font-bold",s.value>=0||s.credit_type===a.Expired?"text-[#52C41A]":"text-[#F84D4F]"),children:[s.value>=0&&"+",s.value]})]},d)):r("div",{className:"flex flex-col items-center justify-center py-[40px]",children:[p(H,{className:"mb-[16px] h-[120px] w-[160px]",source:e?.emptyListImage?.url,alt:e?.emptyListImage?.alt||"empty list image"}),p("div",{className:"leading-1.4 text-[16px] font-semibold",children:e?.emptyListLabel})]})})]}),t.length>0&&p("div",{className:"mt-[12px] pb-[24px] text-[14px] font-semibold text-[#999]",children:e.tips})]});return p(B,{title:e.title,className:y("h-[800px] w-[640px]"),useAnimation:!0,animationClassName:"md:translate-y-[100vh]",scrollClassName:"flex flex-col",...m,onScrollEnd:L,children:r(I,{align:"left",shape:k?"rounded":"square",defaultValue:f[0]?.type?.toString(),className:"flex-1 flex flex-col",children:[p("div",{className:"w-full sticky top-0 bg-white z-10 pb-[24px] overflow-x-auto",children:p(V,{children:f.map(t=>p(j,{value:t.type.toString(),children:t.title},t.type))})}),f.map(t=>p(O,{value:t.type.toString(),className:"flex-1 flex flex-col",children:U(D.get(t.type)||[])},t.type))]})})}var pe=K;export{pe as default};
2
+ //# sourceMappingURL=ActivitiesModal.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../../src/components/credits/modal/ActivitiesModal.tsx"],
4
+ "sourcesContent": ["import { useCallback, useMemo, useState } from 'react'\nimport { useCreditsContext } from '../context/provider'\nimport { CreditType, DTC_TASK_TYPE, TaskSubType, TaskType } from '../context/const'\nimport useActivities from '../context/hooks/useActivities'\nimport type { Task } from '../context/response'\nimport { CreditsModalContainer, type ModalContainerProps } from './ModalContainer'\nimport { classNames as cn, useHeadlessContext } from '@anker-in/lib'\nimport { Tabs, TabsContent, TabsList, TabsTrigger } from '@anker-in/headless-ui'\nimport LoadingDots from './LoadingDots'\nimport { Picture, Text } from '@anker-in/headless-ui'\nimport { ROUNDED_BRANDS } from '../../../constants'\nimport dayjs from 'dayjs'\n\nexport interface MyActivitiesMetafields {\n title: string\n tips: string\n allTab: string\n earnedTab: string\n deductedTab: string\n expiredTab: string\n activationTask: string\n updateNameTask: string\n updatePhoneTask: string\n updateBirthdayTask: string\n updateAppNameTask: string\n subscriptionTask: string\n refundTask: string\n productUnApprovedTask: string\n pendingTips?: string\n pendingTips2?: string\n firstPurchaseTask: string\n uploadReceiptTask: string\n shoppingTask: string\n emptyListImage: {\n url: string\n alt?: string\n }\n emptyListLabel: string\n}\n\ninterface ActivitiesModalProps extends ModalContainerProps {\n data: MyActivitiesMetafields\n}\n\nfunction ActivitiesModal({ data, ...props }: ActivitiesModalProps) {\n const [page, setPage] = useState(1)\n const { taskIdToTypeMapping, taskNameMapping } = useCreditsContext()\n const { brand } = useHeadlessContext()\n const rounded = ROUNDED_BRANDS.includes(brand)\n\n const myActivitiesOptions = useMemo(() => {\n return {\n page: props.isOpen ? page : 0,\n pageSize: 1000,\n }\n }, [props.isOpen, page])\n\n const tabs = useMemo(() => {\n const tabs = [\n {\n title: data.allTab,\n type: CreditType.All,\n },\n {\n title: data.earnedTab,\n type: CreditType.Earned,\n },\n {\n title: data.deductedTab,\n type: CreditType.Deducted,\n },\n ]\n if (data.expiredTab) {\n tabs.push({\n title: data.expiredTab,\n type: CreditType.Expired,\n })\n }\n return tabs\n }, [data])\n\n const { activities = [], canNext, isLoading } = useActivities(myActivitiesOptions)\n\n const allList = useMemo(() => {\n const taskNameMap = {\n [TaskSubType.Activation]: data.activationTask,\n [TaskSubType.UpdateName]: data.updateNameTask,\n [TaskSubType.UpdatePhone]: data.updatePhoneTask,\n [TaskSubType.UpdateBirthday]: data.updateBirthdayTask,\n [TaskSubType.Subscription]: data.subscriptionTask,\n [TaskSubType.UpadteAppName]: data.updateAppNameTask,\n [TaskSubType.Refund]: data.refundTask,\n [TaskSubType.ProductUnApproved]: data.productUnApprovedTask,\n }\n const dtcTaskTypeToNameMap = {\n [DTC_TASK_TYPE.FirstPurchase]: data.firstPurchaseTask,\n [DTC_TASK_TYPE.UploadReceipt]: data.uploadReceiptTask,\n [DTC_TASK_TYPE.Shopping]: data.shoppingTask,\n }\n\n function getTitle(item: Task) {\n if (taskNameMapping?.[item.task_name]) {\n return taskNameMapping?.[item.task_name]\n }\n\n if (\n item.task_type === TaskType.Redeem &&\n item.task_sub_type === TaskSubType.ProductUnApproved &&\n data.productUnApprovedTask\n ) {\n // \u65B0\u589E\u7684\u90E8\u5206\u4EFB\u52A1\u90FD\u4F7F\u7528\u4E86 alpc \u540C\u4E00\u4E2A\u4EFB\u52A1\u7C7B\u578B\uFF0C\u9700\u8981\u7528\u4EFB\u52A1 id \u6765\u533A\u5206\n return item.task_name.replace('Refund', data.productUnApprovedTask)\n } else if (taskIdToTypeMapping?.[String(item.task_rule_id)]) {\n return dtcTaskTypeToNameMap[taskIdToTypeMapping?.[String(item.task_rule_id)]] || item.task_name\n } else {\n return taskNameMap[item.task_sub_type] || item.task_name\n }\n }\n\n return activities.map(item => ({\n title: getTitle(item),\n date: new Date(item.create_time * 1000),\n value: item.credit,\n type: item.credit_type,\n pending_time: item.pending_time,\n credit_type: item.credit_type,\n status: item.status,\n }))\n }, [\n data.activationTask,\n data.updateNameTask,\n data.updatePhoneTask,\n data.updateBirthdayTask,\n data.subscriptionTask,\n data.updateAppNameTask,\n data.refundTask,\n data.productUnApprovedTask,\n data.firstPurchaseTask,\n data.uploadReceiptTask,\n data.shoppingTask,\n activities,\n taskIdToTypeMapping,\n ])\n\n const normalizeValue = useCallback((item: (typeof allList)[number]) => {\n let { value, ...otherItem } = item\n if (item.type === CreditType.Deducted && value > 0) {\n value = -value\n }\n return { value, ...otherItem }\n }, [])\n\n // \u6309 tab \u7C7B\u578B\u9884\u8BA1\u7B97\u5217\u8868\uFF0C\u914D\u5408 TabsContent \u58F0\u660E\u5F0F\u6E32\u67D3\uFF0C\u907F\u514D\u624B\u52A8 activeTab \u6570\u503C\u6BD4\u8F83\n const listByTab = useMemo(() => {\n const map = new Map<CreditType, ReturnType<typeof normalizeValue>[]>()\n map.set(CreditType.All, allList.map(normalizeValue))\n map.set(CreditType.Earned, allList.filter(item => item.type === 1).map(normalizeValue))\n map.set(CreditType.Deducted, allList.filter(item => item.type === 2 && item.status !== 3).map(normalizeValue))\n map.set(CreditType.Expired, allList.filter(item => item.type === 2 && item.status === 3).map(normalizeValue))\n return map\n }, [allList, normalizeValue])\n\n const handleScrollEnd = useCallback(() => {\n if (!canNext) {\n return\n }\n setPage(page + 1)\n }, [page, canNext])\n\n const renderList = (list: ReturnType<typeof normalizeValue>[]) => (\n <>\n <div className=\"grid gap-[18px] md:gap-[12px]\">\n {isLoading && (\n <div className=\"flex flex-1 flex-col items-center justify-center\">\n <LoadingDots />\n </div>\n )}\n\n {!isLoading && (\n <>\n {list.length > 0 ? (\n list.map((item, index) => (\n <div\n key={index}\n className={cn(\n 'flex h-fit items-center justify-between rounded-[8px] bg-[#f2f0f1] px-[16px] py-[20px] text-[16px]',\n !rounded && 'rounded-none'\n )}\n >\n <div className=\"grid gap-[6px]\">\n <div className=\"font-bold\">{item.title}</div>\n <div className=\"text-[14px] font-semibold text-[#999]\">\n {dayjs(item.date).format('YYYY-MM-DD HH:mm').toString()}\n </div>\n {!data.pendingTips && (\n <div\n className={`hidden text-[14px] font-semibold text-[#777] ${item.status === 2 && item.credit_type === 1 ? '!flex' : ''}`}\n >\n <Text html={data.pendingTips} />\n <span>{dayjs.unix(item.pending_time).add(1, 'day').format('YYYY-MM-DD')}</span>\n {data.pendingTips2 && <Text html={data.pendingTips2} />}\n </div>\n )}\n </div>\n <div\n className={cn(\n 'font-bold',\n item.value >= 0 || item.credit_type === CreditType.Expired ? 'text-[#52C41A]' : 'text-[#F84D4F]'\n )}\n >\n {item.value >= 0 && '+'}\n {item.value}\n </div>\n </div>\n ))\n ) : (\n <div className=\"flex flex-col items-center justify-center py-[40px]\">\n <Picture\n className=\"mb-[16px] h-[120px] w-[160px]\"\n source={data?.emptyListImage?.url}\n alt={data?.emptyListImage?.alt || 'empty list image'}\n ></Picture>\n <div className=\"leading-1.4 text-[16px] font-semibold\">{data?.emptyListLabel}</div>\n </div>\n )}\n </>\n )}\n </div>\n {/* \u79EF\u5206\u5230\u8D26\u65F6\u95F4\u63D0\u9192 */}\n {list.length > 0 && <div className=\"mt-[12px] pb-[24px] text-[14px] font-semibold text-[#999]\">{data.tips}</div>}\n </>\n )\n\n return (\n <CreditsModalContainer\n title={data.title}\n className={cn('h-[800px] w-[640px]')}\n useAnimation\n animationClassName=\"md:translate-y-[100vh]\"\n scrollClassName=\"flex flex-col\"\n {...props}\n onScrollEnd={handleScrollEnd}\n >\n <Tabs\n align=\"left\"\n shape={rounded ? 'rounded' : 'square'}\n defaultValue={tabs[0]?.type?.toString()}\n className=\"flex-1 flex flex-col\"\n >\n <div className=\"w-full sticky top-0 bg-white z-10 pb-[24px] overflow-x-auto\">\n <TabsList>\n {tabs.map(tab => (\n <TabsTrigger key={tab.type} value={tab.type.toString()}>\n {tab.title}\n </TabsTrigger>\n ))}\n </TabsList>\n </div>\n\n {tabs.map(tab => (\n <TabsContent key={tab.type} value={tab.type.toString()} className=\"flex-1 flex flex-col\">\n {renderList(listByTab.get(tab.type) || [])}\n </TabsContent>\n ))}\n </Tabs>\n </CreditsModalContainer>\n )\n}\n\nexport default ActivitiesModal\n"],
5
+ "mappings": "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",
6
+ "names": ["Fragment", "jsx", "jsxs", "useCallback", "useMemo", "useState", "useCreditsContext", "CreditType", "DTC_TASK_TYPE", "TaskSubType", "TaskType", "useActivities", "CreditsModalContainer", "cn", "useHeadlessContext", "Tabs", "TabsContent", "TabsList", "TabsTrigger", "LoadingDots", "Picture", "Text", "ROUNDED_BRANDS", "dayjs", "ActivitiesModal", "data", "props", "page", "setPage", "taskIdToTypeMapping", "taskNameMapping", "brand", "rounded", "myActivitiesOptions", "tabs", "activities", "canNext", "isLoading", "allList", "taskNameMap", "dtcTaskTypeToNameMap", "getTitle", "item", "normalizeValue", "value", "otherItem", "listByTab", "map", "handleScrollEnd", "renderList", "list", "index", "tab", "ActivitiesModal_default"]
7
+ }
@@ -1,2 +1,2 @@
1
- import{Fragment as Q,jsx as l,jsxs as n}from"react/jsx-runtime";import{Tabs as j,TabsContent as E,TabsList as U,TabsTrigger as I,Picture as Y}from"@anker-in/headless-ui";import u from"classnames";import H from"copy-to-clipboard";import O from"dayjs";import{useCallback as c,useEffect as N,useMemo as a,useState as f}from"react";import{ApprovalStatus as g,AlpcConsumeType as s,RewardType as e}from"../context/const";import{CreditsModalContainer as $}from"./ModalContainer";import q from"./Tip";import z from"./LoadingDots";import B from"../context/hooks/useMyRewards";import{useHeadlessContext as K}from"@anker-in/lib";import{ROUNDED_BRANDS as V}from"../../../constants";function J({data:t,...P}){const[r,b]=f(s.Coupon),{brand:R}=K(),m=V.includes(R),[F,v]=f(1),[A,x]=f(-1),p=a(()=>[{title:t.couponTab,type:s.Coupon},{title:t.productTab,type:s.Product},{title:t.externalProductTab,type:s.ExternalProduct}].filter(i=>!!i.title),[t.couponTab,t.productTab,t.externalProductTab]);N(()=>{p.length&&!p.some(i=>i.type===r)&&b(p[0].type)},[p,r]),N(()=>{v(1)},[r]);const{myRewards:C=[],canNext:y,isLoading:G}=B({page:F,pageSize:1e3,consumeType:r}),S=c(i=>i.fulfillment_status&&i.fulfillment_status!=="null"?i.fulfillment_status==="fulfilled"?e.Fulfilled:e.Unfulfilled:i.approval_status===g.Success||i.approval_status===g.DoubleConfirm?e.ApproveSuccess:i.approval_status===g.Failed?e.Failed:e.Pending,[]),T=c(i=>{const o={0:e.GogiftPending,1:e.GogiftApproved,2:e.GogiftSecondConfirm,3:e.GogiftRejected,4:e.GogiftCallbackPending,5:e.GogiftCallbackSuccess,6:e.GogiftCallbackTimeout};return i!==void 0?o[i]??e.GogiftPending:e.GogiftPending},[]),k=a(()=>C.map(i=>{const o={title:i.goods_title,value:i.consume_credits,date:new Date(i.create_time*1e3)};return r===s.Coupon?{...o,type:e.Received,couponCode:i.coupon_code,orderNumber:"",link:""}:r===s.Product?{...o,type:S(i),orderNumber:i.order_number,couponCode:"",link:""}:r===s.ExternalProduct?{...o,type:T(i.approval_status),orderNumber:"",couponCode:"",link:i.link||""}:{...o,type:e.Received,couponCode:"",orderNumber:"",link:""}}),[r,C,S,T]),w=a(()=>({[e.Received]:t.receivedLabel,[e.Pending]:t.pendingLabel,[e.ApproveFail]:t.failedLabel,[e.ApproveSuccess]:t.approveSuccessLabel,[e.Unfulfilled]:t.unfulfilledLabel,[e.Fulfilled]:t.fulfilledLabel,[e.Failed]:t.failedLabel,[e.GogiftPending]:t.goGiftStatus?.pending?.label||t.pendingLabel,[e.GogiftApproved]:t.goGiftStatus?.approved?.label||t.approveSuccessLabel,[e.GogiftSecondConfirm]:t.goGiftStatus?.secondConfirm?.label||t.approveSuccessLabel,[e.GogiftRejected]:t.goGiftStatus?.rejected?.label||t.failedLabel,[e.GogiftCallbackPending]:t.goGiftStatus?.callbackPending?.label||t.pendingLabel,[e.GogiftCallbackSuccess]:t.goGiftStatus?.callbackSuccess?.label||t.receivedLabel,[e.GogiftCallbackTimeout]:t.goGiftStatus?.callbackTimeout?.label||t.failedLabel}),[t]),L=a(()=>({[e.Received]:"",[e.Pending]:t.pendingTip,[e.ApproveFail]:"",[e.ApproveSuccess]:t.confirmedTip,[e.Unfulfilled]:t.processingTip,[e.Fulfilled]:t.ShippedTip,[e.Failed]:"",[e.GogiftPending]:t.goGiftStatus?.pending?.tip||"",[e.GogiftApproved]:t.goGiftStatus?.approved?.tip||"",[e.GogiftSecondConfirm]:t.goGiftStatus?.secondConfirm?.tip||"",[e.GogiftRejected]:t.goGiftStatus?.rejected?.tip||"",[e.GogiftCallbackPending]:t.goGiftStatus?.callbackPending?.tip||"",[e.GogiftCallbackSuccess]:t.goGiftStatus?.callbackSuccess?.tip||"",[e.GogiftCallbackTimeout]:t.goGiftStatus?.callbackTimeout?.tip||""}),[t]),D=a(()=>({[e.Received]:"#52C41A",[e.Pending]:"#999",[e.ApproveFail]:"#F84D4F",[e.ApproveSuccess]:"#999",[e.Unfulfilled]:"#999",[e.Fulfilled]:"#999",[e.Failed]:"#F84D4F",[e.GogiftPending]:"#999",[e.GogiftApproved]:"#999",[e.GogiftSecondConfirm]:"#999",[e.GogiftRejected]:"#F84D4F",[e.GogiftCallbackPending]:"#999",[e.GogiftCallbackSuccess]:"#52C41A",[e.GogiftCallbackTimeout]:"#F84D4F"}),[]),M=c(()=>{y&&v(i=>i+1)},[y]),h=c((i,o)=>{x(o),H(i),setTimeout(()=>{x(-1)},2e3)},[]),_=()=>n(Q,{children:[G&&l("div",{className:"flex flex-1 flex-col items-center justify-center",children:l(z,{})}),!G&&l("div",{className:"mt-[24px] flex-1 overflow-auto overscroll-contain pb-[24px] md:pb-[48px]",children:k.length>0?l("div",{className:"grid gap-[18px] md:gap-[12px]",children:k.map((i,o)=>n("div",{className:"grid gap-[8px]",children:[i?.orderNumber&&n("div",{className:"text-[15px] font-semibold leading-[1.4] text-[#777]",children:[t.orderNumberLabel,": ",i.orderNumber]}),n("div",{className:u("flex items-center justify-between rounded-[8px] bg-[#f7f8f9] px-[16px] py-[20px]",!m&&"rounded-none"),children:[n("div",{className:"grid gap-[4px]",children:[l("div",{className:"text-[16px] font-bold leading-[1.4]",children:i.title}),n("div",{className:"text-[14px] font-semibold text-[#999]",children:[t.valueLabel,": ",i.value," ",t?.pointUnit]}),n("div",{className:"text-[14px] font-semibold text-[#999]",children:[i?.couponCode?`${t?.code||"Code"}: ${i.couponCode} `:"",i?.couponCode&&l("span",{className:"cursor-pointer text-[14px] font-semibold text-brand underline",onClick:()=>{h(i.couponCode,o)},role:"button",tabIndex:0,onKeyDown:d=>{(d.key==="Enter"||d.key===" ")&&d.preventDefault()},children:A===o?t?.copied||"COPIED":t?.copy||"COPY"})]}),i?.link&&l("div",{className:"text-[14px] font-semibold text-[#999]",children:l("a",{href:i.link,target:"_blank",rel:"noopener noreferrer",className:"text-brand underline",children:t?.redeemLinkLabel||"Redeem Link"})})]}),n("div",{className:"grid gap-[4px] text-right",children:[n("div",{className:u("flex items-center justify-end text-[16px] font-bold leading-[1.4]",`text-[${D[i.type]}]`),children:[l("span",{children:w[i.type]}),L[i.type]&&l(q,{info:L[i.type],index:o})]}),l("div",{className:"text-[14px] font-semibold text-[#999]",children:O(i.date).format("YYYY-MM-DD HH:mm").toString()})]})]})]},o))}):n("div",{className:"flex h-full flex-col items-center justify-center",children:[l(Y,{className:"mb-[12px] w-[160px]",source:t?.emptyListImage?.url,alt:t?.emptyListImage?.alt||"empty list image"}),l("div",{className:"text-[16px] font-semibold leading-[1.4]",children:t?.emptyListLabel})]})})]});return l($,{title:t.title,className:u("h-[800px] w-[640px]"),useAnimation:!0,animationClassName:"md:translate-y-[100vh]",scrollClassName:"md:mb-0 flex flex-col",...P,onScrollEnd:M,children:n(j,{align:"left",shape:m?"rounded":"square",value:r.toString(),onValueChange:i=>{b(Number(i))},className:"flex flex-1 flex-col",children:[l("div",{className:"shrink-0",children:l(U,{children:p.map(i=>l(I,{value:i.type.toString(),children:i.title},i.type))})}),p.map(i=>l(E,{value:i.type.toString(),className:"flex flex-1 flex-col",children:_()},i.type))]})})}var ae=J;export{ae as default};
1
+ import{Fragment as Q,jsx as l,jsxs as n}from"react/jsx-runtime";import{Tabs as j,TabsContent as E,TabsList as U,TabsTrigger as I,Picture as Y}from"@anker-in/headless-ui";import u from"classnames";import H from"copy-to-clipboard";import O from"dayjs";import{useCallback as c,useEffect as N,useMemo as a,useState as f}from"react";import{ApprovalStatus as g,AlpcConsumeType as s,RewardType as e}from"../context/const";import{CreditsModalContainer as $}from"./ModalContainer";import q from"./Tip";import z from"./LoadingDots";import B from"../context/hooks/useMyRewards";import{useHeadlessContext as K}from"@anker-in/lib";import{ROUNDED_BRANDS as V}from"../../../constants";function J({data:t,...P}){const[r,b]=f(s.Coupon),{brand:R}=K(),m=V.includes(R),[F,v]=f(1),[A,x]=f(-1),p=a(()=>[{title:t.couponTab,type:s.Coupon},{title:t.productTab,type:s.Product},{title:t.externalProductTab,type:s.ExternalProduct}].filter(i=>!!i.title),[t.couponTab,t.productTab,t.externalProductTab]);N(()=>{p.length&&!p.some(i=>i.type===r)&&b(p[0].type)},[p,r]),N(()=>{v(1)},[r]);const{myRewards:C=[],canNext:y,isLoading:G}=B({page:F,pageSize:1e3,consumeType:r}),S=c(i=>i.fulfillment_status&&i.fulfillment_status!=="null"?i.fulfillment_status==="fulfilled"?e.Fulfilled:e.Unfulfilled:i.approval_status===g.Success||i.approval_status===g.DoubleConfirm?e.ApproveSuccess:i.approval_status===g.Failed?e.Failed:e.Pending,[]),T=c(i=>{const o={0:e.GogiftPending,1:e.GogiftApproved,2:e.GogiftSecondConfirm,3:e.GogiftRejected,4:e.GogiftCallbackPending,5:e.GogiftCallbackSuccess,6:e.GogiftCallbackTimeout};return i!==void 0?o[i]??e.GogiftPending:e.GogiftPending},[]),k=a(()=>C.map(i=>{const o={title:i.goods_title,value:i.consume_credits,date:new Date(i.create_time*1e3)};return r===s.Coupon?{...o,type:e.Received,couponCode:i.coupon_code,orderNumber:"",link:""}:r===s.Product?{...o,type:S(i),orderNumber:i.order_number,couponCode:"",link:""}:r===s.ExternalProduct?{...o,type:T(i.approval_status),orderNumber:"",couponCode:"",link:i.link||""}:{...o,type:e.Received,couponCode:"",orderNumber:"",link:""}}),[r,C,S,T]),D=a(()=>({[e.Received]:t.receivedLabel,[e.Pending]:t.pendingLabel,[e.ApproveFail]:t.failedLabel,[e.ApproveSuccess]:t.approveSuccessLabel,[e.Unfulfilled]:t.unfulfilledLabel,[e.Fulfilled]:t.fulfilledLabel,[e.Failed]:t.failedLabel,[e.GogiftPending]:t.goGiftStatus?.pending?.label||t.pendingLabel,[e.GogiftApproved]:t.goGiftStatus?.approved?.label||t.approveSuccessLabel,[e.GogiftSecondConfirm]:t.goGiftStatus?.secondConfirm?.label||t.approveSuccessLabel,[e.GogiftRejected]:t.goGiftStatus?.rejected?.label||t.failedLabel,[e.GogiftCallbackPending]:t.goGiftStatus?.callbackPending?.label||t.pendingLabel,[e.GogiftCallbackSuccess]:t.goGiftStatus?.callbackSuccess?.label||t.receivedLabel,[e.GogiftCallbackTimeout]:t.goGiftStatus?.callbackTimeout?.label||t.failedLabel}),[t]),L=a(()=>({[e.Received]:"",[e.Pending]:t.pendingTip,[e.ApproveFail]:"",[e.ApproveSuccess]:t.confirmedTip,[e.Unfulfilled]:t.processingTip,[e.Fulfilled]:t.ShippedTip,[e.Failed]:"",[e.GogiftPending]:t.goGiftStatus?.pending?.tip||"",[e.GogiftApproved]:t.goGiftStatus?.approved?.tip||"",[e.GogiftSecondConfirm]:t.goGiftStatus?.secondConfirm?.tip||"",[e.GogiftRejected]:t.goGiftStatus?.rejected?.tip||"",[e.GogiftCallbackPending]:t.goGiftStatus?.callbackPending?.tip||"",[e.GogiftCallbackSuccess]:t.goGiftStatus?.callbackSuccess?.tip||"",[e.GogiftCallbackTimeout]:t.goGiftStatus?.callbackTimeout?.tip||""}),[t]),M=a(()=>({[e.Received]:"#52C41A",[e.Pending]:"#999",[e.ApproveFail]:"#F84D4F",[e.ApproveSuccess]:"#999",[e.Unfulfilled]:"#999",[e.Fulfilled]:"#999",[e.Failed]:"#F84D4F",[e.GogiftPending]:"#999",[e.GogiftApproved]:"#999",[e.GogiftSecondConfirm]:"#999",[e.GogiftRejected]:"#F84D4F",[e.GogiftCallbackPending]:"#999",[e.GogiftCallbackSuccess]:"#52C41A",[e.GogiftCallbackTimeout]:"#F84D4F"}),[]),h=c(()=>{y&&v(i=>i+1)},[y]),w=c((i,o)=>{x(o),H(i),setTimeout(()=>{x(-1)},2e3)},[]),_=()=>n(Q,{children:[G&&l("div",{className:"flex flex-1 flex-col items-center justify-center",children:l(z,{})}),!G&&l("div",{className:"mt-[24px] pb-[24px] md:pb-[48px]",children:k.length>0?l("div",{className:"grid gap-[18px] md:gap-[12px]",children:k.map((i,o)=>n("div",{className:"grid gap-[8px]",children:[i?.orderNumber&&n("div",{className:"text-[15px] font-semibold leading-[1.4] text-[#777]",children:[t.orderNumberLabel,": ",i.orderNumber]}),n("div",{className:u("flex items-center justify-between rounded-[8px] bg-[#f7f8f9] px-[16px] py-[20px]",!m&&"rounded-none"),children:[n("div",{className:"grid gap-[4px]",children:[l("div",{className:"text-[16px] font-bold leading-[1.4]",children:i.title}),n("div",{className:"text-[14px] font-semibold text-[#999]",children:[t.valueLabel,": ",i.value," ",t?.pointUnit]}),n("div",{className:"text-[14px] font-semibold text-[#999]",children:[i?.couponCode?`${t?.code||"Code"}: ${i.couponCode} `:"",i?.couponCode&&l("span",{className:"cursor-pointer text-[14px] font-semibold text-brand underline",onClick:()=>{w(i.couponCode,o)},role:"button",tabIndex:0,onKeyDown:d=>{(d.key==="Enter"||d.key===" ")&&d.preventDefault()},children:A===o?t?.copied||"COPIED":t?.copy||"COPY"})]}),i?.link&&l("div",{className:"text-[14px] font-semibold text-[#999]",children:l("a",{href:i.link,target:"_blank",rel:"noopener noreferrer",className:"text-brand underline",children:t?.redeemLinkLabel||"Redeem Link"})})]}),n("div",{className:"grid gap-[4px] text-right",children:[n("div",{className:u("flex items-center justify-end text-[16px] font-bold leading-[1.4]",`text-[${M[i.type]}]`),children:[l("span",{children:D[i.type]}),L[i.type]&&l(q,{info:L[i.type],index:o})]}),l("div",{className:"text-[14px] font-semibold text-[#999]",children:O(i.date).format("YYYY-MM-DD HH:mm").toString()})]})]})]},o))}):n("div",{className:"flex h-full flex-col items-center justify-center",children:[l(Y,{className:"mb-[12px] w-[160px]",source:t?.emptyListImage?.url,alt:t?.emptyListImage?.alt||"empty list image"}),l("div",{className:"text-[16px] font-semibold leading-[1.4]",children:t?.emptyListLabel})]})})]});return l($,{title:t.title,className:u("h-[800px] w-[640px]"),useAnimation:!0,animationClassName:"md:translate-y-[100vh]",scrollClassName:"md:mb-0 flex flex-col",...P,onScrollEnd:h,children:n(j,{align:"left",shape:m?"rounded":"square",value:r.toString(),onValueChange:i=>{b(Number(i))},className:"flex flex-1 flex-col",children:[l("div",{className:"shrink-0",children:l(U,{children:p.map(i=>l(I,{value:i.type.toString(),children:i.title},i.type))})}),p.map(i=>l(E,{value:i.type.toString(),className:"flex flex-1 flex-col",children:_()},i.type))]})})}var ae=J;export{ae as default};
2
2
  //# sourceMappingURL=RewardsModal.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../../src/components/credits/modal/RewardsModal.tsx"],
4
- "sourcesContent": ["import { Tabs, TabsContent, TabsList, TabsTrigger, Picture } from '@anker-in/headless-ui'\nimport classNames from 'classnames'\nimport clipboard from 'copy-to-clipboard'\nimport dayjs from 'dayjs'\nimport { useCallback, useEffect, useMemo, useState } from 'react'\n\nimport { ApprovalStatus, AlpcConsumeType, RewardType } from '../context/const'\nimport { CreditsModalContainer, type ModalContainerProps } from './ModalContainer'\nimport Tip from './Tip'\nimport LoadingDots from './LoadingDots'\nimport useMyRewards from '../context/hooks/useMyRewards'\nimport { useHeadlessContext } from '@anker-in/lib'\nimport { ROUNDED_BRANDS } from '../../../constants'\n\nexport interface RewardsCopy {\n title: string\n orderNumberLabel: string\n valueLabel: string\n receivedLabel: string\n failedLabel: string\n approveSuccessLabel: string\n couponTab: string\n productTab: string\n externalProductTab?: string\n pendingLabel: string\n unfulfilledLabel: string\n fulfilledLabel: string\n confirmedTip: string\n pendingTip: string\n processingTip: string\n ShippedTip: string\n emptyListLabel: string\n pointUnit: string\n code: string\n copied: string\n copy: string\n redeemLinkLabel?: string\n goGiftStatus?: {\n pending?: {\n label: string\n tip: string\n }\n approved?: {\n label: string\n tip: string\n }\n secondConfirm?: {\n label: string\n tip: string\n }\n rejected?: {\n label: string\n tip: string\n }\n callbackPending?: {\n label: string\n tip: string\n }\n callbackSuccess?: {\n label: string\n tip: string\n }\n callbackTimeout?: {\n label: string\n tip: string\n }\n }\n emptyListImage: {\n url: string\n alt?: string\n }\n}\ninterface RewardsModalProps extends ModalContainerProps {\n data: RewardsCopy\n}\n\nfunction RewardsModal({ data, ...props }: RewardsModalProps) {\n const [activeTab, setActiveTab] = useState(AlpcConsumeType.Coupon)\n const { brand } = useHeadlessContext()\n const rounded = ROUNDED_BRANDS.includes(brand)\n\n const [page, setPage] = useState(1)\n const [copied, setCopied] = useState(-1)\n\n const tabs = useMemo(() => {\n return [\n { title: data.couponTab, type: AlpcConsumeType.Coupon },\n { title: data.productTab, type: AlpcConsumeType.Product },\n { title: data.externalProductTab, type: AlpcConsumeType.ExternalProduct },\n ].filter((tab): tab is { title: string; type: number } => !!tab.title)\n }, [data.couponTab, data.productTab, data.externalProductTab])\n\n // tabs \u7531 data.xxxTab \u771F\u503C\u8FC7\u6EE4\u6784\u5EFA\uFF0CactiveTab \u82E5\u6307\u5411\u4E00\u4E2A\u5DF2\u88AB\u8FC7\u6EE4\u6389\u7684\u7C7B\u578B\uFF08\u4F8B\u5982 couponTab \u5C1A\u672A\u52A0\u8F7D\uFF09\uFF0C\n // \u4F1A\u5BFC\u81F4\u6CA1\u6709\u4EFB\u4F55 TabsTrigger/TabsContent \u5339\u914D\uFF0C\u521D\u59CB\u4E0D\u5C55\u793A\u5185\u5BB9\u3002\u6B64\u5904\u5728 tabs \u53D8\u5316\u65F6\u91CD\u540C\u6B65\u3002\n useEffect(() => {\n if (tabs.length && !tabs.some(tab => tab.type === activeTab)) {\n setActiveTab(tabs[0]!.type)\n }\n }, [tabs, activeTab])\n\n // Reset page when switching tabs\n useEffect(() => {\n setPage(1)\n }, [activeTab])\n\n const { myRewards = [], canNext, isLoading } = useMyRewards({\n page,\n pageSize: 1000,\n consumeType: activeTab,\n })\n\n const getProductType = useCallback((item: any) => {\n if (item.fulfillment_status && item.fulfillment_status !== 'null') {\n return item.fulfillment_status === 'fulfilled' ? RewardType.Fulfilled : RewardType.Unfulfilled\n }\n\n if (item.approval_status === ApprovalStatus.Success || item.approval_status === ApprovalStatus.DoubleConfirm) {\n return RewardType.ApproveSuccess\n }\n\n if (item.approval_status === ApprovalStatus.Failed) {\n return RewardType.Failed\n }\n\n return RewardType.Pending\n }, [])\n\n const getGoGiftType = useCallback((status?: number) => {\n const statusMap: Record<number, RewardType> = {\n 0: RewardType.GogiftPending,\n 1: RewardType.GogiftApproved,\n 2: RewardType.GogiftSecondConfirm,\n 3: RewardType.GogiftRejected,\n 4: RewardType.GogiftCallbackPending,\n 5: RewardType.GogiftCallbackSuccess,\n 6: RewardType.GogiftCallbackTimeout,\n }\n return status !== undefined ? (statusMap[status] ?? RewardType.GogiftPending) : RewardType.GogiftPending\n }, [])\n\n const list = useMemo(() => {\n return myRewards.map(item => {\n const base = {\n title: item.goods_title,\n value: item.consume_credits,\n date: new Date(item.create_time * 1000),\n }\n\n if (activeTab === AlpcConsumeType.Coupon) {\n return {\n ...base,\n type: RewardType.Received,\n couponCode: item.coupon_code,\n orderNumber: '',\n link: '',\n }\n }\n\n if (activeTab === AlpcConsumeType.Product) {\n return {\n ...base,\n type: getProductType(item),\n orderNumber: item.order_number,\n couponCode: '',\n link: '',\n }\n }\n\n if (activeTab === AlpcConsumeType.ExternalProduct) {\n return {\n ...base,\n type: getGoGiftType(item.approval_status),\n orderNumber: '',\n couponCode: '',\n link: item.link || '',\n }\n }\n\n return { ...base, type: RewardType.Received, couponCode: '', orderNumber: '', link: '' }\n })\n }, [activeTab, myRewards, getProductType, getGoGiftType])\n\n\n const TypeMap = useMemo(() => {\n return {\n [RewardType.Received]: data.receivedLabel,\n [RewardType.Pending]: data.pendingLabel,\n [RewardType.ApproveFail]: data.failedLabel,\n [RewardType.ApproveSuccess]: data.approveSuccessLabel,\n [RewardType.Unfulfilled]: data.unfulfilledLabel,\n [RewardType.Fulfilled]: data.fulfilledLabel,\n [RewardType.Failed]: data.failedLabel,\n [RewardType.GogiftPending]: data.goGiftStatus?.pending?.label || data.pendingLabel,\n [RewardType.GogiftApproved]: data.goGiftStatus?.approved?.label || data.approveSuccessLabel,\n [RewardType.GogiftSecondConfirm]: data.goGiftStatus?.secondConfirm?.label || data.approveSuccessLabel,\n [RewardType.GogiftRejected]: data.goGiftStatus?.rejected?.label || data.failedLabel,\n [RewardType.GogiftCallbackPending]: data.goGiftStatus?.callbackPending?.label || data.pendingLabel,\n [RewardType.GogiftCallbackSuccess]: data.goGiftStatus?.callbackSuccess?.label || data.receivedLabel,\n [RewardType.GogiftCallbackTimeout]: data.goGiftStatus?.callbackTimeout?.label || data.failedLabel,\n }\n }, [data])\n\n const TipMap = useMemo(() => {\n return {\n [RewardType.Received]: '',\n [RewardType.Pending]: data.pendingTip,\n [RewardType.ApproveFail]: '',\n [RewardType.ApproveSuccess]: data.confirmedTip,\n [RewardType.Unfulfilled]: data.processingTip,\n [RewardType.Fulfilled]: data.ShippedTip,\n [RewardType.Failed]: '',\n [RewardType.GogiftPending]: data.goGiftStatus?.pending?.tip || '',\n [RewardType.GogiftApproved]: data.goGiftStatus?.approved?.tip || '',\n [RewardType.GogiftSecondConfirm]: data.goGiftStatus?.secondConfirm?.tip || '',\n [RewardType.GogiftRejected]: data.goGiftStatus?.rejected?.tip || '',\n [RewardType.GogiftCallbackPending]: data.goGiftStatus?.callbackPending?.tip || '',\n [RewardType.GogiftCallbackSuccess]: data.goGiftStatus?.callbackSuccess?.tip || '',\n [RewardType.GogiftCallbackTimeout]: data.goGiftStatus?.callbackTimeout?.tip || '',\n }\n }, [data])\n\n const ColorMap = useMemo(() => {\n return {\n [RewardType.Received]: '#52C41A',\n [RewardType.Pending]: '#999',\n [RewardType.ApproveFail]: '#F84D4F',\n [RewardType.ApproveSuccess]: '#999',\n [RewardType.Unfulfilled]: '#999',\n [RewardType.Fulfilled]: '#999',\n [RewardType.Failed]: '#F84D4F',\n [RewardType.GogiftPending]: '#999',\n [RewardType.GogiftApproved]: '#999',\n [RewardType.GogiftSecondConfirm]: '#999',\n [RewardType.GogiftRejected]: '#F84D4F',\n [RewardType.GogiftCallbackPending]: '#999',\n [RewardType.GogiftCallbackSuccess]: '#52C41A',\n [RewardType.GogiftCallbackTimeout]: '#F84D4F',\n }\n }, [])\n\n const handleScrollEnd = useCallback(() => {\n if (canNext) {\n setPage(prev => prev + 1)\n }\n }, [canNext])\n\n const handleCopy = useCallback((code: string, idx: number) => {\n setCopied(idx)\n clipboard(code)\n setTimeout(() => {\n setCopied(-1)\n }, 2000)\n }, [])\n\n\n // \u6BCF\u4E2A tab \u5BF9\u5E94\u4E00\u6B21\u72EC\u7ACB\u7684\u63A5\u53E3\u8BF7\u6C42\uFF08consumeType \u4E0D\u540C\uFF09\uFF0C\u5F53\u524D\u53EA\u6709\u6FC0\u6D3B tab \u7684\u6570\u636E\u5B58\u5728\u4E8E\u5BA2\u6237\u7AEF\u3002\n // TabsContent \u53EA\u6302\u8F7D\u5F53\u524D\u6FC0\u6D3B\u7684\u4E00\u4E2A\uFF0C\u5404 tab \u590D\u7528\u540C\u4E00\u4EFD list/isLoading \u72B6\u6001\u662F\u5B89\u5168\u7684\u3002\n const renderContent = () => (\n <>\n {isLoading && (\n <div className=\"flex flex-1 flex-col items-center justify-center\">\n <LoadingDots />\n </div>\n )}\n\n {!isLoading && (\n <div className=\"mt-[24px] flex-1 overflow-auto overscroll-contain pb-[24px] md:pb-[48px]\">\n {list.length > 0 ? (\n <div className=\"grid gap-[18px] md:gap-[12px]\">\n {list.map((item, index) => (\n <div key={index} className=\"grid gap-[8px]\">\n {item?.orderNumber && (\n <div className=\"text-[15px] font-semibold leading-[1.4] text-[#777]\">\n {data.orderNumberLabel}: {item.orderNumber}\n </div>\n )}\n <div\n className={classNames(\n 'flex items-center justify-between rounded-[8px] bg-[#f7f8f9] px-[16px] py-[20px]',\n !rounded && 'rounded-none'\n )}\n >\n <div className=\"grid gap-[4px]\">\n <div className=\"text-[16px] font-bold leading-[1.4]\">{item.title}</div>\n <div className=\"text-[14px] font-semibold text-[#999]\">\n {data.valueLabel}: {item.value} {data?.pointUnit}\n </div>\n <div className=\"text-[14px] font-semibold text-[#999]\">\n {item?.couponCode ? `${data?.code || 'Code'}: ${item.couponCode} ` : ''}\n {item?.couponCode && (\n <span\n className=\"cursor-pointer text-[14px] font-semibold text-brand underline\"\n onClick={() => {\n handleCopy(item.couponCode, index)\n }}\n role=\"button\"\n tabIndex={0}\n onKeyDown={e => {\n if (e.key === 'Enter' || e.key === ' ') {\n e.preventDefault()\n }\n }}\n >\n {copied === index ? data?.copied || 'COPIED' : data?.copy || 'COPY'}\n </span>\n )}\n </div>\n {item?.link && (\n <div className=\"text-[14px] font-semibold text-[#999]\">\n <a\n href={item.link}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n className=\"text-brand underline\"\n >\n {data?.redeemLinkLabel || 'Redeem Link'}\n </a>\n </div>\n )}\n </div>\n <div className=\"grid gap-[4px] text-right\">\n <div\n className={classNames(\n 'flex items-center justify-end text-[16px] font-bold leading-[1.4]',\n `text-[${ColorMap[item.type]}]`\n )}\n >\n <span>{TypeMap[item.type]}</span>\n {TipMap[item.type] && <Tip info={TipMap[item.type]} index={index} />}\n </div>\n <div className=\"text-[14px] font-semibold text-[#999]\">\n {dayjs(item.date).format('YYYY-MM-DD HH:mm').toString()}\n </div>\n </div>\n </div>\n </div>\n ))}\n </div>\n ) : (\n <div className=\"flex h-full flex-col items-center justify-center\">\n <Picture\n className=\"mb-[12px] w-[160px]\"\n source={data?.emptyListImage?.url}\n alt={data?.emptyListImage?.alt || 'empty list image'}\n ></Picture>\n <div className=\"text-[16px] font-semibold leading-[1.4]\">{data?.emptyListLabel}</div>\n </div>\n )}\n </div>\n )}\n </>\n )\n\n return (\n <CreditsModalContainer\n title={data.title}\n className={classNames('h-[800px] w-[640px]')}\n useAnimation\n animationClassName=\"md:translate-y-[100vh]\"\n scrollClassName=\"md:mb-0 flex flex-col\"\n {...props}\n onScrollEnd={handleScrollEnd}\n >\n <Tabs\n align=\"left\"\n shape={rounded ? 'rounded' : 'square'}\n value={activeTab.toString()}\n onValueChange={value => {\n setActiveTab(Number(value))\n }}\n className=\"flex flex-1 flex-col\"\n >\n <div className=\"shrink-0\">\n <TabsList>\n {tabs.map(tab => (\n <TabsTrigger key={tab.type} value={tab.type.toString()}>\n {tab.title}\n </TabsTrigger>\n ))}\n </TabsList>\n </div>\n\n {tabs.map(tab => (\n <TabsContent key={tab.type} value={tab.type.toString()} className=\"flex flex-1 flex-col\">\n {renderContent()}\n </TabsContent>\n ))}\n </Tabs>\n </CreditsModalContainer>\n )\n}\n\nexport default RewardsModal\n"],
5
- "mappings": "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",
4
+ "sourcesContent": ["import { Tabs, TabsContent, TabsList, TabsTrigger, Picture } from '@anker-in/headless-ui'\nimport classNames from 'classnames'\nimport clipboard from 'copy-to-clipboard'\nimport dayjs from 'dayjs'\nimport { useCallback, useEffect, useMemo, useState } from 'react'\n\nimport { ApprovalStatus, AlpcConsumeType, RewardType } from '../context/const'\nimport { CreditsModalContainer, type ModalContainerProps } from './ModalContainer'\nimport Tip from './Tip'\nimport LoadingDots from './LoadingDots'\nimport useMyRewards from '../context/hooks/useMyRewards'\nimport { useHeadlessContext } from '@anker-in/lib'\nimport { ROUNDED_BRANDS } from '../../../constants'\n\nexport interface RewardsCopy {\n title: string\n orderNumberLabel: string\n valueLabel: string\n receivedLabel: string\n failedLabel: string\n approveSuccessLabel: string\n couponTab: string\n productTab: string\n externalProductTab?: string\n pendingLabel: string\n unfulfilledLabel: string\n fulfilledLabel: string\n confirmedTip: string\n pendingTip: string\n processingTip: string\n ShippedTip: string\n emptyListLabel: string\n pointUnit: string\n code: string\n copied: string\n copy: string\n redeemLinkLabel?: string\n goGiftStatus?: {\n pending?: {\n label: string\n tip: string\n }\n approved?: {\n label: string\n tip: string\n }\n secondConfirm?: {\n label: string\n tip: string\n }\n rejected?: {\n label: string\n tip: string\n }\n callbackPending?: {\n label: string\n tip: string\n }\n callbackSuccess?: {\n label: string\n tip: string\n }\n callbackTimeout?: {\n label: string\n tip: string\n }\n }\n emptyListImage: {\n url: string\n alt?: string\n }\n}\ninterface RewardsModalProps extends ModalContainerProps {\n data: RewardsCopy\n}\n\nfunction RewardsModal({ data, ...props }: RewardsModalProps) {\n const [activeTab, setActiveTab] = useState(AlpcConsumeType.Coupon)\n const { brand } = useHeadlessContext()\n const rounded = ROUNDED_BRANDS.includes(brand)\n\n const [page, setPage] = useState(1)\n const [copied, setCopied] = useState(-1)\n\n const tabs = useMemo(() => {\n return [\n { title: data.couponTab, type: AlpcConsumeType.Coupon },\n { title: data.productTab, type: AlpcConsumeType.Product },\n { title: data.externalProductTab, type: AlpcConsumeType.ExternalProduct },\n ].filter((tab): tab is { title: string; type: number } => !!tab.title)\n }, [data.couponTab, data.productTab, data.externalProductTab])\n\n // tabs \u7531 data.xxxTab \u771F\u503C\u8FC7\u6EE4\u6784\u5EFA\uFF0CactiveTab \u82E5\u6307\u5411\u4E00\u4E2A\u5DF2\u88AB\u8FC7\u6EE4\u6389\u7684\u7C7B\u578B\uFF08\u4F8B\u5982 couponTab \u5C1A\u672A\u52A0\u8F7D\uFF09\uFF0C\n // \u4F1A\u5BFC\u81F4\u6CA1\u6709\u4EFB\u4F55 TabsTrigger/TabsContent \u5339\u914D\uFF0C\u521D\u59CB\u4E0D\u5C55\u793A\u5185\u5BB9\u3002\u6B64\u5904\u5728 tabs \u53D8\u5316\u65F6\u91CD\u540C\u6B65\u3002\n useEffect(() => {\n if (tabs.length && !tabs.some(tab => tab.type === activeTab)) {\n setActiveTab(tabs[0]!.type)\n }\n }, [tabs, activeTab])\n\n // Reset page when switching tabs\n useEffect(() => {\n setPage(1)\n }, [activeTab])\n\n const { myRewards = [], canNext, isLoading } = useMyRewards({\n page,\n pageSize: 1000,\n consumeType: activeTab,\n })\n\n const getProductType = useCallback((item: any) => {\n if (item.fulfillment_status && item.fulfillment_status !== 'null') {\n return item.fulfillment_status === 'fulfilled' ? RewardType.Fulfilled : RewardType.Unfulfilled\n }\n\n if (item.approval_status === ApprovalStatus.Success || item.approval_status === ApprovalStatus.DoubleConfirm) {\n return RewardType.ApproveSuccess\n }\n\n if (item.approval_status === ApprovalStatus.Failed) {\n return RewardType.Failed\n }\n\n return RewardType.Pending\n }, [])\n\n const getGoGiftType = useCallback((status?: number) => {\n const statusMap: Record<number, RewardType> = {\n 0: RewardType.GogiftPending,\n 1: RewardType.GogiftApproved,\n 2: RewardType.GogiftSecondConfirm,\n 3: RewardType.GogiftRejected,\n 4: RewardType.GogiftCallbackPending,\n 5: RewardType.GogiftCallbackSuccess,\n 6: RewardType.GogiftCallbackTimeout,\n }\n return status !== undefined ? (statusMap[status] ?? RewardType.GogiftPending) : RewardType.GogiftPending\n }, [])\n\n const list = useMemo(() => {\n return myRewards.map(item => {\n const base = {\n title: item.goods_title,\n value: item.consume_credits,\n date: new Date(item.create_time * 1000),\n }\n\n if (activeTab === AlpcConsumeType.Coupon) {\n return {\n ...base,\n type: RewardType.Received,\n couponCode: item.coupon_code,\n orderNumber: '',\n link: '',\n }\n }\n\n if (activeTab === AlpcConsumeType.Product) {\n return {\n ...base,\n type: getProductType(item),\n orderNumber: item.order_number,\n couponCode: '',\n link: '',\n }\n }\n\n if (activeTab === AlpcConsumeType.ExternalProduct) {\n return {\n ...base,\n type: getGoGiftType(item.approval_status),\n orderNumber: '',\n couponCode: '',\n link: item.link || '',\n }\n }\n\n return { ...base, type: RewardType.Received, couponCode: '', orderNumber: '', link: '' }\n })\n }, [activeTab, myRewards, getProductType, getGoGiftType])\n\n\n const TypeMap = useMemo(() => {\n return {\n [RewardType.Received]: data.receivedLabel,\n [RewardType.Pending]: data.pendingLabel,\n [RewardType.ApproveFail]: data.failedLabel,\n [RewardType.ApproveSuccess]: data.approveSuccessLabel,\n [RewardType.Unfulfilled]: data.unfulfilledLabel,\n [RewardType.Fulfilled]: data.fulfilledLabel,\n [RewardType.Failed]: data.failedLabel,\n [RewardType.GogiftPending]: data.goGiftStatus?.pending?.label || data.pendingLabel,\n [RewardType.GogiftApproved]: data.goGiftStatus?.approved?.label || data.approveSuccessLabel,\n [RewardType.GogiftSecondConfirm]: data.goGiftStatus?.secondConfirm?.label || data.approveSuccessLabel,\n [RewardType.GogiftRejected]: data.goGiftStatus?.rejected?.label || data.failedLabel,\n [RewardType.GogiftCallbackPending]: data.goGiftStatus?.callbackPending?.label || data.pendingLabel,\n [RewardType.GogiftCallbackSuccess]: data.goGiftStatus?.callbackSuccess?.label || data.receivedLabel,\n [RewardType.GogiftCallbackTimeout]: data.goGiftStatus?.callbackTimeout?.label || data.failedLabel,\n }\n }, [data])\n\n const TipMap = useMemo(() => {\n return {\n [RewardType.Received]: '',\n [RewardType.Pending]: data.pendingTip,\n [RewardType.ApproveFail]: '',\n [RewardType.ApproveSuccess]: data.confirmedTip,\n [RewardType.Unfulfilled]: data.processingTip,\n [RewardType.Fulfilled]: data.ShippedTip,\n [RewardType.Failed]: '',\n [RewardType.GogiftPending]: data.goGiftStatus?.pending?.tip || '',\n [RewardType.GogiftApproved]: data.goGiftStatus?.approved?.tip || '',\n [RewardType.GogiftSecondConfirm]: data.goGiftStatus?.secondConfirm?.tip || '',\n [RewardType.GogiftRejected]: data.goGiftStatus?.rejected?.tip || '',\n [RewardType.GogiftCallbackPending]: data.goGiftStatus?.callbackPending?.tip || '',\n [RewardType.GogiftCallbackSuccess]: data.goGiftStatus?.callbackSuccess?.tip || '',\n [RewardType.GogiftCallbackTimeout]: data.goGiftStatus?.callbackTimeout?.tip || '',\n }\n }, [data])\n\n const ColorMap = useMemo(() => {\n return {\n [RewardType.Received]: '#52C41A',\n [RewardType.Pending]: '#999',\n [RewardType.ApproveFail]: '#F84D4F',\n [RewardType.ApproveSuccess]: '#999',\n [RewardType.Unfulfilled]: '#999',\n [RewardType.Fulfilled]: '#999',\n [RewardType.Failed]: '#F84D4F',\n [RewardType.GogiftPending]: '#999',\n [RewardType.GogiftApproved]: '#999',\n [RewardType.GogiftSecondConfirm]: '#999',\n [RewardType.GogiftRejected]: '#F84D4F',\n [RewardType.GogiftCallbackPending]: '#999',\n [RewardType.GogiftCallbackSuccess]: '#52C41A',\n [RewardType.GogiftCallbackTimeout]: '#F84D4F',\n }\n }, [])\n\n const handleScrollEnd = useCallback(() => {\n if (canNext) {\n setPage(prev => prev + 1)\n }\n }, [canNext])\n\n const handleCopy = useCallback((code: string, idx: number) => {\n setCopied(idx)\n clipboard(code)\n setTimeout(() => {\n setCopied(-1)\n }, 2000)\n }, [])\n\n\n // \u6BCF\u4E2A tab \u5BF9\u5E94\u4E00\u6B21\u72EC\u7ACB\u7684\u63A5\u53E3\u8BF7\u6C42\uFF08consumeType \u4E0D\u540C\uFF09\uFF0C\u5F53\u524D\u53EA\u6709\u6FC0\u6D3B tab \u7684\u6570\u636E\u5B58\u5728\u4E8E\u5BA2\u6237\u7AEF\u3002\n // TabsContent \u53EA\u6302\u8F7D\u5F53\u524D\u6FC0\u6D3B\u7684\u4E00\u4E2A\uFF0C\u5404 tab \u590D\u7528\u540C\u4E00\u4EFD list/isLoading \u72B6\u6001\u662F\u5B89\u5168\u7684\u3002\n const renderContent = () => (\n <>\n {isLoading && (\n <div className=\"flex flex-1 flex-col items-center justify-center\">\n <LoadingDots />\n </div>\n )}\n\n {!isLoading && (\n <div className=\"mt-[24px] pb-[24px] md:pb-[48px]\">\n {list.length > 0 ? (\n <div className=\"grid gap-[18px] md:gap-[12px]\">\n {list.map((item, index) => (\n <div key={index} className=\"grid gap-[8px]\">\n {item?.orderNumber && (\n <div className=\"text-[15px] font-semibold leading-[1.4] text-[#777]\">\n {data.orderNumberLabel}: {item.orderNumber}\n </div>\n )}\n <div\n className={classNames(\n 'flex items-center justify-between rounded-[8px] bg-[#f7f8f9] px-[16px] py-[20px]',\n !rounded && 'rounded-none'\n )}\n >\n <div className=\"grid gap-[4px]\">\n <div className=\"text-[16px] font-bold leading-[1.4]\">{item.title}</div>\n <div className=\"text-[14px] font-semibold text-[#999]\">\n {data.valueLabel}: {item.value} {data?.pointUnit}\n </div>\n <div className=\"text-[14px] font-semibold text-[#999]\">\n {item?.couponCode ? `${data?.code || 'Code'}: ${item.couponCode} ` : ''}\n {item?.couponCode && (\n <span\n className=\"cursor-pointer text-[14px] font-semibold text-brand underline\"\n onClick={() => {\n handleCopy(item.couponCode, index)\n }}\n role=\"button\"\n tabIndex={0}\n onKeyDown={e => {\n if (e.key === 'Enter' || e.key === ' ') {\n e.preventDefault()\n }\n }}\n >\n {copied === index ? data?.copied || 'COPIED' : data?.copy || 'COPY'}\n </span>\n )}\n </div>\n {item?.link && (\n <div className=\"text-[14px] font-semibold text-[#999]\">\n <a\n href={item.link}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n className=\"text-brand underline\"\n >\n {data?.redeemLinkLabel || 'Redeem Link'}\n </a>\n </div>\n )}\n </div>\n <div className=\"grid gap-[4px] text-right\">\n <div\n className={classNames(\n 'flex items-center justify-end text-[16px] font-bold leading-[1.4]',\n `text-[${ColorMap[item.type]}]`\n )}\n >\n <span>{TypeMap[item.type]}</span>\n {TipMap[item.type] && <Tip info={TipMap[item.type]} index={index} />}\n </div>\n <div className=\"text-[14px] font-semibold text-[#999]\">\n {dayjs(item.date).format('YYYY-MM-DD HH:mm').toString()}\n </div>\n </div>\n </div>\n </div>\n ))}\n </div>\n ) : (\n <div className=\"flex h-full flex-col items-center justify-center\">\n <Picture\n className=\"mb-[12px] w-[160px]\"\n source={data?.emptyListImage?.url}\n alt={data?.emptyListImage?.alt || 'empty list image'}\n ></Picture>\n <div className=\"text-[16px] font-semibold leading-[1.4]\">{data?.emptyListLabel}</div>\n </div>\n )}\n </div>\n )}\n </>\n )\n\n return (\n <CreditsModalContainer\n title={data.title}\n className={classNames('h-[800px] w-[640px]')}\n useAnimation\n animationClassName=\"md:translate-y-[100vh]\"\n scrollClassName=\"md:mb-0 flex flex-col\"\n {...props}\n onScrollEnd={handleScrollEnd}\n >\n <Tabs\n align=\"left\"\n shape={rounded ? 'rounded' : 'square'}\n value={activeTab.toString()}\n onValueChange={value => {\n setActiveTab(Number(value))\n }}\n className=\"flex flex-1 flex-col\"\n >\n <div className=\"shrink-0\">\n <TabsList>\n {tabs.map(tab => (\n <TabsTrigger key={tab.type} value={tab.type.toString()}>\n {tab.title}\n </TabsTrigger>\n ))}\n </TabsList>\n </div>\n\n {tabs.map(tab => (\n <TabsContent key={tab.type} value={tab.type.toString()} className=\"flex flex-1 flex-col\">\n {renderContent()}\n </TabsContent>\n ))}\n </Tabs>\n </CreditsModalContainer>\n )\n}\n\nexport default RewardsModal\n"],
5
+ "mappings": "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",
6
6
  "names": ["Fragment", "jsx", "jsxs", "Tabs", "TabsContent", "TabsList", "TabsTrigger", "Picture", "classNames", "clipboard", "dayjs", "useCallback", "useEffect", "useMemo", "useState", "ApprovalStatus", "AlpcConsumeType", "RewardType", "CreditsModalContainer", "Tip", "LoadingDots", "useMyRewards", "useHeadlessContext", "ROUNDED_BRANDS", "RewardsModal", "data", "props", "activeTab", "setActiveTab", "brand", "rounded", "page", "setPage", "copied", "setCopied", "tabs", "tab", "myRewards", "canNext", "isLoading", "getProductType", "item", "getGoGiftType", "status", "statusMap", "list", "base", "TypeMap", "TipMap", "ColorMap", "handleScrollEnd", "prev", "handleCopy", "code", "idx", "renderContent", "index", "e", "value", "RewardsModal_default"]
7
7
  }
@@ -36,7 +36,7 @@ export type CreditsTemplateProps = {
36
36
  };
37
37
  taskIdToTypeMapping: Record<string, DTC_TASK_TYPE>;
38
38
  memberPriceDiscount?: FunctionMemberPriceConfig[];
39
- taskNameMapping: Record<string, string>;
39
+ taskNameMapping?: Record<string, string>;
40
40
  };
41
41
  creditsConfig?: {
42
42
  alpcBrand?: string;