@anker-in/campaign-ui 0.5.14 → 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 (40) hide show
  1. package/dist/cjs/components/credits/modal/ActivitiesModal.js +1 -1
  2. package/dist/cjs/components/credits/modal/ActivitiesModal.js.map +2 -2
  3. package/dist/cjs/components/credits/modal/RewardsModal.js +1 -1
  4. package/dist/cjs/components/credits/modal/RewardsModal.js.map +2 -2
  5. package/dist/cjs/templates/Credits.types.d.ts +1 -1
  6. package/dist/cjs/templates/Credits.types.js.map +1 -1
  7. package/dist/esm/components/credits/modal/ActivitiesModal.js +1 -1
  8. package/dist/esm/components/credits/modal/ActivitiesModal.js.map +2 -2
  9. package/dist/esm/components/credits/modal/RewardsModal.js +1 -1
  10. package/dist/esm/components/credits/modal/RewardsModal.js.map +2 -2
  11. package/dist/esm/templates/Credits.types.d.ts +1 -1
  12. package/dist/esm/templates/Credits.types.js.map +1 -1
  13. package/package.json +1 -1
  14. package/src/components/credits/modal/ActivitiesModal.tsx +59 -66
  15. package/src/components/credits/modal/RewardsModal.tsx +1 -1
  16. package/src/templates/Credits.types.ts +1 -1
  17. package/dist/cjs/helpers/fetchResponse.d.ts +0 -14
  18. package/dist/cjs/helpers/fetchResponse.js +0 -2
  19. package/dist/cjs/helpers/fetchResponse.js.map +0 -7
  20. package/dist/cjs/helpers/fetcher.d.ts +0 -2
  21. package/dist/cjs/helpers/fetcher.js +0 -2
  22. package/dist/cjs/helpers/fetcher.js.map +0 -7
  23. package/dist/cjs/helpers/index.d.ts +0 -2
  24. package/dist/cjs/helpers/index.js +0 -2
  25. package/dist/cjs/helpers/index.js.map +0 -7
  26. package/dist/cjs/helpers/utils.d.ts +0 -3
  27. package/dist/cjs/helpers/utils.js +0 -2
  28. package/dist/cjs/helpers/utils.js.map +0 -7
  29. package/dist/esm/helpers/fetchResponse.d.ts +0 -14
  30. package/dist/esm/helpers/fetchResponse.js +0 -2
  31. package/dist/esm/helpers/fetchResponse.js.map +0 -7
  32. package/dist/esm/helpers/fetcher.d.ts +0 -2
  33. package/dist/esm/helpers/fetcher.js +0 -2
  34. package/dist/esm/helpers/fetcher.js.map +0 -7
  35. package/dist/esm/helpers/index.d.ts +0 -2
  36. package/dist/esm/helpers/index.js +0 -2
  37. package/dist/esm/helpers/index.js.map +0 -7
  38. package/dist/esm/helpers/utils.d.ts +0 -3
  39. package/dist/esm/helpers/utils.js +0 -2
  40. package/dist/esm/helpers/utils.js.map +0 -7
@@ -1,2 +1,2 @@
1
- "use strict";var B=Object.create;var x=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)x(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&&x(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?x(r,"default",{value:e,enumerable:!0}):r,e)),F=e=>M(x({},"__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]),y=(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}},[]),w=(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]),E=(0,o.useCallback)(()=>{_&&g(r+1)},[r,_]),Y=i=>(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)("div",{className:"flex-1 overflow-auto overscroll-contain",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:E,children:(0,t.jsxs)(d.Tabs,{align:"left",shape:N?"rounded":"square",defaultValue:y[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:y.map(i=>(0,t.jsx)(d.TabsTrigger,{value:i.type.toString(),children:i.title},i.type))})}),y.map(i=>(0,t.jsx)(d.TabsContent,{value:i.type.toString(),className:"flex-1 flex flex-col",children:Y(w.get(i.type)||[])},i.type))]})})}var q=H;
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
2
  //# sourceMappingURL=ActivitiesModal.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
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\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(\n CreditType.Earned,\n allList.filter(item => item.type === 1).map(normalizeValue)\n )\n map.set(\n CreditType.Deducted,\n allList.filter(item => item.type === 2 && item.status !== 3).map(normalizeValue)\n )\n map.set(\n CreditType.Expired,\n allList.filter(item => item.type === 2 && item.status === 3).map(normalizeValue)\n )\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=\"flex-1 overflow-auto overscroll-contain\">\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 </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 align=\"left\" shape={rounded ? 'rounded' : 'square'} defaultValue={tabs[0]?.type?.toString()} className=\"flex-1 flex flex-col\">\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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",
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
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
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
  }
@@ -1,2 +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 w}from"../context/provider";import{CreditType as a,DTC_TASK_TYPE as g,TaskSubType as n,TaskType as E}from"../context/const";import Y from"../context/hooks/useActivities";import{CreditsModalContainer as B}from"./ModalContainer";import{classNames as x,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:y}=w(),{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}=Y(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 y?.[i.task_name]?y?.[i.task_name]:i.task_type===E.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:[p("div",{className:"flex-1 overflow-auto overscroll-contain",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:x("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:x("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:x("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};
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
2
  //# sourceMappingURL=ActivitiesModal.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
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\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(\n CreditType.Earned,\n allList.filter(item => item.type === 1).map(normalizeValue)\n )\n map.set(\n CreditType.Deducted,\n allList.filter(item => item.type === 2 && item.status !== 3).map(normalizeValue)\n )\n map.set(\n CreditType.Expired,\n allList.filter(item => item.type === 2 && item.status === 3).map(normalizeValue)\n )\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=\"flex-1 overflow-auto overscroll-contain\">\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 </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 align=\"left\" shape={rounded ? 'rounded' : 'square'} defaultValue={tabs[0]?.type?.toString()} className=\"flex-1 flex flex-col\">\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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",
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
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
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;
@@ -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": "AAgCO,IAAKA,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": ["ComponentKey"]
7
7
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@anker-in/campaign-ui",
3
- "version": "0.5.14",
3
+ "version": "0.5.15",
4
4
  "description": "Campaign UI components and utilities for Anker projects",
5
5
  "main": "./dist/cjs/index.js",
6
6
  "module": "./dist/esm/index.js",
@@ -99,8 +99,7 @@ function ActivitiesModal({ data, ...props }: ActivitiesModalProps) {
99
99
  }
100
100
 
101
101
  function getTitle(item: Task) {
102
-
103
- if(taskNameMapping?.[item.task_name]) {
102
+ if (taskNameMapping?.[item.task_name]) {
104
103
  return taskNameMapping?.[item.task_name]
105
104
  }
106
105
 
@@ -155,18 +154,9 @@ function ActivitiesModal({ data, ...props }: ActivitiesModalProps) {
155
154
  const listByTab = useMemo(() => {
156
155
  const map = new Map<CreditType, ReturnType<typeof normalizeValue>[]>()
157
156
  map.set(CreditType.All, allList.map(normalizeValue))
158
- map.set(
159
- CreditType.Earned,
160
- allList.filter(item => item.type === 1).map(normalizeValue)
161
- )
162
- map.set(
163
- CreditType.Deducted,
164
- allList.filter(item => item.type === 2 && item.status !== 3).map(normalizeValue)
165
- )
166
- map.set(
167
- CreditType.Expired,
168
- allList.filter(item => item.type === 2 && item.status === 3).map(normalizeValue)
169
- )
157
+ map.set(CreditType.Earned, allList.filter(item => item.type === 1).map(normalizeValue))
158
+ map.set(CreditType.Deducted, allList.filter(item => item.type === 2 && item.status !== 3).map(normalizeValue))
159
+ map.set(CreditType.Expired, allList.filter(item => item.type === 2 && item.status === 3).map(normalizeValue))
170
160
  return map
171
161
  }, [allList, normalizeValue])
172
162
 
@@ -179,64 +169,62 @@ function ActivitiesModal({ data, ...props }: ActivitiesModalProps) {
179
169
 
180
170
  const renderList = (list: ReturnType<typeof normalizeValue>[]) => (
181
171
  <>
182
- <div className="flex-1 overflow-auto overscroll-contain">
183
- <div className="grid gap-[18px] md:gap-[12px]">
184
- {isLoading && (
185
- <div className="flex flex-1 flex-col items-center justify-center">
186
- <LoadingDots />
187
- </div>
188
- )}
172
+ <div className="grid gap-[18px] md:gap-[12px]">
173
+ {isLoading && (
174
+ <div className="flex flex-1 flex-col items-center justify-center">
175
+ <LoadingDots />
176
+ </div>
177
+ )}
189
178
 
190
- {!isLoading && (
191
- <>
192
- {list.length > 0 ? (
193
- list.map((item, index) => (
179
+ {!isLoading && (
180
+ <>
181
+ {list.length > 0 ? (
182
+ list.map((item, index) => (
183
+ <div
184
+ key={index}
185
+ className={cn(
186
+ 'flex h-fit items-center justify-between rounded-[8px] bg-[#f2f0f1] px-[16px] py-[20px] text-[16px]',
187
+ !rounded && 'rounded-none'
188
+ )}
189
+ >
190
+ <div className="grid gap-[6px]">
191
+ <div className="font-bold">{item.title}</div>
192
+ <div className="text-[14px] font-semibold text-[#999]">
193
+ {dayjs(item.date).format('YYYY-MM-DD HH:mm').toString()}
194
+ </div>
195
+ {!data.pendingTips && (
196
+ <div
197
+ className={`hidden text-[14px] font-semibold text-[#777] ${item.status === 2 && item.credit_type === 1 ? '!flex' : ''}`}
198
+ >
199
+ <Text html={data.pendingTips} />
200
+ <span>{dayjs.unix(item.pending_time).add(1, 'day').format('YYYY-MM-DD')}</span>
201
+ {data.pendingTips2 && <Text html={data.pendingTips2} />}
202
+ </div>
203
+ )}
204
+ </div>
194
205
  <div
195
- key={index}
196
206
  className={cn(
197
- 'flex h-fit items-center justify-between rounded-[8px] bg-[#f2f0f1] px-[16px] py-[20px] text-[16px]',
198
- !rounded && 'rounded-none'
207
+ 'font-bold',
208
+ item.value >= 0 || item.credit_type === CreditType.Expired ? 'text-[#52C41A]' : 'text-[#F84D4F]'
199
209
  )}
200
210
  >
201
- <div className="grid gap-[6px]">
202
- <div className="font-bold">{item.title}</div>
203
- <div className="text-[14px] font-semibold text-[#999]">
204
- {dayjs(item.date).format('YYYY-MM-DD HH:mm').toString()}
205
- </div>
206
- {!data.pendingTips && (
207
- <div
208
- className={`hidden text-[14px] font-semibold text-[#777] ${item.status === 2 && item.credit_type === 1 ? '!flex' : ''}`}
209
- >
210
- <Text html={data.pendingTips} />
211
- <span>{dayjs.unix(item.pending_time).add(1, 'day').format('YYYY-MM-DD')}</span>
212
- {data.pendingTips2 && <Text html={data.pendingTips2} />}
213
- </div>
214
- )}
215
- </div>
216
- <div
217
- className={cn(
218
- 'font-bold',
219
- item.value >= 0 || item.credit_type === CreditType.Expired ? 'text-[#52C41A]' : 'text-[#F84D4F]'
220
- )}
221
- >
222
- {item.value >= 0 && '+'}
223
- {item.value}
224
- </div>
211
+ {item.value >= 0 && '+'}
212
+ {item.value}
225
213
  </div>
226
- ))
227
- ) : (
228
- <div className="flex flex-col items-center justify-center py-[40px]">
229
- <Picture
230
- className="mb-[16px] h-[120px] w-[160px]"
231
- source={data?.emptyListImage?.url}
232
- alt={data?.emptyListImage?.alt || 'empty list image'}
233
- ></Picture>
234
- <div className="leading-1.4 text-[16px] font-semibold">{data?.emptyListLabel}</div>
235
214
  </div>
236
- )}
237
- </>
238
- )}
239
- </div>
215
+ ))
216
+ ) : (
217
+ <div className="flex flex-col items-center justify-center py-[40px]">
218
+ <Picture
219
+ className="mb-[16px] h-[120px] w-[160px]"
220
+ source={data?.emptyListImage?.url}
221
+ alt={data?.emptyListImage?.alt || 'empty list image'}
222
+ ></Picture>
223
+ <div className="leading-1.4 text-[16px] font-semibold">{data?.emptyListLabel}</div>
224
+ </div>
225
+ )}
226
+ </>
227
+ )}
240
228
  </div>
241
229
  {/* 积分到账时间提醒 */}
242
230
  {list.length > 0 && <div className="mt-[12px] pb-[24px] text-[14px] font-semibold text-[#999]">{data.tips}</div>}
@@ -253,7 +241,12 @@ function ActivitiesModal({ data, ...props }: ActivitiesModalProps) {
253
241
  {...props}
254
242
  onScrollEnd={handleScrollEnd}
255
243
  >
256
- <Tabs align="left" shape={rounded ? 'rounded' : 'square'} defaultValue={tabs[0]?.type?.toString()} className="flex-1 flex flex-col">
244
+ <Tabs
245
+ align="left"
246
+ shape={rounded ? 'rounded' : 'square'}
247
+ defaultValue={tabs[0]?.type?.toString()}
248
+ className="flex-1 flex flex-col"
249
+ >
257
250
  <div className="w-full sticky top-0 bg-white z-10 pb-[24px] overflow-x-auto">
258
251
  <TabsList>
259
252
  {tabs.map(tab => (
@@ -264,7 +264,7 @@ function RewardsModal({ data, ...props }: RewardsModalProps) {
264
264
  )}
265
265
 
266
266
  {!isLoading && (
267
- <div className="mt-[24px] flex-1 overflow-auto overscroll-contain pb-[24px] md:pb-[48px]">
267
+ <div className="mt-[24px] pb-[24px] md:pb-[48px]">
268
268
  {list.length > 0 ? (
269
269
  <div className="grid gap-[18px] md:gap-[12px]">
270
270
  {list.map((item, index) => (
@@ -52,7 +52,7 @@ export type CreditsTemplateProps = {
52
52
  }
53
53
  taskIdToTypeMapping: Record<string, DTC_TASK_TYPE>
54
54
  memberPriceDiscount?: FunctionMemberPriceConfig[]
55
- taskNameMapping: Record<string, string>
55
+ taskNameMapping?: Record<string, string>
56
56
  }
57
57
  creditsConfig?: {
58
58
  alpcBrand?: string
@@ -1,14 +0,0 @@
1
- export declare function getAsyncError(res: {
2
- json: () => any;
3
- status: any;
4
- statusText: any;
5
- }): Promise<{
6
- status: any;
7
- statusText: any;
8
- errors: any;
9
- type: any;
10
- data: any;
11
- message: any;
12
- } | undefined>;
13
- declare const handleFetchResponse: (res: Response) => Promise<any>;
14
- export default handleFetchResponse;
@@ -1,2 +0,0 @@
1
- "use strict";var o=Object.defineProperty;var u=Object.getOwnPropertyDescriptor;var c=Object.getOwnPropertyNames;var y=Object.prototype.hasOwnProperty;var d=(a,t)=>{for(var s in t)o(a,s,{get:t[s],enumerable:!0})},l=(a,t,s,n)=>{if(t&&typeof t=="object"||typeof t=="function")for(let e of c(t))!y.call(a,e)&&e!==s&&o(a,e,{get:()=>t[e],enumerable:!(n=u(t,e))||n.enumerable});return a};var g=a=>l(o({},"__esModule",{value:!0}),a);var x={};d(x,{default:()=>p,getAsyncError:()=>r});module.exports=g(x);async function r(a){try{const t=await a.json();return{status:a.status,statusText:a.statusText,errors:t?.data?.error||t?.data?.code||a.statusText||a.status,type:t?.data?.type,data:t?.data,message:t?.data?.message}}catch(t){console.log(t)}}const i=async a=>{if(a.ok)try{const t=await a.json(),{errors:s}=t;return s&&s.length?{errors:s,status:a.status}:t}catch(t){console.log(t)}return await r(a)};var p=i;
2
- //# sourceMappingURL=fetchResponse.js.map
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../../src/helpers/fetchResponse.ts"],
4
- "sourcesContent": ["export async function getAsyncError(res: { json: () => any; status: any; statusText: any }) {\n try {\n const result = await res.json()\n return {\n status: res.status,\n statusText: res.statusText,\n errors: result?.data?.error || result?.data?.code || res.statusText || res.status,\n type: result?.data?.type,\n data: result?.data,\n message: result?.data?.message,\n }\n } catch (error) {\n console.log(error)\n }\n}\n\nconst handleFetchResponse = async (res: Response) => {\n if (res.ok) {\n try {\n const result = await res.json()\n const { errors } = result\n if (errors && errors.length) {\n return { errors, status: res.status }\n }\n\n return result\n } catch (error) {\n console.log(error)\n }\n }\n\n return await getAsyncError(res)\n}\n\nexport default handleFetchResponse\n"],
5
- "mappings": "yaAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,aAAAE,EAAA,kBAAAC,IAAA,eAAAC,EAAAJ,GAAA,eAAsBG,EAAcE,EAAwD,CAC1F,GAAI,CACF,MAAMC,EAAS,MAAMD,EAAI,KAAK,EAC9B,MAAO,CACL,OAAQA,EAAI,OACZ,WAAYA,EAAI,WAChB,OAAQC,GAAQ,MAAM,OAASA,GAAQ,MAAM,MAAQD,EAAI,YAAcA,EAAI,OAC3E,KAAMC,GAAQ,MAAM,KACpB,KAAMA,GAAQ,KACd,QAASA,GAAQ,MAAM,OACzB,CACF,OAASC,EAAO,CACd,QAAQ,IAAIA,CAAK,CACnB,CACF,CAEA,MAAMC,EAAsB,MAAOH,GAAkB,CACnD,GAAIA,EAAI,GACN,GAAI,CACF,MAAMC,EAAS,MAAMD,EAAI,KAAK,EACxB,CAAE,OAAAI,CAAO,EAAIH,EACnB,OAAIG,GAAUA,EAAO,OACZ,CAAE,OAAAA,EAAQ,OAAQJ,EAAI,MAAO,EAG/BC,CACT,OAASC,EAAO,CACd,QAAQ,IAAIA,CAAK,CACnB,CAGF,OAAO,MAAMJ,EAAcE,CAAG,CAChC,EAEA,IAAOH,EAAQM",
6
- "names": ["fetchResponse_exports", "__export", "fetchResponse_default", "getAsyncError", "__toCommonJS", "res", "result", "error", "handleFetchResponse", "errors"]
7
- }
@@ -1,2 +0,0 @@
1
- declare const fetcher: ({ locale, url, method, headers, repeatKey, body, type, timeout, }: any) => Promise<any>;
2
- export default fetcher;
@@ -1,2 +0,0 @@
1
- "use strict";var g=Object.create;var o=Object.defineProperty;var u=Object.getOwnPropertyDescriptor;var b=Object.getOwnPropertyNames;var h=Object.getPrototypeOf,A=Object.prototype.hasOwnProperty;var O=(e,r)=>{for(var t in r)o(e,t,{get:r[t],enumerable:!0})},f=(e,r,t,a)=>{if(r&&typeof r=="object"||typeof r=="function")for(let n of b(r))!A.call(e,n)&&n!==t&&o(e,n,{get:()=>r[n],enumerable:!(a=u(r,n))||a.enumerable});return e};var T=(e,r,t)=>(t=e!=null?g(h(e)):{},f(r||!e||!e.__esModule?o(t,"default",{value:e,enumerable:!0}):t,e)),j=e=>f(o({},"__esModule",{value:!0}),e);var S={};O(S,{default:()=>F});module.exports=j(S);var y=T(require("./fetchResponse.js"));const x=e=>e!==null&&typeof e=="object"&&!Array.isArray(e),w=async({locale:e="en",url:r,method:t="POST",headers:a={},repeatKey:n,body:s,type:p,timeout:l=9e4})=>{let c="";p==="uploadFile"?c=s:c=s?JSON.stringify(s):"";const i=new AbortController;l&&setTimeout(()=>i.abort(),l);const d=await fetch(r,{method:t,mode:"cors",headers:{"current-language":e,...a},...l&&{signal:i.signal},...t!=="GET"&&{body:c}});return(0,y.default)(d)};var F=w;
2
- //# sourceMappingURL=fetcher.js.map
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../../src/helpers/fetcher.ts"],
4
- "sourcesContent": ["import handleFetchResponse from './fetchResponse.js'\n\nconst isObject = (value: null) => {\n return value !== null && typeof value === 'object' && !Array.isArray(value)\n}\n\nconst fetcher = async ({\n locale = 'en',\n url,\n method = 'POST',\n headers = {},\n repeatKey,\n body,\n type,\n timeout = 90000,\n}: any) => {\n // \u6DFB\u52A0\u8C37\u6B4C\u9A8C\u8BC1\n let bodyData = ''\n if (type === 'uploadFile') {\n bodyData = body\n } else {\n bodyData = body ? JSON.stringify(body) : ''\n }\n\n const controller = new AbortController()\n if (timeout) {\n // \u8D85\u65F6\u62A5\u9519\n setTimeout(() => controller.abort(), timeout)\n }\n\n const data = await fetch(url, {\n method,\n mode: 'cors',\n headers: {\n 'current-language': locale,\n ...headers,\n },\n ...(timeout && { signal: controller.signal }),\n ...(method !== 'GET' && { body: bodyData }),\n })\n return handleFetchResponse(data)\n}\n\nexport default fetcher\n"],
5
- "mappings": "0jBAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,aAAAE,IAAA,eAAAC,EAAAH,GAAA,IAAAI,EAAgC,iCAEhC,MAAMC,EAAYC,GACTA,IAAU,MAAQ,OAAOA,GAAU,UAAY,CAAC,MAAM,QAAQA,CAAK,EAGtEC,EAAU,MAAO,CACrB,OAAAC,EAAS,KACT,IAAAC,EACA,OAAAC,EAAS,OACT,QAAAC,EAAU,CAAC,EACX,UAAAC,EACA,KAAAC,EACA,KAAAC,EACA,QAAAC,EAAU,GACZ,IAAW,CAET,IAAIC,EAAW,GACXF,IAAS,aACXE,EAAWH,EAEXG,EAAWH,EAAO,KAAK,UAAUA,CAAI,EAAI,GAG3C,MAAMI,EAAa,IAAI,gBACnBF,GAEF,WAAW,IAAME,EAAW,MAAM,EAAGF,CAAO,EAG9C,MAAMG,EAAO,MAAM,MAAMT,EAAK,CAC5B,OAAAC,EACA,KAAM,OACN,QAAS,CACP,mBAAoBF,EACpB,GAAGG,CACL,EACA,GAAII,GAAW,CAAE,OAAQE,EAAW,MAAO,EAC3C,GAAIP,IAAW,OAAS,CAAE,KAAMM,CAAS,CAC3C,CAAC,EACD,SAAO,EAAAG,SAAoBD,CAAI,CACjC,EAEA,IAAOhB,EAAQK",
6
- "names": ["fetcher_exports", "__export", "fetcher_default", "__toCommonJS", "import_fetchResponse", "isObject", "value", "fetcher", "locale", "url", "method", "headers", "repeatKey", "body", "type", "timeout", "bodyData", "controller", "data", "handleFetchResponse"]
7
- }
@@ -1,2 +0,0 @@
1
- export { cn } from './utils.js';
2
- export { noop } from './utils.js';
@@ -1,2 +0,0 @@
1
- "use strict";var f=Object.defineProperty;var x=Object.getOwnPropertyDescriptor;var c=Object.getOwnPropertyNames;var a=Object.prototype.hasOwnProperty;var b=(r,o)=>{for(var e in o)f(r,e,{get:o[e],enumerable:!0})},d=(r,o,e,m)=>{if(o&&typeof o=="object"||typeof o=="function")for(let p of c(o))!a.call(r,p)&&p!==e&&f(r,p,{get:()=>o[p],enumerable:!(m=x(o,p))||m.enumerable});return r};var g=r=>d(f({},"__esModule",{value:!0}),r);var h={};b(h,{cn:()=>n.cn,noop:()=>t.noop});module.exports=g(h);var n=require("./utils.js"),t=require("./utils.js");
2
- //# sourceMappingURL=index.js.map
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../../src/helpers/index.ts"],
4
- "sourcesContent": ["export { cn } from './utils.js'\nexport { noop } from './utils.js'\n"],
5
- "mappings": "yaAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,8CAAAE,EAAAF,GAAA,IAAAG,EAAmB,sBACnBA,EAAqB",
6
- "names": ["helpers_exports", "__export", "__toCommonJS", "import_utils"]
7
- }
@@ -1,3 +0,0 @@
1
- import { type ClassValue } from 'clsx';
2
- export declare function cn(...inputs: ClassValue[]): string;
3
- export declare function noop(): any;
@@ -1,2 +0,0 @@
1
- "use strict";var n=Object.defineProperty;var s=Object.getOwnPropertyDescriptor;var u=Object.getOwnPropertyNames;var c=Object.prototype.hasOwnProperty;var f=(o,r)=>{for(var e in r)n(o,e,{get:r[e],enumerable:!0})},i=(o,r,e,p)=>{if(r&&typeof r=="object"||typeof r=="function")for(let t of u(r))!c.call(o,t)&&t!==e&&n(o,t,{get:()=>r[t],enumerable:!(p=s(r,t))||p.enumerable});return o};var m=o=>i(n({},"__esModule",{value:!0}),o);var C={};f(C,{cn:()=>x,noop:()=>y});module.exports=m(C);var a=require("clsx"),l=require("tailwind-merge");function x(...o){return(0,l.twMerge)((0,a.clsx)(o))}function y(){}
2
- //# sourceMappingURL=utils.js.map
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../../src/helpers/utils.ts"],
4
- "sourcesContent": ["import { clsx, type ClassValue } from 'clsx'\nimport { twMerge } from 'tailwind-merge'\n\nexport function cn(...inputs: ClassValue[]) {\n return twMerge(clsx(inputs))\n}\n\nexport function noop(): any {}\n"],
5
- "mappings": "yaAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,QAAAE,EAAA,SAAAC,IAAA,eAAAC,EAAAJ,GAAA,IAAAK,EAAsC,gBACtCC,EAAwB,0BAEjB,SAASJ,KAAMK,EAAsB,CAC1C,SAAO,cAAQ,QAAKA,CAAM,CAAC,CAC7B,CAEO,SAASJ,GAAY,CAAC",
6
- "names": ["utils_exports", "__export", "cn", "noop", "__toCommonJS", "import_clsx", "import_tailwind_merge", "inputs"]
7
- }
@@ -1,14 +0,0 @@
1
- export declare function getAsyncError(res: {
2
- json: () => any;
3
- status: any;
4
- statusText: any;
5
- }): Promise<{
6
- status: any;
7
- statusText: any;
8
- errors: any;
9
- type: any;
10
- data: any;
11
- message: any;
12
- } | undefined>;
13
- declare const handleFetchResponse: (res: Response) => Promise<any>;
14
- export default handleFetchResponse;
@@ -1,2 +0,0 @@
1
- async function e(a){try{const t=await a.json();return{status:a.status,statusText:a.statusText,errors:t?.data?.error||t?.data?.code||a.statusText||a.status,type:t?.data?.type,data:t?.data,message:t?.data?.message}}catch(t){console.log(t)}}const o=async a=>{if(a.ok)try{const t=await a.json(),{errors:s}=t;return s&&s.length?{errors:s,status:a.status}:t}catch(t){console.log(t)}return await e(a)};var n=o;export{n as default,e as getAsyncError};
2
- //# sourceMappingURL=fetchResponse.js.map
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../../src/helpers/fetchResponse.ts"],
4
- "sourcesContent": ["export async function getAsyncError(res: { json: () => any; status: any; statusText: any }) {\n try {\n const result = await res.json()\n return {\n status: res.status,\n statusText: res.statusText,\n errors: result?.data?.error || result?.data?.code || res.statusText || res.status,\n type: result?.data?.type,\n data: result?.data,\n message: result?.data?.message,\n }\n } catch (error) {\n console.log(error)\n }\n}\n\nconst handleFetchResponse = async (res: Response) => {\n if (res.ok) {\n try {\n const result = await res.json()\n const { errors } = result\n if (errors && errors.length) {\n return { errors, status: res.status }\n }\n\n return result\n } catch (error) {\n console.log(error)\n }\n }\n\n return await getAsyncError(res)\n}\n\nexport default handleFetchResponse\n"],
5
- "mappings": "AAAA,eAAsBA,EAAcC,EAAwD,CAC1F,GAAI,CACF,MAAMC,EAAS,MAAMD,EAAI,KAAK,EAC9B,MAAO,CACL,OAAQA,EAAI,OACZ,WAAYA,EAAI,WAChB,OAAQC,GAAQ,MAAM,OAASA,GAAQ,MAAM,MAAQD,EAAI,YAAcA,EAAI,OAC3E,KAAMC,GAAQ,MAAM,KACpB,KAAMA,GAAQ,KACd,QAASA,GAAQ,MAAM,OACzB,CACF,OAASC,EAAO,CACd,QAAQ,IAAIA,CAAK,CACnB,CACF,CAEA,MAAMC,EAAsB,MAAOH,GAAkB,CACnD,GAAIA,EAAI,GACN,GAAI,CACF,MAAMC,EAAS,MAAMD,EAAI,KAAK,EACxB,CAAE,OAAAI,CAAO,EAAIH,EACnB,OAAIG,GAAUA,EAAO,OACZ,CAAE,OAAAA,EAAQ,OAAQJ,EAAI,MAAO,EAG/BC,CACT,OAASC,EAAO,CACd,QAAQ,IAAIA,CAAK,CACnB,CAGF,OAAO,MAAMH,EAAcC,CAAG,CAChC,EAEA,IAAOK,EAAQF",
6
- "names": ["getAsyncError", "res", "result", "error", "handleFetchResponse", "errors", "fetchResponse_default"]
7
- }
@@ -1,2 +0,0 @@
1
- declare const fetcher: ({ locale, url, method, headers, repeatKey, body, type, timeout, }: any) => Promise<any>;
2
- export default fetcher;
@@ -1,2 +0,0 @@
1
- import f from"./fetchResponse.js";const g=e=>e!==null&&typeof e=="object"&&!Array.isArray(e),y=async({locale:e="en",url:s,method:a="POST",headers:l={},repeatKey:p,body:r,type:c,timeout:t=9e4})=>{let n="";c==="uploadFile"?n=r:n=r?JSON.stringify(r):"";const o=new AbortController;t&&setTimeout(()=>o.abort(),t);const i=await fetch(s,{method:a,mode:"cors",headers:{"current-language":e,...l},...t&&{signal:o.signal},...a!=="GET"&&{body:n}});return f(i)};var u=y;export{u as default};
2
- //# sourceMappingURL=fetcher.js.map
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../../src/helpers/fetcher.ts"],
4
- "sourcesContent": ["import handleFetchResponse from './fetchResponse.js'\n\nconst isObject = (value: null) => {\n return value !== null && typeof value === 'object' && !Array.isArray(value)\n}\n\nconst fetcher = async ({\n locale = 'en',\n url,\n method = 'POST',\n headers = {},\n repeatKey,\n body,\n type,\n timeout = 90000,\n}: any) => {\n // \u6DFB\u52A0\u8C37\u6B4C\u9A8C\u8BC1\n let bodyData = ''\n if (type === 'uploadFile') {\n bodyData = body\n } else {\n bodyData = body ? JSON.stringify(body) : ''\n }\n\n const controller = new AbortController()\n if (timeout) {\n // \u8D85\u65F6\u62A5\u9519\n setTimeout(() => controller.abort(), timeout)\n }\n\n const data = await fetch(url, {\n method,\n mode: 'cors',\n headers: {\n 'current-language': locale,\n ...headers,\n },\n ...(timeout && { signal: controller.signal }),\n ...(method !== 'GET' && { body: bodyData }),\n })\n return handleFetchResponse(data)\n}\n\nexport default fetcher\n"],
5
- "mappings": "AAAA,OAAOA,MAAyB,qBAEhC,MAAMC,EAAYC,GACTA,IAAU,MAAQ,OAAOA,GAAU,UAAY,CAAC,MAAM,QAAQA,CAAK,EAGtEC,EAAU,MAAO,CACrB,OAAAC,EAAS,KACT,IAAAC,EACA,OAAAC,EAAS,OACT,QAAAC,EAAU,CAAC,EACX,UAAAC,EACA,KAAAC,EACA,KAAAC,EACA,QAAAC,EAAU,GACZ,IAAW,CAET,IAAIC,EAAW,GACXF,IAAS,aACXE,EAAWH,EAEXG,EAAWH,EAAO,KAAK,UAAUA,CAAI,EAAI,GAG3C,MAAMI,EAAa,IAAI,gBACnBF,GAEF,WAAW,IAAME,EAAW,MAAM,EAAGF,CAAO,EAG9C,MAAMG,EAAO,MAAM,MAAMT,EAAK,CAC5B,OAAAC,EACA,KAAM,OACN,QAAS,CACP,mBAAoBF,EACpB,GAAGG,CACL,EACA,GAAII,GAAW,CAAE,OAAQE,EAAW,MAAO,EAC3C,GAAIP,IAAW,OAAS,CAAE,KAAMM,CAAS,CAC3C,CAAC,EACD,OAAOZ,EAAoBc,CAAI,CACjC,EAEA,IAAOC,EAAQZ",
6
- "names": ["handleFetchResponse", "isObject", "value", "fetcher", "locale", "url", "method", "headers", "repeatKey", "body", "type", "timeout", "bodyData", "controller", "data", "fetcher_default"]
7
- }
@@ -1,2 +0,0 @@
1
- export { cn } from './utils.js';
2
- export { noop } from './utils.js';
@@ -1,2 +0,0 @@
1
- import{cn as p}from"./utils.js";import{noop as f}from"./utils.js";export{p as cn,f as noop};
2
- //# sourceMappingURL=index.js.map
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../../src/helpers/index.ts"],
4
- "sourcesContent": ["export { cn } from './utils.js'\nexport { noop } from './utils.js'\n"],
5
- "mappings": "AAAA,OAAS,MAAAA,MAAU,aACnB,OAAS,QAAAC,MAAY",
6
- "names": ["cn", "noop"]
7
- }
@@ -1,3 +0,0 @@
1
- import { type ClassValue } from 'clsx';
2
- export declare function cn(...inputs: ClassValue[]): string;
3
- export declare function noop(): any;
@@ -1,2 +0,0 @@
1
- import{clsx as r}from"clsx";import{twMerge as t}from"tailwind-merge";function p(...o){return t(r(o))}function a(){}export{p as cn,a as noop};
2
- //# sourceMappingURL=utils.js.map
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../../src/helpers/utils.ts"],
4
- "sourcesContent": ["import { clsx, type ClassValue } from 'clsx'\nimport { twMerge } from 'tailwind-merge'\n\nexport function cn(...inputs: ClassValue[]) {\n return twMerge(clsx(inputs))\n}\n\nexport function noop(): any {}\n"],
5
- "mappings": "AAAA,OAAS,QAAAA,MAA6B,OACtC,OAAS,WAAAC,MAAe,iBAEjB,SAASC,KAAMC,EAAsB,CAC1C,OAAOF,EAAQD,EAAKG,CAAM,CAAC,CAC7B,CAEO,SAASC,GAAY,CAAC",
6
- "names": ["clsx", "twMerge", "cn", "inputs", "noop"]
7
- }