@anker-in/campaign-ui 0.4.5-beta.10 → 0.4.5-beta.12

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 (116) hide show
  1. package/dist/cjs/components/LiveChatWidget/components/MessageContent/ProductComparison.js +1 -1
  2. package/dist/cjs/components/LiveChatWidget/components/MessageContent/ProductComparison.js.map +2 -2
  3. package/dist/cjs/components/credits/context/hooks/useActivities.js +1 -1
  4. package/dist/cjs/components/credits/context/hooks/useActivities.js.map +2 -2
  5. package/dist/cjs/components/credits/context/hooks/useAlpcFetch.js +1 -1
  6. package/dist/cjs/components/credits/context/hooks/useAlpcFetch.js.map +3 -3
  7. package/dist/cjs/components/credits/context/hooks/useCountries.js +1 -1
  8. package/dist/cjs/components/credits/context/hooks/useCountries.js.map +2 -2
  9. package/dist/cjs/components/credits/context/hooks/useMyRewards.js +1 -1
  10. package/dist/cjs/components/credits/context/hooks/useMyRewards.js.map +2 -2
  11. package/dist/cjs/components/credits/context/hooks/useRedeemAndBuy.js +1 -1
  12. package/dist/cjs/components/credits/context/hooks/useRedeemAndBuy.js.map +3 -3
  13. package/dist/cjs/components/credits/context/hooks/useRedeemableList.js +1 -1
  14. package/dist/cjs/components/credits/context/hooks/useRedeemableList.js.map +2 -2
  15. package/dist/cjs/components/credits/context/hooks/useSubscribed.js +1 -1
  16. package/dist/cjs/components/credits/context/hooks/useSubscribed.js.map +3 -3
  17. package/dist/cjs/components/credits/context/hooks/useUploadReceipt.d.ts +0 -8
  18. package/dist/cjs/components/credits/context/hooks/useUploadReceipt.js +1 -1
  19. package/dist/cjs/components/credits/context/hooks/useUploadReceipt.js.map +3 -3
  20. package/dist/cjs/components/credits/context/provider.d.ts +2 -1
  21. package/dist/cjs/components/credits/context/provider.js +1 -1
  22. package/dist/cjs/components/credits/context/provider.js.map +3 -3
  23. package/dist/cjs/components/credits/context/utils.d.ts +1 -1
  24. package/dist/cjs/components/credits/context/utils.js +1 -1
  25. package/dist/cjs/components/credits/context/utils.js.map +3 -3
  26. package/dist/cjs/components/credits/creditsBenefits/index.js +2 -3
  27. package/dist/cjs/components/credits/creditsBenefits/index.js.map +2 -2
  28. package/dist/cjs/components/credits/creditsRedeemList/AddressForm/index.js +1 -1
  29. package/dist/cjs/components/credits/creditsRedeemList/AddressForm/index.js.map +2 -2
  30. package/dist/cjs/components/credits/creditsRedeemList/RedeemCouponModal.js +1 -1
  31. package/dist/cjs/components/credits/creditsRedeemList/RedeemCouponModal.js.map +3 -3
  32. package/dist/cjs/components/credits/creditsRedeemList/RedeemVirtualProductModal.js +1 -1
  33. package/dist/cjs/components/credits/creditsRedeemList/RedeemVirtualProductModal.js.map +3 -3
  34. package/dist/cjs/components/credits/modal/SubscribeModal.js +1 -1
  35. package/dist/cjs/components/credits/modal/SubscribeModal.js.map +3 -3
  36. package/dist/cjs/components/index.d.ts +2 -2
  37. package/dist/cjs/components/index.js +1 -1
  38. package/dist/cjs/components/index.js.map +2 -2
  39. package/dist/cjs/components/registration/authCodeActivate/index.js +1 -1
  40. package/dist/cjs/components/registration/authCodeActivate/index.js.map +3 -3
  41. package/dist/cjs/templates/Credits.js +1 -1
  42. package/dist/cjs/templates/Credits.js.map +2 -2
  43. package/dist/cjs/templates/Credits.types.d.ts +1 -0
  44. package/dist/cjs/templates/Credits.types.js.map +1 -1
  45. package/dist/esm/components/LiveChatWidget/components/MessageContent/ProductComparison.js +1 -1
  46. package/dist/esm/components/LiveChatWidget/components/MessageContent/ProductComparison.js.map +2 -2
  47. package/dist/esm/components/credits/context/hooks/useActivities.js +1 -1
  48. package/dist/esm/components/credits/context/hooks/useActivities.js.map +2 -2
  49. package/dist/esm/components/credits/context/hooks/useAlpcFetch.js +1 -1
  50. package/dist/esm/components/credits/context/hooks/useAlpcFetch.js.map +3 -3
  51. package/dist/esm/components/credits/context/hooks/useCountries.js +1 -1
  52. package/dist/esm/components/credits/context/hooks/useCountries.js.map +2 -2
  53. package/dist/esm/components/credits/context/hooks/useMyRewards.js +1 -1
  54. package/dist/esm/components/credits/context/hooks/useMyRewards.js.map +2 -2
  55. package/dist/esm/components/credits/context/hooks/useRedeemAndBuy.js +1 -1
  56. package/dist/esm/components/credits/context/hooks/useRedeemAndBuy.js.map +3 -3
  57. package/dist/esm/components/credits/context/hooks/useRedeemableList.js +1 -1
  58. package/dist/esm/components/credits/context/hooks/useRedeemableList.js.map +2 -2
  59. package/dist/esm/components/credits/context/hooks/useSubscribed.js +1 -1
  60. package/dist/esm/components/credits/context/hooks/useSubscribed.js.map +3 -3
  61. package/dist/esm/components/credits/context/hooks/useUploadReceipt.d.ts +0 -8
  62. package/dist/esm/components/credits/context/hooks/useUploadReceipt.js +1 -1
  63. package/dist/esm/components/credits/context/hooks/useUploadReceipt.js.map +3 -3
  64. package/dist/esm/components/credits/context/provider.d.ts +2 -1
  65. package/dist/esm/components/credits/context/provider.js +1 -1
  66. package/dist/esm/components/credits/context/provider.js.map +3 -3
  67. package/dist/esm/components/credits/context/utils.d.ts +1 -1
  68. package/dist/esm/components/credits/context/utils.js +1 -1
  69. package/dist/esm/components/credits/context/utils.js.map +3 -3
  70. package/dist/esm/components/credits/creditsBenefits/index.js +2 -3
  71. package/dist/esm/components/credits/creditsBenefits/index.js.map +2 -2
  72. package/dist/esm/components/credits/creditsRedeemList/AddressForm/index.js +1 -1
  73. package/dist/esm/components/credits/creditsRedeemList/AddressForm/index.js.map +2 -2
  74. package/dist/esm/components/credits/creditsRedeemList/RedeemCouponModal.js +1 -1
  75. package/dist/esm/components/credits/creditsRedeemList/RedeemCouponModal.js.map +3 -3
  76. package/dist/esm/components/credits/creditsRedeemList/RedeemVirtualProductModal.js +1 -1
  77. package/dist/esm/components/credits/creditsRedeemList/RedeemVirtualProductModal.js.map +3 -3
  78. package/dist/esm/components/credits/modal/SubscribeModal.js +1 -1
  79. package/dist/esm/components/credits/modal/SubscribeModal.js.map +3 -3
  80. package/dist/esm/components/index.d.ts +2 -2
  81. package/dist/esm/components/index.js +1 -1
  82. package/dist/esm/components/index.js.map +2 -2
  83. package/dist/esm/components/registration/authCodeActivate/index.js +1 -1
  84. package/dist/esm/components/registration/authCodeActivate/index.js.map +3 -3
  85. package/dist/esm/templates/Credits.js +1 -1
  86. package/dist/esm/templates/Credits.js.map +2 -2
  87. package/dist/esm/templates/Credits.types.d.ts +1 -0
  88. package/dist/esm/templates/Credits.types.js.map +1 -1
  89. package/package.json +2 -3
  90. package/src/components/LiveChatWidget/components/MessageContent/ProductComparison.tsx +1 -1
  91. package/src/components/credits/context/hooks/useActivities.ts +2 -2
  92. package/src/components/credits/context/hooks/useAlpcFetch.ts +64 -20
  93. package/src/components/credits/context/hooks/useCountries.ts +7 -2
  94. package/src/components/credits/context/hooks/useMyRewards.ts +5 -2
  95. package/src/components/credits/context/hooks/useRedeemAndBuy.ts +3 -2
  96. package/src/components/credits/context/hooks/useRedeemableList.ts +22 -23
  97. package/src/components/credits/context/hooks/useSubscribed.ts +4 -3
  98. package/src/components/credits/context/hooks/useUploadReceipt.tsx +42 -21
  99. package/src/components/credits/context/provider.tsx +4 -0
  100. package/src/components/credits/context/utils.ts +6 -1
  101. package/src/components/credits/creditsBenefits/index.tsx +1 -2
  102. package/src/components/credits/creditsRedeemList/AddressForm/index.tsx +4 -6
  103. package/src/components/credits/creditsRedeemList/RedeemCouponModal.tsx +3 -2
  104. package/src/components/credits/creditsRedeemList/RedeemVirtualProductModal.tsx +5 -4
  105. package/src/components/credits/modal/SubscribeModal.tsx +4 -6
  106. package/src/components/index.ts +2 -2
  107. package/src/components/registration/authCodeActivate/index.tsx +8 -6
  108. package/src/templates/Credits.tsx +1 -0
  109. package/src/templates/Credits.types.ts +1 -0
  110. package/dist/cjs/stories/CartCard.stories.d.ts +0 -33
  111. package/dist/cjs/stories/CartCard.stories.js +0 -21
  112. package/dist/cjs/stories/CartCard.stories.js.map +0 -7
  113. package/dist/esm/stories/CartCard.stories.d.ts +0 -33
  114. package/dist/esm/stories/CartCard.stories.js +0 -21
  115. package/dist/esm/stories/CartCard.stories.js.map +0 -7
  116. package/src/stories/CartCard.stories.tsx +0 -459
@@ -1,2 +1,2 @@
1
- "use strict";var f=Object.defineProperty;var M=Object.getOwnPropertyDescriptor;var A=Object.getOwnPropertyNames;var S=Object.prototype.hasOwnProperty;var L=(s,n)=>{for(var l in n)f(s,l,{get:n[l],enumerable:!0})},E=(s,n,l,i)=>{if(n&&typeof n=="object"||typeof n=="function")for(let d of A(n))!S.call(s,d)&&d!==l&&f(s,d,{get:()=>n[d],enumerable:!(i=M(n,d))||i.enumerable});return s};var U=s=>E(f({},"__esModule",{value:!0}),s);var $={};L($,{ProductComparison:()=>h,ProductComparisonRenderer:()=>O});module.exports=U($);var t=require("react/jsx-runtime"),D=require("react"),g=require("../../constants");const m=(s,n="USD")=>`${g.CURRENCY_SYMBOLS[n]||n}${s}`,h=({data:s,onAddToCart:n,commonText:l})=>{const{products:i,dimensions:d}=s,N={...g.DEFAULT_COMMON_TEXT,...l},p=i?.filter(e=>e&&e.shopifyId)||[],x=2,k=p.slice(0,x),[C,P]=(0,D.useState)(k);if(p.length===0)return null;const w=(e,r)=>{const o=p.find(a=>a.shopifyId===r);if(o){const a=[...C];a[e]=o,P(a)}},b=C.slice(0,x),y=(e,r)=>!e||!e.values||!Array.isArray(e.values)?null:e.values.find(o=>o&&o.product_id===r),F=(e,r)=>r?(0,t.jsxs)("div",{className:"border-b border-[#DADCE0] pb-2",children:[(0,t.jsx)("div",{className:"mb-1",children:(0,t.jsx)("span",{className:"text-sm font-bold leading-[1.4] tracking-[-0.02em] text-[#86868C]",children:e==="price"?"has member price":e})}),(0,t.jsx)("div",{className:"flex gap-4",style:{gap:"36px"},children:b.map((o,a)=>{if(!o||!o.shopifyId)return null;const u=y(r,o.shopifyId);return(0,t.jsx)("div",{className:"flex-1",children:R(u,r.label)},`comparison-${a}`)})})]}):null,R=(e,r)=>{if(!e)return(0,t.jsx)("span",{className:"text-sm font-bold leading-[1.4] tracking-[-0.02em] text-[#1D1D1F]",children:"-"});if(r.toLowerCase().includes("price")){const o=e?.has_member_price,a=e?.available?e.min===e.max?m(e.min,e.currency):`${m(e.min,e.currency)} - ${m(e.max,e.currency)}`:"-";return(0,t.jsx)("span",{className:"text-sm font-bold leading-[1.4] tracking-[-0.02em] text-[#1D1D1F]",children:o?"Yes":"No"})}if(r.toLowerCase().includes("variant"))return(0,t.jsxs)("span",{className:"text-sm font-bold leading-[1.4] tracking-[-0.02em] text-[#1D1D1F]",children:[e.count||0," ",e.count===1?"variant":"variants"]});if(r.toLowerCase().includes("review")){const o=e.rating||0,a=e.count||0;return(0,t.jsxs)("div",{className:"flex items-center gap-1",children:[(0,t.jsxs)("span",{className:"text-sm font-bold leading-[1.4] tracking-[-0.02em] text-[#1D1D1F]",children:["\u2B50 ",o.toFixed(1)]}),(0,t.jsxs)("span",{className:"text-sm font-bold leading-[1.4] tracking-[-0.02em] text-[#86868C]",children:["(",a,")"]})]})}return(0,t.jsx)("span",{className:"text-sm font-bold leading-[1.4] tracking-[-0.02em] text-[#1D1D1F]",children:e.display||e.value||"-"})};return(0,t.jsxs)("div",{className:"w-full overflow-hidden rounded-2xl bg-[#F5F6F7]",children:[(0,t.jsx)("div",{className:"flex p-4",style:{gap:"36px",paddingBottom:"0px"},children:b.map((e,r)=>{if(!e||!e.shopifyId)return null;const o=d.price?y(d.price,e.shopifyId):null,a=e.variants?.[0],u=a?.discount?.has_discount,v=u?a?.discount?.discount_price:null,T=v||o?.min||e.price.amount,_=e.price.amount,I=c=>{c.preventDefault(),c.stopPropagation(),n&&n(e)};return(0,t.jsxs)("div",{className:"flex flex-1 flex-col items-center",children:[(0,t.jsx)("div",{className:"mb-4 w-full",children:(0,t.jsx)("select",{value:e.shopifyId,onChange:c=>w(r,c.target.value),className:"w-full rounded-lg border border-[#DADCE0] bg-[#F5F6F7] px-3 py-2 text-sm font-bold leading-[1.4] tracking-[-0.02em] text-[#1D1D1F]",style:{appearance:"none",backgroundImage:`url("data:image/svg+xml,%3Csvg width='12' height='8' viewBox='0 0 12 8' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M1 1.5L6 6.5L11 1.5' stroke='%231D1D1F' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E")`,backgroundRepeat:"no-repeat",backgroundPosition:"right 12px center",paddingRight:"32px"},children:p.map(c=>(0,t.jsx)("option",{value:c.shopifyId,children:c.title.length>30?`${c.title.slice(0,30)}...`:c.title},c.shopifyId))})}),(0,t.jsx)("a",{href:e.productUrl,target:"_blank",rel:"noopener noreferrer",className:"mb-4 block w-full max-w-[160px]",children:(0,t.jsx)("div",{className:"aspect-square w-full overflow-hidden rounded-lg",children:e.imageUrl?(0,t.jsx)("img",{src:e.imageUrl,alt:e.title,className:"size-full object-contain",loading:"lazy"}):(0,t.jsx)("div",{className:"flex size-full items-center justify-center text-gray-400",children:(0,t.jsx)("svg",{className:"size-12",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",children:(0,t.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M4 16l4.586-4.586a2 2 0 012.828 0L16 16m-2-2l1.586-1.586a2 2 0 012.828 0L20 14m-6-6h.01M6 20h12a2 2 0 002-2V6a2 2 0 00-2-2H6a2 2 0 00-2 2v12a2 2 0 002 2z"})})})})}),(0,t.jsx)("div",{className:"mb-4 flex flex-col items-center gap-1",children:(0,t.jsxs)("div",{className:"flex items-center gap-2 justify-center flex-wrap",children:[(0,t.jsx)("span",{className:"text-base font-bold leading-[1.2] tracking-[-0.02em] text-[#1D1D1F]",children:m(T,o?.currency||e.price.currency)}),u&&v&&(0,t.jsx)("span",{className:"text-base font-bold leading-[1.2] tracking-[-0.02em] text-[#4A4C56] line-through",children:m(_,e.price.currency)})]})}),n&&(0,t.jsx)("button",{type:"button",onClick:I,className:"livechat-btn-primary mb-3 w-fit rounded-full px-[20px] py-[10px] text-center text-sm font-bold leading-[1.2] tracking-[-0.04em] text-white",style:{backgroundColor:"#1D1D1F"},children:N.addToCart})]},`product-column-${r}`)})}),(0,t.jsx)("div",{className:"flex flex-col gap-4 p-4",children:Object.entries(d).map(([e,r])=>r?(0,t.jsx)("div",{children:F(r.label,r)},e):null)})]})},O={render:(s,n,l)=>{if(s.type!=="product_comparison"||!s.data)return null;const i=s.data;return i.productComparisonRender?(0,t.jsx)(t.Fragment,{children:i.productComparisonRender(i)}):(0,t.jsx)(h,{data:i,isUser:n,isSystem:l,onAddToCart:i.onAddToCart,commonText:i.commonText})}};
1
+ "use strict";var f=Object.defineProperty;var M=Object.getOwnPropertyDescriptor;var A=Object.getOwnPropertyNames;var S=Object.prototype.hasOwnProperty;var L=(s,n)=>{for(var l in n)f(s,l,{get:n[l],enumerable:!0})},E=(s,n,l,i)=>{if(n&&typeof n=="object"||typeof n=="function")for(let d of A(n))!S.call(s,d)&&d!==l&&f(s,d,{get:()=>n[d],enumerable:!(i=M(n,d))||i.enumerable});return s};var U=s=>E(f({},"__esModule",{value:!0}),s);var $={};L($,{ProductComparison:()=>h,ProductComparisonRenderer:()=>O});module.exports=U($);var t=require("react/jsx-runtime"),D=require("react"),g=require("../../constants");const m=(s,n="USD")=>`${g.CURRENCY_SYMBOLS[n]||n}${s}`,h=({data:s,onAddToCart:n,commonText:l})=>{const{products:i,dimensions:d}=s,N={...g.DEFAULT_COMMON_TEXT,...l},p=i?.filter(e=>e&&e.shopifyId)||[],x=2,k=p.slice(0,x),[C,P]=(0,D.useState)(k);if(p.length===0)return null;const w=(e,r)=>{const o=p.find(a=>a.shopifyId===r);if(o){const a=[...C];a[e]=o,P(a)}},b=C.slice(0,x),v=(e,r)=>!e||!e.values||!Array.isArray(e.values)?null:e.values.find(o=>o&&o.product_id===r),F=(e,r)=>r?(0,t.jsxs)("div",{className:"border-b border-[#DADCE0] pb-2",children:[(0,t.jsx)("div",{className:"mb-1",children:(0,t.jsx)("span",{className:"text-sm font-bold leading-[1.4] tracking-[-0.02em] text-[#86868C]",children:e==="price"?"has member price":e})}),(0,t.jsx)("div",{className:"flex gap-4",style:{gap:"36px"},children:b.map((o,a)=>{if(!o||!o.shopifyId)return null;const u=v(r,o.shopifyId);return(0,t.jsx)("div",{className:"flex-1",children:R(u,r.label)},`comparison-${a}`)})})]}):null,R=(e,r)=>{if(!e)return(0,t.jsx)("span",{className:"text-sm font-bold leading-[1.4] tracking-[-0.02em] text-[#1D1D1F]",children:"-"});if(r.toLowerCase().includes("price")){const o=e?.has_member_price,a=e?.available?e.min===e.max?m(e.min,e.currency):`${m(e.min,e.currency)} - ${m(e.max,e.currency)}`:"-";return(0,t.jsx)("span",{className:"text-sm font-bold leading-[1.4] tracking-[-0.02em] text-[#1D1D1F]",children:o?"Yes":"No"})}if(r.toLowerCase().includes("variant"))return(0,t.jsxs)("span",{className:"text-sm font-bold leading-[1.4] tracking-[-0.02em] text-[#1D1D1F]",children:[e.count||0," ",e.count===1?"variant":"variants"]});if(r.toLowerCase().includes("review")){const o=e.rating||0,a=e.count||0;return(0,t.jsxs)("div",{className:"flex items-center gap-1",children:[(0,t.jsxs)("span",{className:"text-sm font-bold leading-[1.4] tracking-[-0.02em] text-[#1D1D1F]",children:["\u2B50 ",o.toFixed(1)]}),(0,t.jsxs)("span",{className:"text-sm font-bold leading-[1.4] tracking-[-0.02em] text-[#86868C]",children:["(",a,")"]})]})}return(0,t.jsx)("span",{className:"text-sm font-bold leading-[1.4] tracking-[-0.02em] text-[#1D1D1F]",children:e.display||e.value||"-"})};return(0,t.jsxs)("div",{className:"w-full overflow-hidden rounded-2xl bg-[#F5F6F7]",children:[(0,t.jsx)("div",{className:"flex p-4",style:{gap:"36px",paddingBottom:"0px"},children:b.map((e,r)=>{if(!e||!e.shopifyId)return null;const o=d.price?v(d.price,e.shopifyId):null,a=e.variants?.[0],u=a?.discount?.has_discount,y=u?a?.discount?.discount_price:null,T=y||o?.min||e.price.amount,_=e.price.amount,I=c=>{c.preventDefault(),c.stopPropagation(),n&&n(e)};return(0,t.jsxs)("div",{className:"flex flex-1 flex-col items-center",children:[(0,t.jsx)("div",{className:"mb-4 w-full",children:(0,t.jsx)("select",{value:e.shopifyId,onChange:c=>w(r,c.target.value),className:"w-full rounded-lg border border-[#DADCE0] bg-[#F5F6F7] px-3 py-2 text-sm font-bold leading-[1.4] tracking-[-0.02em] text-[#1D1D1F]",style:{appearance:"none",backgroundImage:`url("data:image/svg+xml,%3Csvg width='12' height='8' viewBox='0 0 12 8' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M1 1.5L6 6.5L11 1.5' stroke='%231D1D1F' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E")`,backgroundRepeat:"no-repeat",backgroundPosition:"right 12px center",paddingRight:"32px"},children:p.map(c=>(0,t.jsx)("option",{value:c.shopifyId,children:c.title.length>30?`${c.title.slice(0,30)}...`:c.title},c.shopifyId))})}),(0,t.jsx)("a",{href:e.productUrl,target:"_blank",rel:"noopener noreferrer",className:"mb-4 block w-full max-w-[160px]",children:(0,t.jsx)("div",{className:"aspect-square w-full overflow-hidden rounded-lg",children:e.imageUrl?(0,t.jsx)("img",{src:e.imageUrl,alt:e.title,className:"size-full object-contain",loading:"lazy"}):(0,t.jsx)("div",{className:"flex size-full items-center justify-center text-gray-400",children:(0,t.jsx)("svg",{className:"size-12",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",children:(0,t.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M4 16l4.586-4.586a2 2 0 012.828 0L16 16m-2-2l1.586-1.586a2 2 0 012.828 0L20 14m-6-6h.01M6 20h12a2 2 0 002-2V6a2 2 0 00-2-2H6a2 2 0 00-2 2v12a2 2 0 002 2z"})})})})}),(0,t.jsx)("div",{className:"mb-4 flex flex-col items-center gap-1",children:(0,t.jsxs)("div",{className:"flex items-center gap-2",children:[(0,t.jsx)("span",{className:"text-base font-bold leading-[1.2] tracking-[-0.02em] text-[#1D1D1F]",children:m(T,o?.currency||e.price.currency)}),u&&y&&(0,t.jsx)("span",{className:"text-base font-bold leading-[1.2] tracking-[-0.02em] text-[#4A4C56] line-through",children:m(_,e.price.currency)})]})}),n&&(0,t.jsx)("button",{type:"button",onClick:I,className:"livechat-btn-primary mb-3 w-fit rounded-full px-[20px] py-[10px] text-center text-sm font-bold leading-[1.2] tracking-[-0.04em] text-white",style:{backgroundColor:"#1D1D1F"},children:N.addToCart})]},`product-column-${r}`)})}),(0,t.jsx)("div",{className:"flex flex-col gap-4 p-4",children:Object.entries(d).map(([e,r])=>r?(0,t.jsx)("div",{children:F(r.label,r)},e):null)})]})},O={render:(s,n,l)=>{if(s.type!=="product_comparison"||!s.data)return null;const i=s.data;return i.productComparisonRender?(0,t.jsx)(t.Fragment,{children:i.productComparisonRender(i)}):(0,t.jsx)(h,{data:i,isUser:n,isSystem:l,onAddToCart:i.onAddToCart,commonText:i.commonText})}};
2
2
  //# sourceMappingURL=ProductComparison.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../../../src/components/LiveChatWidget/components/MessageContent/ProductComparison.tsx"],
4
- "sourcesContent": ["/**\n * \u4EA7\u54C1\u5BF9\u6BD4\u7EC4\u4EF6\n * \u663E\u793A\u591A\u4E2A\u4EA7\u54C1\u7684\u5BF9\u6BD4\u4FE1\u606F\uFF0C\u91C7\u7528\u8868\u683C\u5E03\u5C40\u5C55\u793A\u5404\u7EF4\u5EA6\u5DEE\u5F02\n * \u57FA\u4E8E\u53C2\u8003\u8BBE\u8BA1\uFF1A\u9876\u90E8\u4EA7\u54C1\u5C55\u793A + \u5E95\u90E8\u5BF9\u6BD4\u8868\u683C\n */\n\nimport React, { useState } from 'react'\nimport type { Product, MessageRenderer, CommonText } from '../../types'\nimport { DEFAULT_COMMON_TEXT, CURRENCY_SYMBOLS } from '../../constants'\n\n/**\n * \u5BF9\u6BD4\u7EF4\u5EA6\u6570\u636E\u7ED3\u6784\n */\ninterface ComparisonDimension {\n label: string\n values: Array<{\n product_id: string\n [key: string]: any\n }>\n}\n\n/**\n * \u4EA7\u54C1\u5BF9\u6BD4\u6570\u636E\u7ED3\u6784\n */\nexport interface ProductComparisonData {\n products: Product[]\n dimensions: {\n price?: ComparisonDimension\n variants?: ComparisonDimension\n member_price?: ComparisonDimension\n discount?: ComparisonDimension\n reviews?: ComparisonDimension\n [key: string]: ComparisonDimension | undefined\n }\n commonText?: CommonText\n productComparisonRender?: (data: ProductComparisonData) => React.ReactNode\n}\n\nexport interface ProductComparisonProps {\n /**\n * \u4EA7\u54C1\u5BF9\u6BD4\u6570\u636E\n */\n data: ProductComparisonData\n\n /**\n * \u662F\u5426\u4E3A\u7528\u6237\u6D88\u606F\n */\n isUser?: boolean\n\n /**\n * \u662F\u5426\u4E3A\u7CFB\u7EDF\u6D88\u606F\n */\n isSystem?: boolean\n\n /**\n * \u6DFB\u52A0\u5230\u8D2D\u7269\u8F66\u56DE\u8C03\n */\n onAddToCart?: (product: Product) => void\n\n /**\n * \u901A\u7528\u6587\u6848\u914D\u7F6E\n */\n commonText?: CommonText\n}\n\n/**\n * \u683C\u5F0F\u5316\u4EF7\u683C\u663E\u793A\n */\nconst formatPrice = (amount: number, currency: string = 'USD'): string => {\n const symbol = CURRENCY_SYMBOLS[currency] || currency\n return `${symbol}${amount}`\n}\n\n/**\n * \u4EA7\u54C1\u5BF9\u6BD4\u7EC4\u4EF6\n *\n * \u5E03\u5C40\uFF1A\n * ```\n * \u250C\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510\n * \u2502 [\u4EA7\u54C11\u56FE\u7247] [\u4EA7\u54C12\u56FE\u7247] \u2502\n * \u2502 \u4EF7\u683C1 \u4EF7\u683C2 \u2502\n * \u2502 \u989C\u8272\u9009\u9879 \u989C\u8272\u9009\u9879 \u2502\n * \u251C\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n * \u2502 \u7EF4\u5EA61 \u2502 \u503C1-1 \u2502 \u503C1-2 \u2502\n * \u2502 \u7EF4\u5EA62 \u2502 \u503C2-1 \u2502 \u503C2-2 \u2502\n * \u2502 \u7EF4\u5EA63 \u2502 \u503C3-1 \u2502 \u503C3-2 \u2502\n * \u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518\n * ```\n */\nexport const ProductComparison: React.FC<ProductComparisonProps> = ({ data, onAddToCart, commonText }) => {\n const { products: rawProducts, dimensions } = data\n\n // \u5408\u5E76\u9ED8\u8BA4\u6587\u6848\u548C\u81EA\u5B9A\u4E49\u6587\u6848\n const mergedText = { ...DEFAULT_COMMON_TEXT, ...commonText }\n\n // \u8FC7\u6EE4\u6389 null \u6216\u65E0\u6548\u7684\u4EA7\u54C1\n const allProducts = rawProducts?.filter(p => p && p.shopifyId) || []\n\n // \u5BF9\u6BD4\u5217\u6570\uFF08\u56FA\u5B9A\u4E3A2\u5217\uFF09\n const COMPARISON_COLUMNS = 2\n\n // \u521D\u59CB\u5316\u6BCF\u4E2A\u5BF9\u6BD4\u4F4D\u7F6E\u7684\u9009\u4E2D\u4EA7\u54C1\uFF08\u9ED8\u8BA4\u53D6\u524D\u4E24\u4E2A\u4EA7\u54C1\uFF09\n const initialSelectedProducts = allProducts.slice(0, COMPARISON_COLUMNS)\n const [selectedProducts, setSelectedProducts] = useState<Product[]>(initialSelectedProducts)\n\n // Early return \u5FC5\u987B\u5728\u6240\u6709 hooks \u4E4B\u540E\n if (allProducts.length === 0) {\n return null\n }\n\n // \u5904\u7406\u4EA7\u54C1\u9009\u62E9\u53D8\u66F4\n const handleProductChange = (index: number, productId: string) => {\n const newProduct = allProducts.find(p => p.shopifyId === productId)\n if (newProduct) {\n const newSelectedProducts = [...selectedProducts]\n newSelectedProducts[index] = newProduct\n setSelectedProducts(newSelectedProducts)\n }\n }\n\n // \u5F53\u524D\u663E\u793A\u7684\u4EA7\u54C1\uFF08\u786E\u4FDD\u53EA\u663E\u793A\u6307\u5B9A\u5217\u6570\uFF09\n const products = selectedProducts.slice(0, COMPARISON_COLUMNS)\n\n /**\n * \u83B7\u53D6\u6307\u5B9A\u4EA7\u54C1\u5728\u67D0\u4E2A\u7EF4\u5EA6\u7684\u503C\n */\n const getDimensionValue = (dimension: ComparisonDimension, productId: string): any => {\n if (!dimension || !dimension.values || !Array.isArray(dimension.values)) {\n return null\n }\n return dimension.values.find(v => v && v.product_id === productId)\n }\n\n /**\n * \u6E32\u67D3\u901A\u7528\u5BF9\u6BD4\u884C\n */\n const renderComparisonRow = (label: string, dimension: ComparisonDimension | undefined) => {\n if (!dimension) return null\n\n return (\n <div className=\"border-b border-[#DADCE0] pb-2\">\n {/* \u7EF4\u5EA6\u6807\u7B7E\uFF08\u6807\u9898\uFF09 */}\n <div className=\"mb-1\">\n <span className=\"text-sm font-bold leading-[1.4] tracking-[-0.02em] text-[#86868C]\">{label==='price'?'has member price':label}</span>\n </div>\n\n {/* \u4EA7\u54C1\u503C\u5217\u8868\uFF08\u6A2A\u5411\u6392\u5217\uFF09 */}\n <div className=\"flex gap-4\" style={{ gap: '36px' }}>\n {products.map((product, index) => {\n if (!product || !product.shopifyId) return null\n const value = getDimensionValue(dimension, product.shopifyId)\n\n return (\n <div key={`comparison-${index}`} className=\"flex-1\">\n {renderDimensionValue(value, dimension.label)}\n </div>\n )\n })}\n </div>\n </div>\n )\n }\n\n /**\n * \u6E32\u67D3\u7EF4\u5EA6\u503C\n */\n const renderDimensionValue = (value: any, dimensionLabel: string) => {\n if (!value) {\n return <span className=\"text-sm font-bold leading-[1.4] tracking-[-0.02em] text-[#1D1D1F]\">-</span>\n }\n\n // \u6839\u636E\u4E0D\u540C\u7EF4\u5EA6\u7C7B\u578B\u6E32\u67D3\u4E0D\u540C\u683C\u5F0F\n if (dimensionLabel.toLowerCase().includes('price')) {\n const hasMemberPrice = value?.has_member_price\n // \u4EF7\u683C\u7EF4\u5EA6\n const priceDisplay = value?.available?\n value.min === value.max\n ? formatPrice(value.min, value.currency)\n : `${formatPrice(value.min, value.currency)} - ${formatPrice(value.max, value.currency)}`:'-'\n return <span className=\"text-sm font-bold leading-[1.4] tracking-[-0.02em] text-[#1D1D1F]\">{hasMemberPrice?'Yes':'No'}</span>\n }\n\n if (dimensionLabel.toLowerCase().includes('variant')) {\n // \u53D8\u4F53\u6570\u91CF\n return (\n <span className=\"text-sm font-bold leading-[1.4] tracking-[-0.02em] text-[#1D1D1F]\">\n {value.count || 0} {value.count === 1 ? 'variant' : 'variants'}\n </span>\n )\n }\n\n if (dimensionLabel.toLowerCase().includes('review')) {\n // \u8BC4\u8BBA\u7EF4\u5EA6\uFF1A\u663E\u793A\u8BC4\u5206\u548C\u6570\u91CF\n const rating = value.rating || 0\n const count = value.count || 0\n return (\n <div className=\"flex items-center gap-1\">\n <span className=\"text-sm font-bold leading-[1.4] tracking-[-0.02em] text-[#1D1D1F]\">\n \u2B50 {rating.toFixed(1)}\n </span>\n <span className=\"text-sm font-bold leading-[1.4] tracking-[-0.02em] text-[#86868C]\">\n ({count})\n </span>\n </div>\n )\n }\n\n // \u9ED8\u8BA4\u663E\u793A\n return (\n <span className=\"text-sm font-bold leading-[1.4] tracking-[-0.02em] text-[#1D1D1F]\">\n {value.display || value.value || '-'}\n </span>\n )\n }\n\n return (\n <div className=\"w-full overflow-hidden rounded-2xl bg-[#F5F6F7]\">\n {/* \u9876\u90E8\u4EA7\u54C1\u5C55\u793A\u533A\u57DF */}\n <div className=\"flex p-4\" style={{ gap: '36px', paddingBottom: '0px' }}>\n {products.map((product, index) => {\n if (!product || !product.shopifyId) return null\n\n // \u83B7\u53D6\u4EF7\u683C\u4FE1\u606F\n const priceInfo = dimensions.price ? getDimensionValue(dimensions.price, product.shopifyId) : null\n\n // \u83B7\u53D6\u6298\u6263\u4FE1\u606F\n const firstVariant = product.variants?.[0]\n const hasDiscount = firstVariant?.discount?.has_discount\n const discountPrice = hasDiscount ? firstVariant?.discount?.discount_price : null\n\n // \u5F53\u524D\u663E\u793A\u4EF7\u683C\uFF1A\u6709\u6298\u6263\u65F6\u663E\u793A\u6298\u6263\u4EF7\uFF0C\u5426\u5219\u663E\u793A\u539F\u4EF7\n const currentPrice = discountPrice || priceInfo?.min || product.price.amount\n const originalPrice = product.price.amount\n\n // Add to Cart \u6309\u94AE\u70B9\u51FB\u5904\u7406\n const handleAddToCart = (e: React.MouseEvent) => {\n e.preventDefault()\n e.stopPropagation()\n if (onAddToCart) {\n onAddToCart(product)\n }\n }\n\n return (\n <div key={`product-column-${index}`} className=\"flex flex-1 flex-col items-center\">\n {/* \u4EA7\u54C1\u9009\u62E9\u4E0B\u62C9\u6846 */}\n <div className=\"mb-4 w-full\">\n <select\n value={product.shopifyId}\n onChange={e => handleProductChange(index, e.target.value)}\n className=\"w-full rounded-lg border border-[#DADCE0] bg-[#F5F6F7] px-3 py-2 text-sm font-bold leading-[1.4] tracking-[-0.02em] text-[#1D1D1F]\"\n style={{\n appearance: 'none',\n backgroundImage:\n \"url(\\\"data:image/svg+xml,%3Csvg width='12' height='8' viewBox='0 0 12 8' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M1 1.5L6 6.5L11 1.5' stroke='%231D1D1F' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E\\\")\",\n backgroundRepeat: 'no-repeat',\n backgroundPosition: 'right 12px center',\n paddingRight: '32px',\n }}\n >\n {allProducts.map(p => (\n <option key={p.shopifyId} value={p.shopifyId}>\n {p.title.length > 30 ? `${p.title.slice(0, 30)}...` : p.title}\n </option>\n ))}\n </select>\n </div>\n\n {/* \u4EA7\u54C1\u56FE\u7247 */}\n <a\n href={product.productUrl}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n className=\"mb-4 block w-full max-w-[160px]\"\n >\n <div className=\"aspect-square w-full overflow-hidden rounded-lg\">\n {product.imageUrl ? (\n <img\n src={product.imageUrl}\n alt={product.title}\n className=\"size-full object-contain\"\n loading=\"lazy\"\n />\n ) : (\n <div className=\"flex size-full items-center justify-center text-gray-400\">\n <svg className=\"size-12\" fill=\"none\" stroke=\"currentColor\" viewBox=\"0 0 24 24\">\n <path\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n strokeWidth={2}\n d=\"M4 16l4.586-4.586a2 2 0 012.828 0L16 16m-2-2l1.586-1.586a2 2 0 012.828 0L20 14m-6-6h.01M6 20h12a2 2 0 002-2V6a2 2 0 00-2-2H6a2 2 0 00-2 2v12a2 2 0 002 2z\"\n />\n </svg>\n </div>\n )}\n </div>\n </a>\n\n {/* \u4EF7\u683C\u5C55\u793A\uFF08\u5E26\u5212\u7EBF\u4EF7\uFF09 */}\n <div className=\"mb-4 flex flex-col items-center gap-1\">\n <div className=\"flex items-center gap-2 justify-center flex-wrap\">\n {/* \u5F53\u524D\u4EF7\u683C\uFF08\u6298\u6263\u4EF7\u6216\u539F\u4EF7\uFF09 */}\n <span className=\"text-base font-bold leading-[1.2] tracking-[-0.02em] text-[#1D1D1F]\">\n {formatPrice(currentPrice, priceInfo?.currency || product.price.currency)}\n </span>\n {/* \u5212\u7EBF\u4EF7 - \u4EC5\u5728\u6709\u6298\u6263\u65F6\u663E\u793A */}\n {hasDiscount && discountPrice && (\n <span className=\"text-base font-bold leading-[1.2] tracking-[-0.02em] text-[#4A4C56] line-through\">\n {formatPrice(originalPrice, product.price.currency)}\n </span>\n )}\n </div>\n </div>\n\n {/* Add to Cart \u6309\u94AE */}\n {onAddToCart && (\n <button\n type=\"button\"\n onClick={handleAddToCart}\n className=\"livechat-btn-primary mb-3 w-fit rounded-full px-[20px] py-[10px] text-center text-sm font-bold leading-[1.2] tracking-[-0.04em] text-white\"\n style={{ backgroundColor: '#1D1D1F' }}\n >\n {mergedText.addToCart}\n </button>\n )}\n\n </div>\n )\n })}\n </div>\n\n {/* \u5BF9\u6BD4\u8868\u683C\u533A\u57DF */}\n <div className=\"flex flex-col gap-4 p-4\">\n {/* \u904D\u5386\u6240\u6709\u7EF4\u5EA6\u5E76\u6E32\u67D3 */}\n {Object.entries(dimensions).map(([key, dimension]) => {\n if (!dimension) return null // price \u5DF2\u5728\u9876\u90E8\u663E\u793A\n return <div key={key}>{renderComparisonRow(dimension.label, dimension)}</div>\n })}\n </div>\n </div>\n )\n}\n\n/**\n * \u521B\u5EFA\u4EA7\u54C1\u5BF9\u6BD4\u6E32\u67D3\u5668\n */\nexport const ProductComparisonRenderer: MessageRenderer = {\n render: (content, isUser, isSystem) => {\n if (content.type !== 'product_comparison' || !content.data) {\n return null\n }\n\n const comparisonData = content.data as ProductComparisonData & { onAddToCart?: (product: Product) => void }\n\n // \u5982\u679C\u63D0\u4F9B\u4E86\u81EA\u5B9A\u4E49\u6E32\u67D3\u51FD\u6570\uFF0C\u4F7F\u7528\u81EA\u5B9A\u4E49\u6E32\u67D3\n if (comparisonData.productComparisonRender) {\n return <>{comparisonData.productComparisonRender(comparisonData)}</>\n }\n\n return (\n <ProductComparison\n data={comparisonData}\n isUser={isUser}\n isSystem={isSystem}\n onAddToCart={comparisonData.onAddToCart}\n commonText={comparisonData.commonText}\n />\n )\n },\n}\n"],
5
- "mappings": "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",
4
+ "sourcesContent": ["/**\n * \u4EA7\u54C1\u5BF9\u6BD4\u7EC4\u4EF6\n * \u663E\u793A\u591A\u4E2A\u4EA7\u54C1\u7684\u5BF9\u6BD4\u4FE1\u606F\uFF0C\u91C7\u7528\u8868\u683C\u5E03\u5C40\u5C55\u793A\u5404\u7EF4\u5EA6\u5DEE\u5F02\n * \u57FA\u4E8E\u53C2\u8003\u8BBE\u8BA1\uFF1A\u9876\u90E8\u4EA7\u54C1\u5C55\u793A + \u5E95\u90E8\u5BF9\u6BD4\u8868\u683C\n */\n\nimport React, { useState } from 'react'\nimport type { Product, MessageRenderer, CommonText } from '../../types'\nimport { DEFAULT_COMMON_TEXT, CURRENCY_SYMBOLS } from '../../constants'\n\n/**\n * \u5BF9\u6BD4\u7EF4\u5EA6\u6570\u636E\u7ED3\u6784\n */\ninterface ComparisonDimension {\n label: string\n values: Array<{\n product_id: string\n [key: string]: any\n }>\n}\n\n/**\n * \u4EA7\u54C1\u5BF9\u6BD4\u6570\u636E\u7ED3\u6784\n */\nexport interface ProductComparisonData {\n products: Product[]\n dimensions: {\n price?: ComparisonDimension\n variants?: ComparisonDimension\n member_price?: ComparisonDimension\n discount?: ComparisonDimension\n reviews?: ComparisonDimension\n [key: string]: ComparisonDimension | undefined\n }\n commonText?: CommonText\n productComparisonRender?: (data: ProductComparisonData) => React.ReactNode\n}\n\nexport interface ProductComparisonProps {\n /**\n * \u4EA7\u54C1\u5BF9\u6BD4\u6570\u636E\n */\n data: ProductComparisonData\n\n /**\n * \u662F\u5426\u4E3A\u7528\u6237\u6D88\u606F\n */\n isUser?: boolean\n\n /**\n * \u662F\u5426\u4E3A\u7CFB\u7EDF\u6D88\u606F\n */\n isSystem?: boolean\n\n /**\n * \u6DFB\u52A0\u5230\u8D2D\u7269\u8F66\u56DE\u8C03\n */\n onAddToCart?: (product: Product) => void\n\n /**\n * \u901A\u7528\u6587\u6848\u914D\u7F6E\n */\n commonText?: CommonText\n}\n\n/**\n * \u683C\u5F0F\u5316\u4EF7\u683C\u663E\u793A\n */\nconst formatPrice = (amount: number, currency: string = 'USD'): string => {\n const symbol = CURRENCY_SYMBOLS[currency] || currency\n return `${symbol}${amount}`\n}\n\n/**\n * \u4EA7\u54C1\u5BF9\u6BD4\u7EC4\u4EF6\n *\n * \u5E03\u5C40\uFF1A\n * ```\n * \u250C\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510\n * \u2502 [\u4EA7\u54C11\u56FE\u7247] [\u4EA7\u54C12\u56FE\u7247] \u2502\n * \u2502 \u4EF7\u683C1 \u4EF7\u683C2 \u2502\n * \u2502 \u989C\u8272\u9009\u9879 \u989C\u8272\u9009\u9879 \u2502\n * \u251C\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n * \u2502 \u7EF4\u5EA61 \u2502 \u503C1-1 \u2502 \u503C1-2 \u2502\n * \u2502 \u7EF4\u5EA62 \u2502 \u503C2-1 \u2502 \u503C2-2 \u2502\n * \u2502 \u7EF4\u5EA63 \u2502 \u503C3-1 \u2502 \u503C3-2 \u2502\n * \u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518\n * ```\n */\nexport const ProductComparison: React.FC<ProductComparisonProps> = ({ data, onAddToCart, commonText }) => {\n const { products: rawProducts, dimensions } = data\n\n // \u5408\u5E76\u9ED8\u8BA4\u6587\u6848\u548C\u81EA\u5B9A\u4E49\u6587\u6848\n const mergedText = { ...DEFAULT_COMMON_TEXT, ...commonText }\n\n // \u8FC7\u6EE4\u6389 null \u6216\u65E0\u6548\u7684\u4EA7\u54C1\n const allProducts = rawProducts?.filter(p => p && p.shopifyId) || []\n\n // \u5BF9\u6BD4\u5217\u6570\uFF08\u56FA\u5B9A\u4E3A2\u5217\uFF09\n const COMPARISON_COLUMNS = 2\n\n // \u521D\u59CB\u5316\u6BCF\u4E2A\u5BF9\u6BD4\u4F4D\u7F6E\u7684\u9009\u4E2D\u4EA7\u54C1\uFF08\u9ED8\u8BA4\u53D6\u524D\u4E24\u4E2A\u4EA7\u54C1\uFF09\n const initialSelectedProducts = allProducts.slice(0, COMPARISON_COLUMNS)\n const [selectedProducts, setSelectedProducts] = useState<Product[]>(initialSelectedProducts)\n\n // Early return \u5FC5\u987B\u5728\u6240\u6709 hooks \u4E4B\u540E\n if (allProducts.length === 0) {\n return null\n }\n\n // \u5904\u7406\u4EA7\u54C1\u9009\u62E9\u53D8\u66F4\n const handleProductChange = (index: number, productId: string) => {\n const newProduct = allProducts.find(p => p.shopifyId === productId)\n if (newProduct) {\n const newSelectedProducts = [...selectedProducts]\n newSelectedProducts[index] = newProduct\n setSelectedProducts(newSelectedProducts)\n }\n }\n\n // \u5F53\u524D\u663E\u793A\u7684\u4EA7\u54C1\uFF08\u786E\u4FDD\u53EA\u663E\u793A\u6307\u5B9A\u5217\u6570\uFF09\n const products = selectedProducts.slice(0, COMPARISON_COLUMNS)\n\n /**\n * \u83B7\u53D6\u6307\u5B9A\u4EA7\u54C1\u5728\u67D0\u4E2A\u7EF4\u5EA6\u7684\u503C\n */\n const getDimensionValue = (dimension: ComparisonDimension, productId: string): any => {\n if (!dimension || !dimension.values || !Array.isArray(dimension.values)) {\n return null\n }\n return dimension.values.find(v => v && v.product_id === productId)\n }\n\n /**\n * \u6E32\u67D3\u901A\u7528\u5BF9\u6BD4\u884C\n */\n const renderComparisonRow = (label: string, dimension: ComparisonDimension | undefined) => {\n if (!dimension) return null\n\n return (\n <div className=\"border-b border-[#DADCE0] pb-2\">\n {/* \u7EF4\u5EA6\u6807\u7B7E\uFF08\u6807\u9898\uFF09 */}\n <div className=\"mb-1\">\n <span className=\"text-sm font-bold leading-[1.4] tracking-[-0.02em] text-[#86868C]\">{label==='price'?'has member price':label}</span>\n </div>\n\n {/* \u4EA7\u54C1\u503C\u5217\u8868\uFF08\u6A2A\u5411\u6392\u5217\uFF09 */}\n <div className=\"flex gap-4\" style={{ gap: '36px' }}>\n {products.map((product, index) => {\n if (!product || !product.shopifyId) return null\n const value = getDimensionValue(dimension, product.shopifyId)\n\n return (\n <div key={`comparison-${index}`} className=\"flex-1\">\n {renderDimensionValue(value, dimension.label)}\n </div>\n )\n })}\n </div>\n </div>\n )\n }\n\n /**\n * \u6E32\u67D3\u7EF4\u5EA6\u503C\n */\n const renderDimensionValue = (value: any, dimensionLabel: string) => {\n if (!value) {\n return <span className=\"text-sm font-bold leading-[1.4] tracking-[-0.02em] text-[#1D1D1F]\">-</span>\n }\n\n // \u6839\u636E\u4E0D\u540C\u7EF4\u5EA6\u7C7B\u578B\u6E32\u67D3\u4E0D\u540C\u683C\u5F0F\n if (dimensionLabel.toLowerCase().includes('price')) {\n const hasMemberPrice = value?.has_member_price\n // \u4EF7\u683C\u7EF4\u5EA6\n const priceDisplay = value?.available?\n value.min === value.max\n ? formatPrice(value.min, value.currency)\n : `${formatPrice(value.min, value.currency)} - ${formatPrice(value.max, value.currency)}`:'-'\n return <span className=\"text-sm font-bold leading-[1.4] tracking-[-0.02em] text-[#1D1D1F]\">{hasMemberPrice?'Yes':'No'}</span>\n }\n\n if (dimensionLabel.toLowerCase().includes('variant')) {\n // \u53D8\u4F53\u6570\u91CF\n return (\n <span className=\"text-sm font-bold leading-[1.4] tracking-[-0.02em] text-[#1D1D1F]\">\n {value.count || 0} {value.count === 1 ? 'variant' : 'variants'}\n </span>\n )\n }\n\n if (dimensionLabel.toLowerCase().includes('review')) {\n // \u8BC4\u8BBA\u7EF4\u5EA6\uFF1A\u663E\u793A\u8BC4\u5206\u548C\u6570\u91CF\n const rating = value.rating || 0\n const count = value.count || 0\n return (\n <div className=\"flex items-center gap-1\">\n <span className=\"text-sm font-bold leading-[1.4] tracking-[-0.02em] text-[#1D1D1F]\">\n \u2B50 {rating.toFixed(1)}\n </span>\n <span className=\"text-sm font-bold leading-[1.4] tracking-[-0.02em] text-[#86868C]\">\n ({count})\n </span>\n </div>\n )\n }\n\n // \u9ED8\u8BA4\u663E\u793A\n return (\n <span className=\"text-sm font-bold leading-[1.4] tracking-[-0.02em] text-[#1D1D1F]\">\n {value.display || value.value || '-'}\n </span>\n )\n }\n\n return (\n <div className=\"w-full overflow-hidden rounded-2xl bg-[#F5F6F7]\">\n {/* \u9876\u90E8\u4EA7\u54C1\u5C55\u793A\u533A\u57DF */}\n <div className=\"flex p-4\" style={{ gap: '36px', paddingBottom: '0px' }}>\n {products.map((product, index) => {\n if (!product || !product.shopifyId) return null\n\n // \u83B7\u53D6\u4EF7\u683C\u4FE1\u606F\n const priceInfo = dimensions.price ? getDimensionValue(dimensions.price, product.shopifyId) : null\n\n // \u83B7\u53D6\u6298\u6263\u4FE1\u606F\n const firstVariant = product.variants?.[0]\n const hasDiscount = firstVariant?.discount?.has_discount\n const discountPrice = hasDiscount ? firstVariant?.discount?.discount_price : null\n\n // \u5F53\u524D\u663E\u793A\u4EF7\u683C\uFF1A\u6709\u6298\u6263\u65F6\u663E\u793A\u6298\u6263\u4EF7\uFF0C\u5426\u5219\u663E\u793A\u539F\u4EF7\n const currentPrice = discountPrice || priceInfo?.min || product.price.amount\n const originalPrice = product.price.amount\n\n // Add to Cart \u6309\u94AE\u70B9\u51FB\u5904\u7406\n const handleAddToCart = (e: React.MouseEvent) => {\n e.preventDefault()\n e.stopPropagation()\n if (onAddToCart) {\n onAddToCart(product)\n }\n }\n\n return (\n <div key={`product-column-${index}`} className=\"flex flex-1 flex-col items-center\">\n {/* \u4EA7\u54C1\u9009\u62E9\u4E0B\u62C9\u6846 */}\n <div className=\"mb-4 w-full\">\n <select\n value={product.shopifyId}\n onChange={e => handleProductChange(index, e.target.value)}\n className=\"w-full rounded-lg border border-[#DADCE0] bg-[#F5F6F7] px-3 py-2 text-sm font-bold leading-[1.4] tracking-[-0.02em] text-[#1D1D1F]\"\n style={{\n appearance: 'none',\n backgroundImage:\n \"url(\\\"data:image/svg+xml,%3Csvg width='12' height='8' viewBox='0 0 12 8' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M1 1.5L6 6.5L11 1.5' stroke='%231D1D1F' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E\\\")\",\n backgroundRepeat: 'no-repeat',\n backgroundPosition: 'right 12px center',\n paddingRight: '32px',\n }}\n >\n {allProducts.map(p => (\n <option key={p.shopifyId} value={p.shopifyId}>\n {p.title.length > 30 ? `${p.title.slice(0, 30)}...` : p.title}\n </option>\n ))}\n </select>\n </div>\n\n {/* \u4EA7\u54C1\u56FE\u7247 */}\n <a\n href={product.productUrl}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n className=\"mb-4 block w-full max-w-[160px]\"\n >\n <div className=\"aspect-square w-full overflow-hidden rounded-lg\">\n {product.imageUrl ? (\n <img\n src={product.imageUrl}\n alt={product.title}\n className=\"size-full object-contain\"\n loading=\"lazy\"\n />\n ) : (\n <div className=\"flex size-full items-center justify-center text-gray-400\">\n <svg className=\"size-12\" fill=\"none\" stroke=\"currentColor\" viewBox=\"0 0 24 24\">\n <path\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n strokeWidth={2}\n d=\"M4 16l4.586-4.586a2 2 0 012.828 0L16 16m-2-2l1.586-1.586a2 2 0 012.828 0L20 14m-6-6h.01M6 20h12a2 2 0 002-2V6a2 2 0 00-2-2H6a2 2 0 00-2 2v12a2 2 0 002 2z\"\n />\n </svg>\n </div>\n )}\n </div>\n </a>\n\n {/* \u4EF7\u683C\u5C55\u793A\uFF08\u5E26\u5212\u7EBF\u4EF7\uFF09 */}\n <div className=\"mb-4 flex flex-col items-center gap-1\">\n <div className=\"flex items-center gap-2\">\n {/* \u5F53\u524D\u4EF7\u683C\uFF08\u6298\u6263\u4EF7\u6216\u539F\u4EF7\uFF09 */}\n <span className=\"text-base font-bold leading-[1.2] tracking-[-0.02em] text-[#1D1D1F]\">\n {formatPrice(currentPrice, priceInfo?.currency || product.price.currency)}\n </span>\n {/* \u5212\u7EBF\u4EF7 - \u4EC5\u5728\u6709\u6298\u6263\u65F6\u663E\u793A */}\n {hasDiscount && discountPrice && (\n <span className=\"text-base font-bold leading-[1.2] tracking-[-0.02em] text-[#4A4C56] line-through\">\n {formatPrice(originalPrice, product.price.currency)}\n </span>\n )}\n </div>\n </div>\n\n {/* Add to Cart \u6309\u94AE */}\n {onAddToCart && (\n <button\n type=\"button\"\n onClick={handleAddToCart}\n className=\"livechat-btn-primary mb-3 w-fit rounded-full px-[20px] py-[10px] text-center text-sm font-bold leading-[1.2] tracking-[-0.04em] text-white\"\n style={{ backgroundColor: '#1D1D1F' }}\n >\n {mergedText.addToCart}\n </button>\n )}\n\n </div>\n )\n })}\n </div>\n\n {/* \u5BF9\u6BD4\u8868\u683C\u533A\u57DF */}\n <div className=\"flex flex-col gap-4 p-4\">\n {/* \u904D\u5386\u6240\u6709\u7EF4\u5EA6\u5E76\u6E32\u67D3 */}\n {Object.entries(dimensions).map(([key, dimension]) => {\n if (!dimension) return null // price \u5DF2\u5728\u9876\u90E8\u663E\u793A\n return <div key={key}>{renderComparisonRow(dimension.label, dimension)}</div>\n })}\n </div>\n </div>\n )\n}\n\n/**\n * \u521B\u5EFA\u4EA7\u54C1\u5BF9\u6BD4\u6E32\u67D3\u5668\n */\nexport const ProductComparisonRenderer: MessageRenderer = {\n render: (content, isUser, isSystem) => {\n if (content.type !== 'product_comparison' || !content.data) {\n return null\n }\n\n const comparisonData = content.data as ProductComparisonData & { onAddToCart?: (product: Product) => void }\n\n // \u5982\u679C\u63D0\u4F9B\u4E86\u81EA\u5B9A\u4E49\u6E32\u67D3\u51FD\u6570\uFF0C\u4F7F\u7528\u81EA\u5B9A\u4E49\u6E32\u67D3\n if (comparisonData.productComparisonRender) {\n return <>{comparisonData.productComparisonRender(comparisonData)}</>\n }\n\n return (\n <ProductComparison\n data={comparisonData}\n isUser={isUser}\n isSystem={isSystem}\n onAddToCart={comparisonData.onAddToCart}\n commonText={comparisonData.commonText}\n />\n )\n },\n}\n"],
5
+ "mappings": "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",
6
6
  "names": ["ProductComparison_exports", "__export", "ProductComparison", "ProductComparisonRenderer", "__toCommonJS", "import_jsx_runtime", "import_react", "import_constants", "formatPrice", "amount", "currency", "data", "onAddToCart", "commonText", "rawProducts", "dimensions", "mergedText", "allProducts", "p", "COMPARISON_COLUMNS", "initialSelectedProducts", "selectedProducts", "setSelectedProducts", "handleProductChange", "index", "productId", "newProduct", "newSelectedProducts", "products", "getDimensionValue", "dimension", "v", "renderComparisonRow", "label", "product", "value", "renderDimensionValue", "dimensionLabel", "hasMemberPrice", "priceDisplay", "rating", "count", "priceInfo", "firstVariant", "hasDiscount", "discountPrice", "currentPrice", "originalPrice", "handleAddToCart", "e", "key", "content", "isUser", "isSystem", "comparisonData"]
7
7
  }
@@ -1,2 +1,2 @@
1
- "use strict";var c=Object.defineProperty;var P=Object.getOwnPropertyDescriptor;var R=Object.getOwnPropertyNames;var h=Object.prototype.hasOwnProperty;var z=(t,e)=>{for(var r in e)c(t,r,{get:e[r],enumerable:!0})},B=(t,e,r,o)=>{if(e&&typeof e=="object"||typeof e=="function")for(let s of R(e))!h.call(t,s)&&s!==r&&c(t,s,{get:()=>e[s],enumerable:!(o=P(e,s))||o.enumerable});return t};var M=t=>B(c({},"__esModule",{value:!0}),t);var E={};z(E,{default:()=>k});module.exports=M(E);var i=require("react"),p=require("./useAlpcFetch"),f=require("../provider"),b=require("@anker-in/lib");function S({page:t,pageSize:e,options:r={}}){const{profile:o,isLoadingProfile:s,alpcBrand:C}=(0,f.useCreditsContext)(),{brand:L}=(0,b.useHeadlessContext)(),v=C||L,[n,_]=(0,i.useState)([]),[u,x]=(0,i.useState)(0),[d,A]=(0,i.useState)(0),{isMutating:a,trigger:g}=(0,p.useAlpcMutation)({url:"/v1/credit/log",initData:{brand:v}}),l=(0,i.useCallback)(async()=>{const y={page:t,page_size:e,user_id:o?.user_id,...r};g(y,{onSuccess(m){A(t),x(m?.data?.total),_(n.concat(m?.data?.creditLogs||[]))}})},[n,o,t,e,r,g]);return(0,i.useEffect)(()=>{s||!o||a||t!==d&&t&&l()},[l,s,a,o,t,d]),{activities:n,isLoading:a,total:u,canNext:u>n.length&&!a}}var k=S;
1
+ "use strict";var u=Object.defineProperty;var P=Object.getOwnPropertyDescriptor;var R=Object.getOwnPropertyNames;var h=Object.prototype.hasOwnProperty;var z=(t,e)=>{for(var r in e)u(t,r,{get:e[r],enumerable:!0})},B=(t,e,r,o)=>{if(e&&typeof e=="object"||typeof e=="function")for(let s of R(e))!h.call(t,s)&&s!==r&&u(t,s,{get:()=>e[s],enumerable:!(o=P(e,s))||o.enumerable});return t};var M=t=>B(u({},"__esModule",{value:!0}),t);var E={};z(E,{default:()=>k});module.exports=M(E);var i=require("react"),f=require("./useAlpcFetch"),b=require("../provider"),C=require("@anker-in/lib");function S({page:t,pageSize:e,options:r={}}){const{profile:o,isLoadingProfile:s,alpcBrand:L}=(0,b.useCreditsContext)(),{brand:v}=(0,C.useHeadlessContext)(),c=L||v,[n,_]=(0,i.useState)([]),[d,x]=(0,i.useState)(0),[g,A]=(0,i.useState)(0),{isMutating:a,trigger:l}=(0,f.useAlpcMutation)({url:"/v1/credit/log",initData:{brand:c}}),m=(0,i.useCallback)(async()=>{const y={page:t,page_size:e,user_id:o?.user_id,...r};l(y,{onSuccess(p){A(t),x(p?.data?.total),_(n.concat(p?.data?.creditLogs||[]))}})},[n,o,t,e,r,l]);return(0,i.useEffect)(()=>{s||!o||!c||a||t!==g&&t&&m()},[m,s,a,o,c,t,g]),{activities:n,isLoading:a,total:d,canNext:d>n.length&&!a}}var k=S;
2
2
  //# sourceMappingURL=useActivities.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../../../src/components/credits/context/hooks/useActivities.ts"],
4
- "sourcesContent": ["import { useCallback, useEffect, useState } from 'react'\n\nimport { useAlpcMutation } from './useAlpcFetch'\nimport type { CreditLogResponse } from '../response'\nimport { useCreditsContext } from '../provider'\nimport { useHeadlessContext } from '@anker-in/lib'\n\nfunction useActivities({ page, pageSize, options = {} }: { page: number; pageSize: number; options?: any }) {\n const { profile, isLoadingProfile, alpcBrand } = useCreditsContext()\n const { brand: headlessBrand } = useHeadlessContext()\n const brand = alpcBrand || headlessBrand\n const [activities, setActivities] = useState<CreditLogResponse[]>([])\n const [total, setTotal] = useState(0)\n\n const [currentPage, setCurrentPage] = useState(0)\n\n const { isMutating: isLoading, trigger } = useAlpcMutation<\n {\n data: {\n total: number\n creditLogs: CreditLogResponse[]\n }\n },\n {\n page: number\n page_size: number\n user_id: string\n }\n >({\n url: `/v1/credit/log`,\n initData: {\n brand,\n },\n })\n\n const getActivities = useCallback(async () => {\n const params = {\n page: page,\n page_size: pageSize,\n user_id: profile?.user_id,\n ...options,\n }\n\n trigger(params, {\n onSuccess(responseData) {\n setCurrentPage(page)\n setTotal(responseData?.data?.total)\n setActivities(activities.concat(responseData?.data?.creditLogs || []))\n },\n })\n }, [activities, profile, page, pageSize, options, trigger])\n\n useEffect(() => {\n if (isLoadingProfile || !profile || isLoading) {\n return\n }\n\n if (page !== currentPage && page) {\n getActivities()\n }\n }, [getActivities, isLoadingProfile, isLoading, profile, page, currentPage])\n\n return {\n activities,\n isLoading,\n total,\n canNext: total > activities.length && !isLoading,\n }\n}\n\nexport default useActivities\n"],
5
- "mappings": "yaAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,aAAAE,IAAA,eAAAC,EAAAH,GAAA,IAAAI,EAAiD,iBAEjDC,EAAgC,0BAEhCC,EAAkC,uBAClCC,EAAmC,yBAEnC,SAASC,EAAc,CAAE,KAAAC,EAAM,SAAAC,EAAU,QAAAC,EAAU,CAAC,CAAE,EAAsD,CAC1G,KAAM,CAAE,QAAAC,EAAS,iBAAAC,EAAkB,UAAAC,CAAU,KAAI,qBAAkB,EAC7D,CAAE,MAAOC,CAAc,KAAI,sBAAmB,EAC9CC,EAAQF,GAAaC,EACrB,CAACE,EAAYC,CAAa,KAAI,YAA8B,CAAC,CAAC,EAC9D,CAACC,EAAOC,CAAQ,KAAI,YAAS,CAAC,EAE9B,CAACC,EAAaC,CAAc,KAAI,YAAS,CAAC,EAE1C,CAAE,WAAYC,EAAW,QAAAC,CAAQ,KAAI,mBAYzC,CACA,IAAK,iBACL,SAAU,CACR,MAAAR,CACF,CACF,CAAC,EAEKS,KAAgB,eAAY,SAAY,CAC5C,MAAMC,EAAS,CACb,KAAMjB,EACN,UAAWC,EACX,QAASE,GAAS,QAClB,GAAGD,CACL,EAEAa,EAAQE,EAAQ,CACd,UAAUC,EAAc,CACtBL,EAAeb,CAAI,EACnBW,EAASO,GAAc,MAAM,KAAK,EAClCT,EAAcD,EAAW,OAAOU,GAAc,MAAM,YAAc,CAAC,CAAC,CAAC,CACvE,CACF,CAAC,CACH,EAAG,CAACV,EAAYL,EAASH,EAAMC,EAAUC,EAASa,CAAO,CAAC,EAE1D,sBAAU,IAAM,CACVX,GAAoB,CAACD,GAAWW,GAIhCd,IAASY,GAAeZ,GAC1BgB,EAAc,CAElB,EAAG,CAACA,EAAeZ,EAAkBU,EAAWX,EAASH,EAAMY,CAAW,CAAC,EAEpE,CACL,WAAAJ,EACA,UAAAM,EACA,MAAAJ,EACA,QAASA,EAAQF,EAAW,QAAU,CAACM,CACzC,CACF,CAEA,IAAOrB,EAAQM",
4
+ "sourcesContent": ["import { useCallback, useEffect, useState } from 'react'\n\nimport { useAlpcMutation } from './useAlpcFetch'\nimport type { CreditLogResponse } from '../response'\nimport { useCreditsContext } from '../provider'\nimport { useHeadlessContext } from '@anker-in/lib'\n\nfunction useActivities({ page, pageSize, options = {} }: { page: number; pageSize: number; options?: any }) {\n const { profile, isLoadingProfile, alpcBrand } = useCreditsContext()\n const { brand: headlessBrand } = useHeadlessContext()\n const brand = alpcBrand || headlessBrand\n const [activities, setActivities] = useState<CreditLogResponse[]>([])\n const [total, setTotal] = useState(0)\n\n const [currentPage, setCurrentPage] = useState(0)\n\n const { isMutating: isLoading, trigger } = useAlpcMutation<\n {\n data: {\n total: number\n creditLogs: CreditLogResponse[]\n }\n },\n {\n page: number\n page_size: number\n user_id: string\n }\n >({\n url: `/v1/credit/log`,\n initData: {\n brand,\n },\n })\n\n const getActivities = useCallback(async () => {\n const params = {\n page: page,\n page_size: pageSize,\n user_id: profile?.user_id,\n ...options,\n }\n\n trigger(params, {\n onSuccess(responseData) {\n setCurrentPage(page)\n setTotal(responseData?.data?.total)\n setActivities(activities.concat(responseData?.data?.creditLogs || []))\n },\n })\n }, [activities, profile, page, pageSize, options, trigger])\n\n useEffect(() => {\n if (isLoadingProfile || !profile || !brand || isLoading) {\n return\n }\n\n if (page !== currentPage && page) {\n getActivities()\n }\n }, [getActivities, isLoadingProfile, isLoading, profile, brand, page, currentPage])\n\n return {\n activities,\n isLoading,\n total,\n canNext: total > activities.length && !isLoading,\n }\n}\n\nexport default useActivities\n"],
5
+ "mappings": "yaAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,aAAAE,IAAA,eAAAC,EAAAH,GAAA,IAAAI,EAAiD,iBAEjDC,EAAgC,0BAEhCC,EAAkC,uBAClCC,EAAmC,yBAEnC,SAASC,EAAc,CAAE,KAAAC,EAAM,SAAAC,EAAU,QAAAC,EAAU,CAAC,CAAE,EAAsD,CAC1G,KAAM,CAAE,QAAAC,EAAS,iBAAAC,EAAkB,UAAAC,CAAU,KAAI,qBAAkB,EAC7D,CAAE,MAAOC,CAAc,KAAI,sBAAmB,EAC9CC,EAAQF,GAAaC,EACrB,CAACE,EAAYC,CAAa,KAAI,YAA8B,CAAC,CAAC,EAC9D,CAACC,EAAOC,CAAQ,KAAI,YAAS,CAAC,EAE9B,CAACC,EAAaC,CAAc,KAAI,YAAS,CAAC,EAE1C,CAAE,WAAYC,EAAW,QAAAC,CAAQ,KAAI,mBAYzC,CACA,IAAK,iBACL,SAAU,CACR,MAAAR,CACF,CACF,CAAC,EAEKS,KAAgB,eAAY,SAAY,CAC5C,MAAMC,EAAS,CACb,KAAMjB,EACN,UAAWC,EACX,QAASE,GAAS,QAClB,GAAGD,CACL,EAEAa,EAAQE,EAAQ,CACd,UAAUC,EAAc,CACtBL,EAAeb,CAAI,EACnBW,EAASO,GAAc,MAAM,KAAK,EAClCT,EAAcD,EAAW,OAAOU,GAAc,MAAM,YAAc,CAAC,CAAC,CAAC,CACvE,CACF,CAAC,CACH,EAAG,CAACV,EAAYL,EAASH,EAAMC,EAAUC,EAASa,CAAO,CAAC,EAE1D,sBAAU,IAAM,CACVX,GAAoB,CAACD,GAAW,CAACI,GAASO,GAI1Cd,IAASY,GAAeZ,GAC1BgB,EAAc,CAElB,EAAG,CAACA,EAAeZ,EAAkBU,EAAWX,EAASI,EAAOP,EAAMY,CAAW,CAAC,EAE3E,CACL,WAAAJ,EACA,UAAAM,EACA,MAAAJ,EACA,QAASA,EAAQF,EAAW,QAAU,CAACM,CACzC,CACF,CAEA,IAAOrB,EAAQM",
6
6
  "names": ["useActivities_exports", "__export", "useActivities_default", "__toCommonJS", "import_react", "import_useAlpcFetch", "import_provider", "import_lib", "useActivities", "page", "pageSize", "options", "profile", "isLoadingProfile", "alpcBrand", "headlessBrand", "brand", "activities", "setActivities", "total", "setTotal", "currentPage", "setCurrentPage", "isLoading", "trigger", "getActivities", "params", "responseData"]
7
7
  }
@@ -1,2 +1,2 @@
1
- "use strict";var P=Object.create;var O=Object.defineProperty;var F=Object.getOwnPropertyDescriptor;var q=Object.getOwnPropertyNames;var j=Object.getPrototypeOf,v=Object.prototype.hasOwnProperty;var I=(t,e)=>{for(var r in e)O(t,r,{get:e[r],enumerable:!0})},S=(t,e,r,n)=>{if(e&&typeof e=="object"||typeof e=="function")for(let a of q(e))!v.call(t,a)&&a!==r&&O(t,a,{get:()=>e[a],enumerable:!(n=F(e,a))||n.enumerable});return t};var x=(t,e,r)=>(r=t!=null?P(j(t)):{},S(e||!t||!t.__esModule?O(r,"default",{value:t,enumerable:!0}):r,t)),$=t=>S(O({},"__esModule",{value:!0}),t);var J={};I(J,{useAlpcFetch:()=>N,useAlpcMutation:()=>W});module.exports=$(J);var A=x(require("js-cookie")),o=require("react"),C=x(require("swr")),U=require("@anker-in/lib"),m=require("../utils"),b=require("../provider");let R;const B=t=>fetch((0,m.getAlpcPath)(t.locale)+t.url,t.fetchOptions).then(async e=>{if(e.status<300)return(await e.json()).data;if(e.status===401&&t.onReAuth){R||(R=t.onReAuth());const r=await R;if(R=void 0,r)return fetch((0,m.getAlpcPath)(t.locale)+t.url,t.fetchOptions).then(async n=>{if(n.status<300)return(await n.json()).data;if(n.status===401){t.onUnAuth&&t.onUnAuth();return}});t.onUnAuth&&t.onUnAuth();return}}),w=async(t,e,r)=>{let n=await fetch(`${(0,m.getAlpcPath)(t)}/cloud/login`,{method:"POST"}),a=await n.json();if(n.status<300&&!e&&a?.data?.code===27004){const s=A.default.get("alpcEU");if(Number(s)===1?A.default.set("alpcEU","0",{expires:30,domain:`.${r}.com`}):A.default.set("alpcEU","1",{expires:30,domain:`.${r}.com`}),n=await fetch(`${(0,m.getAlpcPath)(t)}/cloud/login`,{method:"POST"}),a=await n.json(),n.status>300)return!1}return!a?.data?.code},k=(t,e,r={})=>{const n=(0,o.useRef)(!1),[a,s]=(0,o.useState)(),[c,i]=(0,o.useState)(!1),u=(0,o.useRef)(t),d=(0,o.useRef)(e),h=(0,o.useRef)(r),g=(0,o.useCallback)(async(y,D={})=>{if(n.current)return;n.current=!0,i(!0);const p={...h.current,...D},{onSuccess:f,onError:T}=p||{};try{const l=await d.current(u.current,{arg:y});return s(l),i(!1),n.current=!1,f&&f(l),l}catch(l){i(!1),n.current=!1,T&&T(l)}},[]);return{isMutating:c,trigger:g,data:a}},N=(t,e)=>{const[r,n]=(0,o.useState)(!1),{removeProfile:a,alpcBrand:s}=(0,b.useCreditsContext)(),{enable:c,...i}=e||{},{locale:u="",brand:d}=(0,U.useHeadlessContext)(),h=s||d,{queryKey:g=[],body:y={},headers:D,...p}=t,f=c??!0,[T,l]=g;return(0,C.default)([T,l],f?([E,M])=>B({url:E,locale:u,fetchOptions:{method:"POST",headers:{"current-language":u,...D},body:JSON.stringify({...y,...M}),...p},onReAuth:async()=>await w(u,r,h)?(n(!0),!0):!1,onUnAuth(){a()}}):null,{revalidateOnFocus:!1,...i})},W=(t,e)=>{const[r,n]=(0,o.useState)(!1),{removeProfile:a,alpcBrand:s}=(0,b.useCreditsContext)(),{locale:c="",brand:i}=(0,U.useHeadlessContext)(),u=s||i,{url:d,initData:h,headers:g,...y}=t;return k(d,(p,f)=>B({url:p,locale:c,fetchOptions:{method:"POST",headers:{"current-language":c,...g},...y,body:JSON.stringify({...h,...f.arg})},onReAuth:async()=>await w(c,r,u)?(n(!0),!0):!1,onUnAuth(){a()}}),e)};
1
+ "use strict";var j=Object.create;var A=Object.defineProperty;var k=Object.getOwnPropertyDescriptor;var v=Object.getOwnPropertyNames;var I=Object.getPrototypeOf,$=Object.prototype.hasOwnProperty;var N=(t,e)=>{for(var n in e)A(t,n,{get:e[n],enumerable:!0})},M=(t,e,n,a)=>{if(e&&typeof e=="object"||typeof e=="function")for(let r of v(e))!$.call(t,r)&&r!==n&&A(t,r,{get:()=>e[r],enumerable:!(a=k(e,r))||a.enumerable});return t};var S=(t,e,n)=>(n=t!=null?j(I(t)):{},M(e||!t||!t.__esModule?A(n,"default",{value:t,enumerable:!0}):n,t)),W=t=>M(A({},"__esModule",{value:!0}),t);var H={};N(H,{useAlpcFetch:()=>J,useAlpcMutation:()=>K});module.exports=W(H);var D=S(require("js-cookie")),o=require("react"),P=S(require("swr")),B=require("@anker-in/lib"),O=require("../utils"),w=require("../provider");let b;const U=t=>t&&(t.data&&typeof t.data=="object"&&!Array.isArray(t.data)?t.data:t),x=t=>fetch((0,O.getAlpcPath)(t.locale,t.apiBaseUrl)+t.url,t.fetchOptions).then(async e=>{if(e.status<300){const n=await e.json();return U(n)}if(e.status===401&&t.onReAuth){b||(b=t.onReAuth());const n=await b;if(b=void 0,n)return fetch((0,O.getAlpcPath)(t.locale,t.apiBaseUrl)+t.url,t.fetchOptions).then(async a=>{if(a.status<300){const r=await a.json();return U(r)}if(a.status===401){t.onUnAuth&&t.onUnAuth();return}});t.onUnAuth&&t.onUnAuth();return}}),C=async(t,e,n,a)=>{let r=await fetch(`${(0,O.getAlpcPath)(t,a)}/cloud/login`,{method:"POST"}),i=await r.json(),s=U(i);if(r.status<300&&!e&&s?.code===27004){const c=D.default.get("alpcEU");if(Number(c)===1?D.default.set("alpcEU","0",{expires:30,domain:`.${n}.com`}):D.default.set("alpcEU","1",{expires:30,domain:`.${n}.com`}),r=await fetch(`${(0,O.getAlpcPath)(t,a)}/cloud/login`,{method:"POST"}),i=await r.json(),s=U(i),r.status>300)return!1}return!s?.code},z=(t,e,n={},a)=>{const r=(0,o.useRef)(!1),[i,s]=(0,o.useState)(),[c,d]=(0,o.useState)(!1),u=(0,o.useRef)(t),f=(0,o.useRef)(e),h=(0,o.useRef)(n),g=(0,o.useCallback)(async(y,T={})=>{if(console.log("[useAlpcMutation] trigger called with:",{url:u.current,fetchData:y,brand:a.current}),r.current){console.log("[useAlpcMutation] already mutating, skipping");return}if(!a.current){console.log("[useAlpcMutation] brand not available, skipping request");return}r.current=!0,d(!0);const p={...h.current,...T},{onSuccess:R,onError:m}=p||{};try{const l=await f.current(u.current,{arg:y});return s(l),d(!1),r.current=!1,R&&R(l),l}catch(l){d(!1),r.current=!1,m&&m(l)}},[]);return{isMutating:c,trigger:g,data:i}},J=(t,e)=>{const[n,a]=(0,o.useState)(!1),{removeProfile:r,alpcBrand:i,apiBaseUrl:s}=(0,w.useCreditsContext)(),{enable:c,...d}=e||{},{locale:u="",brand:f}=(0,B.useHeadlessContext)(),h=i||f,{queryKey:g=[],body:y={},headers:T,...p}=t,R=c??!0,[m,l]=g;return(0,P.default)([m,l],!R||!h?null:([F,q])=>x({url:F,locale:u,apiBaseUrl:s,fetchOptions:{method:"POST",headers:{"current-language":u,...T},body:JSON.stringify({...y,...q}),...p},onReAuth:async()=>await C(u,n,h,s)?(a(!0),!0):!1,onUnAuth(){r()}}),{revalidateOnFocus:!1,...d})},K=(t,e)=>{const[n,a]=(0,o.useState)(!1),{removeProfile:r,alpcBrand:i,apiBaseUrl:s}=(0,w.useCreditsContext)(),{locale:c="",brand:d}=(0,B.useHeadlessContext)(),u=i||d,f=(0,o.useRef)(u);f.current=u;const{url:h,initData:g,headers:y,...T}=t,p=(0,o.useRef)(g);return p.current=g,z(h,(m,l)=>f.current?x({url:m,locale:c,apiBaseUrl:s,fetchOptions:{method:"POST",headers:{"current-language":c,...y},...T,body:JSON.stringify({...p.current,...l.arg})},onReAuth:async()=>await C(c,n,f.current,s)?(a(!0),!0):!1,onUnAuth(){r()}}):Promise.resolve(void 0),e,f)};
2
2
  //# sourceMappingURL=useAlpcFetch.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../../../src/components/credits/context/hooks/useAlpcFetch.ts"],
4
- "sourcesContent": ["import Cookies from 'js-cookie'\nimport { useCallback, useRef, useState } from 'react'\nimport useSWR, { type SWRConfiguration } from 'swr'\nimport { useHeadlessContext } from '@anker-in/lib'\n\nimport { getAlpcPath } from '../utils'\nimport { useCreditsContext } from '../provider'\n\ninterface UseAlpcFetchOptionsSwrOptions<TData, Error> extends SWRConfiguration<TData, Error> {\n enable?: boolean\n}\n\ninterface FetchOptions extends RequestInit {\n queryKey: [string, Record<string, any>]\n data?: Record<string, any>\n}\n\ninterface MutationOptions extends RequestInit {\n url: string\n initData: Record<string, any>\n}\n\ninterface FetcherOptions {\n url: string\n locale: string\n fetchOptions: RequestInit\n onReAuth: () => Promise<boolean>\n onUnAuth: () => void\n}\n\nlet reAuthPromise: Promise<boolean> | undefined\n\ntype Fetcher<TData, TBody> = (url: string, data: { arg: TBody }) => Promise<TData>\n\nconst fetcher = (options: FetcherOptions) => {\n return fetch(getAlpcPath(options.locale) + options.url, options.fetchOptions).then(async response => {\n if (response.status < 300) {\n const responseData = await response.json()\n return responseData.data\n }\n\n // \u9519\u8BEF\u5904\u7406\n if (response.status === 401) {\n // \u91CD\u65B0\u767B\u5F55\u5C1D\u8BD5\n if (options.onReAuth) {\n if (!reAuthPromise) {\n reAuthPromise = options.onReAuth()\n }\n\n const result = await reAuthPromise\n\n reAuthPromise = undefined\n\n if (result) {\n // \u8DE8\u533A\u91CD\u65B0\u767B\u5F55\u540E\u9700\u8981\u66FF\u6362\u533A\u57DF\u6807\u5FD7\uFF0C\u6240\u4EE5\u4E0D\u80FD\u7528\u6700\u5F00\u59CB\u8BF7\u6C42\u7684\u90A3\u4E2A\u94FE\u63A5\n return fetch(getAlpcPath(options.locale) + options.url, options.fetchOptions).then(async response => {\n if (response.status < 300) {\n const responseData = await response.json()\n return responseData.data\n }\n\n if (response.status === 401) {\n if (options.onUnAuth) {\n options.onUnAuth()\n }\n return\n }\n })\n } else {\n if (options.onUnAuth) {\n options.onUnAuth()\n }\n return\n }\n }\n }\n })\n}\n\nconst reAuth = async (locale: string, retry: boolean, brand: string) => {\n let reloginResponse = await fetch(`${getAlpcPath(locale)}/cloud/login`, {\n method: 'POST',\n })\n let reloginResponseData = await reloginResponse.json()\n\n if (reloginResponse!.status < 300 && !retry) {\n if (reloginResponseData?.data?.code === 27004) {\n // \u8DE8\u533A\u767B\u5F55\u9519\u8BEF\n const alpcEUCookie = Cookies.get('alpcEU')\n\n if (Number(alpcEUCookie) === 1) {\n Cookies.set('alpcEU', '0', {\n expires: 30,\n domain: `.${brand}.com`,\n })\n } else {\n Cookies.set('alpcEU', '1', {\n expires: 30,\n domain: `.${brand}.com`,\n })\n }\n\n // \u91CD\u65B0\u5C1D\u8BD5\u6362\u533A\u767B\u5F55\n reloginResponse = await fetch(`${getAlpcPath(locale)}/cloud/login`, {\n method: 'POST',\n })\n reloginResponseData = await reloginResponse.json()\n\n if (reloginResponse.status > 300) {\n return false\n }\n }\n }\n if (!reloginResponseData?.data?.code) {\n // \u91CD\u65B0\u767B\u5F55\u6210\u529F\n return true\n }\n\n return false\n}\n\nexport interface UseMutationConfig<TData> {\n onSuccess?: (response: TData) => any\n onError?: (error: Error) => any\n}\n\nconst useMutation = <TData, TBody>(\n url: string,\n fetcher: Fetcher<TData, TBody>,\n mutationConfig: UseMutationConfig<TData> = {}\n) => {\n const innerMutating = useRef<boolean>(false)\n\n const [data, setData] = useState<TData>()\n const [isMutating, setIsMutating] = useState(false)\n\n const urlRef = useRef(url)\n const fetcherRef = useRef(fetcher)\n const configRef = useRef(mutationConfig)\n\n const trigger = useCallback(\n async (fetchData: TBody, opts: UseMutationConfig<TData> = {}) => {\n if (innerMutating.current) {\n return\n }\n\n innerMutating.current = true\n setIsMutating(true)\n\n const config = {\n ...configRef.current,\n ...opts,\n }\n\n const { onSuccess, onError } = config || {}\n\n try {\n const fetchResult = await fetcherRef.current(urlRef.current, {\n arg: fetchData,\n })\n setData(fetchResult)\n\n setIsMutating(false)\n innerMutating.current = false\n\n if (onSuccess) {\n onSuccess(fetchResult)\n }\n return fetchResult\n } catch (err: any) {\n setIsMutating(false)\n innerMutating.current = false\n\n if (onError) {\n onError(err)\n }\n }\n },\n // eslint-disable-next-line react-hooks/exhaustive-deps\n []\n )\n\n return {\n isMutating,\n trigger,\n data,\n }\n}\n\nexport const useAlpcFetch = <TData>(\n options: FetchOptions,\n swrOptions?: UseAlpcFetchOptionsSwrOptions<TData, Error>\n) => {\n const [retry, setRetry] = useState(false)\n const { removeProfile, alpcBrand } = useCreditsContext()\n\n const { enable, ...otherSwrOptions } = swrOptions || {}\n\n const { locale = '', brand: headlessBrand } = useHeadlessContext()\n // \u4F18\u5148\u4F7F\u7528 creditsContext \u4E2D\u7684 alpcBrand\uFF0C\u5982\u679C\u6CA1\u6709\u5219\u4F7F\u7528 headlessConfig \u4E2D\u7684 brand\n const brand = alpcBrand || headlessBrand\n\n const { queryKey = [], body: fetchBody = {}, headers, ...fetchOptions } = options\n const fetchEnable = enable ?? true\n\n const [url, requestBody] = queryKey\n\n const context = useSWR<TData>(\n [url, requestBody],\n !fetchEnable\n ? null\n : ([requestUrl, data]: [string, Record<string, any>]) =>\n fetcher({\n url: requestUrl,\n locale,\n fetchOptions: {\n method: 'POST',\n headers: {\n 'current-language': locale,\n ...headers,\n },\n body: JSON.stringify({\n ...fetchBody,\n ...data,\n }),\n ...fetchOptions,\n },\n onReAuth: async () => {\n const result = await reAuth(locale, retry, brand)\n\n if (result) {\n setRetry(true)\n return true\n }\n\n return false\n },\n onUnAuth() {\n // \u5931\u8D25\u540E\u9000\u51FA\u767B\u5F55\n removeProfile()\n },\n }),\n {\n revalidateOnFocus: false,\n ...otherSwrOptions,\n }\n )\n\n return context\n}\n\nexport const useAlpcMutation = <TData, TBody>(options: MutationOptions, mutationOptions?: UseMutationConfig<TData>) => {\n const [retry, setRetry] = useState(false)\n const { removeProfile, alpcBrand } = useCreditsContext()\n\n const { locale = '', brand: headlessBrand } = useHeadlessContext()\n // \u4F18\u5148\u4F7F\u7528 creditsContext \u4E2D\u7684 alpcBrand\uFF0C\u5982\u679C\u6CA1\u6709\u5219\u4F7F\u7528 headlessConfig \u4E2D\u7684 brand\n const brand = alpcBrand || headlessBrand\n\n const { url, initData, headers, ...fetchOptions } = options\n\n const context = useMutation<TData, TBody>(\n url,\n (requestUrl, data: { arg: TBody }) =>\n fetcher({\n url: requestUrl,\n locale,\n fetchOptions: {\n method: 'POST',\n headers: {\n 'current-language': locale,\n ...headers,\n },\n ...fetchOptions,\n body: JSON.stringify({\n ...initData,\n ...data.arg,\n }),\n },\n onReAuth: async () => {\n const result = await reAuth(locale, retry, brand)\n\n if (result) {\n setRetry(true)\n return true\n }\n\n return false\n },\n onUnAuth() {\n // \u5931\u8D25\u540E\u9000\u51FA\u767B\u5F55\n removeProfile()\n },\n }),\n mutationOptions\n )\n\n return context\n}\n"],
5
- "mappings": "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",
6
- "names": ["useAlpcFetch_exports", "__export", "useAlpcFetch", "useAlpcMutation", "__toCommonJS", "import_js_cookie", "import_react", "import_swr", "import_lib", "import_utils", "import_provider", "reAuthPromise", "fetcher", "options", "response", "result", "reAuth", "locale", "retry", "brand", "reloginResponse", "reloginResponseData", "alpcEUCookie", "Cookies", "useMutation", "url", "mutationConfig", "innerMutating", "data", "setData", "isMutating", "setIsMutating", "urlRef", "fetcherRef", "configRef", "trigger", "fetchData", "opts", "config", "onSuccess", "onError", "fetchResult", "err", "swrOptions", "setRetry", "removeProfile", "alpcBrand", "enable", "otherSwrOptions", "headlessBrand", "queryKey", "fetchBody", "headers", "fetchOptions", "fetchEnable", "requestBody", "useSWR", "requestUrl", "mutationOptions", "initData"]
4
+ "sourcesContent": ["import Cookies from 'js-cookie'\nimport { useCallback, useRef, useState } from 'react'\nimport useSWR, { type SWRConfiguration } from 'swr'\nimport { useHeadlessContext } from '@anker-in/lib'\n\nimport { getAlpcPath } from '../utils'\nimport { useCreditsContext } from '../provider'\n\ninterface UseAlpcFetchOptionsSwrOptions<TData, Error> extends SWRConfiguration<TData, Error> {\n enable?: boolean\n}\n\ninterface FetchOptions extends RequestInit {\n queryKey: [string, Record<string, any>]\n data?: Record<string, any>\n}\n\ninterface MutationOptions extends RequestInit {\n url: string\n initData: Record<string, any>\n}\n\ninterface FetcherOptions {\n url: string\n locale: string\n fetchOptions: RequestInit\n onReAuth: () => Promise<boolean>\n onUnAuth: () => void\n apiBaseUrl?: string\n}\n\nlet reAuthPromise: Promise<boolean> | undefined\n\ntype Fetcher<TData, TBody> = (url: string, data: { arg: TBody }) => Promise<TData>\n\n/**\n * \u7EDF\u4E00\u5904\u7406 ALPC \u63A5\u53E3\u8FD4\u56DE\u7684\u6570\u636E\u7ED3\u6784\n * \u517C\u5BB9\u4E00\u5C42 data \u548C\u4E24\u5C42 data \u7684\u573A\u666F\uFF1A\n * - \u4E24\u5C42 data: {data: {data: ..., code: 27004}}\n * - \u4E00\u5C42 data: {data: ..., code: 27004}\n */\nconst normalizeResponseData = (responseData: any) => {\n if (!responseData) return responseData\n\n // \u5982\u679C responseData.data \u5B58\u5728\u4E14\u662F\u4E00\u4E2A\u5BF9\u8C61\uFF08\u4E0D\u662F\u6570\u7EC4\uFF09\uFF0C\u8BF4\u660E\u662F\u4E24\u5C42 data \u7ED3\u6784\n if (responseData.data && typeof responseData.data === 'object' && !Array.isArray(responseData.data)) {\n return responseData.data\n }\n\n // \u4E00\u5C42 data \u7ED3\u6784\u6216\u5176\u4ED6\u60C5\u51B5\uFF0C\u76F4\u63A5\u8FD4\u56DE\n return responseData\n}\n\nconst fetcher = (options: FetcherOptions) => {\n return fetch(getAlpcPath(options.locale, options.apiBaseUrl) + options.url, options.fetchOptions).then(async response => {\n if (response.status < 300) {\n const responseData = await response.json()\n return normalizeResponseData(responseData)\n }\n\n // \u9519\u8BEF\u5904\u7406\n if (response.status === 401) {\n // \u91CD\u65B0\u767B\u5F55\u5C1D\u8BD5\n if (options.onReAuth) {\n if (!reAuthPromise) {\n reAuthPromise = options.onReAuth()\n }\n\n const result = await reAuthPromise\n\n reAuthPromise = undefined\n\n if (result) {\n // \u8DE8\u533A\u91CD\u65B0\u767B\u5F55\u540E\u9700\u8981\u66FF\u6362\u533A\u57DF\u6807\u5FD7\uFF0C\u6240\u4EE5\u4E0D\u80FD\u7528\u6700\u5F00\u59CB\u8BF7\u6C42\u7684\u90A3\u4E2A\u94FE\u63A5\n return fetch(getAlpcPath(options.locale, options.apiBaseUrl) + options.url, options.fetchOptions).then(async response => {\n if (response.status < 300) {\n const responseData = await response.json()\n return normalizeResponseData(responseData)\n }\n\n if (response.status === 401) {\n if (options.onUnAuth) {\n options.onUnAuth()\n }\n return\n }\n })\n } else {\n if (options.onUnAuth) {\n options.onUnAuth()\n }\n return\n }\n }\n }\n })\n}\n\nconst reAuth = async (locale: string, retry: boolean, brand: string, apiBaseUrl?: string) => {\n let reloginResponse = await fetch(`${getAlpcPath(locale, apiBaseUrl)}/cloud/login`, {\n method: 'POST',\n })\n let reloginResponseData = await reloginResponse.json()\n // \u517C\u5BB9\u4E24\u5C42 data \u7ED3\u6784\n let normalizedData = normalizeResponseData(reloginResponseData)\n\n if (reloginResponse!.status < 300 && !retry) {\n if (normalizedData?.code === 27004) {\n // \u8DE8\u533A\u767B\u5F55\u9519\u8BEF\n const alpcEUCookie = Cookies.get('alpcEU')\n\n if (Number(alpcEUCookie) === 1) {\n Cookies.set('alpcEU', '0', {\n expires: 30,\n domain: `.${brand}.com`,\n })\n } else {\n Cookies.set('alpcEU', '1', {\n expires: 30,\n domain: `.${brand}.com`,\n })\n }\n\n // \u91CD\u65B0\u5C1D\u8BD5\u6362\u533A\u767B\u5F55\n reloginResponse = await fetch(`${getAlpcPath(locale, apiBaseUrl)}/cloud/login`, {\n method: 'POST',\n })\n reloginResponseData = await reloginResponse.json()\n normalizedData = normalizeResponseData(reloginResponseData)\n\n if (reloginResponse.status > 300) {\n return false\n }\n }\n }\n if (!normalizedData?.code) {\n // \u91CD\u65B0\u767B\u5F55\u6210\u529F\n return true\n }\n\n return false\n}\n\nexport interface UseMutationConfig<TData> {\n onSuccess?: (response: TData) => any\n onError?: (error: Error) => any\n}\n\nconst useMutation = <TData, TBody>(\n url: string,\n fetcher: Fetcher<TData, TBody>,\n mutationConfig: UseMutationConfig<TData> = {},\n brandRef: React.MutableRefObject<string | undefined>\n) => {\n const innerMutating = useRef<boolean>(false)\n\n const [data, setData] = useState<TData>()\n const [isMutating, setIsMutating] = useState(false)\n\n const urlRef = useRef(url)\n const fetcherRef = useRef(fetcher)\n const configRef = useRef(mutationConfig)\n\n const trigger = useCallback(\n async (fetchData: TBody, opts: UseMutationConfig<TData> = {}) => {\n console.log('[useAlpcMutation] trigger called with:', { url: urlRef.current, fetchData, brand: brandRef.current })\n\n if (innerMutating.current) {\n console.log('[useAlpcMutation] already mutating, skipping')\n return\n }\n\n if (!brandRef.current) {\n console.log('[useAlpcMutation] brand not available, skipping request')\n return\n }\n\n innerMutating.current = true\n setIsMutating(true)\n\n const config = {\n ...configRef.current,\n ...opts,\n }\n\n const { onSuccess, onError } = config || {}\n\n try {\n const fetchResult = await fetcherRef.current(urlRef.current, {\n arg: fetchData,\n })\n setData(fetchResult)\n\n setIsMutating(false)\n innerMutating.current = false\n\n if (onSuccess) {\n onSuccess(fetchResult)\n }\n return fetchResult\n } catch (err: any) {\n setIsMutating(false)\n innerMutating.current = false\n\n if (onError) {\n onError(err)\n }\n }\n },\n // eslint-disable-next-line react-hooks/exhaustive-deps\n []\n )\n\n return {\n isMutating,\n trigger,\n data,\n }\n}\n\nexport const useAlpcFetch = <TData>(\n options: FetchOptions,\n swrOptions?: UseAlpcFetchOptionsSwrOptions<TData, Error>\n) => {\n const [retry, setRetry] = useState(false)\n const { removeProfile, alpcBrand, apiBaseUrl } = useCreditsContext()\n\n const { enable, ...otherSwrOptions } = swrOptions || {}\n\n const { locale = '', brand: headlessBrand } = useHeadlessContext()\n // \u4F18\u5148\u4F7F\u7528 creditsContext \u4E2D\u7684 alpcBrand\uFF0C\u5982\u679C\u6CA1\u6709\u5219\u4F7F\u7528 headlessConfig \u4E2D\u7684 brand\n const brand = alpcBrand || headlessBrand\n\n const { queryKey = [], body: fetchBody = {}, headers, ...fetchOptions } = options\n const fetchEnable = enable ?? true\n\n const [url, requestBody] = queryKey\n\n const context = useSWR<TData>(\n [url, requestBody],\n !fetchEnable || !brand\n ? null\n : ([requestUrl, data]: [string, Record<string, any>]) =>\n fetcher({\n url: requestUrl,\n locale,\n apiBaseUrl,\n fetchOptions: {\n method: 'POST',\n headers: {\n 'current-language': locale,\n ...headers,\n },\n body: JSON.stringify({\n ...fetchBody,\n ...data,\n }),\n ...fetchOptions,\n },\n onReAuth: async () => {\n const result = await reAuth(locale, retry, brand, apiBaseUrl)\n\n if (result) {\n setRetry(true)\n return true\n }\n\n return false\n },\n onUnAuth() {\n // \u5931\u8D25\u540E\u9000\u51FA\u767B\u5F55\n removeProfile()\n },\n }),\n {\n revalidateOnFocus: false,\n ...otherSwrOptions,\n }\n )\n\n return context\n}\n\nexport const useAlpcMutation = <TData, TBody>(options: MutationOptions, mutationOptions?: UseMutationConfig<TData>) => {\n const [retry, setRetry] = useState(false)\n const { removeProfile, alpcBrand, apiBaseUrl } = useCreditsContext()\n\n const { locale = '', brand: headlessBrand } = useHeadlessContext()\n // \u4F18\u5148\u4F7F\u7528 creditsContext \u4E2D\u7684 alpcBrand\uFF0C\u5982\u679C\u6CA1\u6709\u5219\u4F7F\u7528 headlessConfig \u4E2D\u7684 brand\n const brand = alpcBrand || headlessBrand\n const brandRef = useRef(brand)\n brandRef.current = brand\n\n const { url, initData, headers, ...fetchOptions } = options\n const initDataRef = useRef(initData)\n initDataRef.current = initData\n\n const context = useMutation<TData, TBody>(\n url,\n (requestUrl, data: { arg: TBody }) => {\n // Prevent requests when brand is not available\n if (!brandRef.current) {\n return Promise.resolve(undefined as unknown as TData)\n }\n\n return fetcher({\n url: requestUrl,\n locale,\n apiBaseUrl,\n fetchOptions: {\n method: 'POST',\n headers: {\n 'current-language': locale,\n ...headers,\n },\n ...fetchOptions,\n body: JSON.stringify({\n ...initDataRef.current,\n ...data.arg,\n }),\n },\n onReAuth: async () => {\n const result = await reAuth(locale, retry, brandRef.current!, apiBaseUrl)\n\n if (result) {\n setRetry(true)\n return true\n }\n\n return false\n },\n onUnAuth() {\n // \u5931\u8D25\u540E\u9000\u51FA\u767B\u5F55\n removeProfile()\n },\n })\n },\n mutationOptions,\n brandRef\n )\n\n return context\n}\n"],
5
+ "mappings": "0jBAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,kBAAAE,EAAA,oBAAAC,IAAA,eAAAC,EAAAJ,GAAA,IAAAK,EAAoB,wBACpBC,EAA8C,iBAC9CC,EAA8C,kBAC9CC,EAAmC,yBAEnCC,EAA4B,oBAC5BC,EAAkC,uBAyBlC,IAAIC,EAUJ,MAAMC,EAAyBC,GACxBA,IAGDA,EAAa,MAAQ,OAAOA,EAAa,MAAS,UAAY,CAAC,MAAM,QAAQA,EAAa,IAAI,EACzFA,EAAa,KAIfA,GAGHC,EAAWC,GACR,SAAM,eAAYA,EAAQ,OAAQA,EAAQ,UAAU,EAAIA,EAAQ,IAAKA,EAAQ,YAAY,EAAE,KAAK,MAAMC,GAAY,CACvH,GAAIA,EAAS,OAAS,IAAK,CACzB,MAAMH,EAAe,MAAMG,EAAS,KAAK,EACzC,OAAOJ,EAAsBC,CAAY,CAC3C,CAGA,GAAIG,EAAS,SAAW,KAElBD,EAAQ,SAAU,CACfJ,IACHA,EAAgBI,EAAQ,SAAS,GAGnC,MAAME,EAAS,MAAMN,EAIrB,GAFAA,EAAgB,OAEZM,EAEF,OAAO,SAAM,eAAYF,EAAQ,OAAQA,EAAQ,UAAU,EAAIA,EAAQ,IAAKA,EAAQ,YAAY,EAAE,KAAK,MAAMC,GAAY,CACvH,GAAIA,EAAS,OAAS,IAAK,CACzB,MAAMH,EAAe,MAAMG,EAAS,KAAK,EACzC,OAAOJ,EAAsBC,CAAY,CAC3C,CAEA,GAAIG,EAAS,SAAW,IAAK,CACvBD,EAAQ,UACVA,EAAQ,SAAS,EAEnB,MACF,CACF,CAAC,EAEGA,EAAQ,UACVA,EAAQ,SAAS,EAEnB,MAEJ,CAEJ,CAAC,EAGGG,EAAS,MAAOC,EAAgBC,EAAgBC,EAAeC,IAAwB,CAC3F,IAAIC,EAAkB,MAAM,MAAM,MAAG,eAAYJ,EAAQG,CAAU,CAAC,eAAgB,CAClF,OAAQ,MACV,CAAC,EACGE,EAAsB,MAAMD,EAAgB,KAAK,EAEjDE,EAAiBb,EAAsBY,CAAmB,EAE9D,GAAID,EAAiB,OAAS,KAAO,CAACH,GAChCK,GAAgB,OAAS,MAAO,CAElC,MAAMC,EAAe,EAAAC,QAAQ,IAAI,QAAQ,EAqBzC,GAnBI,OAAOD,CAAY,IAAM,EAC3B,EAAAC,QAAQ,IAAI,SAAU,IAAK,CACzB,QAAS,GACT,OAAQ,IAAIN,CAAK,MACnB,CAAC,EAED,EAAAM,QAAQ,IAAI,SAAU,IAAK,CACzB,QAAS,GACT,OAAQ,IAAIN,CAAK,MACnB,CAAC,EAIHE,EAAkB,MAAM,MAAM,MAAG,eAAYJ,EAAQG,CAAU,CAAC,eAAgB,CAC9E,OAAQ,MACV,CAAC,EACDE,EAAsB,MAAMD,EAAgB,KAAK,EACjDE,EAAiBb,EAAsBY,CAAmB,EAEtDD,EAAgB,OAAS,IAC3B,MAAO,EAEX,CAEF,MAAK,CAAAE,GAAgB,IAMvB,EAOMG,EAAc,CAClBC,EACAf,EACAgB,EAA2C,CAAC,EAC5CC,IACG,CACH,MAAMC,KAAgB,UAAgB,EAAK,EAErC,CAACC,EAAMC,CAAO,KAAI,YAAgB,EAClC,CAACC,EAAYC,CAAa,KAAI,YAAS,EAAK,EAE5CC,KAAS,UAAOR,CAAG,EACnBS,KAAa,UAAOxB,CAAO,EAC3ByB,KAAY,UAAOT,CAAc,EAEjCU,KAAU,eACd,MAAOC,EAAkBC,EAAiC,CAAC,IAAM,CAG/D,GAFA,QAAQ,IAAI,yCAA0C,CAAE,IAAKL,EAAO,QAAS,UAAAI,EAAW,MAAOV,EAAS,OAAQ,CAAC,EAE7GC,EAAc,QAAS,CACzB,QAAQ,IAAI,8CAA8C,EAC1D,MACF,CAEA,GAAI,CAACD,EAAS,QAAS,CACrB,QAAQ,IAAI,yDAAyD,EACrE,MACF,CAEAC,EAAc,QAAU,GACxBI,EAAc,EAAI,EAElB,MAAMO,EAAS,CACb,GAAGJ,EAAU,QACb,GAAGG,CACL,EAEM,CAAE,UAAAE,EAAW,QAAAC,CAAQ,EAAIF,GAAU,CAAC,EAE1C,GAAI,CACF,MAAMG,EAAc,MAAMR,EAAW,QAAQD,EAAO,QAAS,CAC3D,IAAKI,CACP,CAAC,EACD,OAAAP,EAAQY,CAAW,EAEnBV,EAAc,EAAK,EACnBJ,EAAc,QAAU,GAEpBY,GACFA,EAAUE,CAAW,EAEhBA,CACT,OAASC,EAAU,CACjBX,EAAc,EAAK,EACnBJ,EAAc,QAAU,GAEpBa,GACFA,EAAQE,CAAG,CAEf,CACF,EAEA,CAAC,CACH,EAEA,MAAO,CACL,WAAAZ,EACA,QAAAK,EACA,KAAAP,CACF,CACF,EAEa/B,EAAe,CAC1Ba,EACAiC,IACG,CACH,KAAM,CAAC5B,EAAO6B,CAAQ,KAAI,YAAS,EAAK,EAClC,CAAE,cAAAC,EAAe,UAAAC,EAAW,WAAA7B,CAAW,KAAI,qBAAkB,EAE7D,CAAE,OAAA8B,EAAQ,GAAGC,CAAgB,EAAIL,GAAc,CAAC,EAEhD,CAAE,OAAA7B,EAAS,GAAI,MAAOmC,CAAc,KAAI,sBAAmB,EAE3DjC,EAAQ8B,GAAaG,EAErB,CAAE,SAAAC,EAAW,CAAC,EAAG,KAAMC,EAAY,CAAC,EAAG,QAAAC,EAAS,GAAGC,CAAa,EAAI3C,EACpE4C,EAAcP,GAAU,GAExB,CAACvB,EAAK+B,CAAW,EAAIL,EA4C3B,SA1CgB,EAAAM,SACd,CAAChC,EAAK+B,CAAW,EACjB,CAACD,GAAe,CAACtC,EACb,KACA,CAAC,CAACyC,EAAY7B,CAAI,IAChBnB,EAAQ,CACN,IAAKgD,EACL,OAAA3C,EACA,WAAAG,EACA,aAAc,CACZ,OAAQ,OACR,QAAS,CACP,mBAAoBH,EACpB,GAAGsC,CACL,EACA,KAAM,KAAK,UAAU,CACnB,GAAGD,EACH,GAAGvB,CACL,CAAC,EACD,GAAGyB,CACL,EACA,SAAU,SACO,MAAMxC,EAAOC,EAAQC,EAAOC,EAAOC,CAAU,GAG1D2B,EAAS,EAAI,EACN,IAGF,GAET,UAAW,CAETC,EAAc,CAChB,CACF,CAAC,EACP,CACE,kBAAmB,GACnB,GAAGG,CACL,CACF,CAGF,EAEalD,EAAkB,CAAeY,EAA0BgD,IAA+C,CACrH,KAAM,CAAC3C,EAAO6B,CAAQ,KAAI,YAAS,EAAK,EAClC,CAAE,cAAAC,EAAe,UAAAC,EAAW,WAAA7B,CAAW,KAAI,qBAAkB,EAE7D,CAAE,OAAAH,EAAS,GAAI,MAAOmC,CAAc,KAAI,sBAAmB,EAE3DjC,EAAQ8B,GAAaG,EACrBvB,KAAW,UAAOV,CAAK,EAC7BU,EAAS,QAAUV,EAEnB,KAAM,CAAE,IAAAQ,EAAK,SAAAmC,EAAU,QAAAP,EAAS,GAAGC,CAAa,EAAI3C,EAC9CkD,KAAc,UAAOD,CAAQ,EACnC,OAAAC,EAAY,QAAUD,EAENpC,EACdC,EACA,CAACiC,EAAY7B,IAENF,EAAS,QAIPjB,EAAQ,CACb,IAAKgD,EACL,OAAA3C,EACA,WAAAG,EACA,aAAc,CACZ,OAAQ,OACR,QAAS,CACP,mBAAoBH,EACpB,GAAGsC,CACL,EACA,GAAGC,EACH,KAAM,KAAK,UAAU,CACnB,GAAGO,EAAY,QACf,GAAGhC,EAAK,GACV,CAAC,CACH,EACA,SAAU,SACO,MAAMf,EAAOC,EAAQC,EAAOW,EAAS,QAAUT,CAAU,GAGtE2B,EAAS,EAAI,EACN,IAGF,GAET,UAAW,CAETC,EAAc,CAChB,CACF,CAAC,EAjCQ,QAAQ,QAAQ,MAA6B,EAmCxDa,EACAhC,CACF,CAGF",
6
+ "names": ["useAlpcFetch_exports", "__export", "useAlpcFetch", "useAlpcMutation", "__toCommonJS", "import_js_cookie", "import_react", "import_swr", "import_lib", "import_utils", "import_provider", "reAuthPromise", "normalizeResponseData", "responseData", "fetcher", "options", "response", "result", "reAuth", "locale", "retry", "brand", "apiBaseUrl", "reloginResponse", "reloginResponseData", "normalizedData", "alpcEUCookie", "Cookies", "useMutation", "url", "mutationConfig", "brandRef", "innerMutating", "data", "setData", "isMutating", "setIsMutating", "urlRef", "fetcherRef", "configRef", "trigger", "fetchData", "opts", "config", "onSuccess", "onError", "fetchResult", "err", "swrOptions", "setRetry", "removeProfile", "alpcBrand", "enable", "otherSwrOptions", "headlessBrand", "queryKey", "fetchBody", "headers", "fetchOptions", "fetchEnable", "requestBody", "useSWR", "requestUrl", "mutationOptions", "initData", "initDataRef"]
7
7
  }
@@ -1,2 +1,2 @@
1
- "use strict";var p=Object.defineProperty;var g=Object.getOwnPropertyDescriptor;var y=Object.getOwnPropertyNames;var C=Object.prototype.hasOwnProperty;var S=(e,o)=>{for(var s in o)p(e,s,{get:o[s],enumerable:!0})},m=(e,o,s,n)=>{if(o&&typeof o=="object"||typeof o=="function")for(let t of y(o))!C.call(e,t)&&t!==s&&p(e,t,{get:()=>o[t],enumerable:!(n=g(o,t))||n.enumerable});return e};var w=e=>m(p({},"__esModule",{value:!0}),e);var x={};S(x,{default:()=>b});module.exports=w(x);var a=require("react"),l=require("@anker-in/lib");function E({shopifyStoreDomain:e}){const{locale:o=""}=(0,l.useHeadlessContext)(),[s,n]=(0,a.useState)(!1),[t,u]=(0,a.useState)([]);return(0,a.useEffect)(()=>{(async()=>{n(!0);try{const d=await(await fetch(`/api/multipass/rainbowbridge/uc/shop/shipping_zones?shop=${e}`)).json();let r=[];const h=new Set;d.data.data.forEach(c=>{c.countries.forEach(i=>{h.has(i.code)||(h.add(i.code),r.push(i))})}),r=r.sort((c,i)=>c.code.localeCompare(i.code)),console.log("fetch shipsToCountries",r),u(r)}catch(f){u([]),console.error(f)}finally{n(!1)}})()},[o]),{isLoading:s,countries:t}}var b=E;
1
+ "use strict";var p=Object.defineProperty;var g=Object.getOwnPropertyDescriptor;var y=Object.getOwnPropertyNames;var C=Object.prototype.hasOwnProperty;var S=(o,e)=>{for(var t in e)p(o,t,{get:e[t],enumerable:!0})},m=(o,e,t,n)=>{if(e&&typeof e=="object"||typeof e=="function")for(let s of y(e))!C.call(o,s)&&s!==t&&p(o,s,{get:()=>e[s],enumerable:!(n=g(e,s))||n.enumerable});return o};var w=o=>m(p({},"__esModule",{value:!0}),o);var x={};S(x,{default:()=>b});module.exports=w(x);var a=require("react"),d=require("@anker-in/lib");function E({shopifyStoreDomain:o}){const{locale:e=""}=(0,d.useHeadlessContext)(),[t,n]=(0,a.useState)(!1),[s,u]=(0,a.useState)([]);return(0,a.useEffect)(()=>{(async()=>{n(!0);try{const f=await(await fetch(`/api/multipass/rainbowbridge/uc/shop/shipping_zones?shop=${o}`,{headers:{"current-language":e}})).json();let i=[];const l=new Set;(f?.data?.data||f?.data||[]).forEach(c=>{c.countries.forEach(r=>{l.has(r.code)||(l.add(r.code),i.push(r))})}),i=i.sort((c,r)=>c.code.localeCompare(r.code)),console.log("fetch shipsToCountries",i),u(i)}catch(h){u([]),console.error(h)}finally{n(!1)}})()},[e]),{isLoading:t,countries:s}}var b=E;
2
2
  //# sourceMappingURL=useCountries.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../../../src/components/credits/context/hooks/useCountries.ts"],
4
- "sourcesContent": ["import { useEffect, useState } from 'react'\n\nimport { useHeadlessContext } from '@anker-in/lib'\nimport { type ShippingCountry, type ShippingZone } from '../../type'\n\nfunction useCountries({ shopifyStoreDomain }: { shopifyStoreDomain: string }) {\n const { locale = '' } = useHeadlessContext()\n\n const [isLoading, setLoading] = useState(false)\n const [countries, setCountries] = useState<ShippingCountry[]>([])\n\n useEffect(() => {\n const fetchCountries = async () => {\n setLoading(true)\n try {\n const response = await fetch(`/api/multipass/rainbowbridge/uc/shop/shipping_zones?shop=${shopifyStoreDomain}`)\n const res: any = await response.json()\n\n // \u56FD\u5BB6\u8FC7\u6EE4\n let shipsToCountries: ShippingCountry[] = []\n const countrySet = new Set()\n res.data.data.forEach((shippingZoneItem: ShippingZone) => {\n shippingZoneItem.countries.forEach(shippingZoneCountryItem => {\n if (!countrySet.has(shippingZoneCountryItem.code)) {\n countrySet.add(shippingZoneCountryItem.code)\n shipsToCountries.push(shippingZoneCountryItem)\n }\n })\n })\n\n // \u5B57\u6BCD\u987A\u5E8F\u6392\u5E8F\n shipsToCountries = shipsToCountries.sort((a, b) => {\n return a.code.localeCompare(b.code)\n })\n\n console.log('fetch shipsToCountries', shipsToCountries)\n setCountries(shipsToCountries)\n } catch (e) {\n setCountries([])\n console.error(e)\n } finally {\n setLoading(false)\n }\n }\n\n fetchCountries()\n }, [locale])\n\n return {\n isLoading,\n countries,\n }\n}\n\nexport default useCountries\n"],
5
- "mappings": "yaAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,aAAAE,IAAA,eAAAC,EAAAH,GAAA,IAAAI,EAAoC,iBAEpCC,EAAmC,yBAGnC,SAASC,EAAa,CAAE,mBAAAC,CAAmB,EAAmC,CAC5E,KAAM,CAAE,OAAAC,EAAS,EAAG,KAAI,sBAAmB,EAErC,CAACC,EAAWC,CAAU,KAAI,YAAS,EAAK,EACxC,CAACC,EAAWC,CAAY,KAAI,YAA4B,CAAC,CAAC,EAEhE,sBAAU,IAAM,EACS,SAAY,CACjCF,EAAW,EAAI,EACf,GAAI,CAEF,MAAMG,EAAW,MADA,MAAM,MAAM,4DAA4DN,CAAkB,EAAE,GAC7E,KAAK,EAGrC,IAAIO,EAAsC,CAAC,EAC3C,MAAMC,EAAa,IAAI,IACvBF,EAAI,KAAK,KAAK,QAASG,GAAmC,CACxDA,EAAiB,UAAU,QAAQC,GAA2B,CACvDF,EAAW,IAAIE,EAAwB,IAAI,IAC9CF,EAAW,IAAIE,EAAwB,IAAI,EAC3CH,EAAiB,KAAKG,CAAuB,EAEjD,CAAC,CACH,CAAC,EAGDH,EAAmBA,EAAiB,KAAK,CAACI,EAAGC,IACpCD,EAAE,KAAK,cAAcC,EAAE,IAAI,CACnC,EAED,QAAQ,IAAI,yBAA0BL,CAAgB,EACtDF,EAAaE,CAAgB,CAC/B,OAASM,EAAG,CACVR,EAAa,CAAC,CAAC,EACf,QAAQ,MAAMQ,CAAC,CACjB,QAAE,CACAV,EAAW,EAAK,CAClB,CACF,GAEe,CACjB,EAAG,CAACF,CAAM,CAAC,EAEJ,CACL,UAAAC,EACA,UAAAE,CACF,CACF,CAEA,IAAOT,EAAQI",
4
+ "sourcesContent": ["import { useEffect, useState } from 'react'\n\nimport { useHeadlessContext } from '@anker-in/lib'\nimport { type ShippingCountry, type ShippingZone } from '../../type'\n\nfunction useCountries({ shopifyStoreDomain }: { shopifyStoreDomain: string }) {\n const { locale = '' } = useHeadlessContext()\n\n const [isLoading, setLoading] = useState(false)\n const [countries, setCountries] = useState<ShippingCountry[]>([])\n\n useEffect(() => {\n const fetchCountries = async () => {\n setLoading(true)\n try {\n const response = await fetch(`/api/multipass/rainbowbridge/uc/shop/shipping_zones?shop=${shopifyStoreDomain}`, {\n headers: {\n 'current-language': locale,\n },\n })\n const res: any = await response.json()\n\n // \u56FD\u5BB6\u8FC7\u6EE4\n let shipsToCountries: ShippingCountry[] = []\n const countrySet = new Set()\n const shippingZones = res?.data?.data || res?.data || []\n shippingZones.forEach((shippingZoneItem: ShippingZone) => {\n shippingZoneItem.countries.forEach(shippingZoneCountryItem => {\n if (!countrySet.has(shippingZoneCountryItem.code)) {\n countrySet.add(shippingZoneCountryItem.code)\n shipsToCountries.push(shippingZoneCountryItem)\n }\n })\n })\n\n // \u5B57\u6BCD\u987A\u5E8F\u6392\u5E8F\n shipsToCountries = shipsToCountries.sort((a, b) => {\n return a.code.localeCompare(b.code)\n })\n\n console.log('fetch shipsToCountries', shipsToCountries)\n setCountries(shipsToCountries)\n } catch (e) {\n setCountries([])\n console.error(e)\n } finally {\n setLoading(false)\n }\n }\n\n fetchCountries()\n }, [locale])\n\n return {\n isLoading,\n countries,\n }\n}\n\nexport default useCountries\n"],
5
+ "mappings": "yaAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,aAAAE,IAAA,eAAAC,EAAAH,GAAA,IAAAI,EAAoC,iBAEpCC,EAAmC,yBAGnC,SAASC,EAAa,CAAE,mBAAAC,CAAmB,EAAmC,CAC5E,KAAM,CAAE,OAAAC,EAAS,EAAG,KAAI,sBAAmB,EAErC,CAACC,EAAWC,CAAU,KAAI,YAAS,EAAK,EACxC,CAACC,EAAWC,CAAY,KAAI,YAA4B,CAAC,CAAC,EAEhE,sBAAU,IAAM,EACS,SAAY,CACjCF,EAAW,EAAI,EACf,GAAI,CAMF,MAAMG,EAAW,MALA,MAAM,MAAM,4DAA4DN,CAAkB,GAAI,CAC7G,QAAS,CACP,mBAAoBC,CACtB,CACF,CAAC,GAC+B,KAAK,EAGrC,IAAIM,EAAsC,CAAC,EAC3C,MAAMC,EAAa,IAAI,KACDF,GAAK,MAAM,MAAQA,GAAK,MAAQ,CAAC,GACzC,QAASG,GAAmC,CACxDA,EAAiB,UAAU,QAAQC,GAA2B,CACvDF,EAAW,IAAIE,EAAwB,IAAI,IAC9CF,EAAW,IAAIE,EAAwB,IAAI,EAC3CH,EAAiB,KAAKG,CAAuB,EAEjD,CAAC,CACH,CAAC,EAGDH,EAAmBA,EAAiB,KAAK,CAACI,EAAGC,IACpCD,EAAE,KAAK,cAAcC,EAAE,IAAI,CACnC,EAED,QAAQ,IAAI,yBAA0BL,CAAgB,EACtDF,EAAaE,CAAgB,CAC/B,OAASM,EAAG,CACVR,EAAa,CAAC,CAAC,EACf,QAAQ,MAAMQ,CAAC,CACjB,QAAE,CACAV,EAAW,EAAK,CAClB,CACF,GAEe,CACjB,EAAG,CAACF,CAAM,CAAC,EAEJ,CACL,UAAAC,EACA,UAAAE,CACF,CACF,CAEA,IAAOT,EAAQI",
6
6
  "names": ["useCountries_exports", "__export", "useCountries_default", "__toCommonJS", "import_react", "import_lib", "useCountries", "shopifyStoreDomain", "locale", "isLoading", "setLoading", "countries", "setCountries", "res", "shipsToCountries", "countrySet", "shippingZoneItem", "shippingZoneCountryItem", "a", "b", "e"]
7
7
  }
@@ -1,2 +1,2 @@
1
- "use strict";var p=Object.defineProperty;var w=Object.getOwnPropertyDescriptor;var L=Object.getOwnPropertyNames;var T=Object.prototype.hasOwnProperty;var x=(t,e)=>{for(var o in e)p(t,o,{get:e[o],enumerable:!0})},N=(t,e,o,n)=>{if(e&&typeof e=="object"||typeof e=="function")for(let s of L(e))!T.call(t,s)&&s!==o&&p(t,s,{get:()=>e[s],enumerable:!(n=w(e,s))||n.enumerable});return t};var h=t=>N(p({},"__esModule",{value:!0}),t);var P={};x(P,{default:()=>B});module.exports=h(P);var r=require("react"),a=require("../const"),g=require("./useAlpcFetch"),_=require("../provider"),f=require("@anker-in/lib");function z({page:t,pageSize:e,consumeType:o}){const{profile:n,alpcBrand:s}=(0,_.useCreditsContext)(),{brand:y,locale:m,appName:R}=(0,f.useHeadlessContext)(),C=s||y,[d,b]=(0,r.useState)([]),[i,A]=(0,r.useState)(0),{isMutating:c,trigger:M}=(0,g.useAlpcMutation)({url:"/v1/credit/log/coupon",initData:{brand:C,country:a.ALPC_COUNTRY_MAP.get(m)||m,app_name:R}}),u=(0,r.useCallback)(async()=>{n?.user_id&&await M({consume_type:o||a.AlpcConsumeType.Coupon,page:t,page_size:e,user_id:n?.user_id},{onSuccess(l){A(l?.data?.total),b(l?.data?.redeem_logs||[])}})},[o,t,e,n?.user_id]);return(0,r.useEffect)(()=>{u()},[u]),{myRewards:d,isLoading:c,total:i,getMyRewards:u,canNext:i>d.length&&!c}}var B=z;
1
+ "use strict";var i=Object.defineProperty;var w=Object.getOwnPropertyDescriptor;var L=Object.getOwnPropertyNames;var T=Object.prototype.hasOwnProperty;var x=(t,e)=>{for(var s in e)i(t,s,{get:e[s],enumerable:!0})},N=(t,e,s,o)=>{if(e&&typeof e=="object"||typeof e=="function")for(let r of L(e))!T.call(t,r)&&r!==s&&i(t,r,{get:()=>e[r],enumerable:!(o=w(e,r))||o.enumerable});return t};var h=t=>N(i({},"__esModule",{value:!0}),t);var P={};x(P,{default:()=>B});module.exports=h(P);var n=require("react"),a=require("../const"),_=require("./useAlpcFetch"),f=require("../provider"),y=require("@anker-in/lib");function z({page:t,pageSize:e,consumeType:s}){const{profile:o,alpcBrand:r}=(0,f.useCreditsContext)(),{brand:R,locale:m,appName:C}=(0,y.useHeadlessContext)(),u=r||R,[d,b]=(0,n.useState)([]),[c,A]=(0,n.useState)(0),{isMutating:l,trigger:M}=(0,_.useAlpcMutation)({url:"/v1/credit/log/coupon",initData:{brand:u,country:a.ALPC_COUNTRY_MAP.get(m)||m,app_name:C}}),p=(0,n.useCallback)(async()=>{o?.user_id&&await M({consume_type:s||a.AlpcConsumeType.Coupon,page:t,page_size:e,user_id:o?.user_id},{onSuccess(g){A(g?.data?.total),b(g?.data?.redeem_logs||[])}})},[s,t,e,o?.user_id]);return(0,n.useEffect)(()=>{!u||!o?.user_id||p()},[p,u]),{myRewards:d,isLoading:l,total:c,getMyRewards:p,canNext:c>d.length&&!l}}var B=z;
2
2
  //# sourceMappingURL=useMyRewards.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../../../src/components/credits/context/hooks/useMyRewards.ts"],
4
- "sourcesContent": ["import { useCallback, useEffect, useState } from 'react'\n\nimport { ALPC_COUNTRY_MAP, AlpcConsumeType } from '../const'\nimport { useAlpcMutation } from './useAlpcFetch'\nimport type { RedeemLogResponse } from '../response'\nimport { useCreditsContext } from '../provider'\nimport { useHeadlessContext } from '@anker-in/lib'\n\nfunction useMyRewards({\n page,\n pageSize,\n consumeType,\n}: {\n page: number\n pageSize: number\n consumeType?: AlpcConsumeType\n}) {\n const { profile, alpcBrand } = useCreditsContext()\n const { brand: headlessBrand, locale, appName } = useHeadlessContext()\n const brand = alpcBrand || headlessBrand\n\n const [myRewards, setMyRewards] = useState<RedeemLogResponse[]>([])\n const [total, setTotal] = useState(0)\n\n const { isMutating: isLoading, trigger } = useAlpcMutation<\n { data: { redeem_logs: RedeemLogResponse[]; total: number } },\n {\n page: number\n page_size: number\n consume_type: AlpcConsumeType\n user_id: string\n }\n >({\n url: `/v1/credit/log/coupon`,\n initData: {\n brand: brand,\n country: ALPC_COUNTRY_MAP.get(locale) || locale,\n app_name: appName,\n },\n })\n\n const getMyRewards = useCallback(async () => {\n if (!profile?.user_id) {\n return\n }\n await trigger(\n {\n consume_type: consumeType || AlpcConsumeType.Coupon,\n page,\n page_size: pageSize,\n user_id: profile?.user_id,\n },\n {\n onSuccess(responseData) {\n setTotal(responseData?.data?.total)\n setMyRewards(responseData?.data?.redeem_logs || [])\n },\n }\n )\n }, [consumeType, page, pageSize, profile?.user_id])\n\n useEffect(() => {\n getMyRewards()\n }, [getMyRewards])\n\n return {\n myRewards,\n isLoading,\n total,\n getMyRewards,\n canNext: total > myRewards.length && !isLoading,\n }\n}\n\nexport default useMyRewards\n"],
5
- "mappings": "yaAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,aAAAE,IAAA,eAAAC,EAAAH,GAAA,IAAAI,EAAiD,iBAEjDC,EAAkD,oBAClDC,EAAgC,0BAEhCC,EAAkC,uBAClCC,EAAmC,yBAEnC,SAASC,EAAa,CACpB,KAAAC,EACA,SAAAC,EACA,YAAAC,CACF,EAIG,CACD,KAAM,CAAG,QAAAC,EAAS,UAAAC,CAAU,KAAI,qBAAkB,EAC5C,CAAE,MAAOC,EAAe,OAAAC,EAAQ,QAAAC,CAAQ,KAAI,sBAAmB,EAC/DC,EAAQJ,GAAaC,EAErB,CAACI,EAAWC,CAAY,KAAI,YAA8B,CAAC,CAAC,EAC5D,CAACC,EAAOC,CAAQ,KAAI,YAAS,CAAC,EAE9B,CAAE,WAAYC,EAAW,QAAAC,CAAQ,KAAI,mBAQzC,CACA,IAAK,wBACL,SAAU,CACR,MAAON,EACP,QAAS,mBAAiB,IAAIF,CAAM,GAAKA,EACzC,SAAUC,CACZ,CACF,CAAC,EAEKQ,KAAe,eAAY,SAAY,CACtCZ,GAAS,SAGd,MAAMW,EACJ,CACE,aAAcZ,GAAe,kBAAgB,OAC7C,KAAAF,EACA,UAAWC,EACX,QAASE,GAAS,OACpB,EACA,CACE,UAAUa,EAAc,CACtBJ,EAASI,GAAc,MAAM,KAAK,EAClCN,EAAaM,GAAc,MAAM,aAAe,CAAC,CAAC,CACpD,CACF,CACF,CACF,EAAG,CAACd,EAAaF,EAAMC,EAAUE,GAAS,OAAO,CAAC,EAElD,sBAAU,IAAM,CACdY,EAAa,CACf,EAAG,CAACA,CAAY,CAAC,EAEV,CACL,UAAAN,EACA,UAAAI,EACA,MAAAF,EACA,aAAAI,EACA,QAASJ,EAAQF,EAAU,QAAU,CAACI,CACxC,CACF,CAEA,IAAOrB,EAAQO",
4
+ "sourcesContent": ["import { useCallback, useEffect, useState } from 'react'\n\nimport { ALPC_COUNTRY_MAP, AlpcConsumeType } from '../const'\nimport { useAlpcMutation } from './useAlpcFetch'\nimport type { RedeemLogResponse } from '../response'\nimport { useCreditsContext } from '../provider'\nimport { useHeadlessContext } from '@anker-in/lib'\n\nfunction useMyRewards({\n page,\n pageSize,\n consumeType,\n}: {\n page: number\n pageSize: number\n consumeType?: AlpcConsumeType\n}) {\n const { profile, alpcBrand } = useCreditsContext()\n const { brand: headlessBrand, locale, appName } = useHeadlessContext()\n const brand = alpcBrand || headlessBrand\n\n const [myRewards, setMyRewards] = useState<RedeemLogResponse[]>([])\n const [total, setTotal] = useState(0)\n\n const { isMutating: isLoading, trigger } = useAlpcMutation<\n { data: { redeem_logs: RedeemLogResponse[]; total: number } },\n {\n page: number\n page_size: number\n consume_type: AlpcConsumeType\n user_id: string\n }\n >({\n url: `/v1/credit/log/coupon`,\n initData: {\n brand: brand,\n country: ALPC_COUNTRY_MAP.get(locale) || locale,\n app_name: appName,\n },\n })\n\n const getMyRewards = useCallback(async () => {\n if (!profile?.user_id) {\n return\n }\n await trigger(\n {\n consume_type: consumeType || AlpcConsumeType.Coupon,\n page,\n page_size: pageSize,\n user_id: profile?.user_id,\n },\n {\n onSuccess(responseData) {\n setTotal(responseData?.data?.total)\n setMyRewards(responseData?.data?.redeem_logs || [])\n },\n }\n )\n }, [consumeType, page, pageSize, profile?.user_id])\n\n useEffect(() => {\n if (!brand || !profile?.user_id) {\n return\n }\n getMyRewards()\n }, [getMyRewards, brand])\n\n return {\n myRewards,\n isLoading,\n total,\n getMyRewards,\n canNext: total > myRewards.length && !isLoading,\n }\n}\n\nexport default useMyRewards\n"],
5
+ "mappings": "yaAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,aAAAE,IAAA,eAAAC,EAAAH,GAAA,IAAAI,EAAiD,iBAEjDC,EAAkD,oBAClDC,EAAgC,0BAEhCC,EAAkC,uBAClCC,EAAmC,yBAEnC,SAASC,EAAa,CACpB,KAAAC,EACA,SAAAC,EACA,YAAAC,CACF,EAIG,CACD,KAAM,CAAE,QAAAC,EAAS,UAAAC,CAAU,KAAI,qBAAkB,EAC3C,CAAE,MAAOC,EAAe,OAAAC,EAAQ,QAAAC,CAAQ,KAAI,sBAAmB,EAC/DC,EAAQJ,GAAaC,EAErB,CAACI,EAAWC,CAAY,KAAI,YAA8B,CAAC,CAAC,EAC5D,CAACC,EAAOC,CAAQ,KAAI,YAAS,CAAC,EAE9B,CAAE,WAAYC,EAAW,QAAAC,CAAQ,KAAI,mBAQzC,CACA,IAAK,wBACL,SAAU,CACR,MAAON,EACP,QAAS,mBAAiB,IAAIF,CAAM,GAAKA,EACzC,SAAUC,CACZ,CACF,CAAC,EAEKQ,KAAe,eAAY,SAAY,CACtCZ,GAAS,SAGd,MAAMW,EACJ,CACE,aAAcZ,GAAe,kBAAgB,OAC7C,KAAAF,EACA,UAAWC,EACX,QAASE,GAAS,OACpB,EACA,CACE,UAAUa,EAAc,CACtBJ,EAASI,GAAc,MAAM,KAAK,EAClCN,EAAaM,GAAc,MAAM,aAAe,CAAC,CAAC,CACpD,CACF,CACF,CACF,EAAG,CAACd,EAAaF,EAAMC,EAAUE,GAAS,OAAO,CAAC,EAElD,sBAAU,IAAM,CACV,CAACK,GAAS,CAACL,GAAS,SAGxBY,EAAa,CACf,EAAG,CAACA,EAAcP,CAAK,CAAC,EAEjB,CACL,UAAAC,EACA,UAAAI,EACA,MAAAF,EACA,aAAAI,EACA,QAASJ,EAAQF,EAAU,QAAU,CAACI,CACxC,CACF,CAEA,IAAOrB,EAAQO",
6
6
  "names": ["useMyRewards_exports", "__export", "useMyRewards_default", "__toCommonJS", "import_react", "import_const", "import_useAlpcFetch", "import_provider", "import_lib", "useMyRewards", "page", "pageSize", "consumeType", "profile", "alpcBrand", "headlessBrand", "locale", "appName", "brand", "myRewards", "setMyRewards", "total", "setTotal", "isLoading", "trigger", "getMyRewards", "responseData"]
7
7
  }
@@ -1,2 +1,2 @@
1
- "use strict";var f=Object.create;var u=Object.defineProperty;var y=Object.getOwnPropertyDescriptor;var g=Object.getOwnPropertyNames;var l=Object.getPrototypeOf,w=Object.prototype.hasOwnProperty;var _=(r,e)=>{for(var t in e)u(r,t,{get:e[t],enumerable:!0})},d=(r,e,t,n)=>{if(e&&typeof e=="object"||typeof e=="function")for(let o of g(e))!w.call(r,o)&&o!==t&&u(r,o,{get:()=>e[o],enumerable:!(n=y(e,o))||n.enumerable});return r};var C=(r,e,t)=>(t=r!=null?f(l(r)):{},d(e||!r||!r.__esModule?u(t,"default",{value:r,enumerable:!0}):t,r)),R=r=>d(u({},"__esModule",{value:!0}),r);var E={};_(E,{useRedeemAndBuy:()=>b});module.exports=R(E);var s=C(require("swr/mutation")),m=require("./useRedeemCoupon"),c=require("../provider"),p=require("@anker-in/lib");const b=(r,e)=>{const{trigger:t}=(0,m.useRedeemCoupon)(),{profile:n}=(0,c.useCreditsContext)(),{trigger:o}=(0,p.useBuyNow)({},{throwOnError:!0});return(0,s.default)("redeemAndBuy",async(V,{arg:a})=>{const i=await t({user_id:n?.user_id,rule_id:a.redeemId});if(i&&i?.data?.coupon_code)o({discountCodes:[i.data.coupon_code],lineItems:[{variant:a.productVariant,quantity:a.quantity||1}]});else throw new Error(`Redeem failed: ${i?.msg}`)},e)};
1
+ "use strict";var y=Object.create;var u=Object.defineProperty;var g=Object.getOwnPropertyDescriptor;var l=Object.getOwnPropertyNames;var _=Object.getPrototypeOf,w=Object.prototype.hasOwnProperty;var b=(r,o)=>{for(var e in o)u(r,e,{get:o[e],enumerable:!0})},s=(r,o,e,n)=>{if(o&&typeof o=="object"||typeof o=="function")for(let t of l(o))!w.call(r,t)&&t!==e&&u(r,t,{get:()=>o[t],enumerable:!(n=g(o,t))||n.enumerable});return r};var C=(r,o,e)=>(e=r!=null?y(_(r)):{},s(o||!r||!r.__esModule?u(e,"default",{value:r,enumerable:!0}):e,r)),R=r=>s(u({},"__esModule",{value:!0}),r);var V={};b(V,{useRedeemAndBuy:()=>E});module.exports=R(V);var c=C(require("swr/mutation")),m=require("./useRedeemCoupon"),p=require("../provider"),f=require("@anker-in/lib");const E=(r,o)=>{const{trigger:e}=(0,m.useRedeemCoupon)(),{profile:n}=(0,p.useCreditsContext)(),{trigger:t}=(0,f.useBuyNow)({},{throwOnError:!0});return(0,c.default)("redeemAndBuy",async(h,{arg:a})=>{const i=await e({user_id:n?.user_id,rule_id:a.redeemId}),d=i?.data||i;if(i&&d?.coupon_code)t({discountCodes:[d.coupon_code],lineItems:[{variant:a.productVariant,quantity:a.quantity||1}]});else throw new Error(`Redeem failed: ${i?.msg}`)},o)};
2
2
  //# sourceMappingURL=useRedeemAndBuy.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../../../src/components/credits/context/hooks/useRedeemAndBuy.ts"],
4
- "sourcesContent": ["import useSWRMutation, { SWRMutationConfiguration } from 'swr/mutation'\nimport { useRedeemCoupon } from './useRedeemCoupon'\nimport type { ProductVariant } from '@anker-in/lib'\nimport { useCreditsContext } from '../provider'\nimport { useBuyNow } from '@anker-in/lib'\n\nexport const useRedeemAndBuy = (\n _: any,\n swrOptions?: SWRMutationConfiguration<undefined, Error, string, any> & {\n throwOnError?: boolean\n }\n) => {\n const { trigger } = useRedeemCoupon()\n const { profile } = useCreditsContext()\n\n const { trigger: buyNow } = useBuyNow(\n {},\n {\n throwOnError: true,\n }\n )\n\n return useSWRMutation(\n 'redeemAndBuy',\n async (\n _,\n {\n arg,\n }: {\n arg: {\n productVariant: ProductVariant\n quantity?: number\n redeemId: number\n }\n }\n ) => {\n const res = await trigger({\n user_id: profile?.user_id,\n rule_id: arg.redeemId,\n })\n if (res && res?.data?.coupon_code) {\n buyNow({\n discountCodes: [res.data.coupon_code],\n lineItems: [\n {\n variant: arg.productVariant,\n quantity: arg.quantity || 1,\n },\n ],\n })\n } else {\n throw new Error(`Redeem failed: ${res?.msg}`)\n }\n },\n swrOptions\n )\n}\n"],
5
- "mappings": "0jBAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,qBAAAE,IAAA,eAAAC,EAAAH,GAAA,IAAAI,EAAyD,2BACzDC,EAAgC,6BAEhCC,EAAkC,uBAClCC,EAA0B,yBAEnB,MAAML,EAAkB,CAC7BM,EACAC,IAGG,CACH,KAAM,CAAE,QAAAC,CAAQ,KAAI,mBAAgB,EAC9B,CAAE,QAAAC,CAAQ,KAAI,qBAAkB,EAEhC,CAAE,QAASC,CAAO,KAAI,aAC1B,CAAC,EACD,CACE,aAAc,EAChB,CACF,EAEA,SAAO,EAAAC,SACL,eACA,MACEL,EACA,CACE,IAAAM,CACF,IAOG,CACH,MAAMC,EAAM,MAAML,EAAQ,CACxB,QAASC,GAAS,QAClB,QAASG,EAAI,QACf,CAAC,EACD,GAAIC,GAAOA,GAAK,MAAM,YACpBH,EAAO,CACL,cAAe,CAACG,EAAI,KAAK,WAAW,EACpC,UAAW,CACT,CACE,QAASD,EAAI,eACb,SAAUA,EAAI,UAAY,CAC5B,CACF,CACF,CAAC,MAED,OAAM,IAAI,MAAM,kBAAkBC,GAAK,GAAG,EAAE,CAEhD,EACAN,CACF,CACF",
6
- "names": ["useRedeemAndBuy_exports", "__export", "useRedeemAndBuy", "__toCommonJS", "import_mutation", "import_useRedeemCoupon", "import_provider", "import_lib", "_", "swrOptions", "trigger", "profile", "buyNow", "useSWRMutation", "arg", "res"]
4
+ "sourcesContent": ["import useSWRMutation, { SWRMutationConfiguration } from 'swr/mutation'\nimport { useRedeemCoupon } from './useRedeemCoupon'\nimport type { ProductVariant } from '@anker-in/lib'\nimport { useCreditsContext } from '../provider'\nimport { useBuyNow } from '@anker-in/lib'\n\nexport const useRedeemAndBuy = (\n _: any,\n swrOptions?: SWRMutationConfiguration<undefined, Error, string, any> & {\n throwOnError?: boolean\n }\n) => {\n const { trigger } = useRedeemCoupon()\n const { profile } = useCreditsContext()\n\n const { trigger: buyNow } = useBuyNow(\n {},\n {\n throwOnError: true,\n }\n )\n\n return useSWRMutation(\n 'redeemAndBuy',\n async (\n _,\n {\n arg,\n }: {\n arg: {\n productVariant: ProductVariant\n quantity?: number\n redeemId: number\n }\n }\n ) => {\n const res = await trigger({\n user_id: profile?.user_id,\n rule_id: arg.redeemId,\n })\n const data = (res?.data || res) as { success?: boolean; coupon_code?: string }\n if (res && data?.coupon_code) {\n buyNow({\n discountCodes: [data.coupon_code],\n lineItems: [\n {\n variant: arg.productVariant,\n quantity: arg.quantity || 1,\n },\n ],\n })\n } else {\n throw new Error(`Redeem failed: ${res?.msg}`)\n }\n },\n swrOptions\n )\n}\n"],
5
+ "mappings": "0jBAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,qBAAAE,IAAA,eAAAC,EAAAH,GAAA,IAAAI,EAAyD,2BACzDC,EAAgC,6BAEhCC,EAAkC,uBAClCC,EAA0B,yBAEnB,MAAML,EAAkB,CAC7BM,EACAC,IAGG,CACH,KAAM,CAAE,QAAAC,CAAQ,KAAI,mBAAgB,EAC9B,CAAE,QAAAC,CAAQ,KAAI,qBAAkB,EAEhC,CAAE,QAASC,CAAO,KAAI,aAC1B,CAAC,EACD,CACE,aAAc,EAChB,CACF,EAEA,SAAO,EAAAC,SACL,eACA,MACEL,EACA,CACE,IAAAM,CACF,IAOG,CACH,MAAMC,EAAM,MAAML,EAAQ,CACxB,QAASC,GAAS,QAClB,QAASG,EAAI,QACf,CAAC,EACKE,EAAQD,GAAK,MAAQA,EAC3B,GAAIA,GAAOC,GAAM,YACfJ,EAAO,CACL,cAAe,CAACI,EAAK,WAAW,EAChC,UAAW,CACT,CACE,QAASF,EAAI,eACb,SAAUA,EAAI,UAAY,CAC5B,CACF,CACF,CAAC,MAED,OAAM,IAAI,MAAM,kBAAkBC,GAAK,GAAG,EAAE,CAEhD,EACAN,CACF,CACF",
6
+ "names": ["useRedeemAndBuy_exports", "__export", "useRedeemAndBuy", "__toCommonJS", "import_mutation", "import_useRedeemCoupon", "import_provider", "import_lib", "_", "swrOptions", "trigger", "profile", "buyNow", "useSWRMutation", "arg", "res", "data"]
7
7
  }
@@ -1,2 +1,2 @@
1
- "use strict";var i=Object.defineProperty;var b=Object.getOwnPropertyDescriptor;var A=Object.getOwnPropertyNames;var x=Object.prototype.hasOwnProperty;var M=(s,e)=>{for(var t in e)i(s,t,{get:e[t],enumerable:!0})},P=(s,e,t,r)=>{if(e&&typeof e=="object"||typeof e=="function")for(let o of A(e))!x.call(s,o)&&o!==t&&i(s,o,{get:()=>e[o],enumerable:!(r=b(e,o))||r.enumerable});return s};var B=s=>P(i({},"__esModule",{value:!0}),s);var h={};M(h,{default:()=>U});module.exports=B(h);var n=require("react"),a=require("./useAlpcFetch"),d=require("../const"),C=require("../provider"),f=require("@anker-in/lib");function S(s){let e="";const{profile:t,isLoadingProfile:r,alpcBrand:o}=(0,C.useCreditsContext)(),{locale:c,brand:y}=(0,f.useHeadlessContext)(),_=o||y;c==="pl"?e="eu":e=c;const[g,T]=(0,n.useState)([]),{isMutating:R,trigger:l}=(0,a.useAlpcMutation)({url:"/v1/credit/consume_credit_rules",initData:{brand:_,page:1,page_size:999,country:(d.ALPC_COUNTRY_MAP.get(e)||e)?.toUpperCase()}}),u=(0,n.useCallback)(m=>{l({user_id:t?.user_id,...m?.consumeType&&{consume_type:m.consumeType}},{onSuccess(p){console.log("responseData",p);let L=p.data.consume_credit_rules||[];T(L)}})},[t,l,e]);return(0,n.useEffect)(()=>{r||u({consumeType:s?.consumeType})},[u,r]),{listLoading:R,redeemableList:g,getRedeemableList:u}}var U=S;
1
+ "use strict";var c=Object.defineProperty;var b=Object.getOwnPropertyDescriptor;var A=Object.getOwnPropertyNames;var x=Object.prototype.hasOwnProperty;var M=(s,e)=>{for(var t in e)c(s,t,{get:e[t],enumerable:!0})},P=(s,e,t,r)=>{if(e&&typeof e=="object"||typeof e=="function")for(let o of A(e))!x.call(s,o)&&o!==t&&c(s,o,{get:()=>e[o],enumerable:!(r=b(e,o))||r.enumerable});return s};var B=s=>P(c({},"__esModule",{value:!0}),s);var h={};M(h,{default:()=>U});module.exports=B(h);var n=require("react"),d=require("./useAlpcFetch"),C=require("../const"),f=require("../provider"),y=require("@anker-in/lib");function S(s){let e="";const{profile:t,isLoadingProfile:r,alpcBrand:o}=(0,f.useCreditsContext)(),{locale:l,brand:_}=(0,y.useHeadlessContext)(),u=o||_;l==="pl"?e="eu":e=l;const[g,T]=(0,n.useState)([]),{isMutating:R,trigger:m}=(0,d.useAlpcMutation)({url:"/v1/credit/consume_credit_rules",initData:{brand:u,page:1,page_size:999,country:(C.ALPC_COUNTRY_MAP.get(e)||e)?.toUpperCase()}}),i=(0,n.useCallback)(p=>{m({user_id:t?.user_id,...p?.consumeType&&{consume_type:p.consumeType}},{onSuccess(a){console.log("responseData",a);let L=a?.data?.consume_credit_rules||[];T(L)}})},[t,m,e]);return(0,n.useEffect)(()=>{!u||r||i({consumeType:s?.consumeType})},[i,r,u]),{listLoading:R,redeemableList:g,getRedeemableList:i}}var U=S;
2
2
  //# sourceMappingURL=useRedeemableList.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../../../src/components/credits/context/hooks/useRedeemableList.ts"],
4
- "sourcesContent": ["import { useCallback, useEffect, useState } from 'react'\n\nimport { useAlpcMutation } from './useAlpcFetch'\nimport { ALPC_COUNTRY_MAP, AlpcConsumeType } from '../const'\nimport { useCreditsContext } from '../provider'\nimport type { ConsumeCreditRuleResponse } from '../response'\nimport { useHeadlessContext } from '@anker-in/lib'\n\nfunction useRedeemableList(props?: { consumeType: AlpcConsumeType }) {\n let locale = '' as string\n const { profile, isLoadingProfile, alpcBrand } = useCreditsContext()\n const { locale: contextLocale, brand: headlessBrand } = useHeadlessContext()\n const brand = alpcBrand || headlessBrand\n\n if (contextLocale === 'pl') {\n locale = 'eu'\n } else {\n locale = contextLocale\n }\n\n const [redeemableList, setRedeemableList] = useState<ConsumeCreditRuleResponse[]>([])\n const { isMutating: listLoading, trigger } = useAlpcMutation<\n {\n data: { consume_credit_rules: ConsumeCreditRuleResponse[] }\n },\n { consume_type?: AlpcConsumeType, user_id?: string}\n >({\n url: `/v1/credit/consume_credit_rules`,\n initData: {\n brand,\n page: 1,\n page_size: 999,\n country: (ALPC_COUNTRY_MAP.get(locale) || locale)?.toUpperCase(),\n },\n })\n\n const getRedeemableList = useCallback((props?: { consumeType?: AlpcConsumeType}) => {\n trigger(\n {\n user_id: profile?.user_id,\n ...(props?.consumeType && {consume_type: props.consumeType})\n },\n {\n onSuccess(responseData) {\n console.log('responseData', responseData)\n let list = responseData.data.consume_credit_rules || []\n // let cList = list.filter(i => i.consume_type == 1) || []\n // let pList = list.filter(i => i.consume_type == 2) || []\n // cList = cList.sort((prev, next) => prev.consume_credits - next.consume_credits)\n // pList = pList.sort((prev, next) => prev.consume_credits - next.consume_credits)\n // const resultList = cList.concat(pList)\n setRedeemableList(list)\n },\n }\n )\n }, [profile, trigger, locale])\n\n useEffect(() => {\n if (!isLoadingProfile) {\n getRedeemableList({ consumeType: props?.consumeType })\n }\n }, [getRedeemableList, isLoadingProfile])\n\n return {\n listLoading,\n redeemableList,\n getRedeemableList,\n }\n}\n\nexport default useRedeemableList\n"],
5
- "mappings": "yaAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,aAAAE,IAAA,eAAAC,EAAAH,GAAA,IAAAI,EAAiD,iBAEjDC,EAAgC,0BAChCC,EAAkD,oBAClDC,EAAkC,uBAElCC,EAAmC,yBAEnC,SAASC,EAAkBC,EAA0C,CACnE,IAAIC,EAAS,GACb,KAAM,CAAE,QAAAC,EAAS,iBAAAC,EAAkB,UAAAC,CAAU,KAAI,qBAAkB,EAC7D,CAAE,OAAQC,EAAe,MAAOC,CAAc,KAAI,sBAAmB,EACrEC,EAAQH,GAAaE,EAEvBD,IAAkB,KACpBJ,EAAS,KAETA,EAASI,EAGX,KAAM,CAACG,EAAgBC,CAAiB,KAAI,YAAsC,CAAC,CAAC,EAC9E,CAAE,WAAYC,EAAa,QAAAC,CAAQ,KAAI,mBAK3C,CACA,IAAK,kCACL,SAAU,CACR,MAAAJ,EACA,KAAM,EACN,UAAW,IACX,SAAU,mBAAiB,IAAIN,CAAM,GAAKA,IAAS,YAAY,CACjE,CACF,CAAC,EAEKW,KAAoB,eAAaZ,GAA6C,CAClFW,EACE,CACE,QAAST,GAAS,QAClB,GAAIF,GAAO,aAAe,CAAC,aAAcA,EAAM,WAAW,CAC5D,EACA,CACE,UAAUa,EAAc,CACtB,QAAQ,IAAI,eAAgBA,CAAY,EACxC,IAAIC,EAAOD,EAAa,KAAK,sBAAwB,CAAC,EAMtDJ,EAAkBK,CAAI,CACxB,CACF,CACF,CACF,EAAG,CAACZ,EAASS,EAASV,CAAM,CAAC,EAE7B,sBAAU,IAAM,CACTE,GACHS,EAAkB,CAAE,YAAaZ,GAAO,WAAY,CAAC,CAEzD,EAAG,CAACY,EAAmBT,CAAgB,CAAC,EAEjC,CACL,YAAAO,EACA,eAAAF,EACA,kBAAAI,CACF,CACF,CAEA,IAAOpB,EAAQO",
4
+ "sourcesContent": ["import { useCallback, useEffect, useState } from 'react'\n\nimport { useAlpcMutation } from './useAlpcFetch'\nimport { ALPC_COUNTRY_MAP, AlpcConsumeType } from '../const'\nimport { useCreditsContext } from '../provider'\nimport type { ConsumeCreditRuleResponse } from '../response'\nimport { useHeadlessContext } from '@anker-in/lib'\n\nfunction useRedeemableList(props?: { consumeType: AlpcConsumeType }) {\n let locale = '' as string\n const { profile, isLoadingProfile, alpcBrand } = useCreditsContext()\n const { locale: contextLocale, brand: headlessBrand } = useHeadlessContext()\n const brand = alpcBrand || headlessBrand\n\n if (contextLocale === 'pl') {\n locale = 'eu'\n } else {\n locale = contextLocale\n }\n\n const [redeemableList, setRedeemableList] = useState<ConsumeCreditRuleResponse[]>([])\n const { isMutating: listLoading, trigger } = useAlpcMutation<\n {\n data: { consume_credit_rules: ConsumeCreditRuleResponse[] }\n },\n { consume_type?: AlpcConsumeType; user_id?: string }\n >({\n url: `/v1/credit/consume_credit_rules`,\n initData: {\n brand,\n page: 1,\n page_size: 999,\n country: (ALPC_COUNTRY_MAP.get(locale) || locale)?.toUpperCase(),\n },\n })\n\n const getRedeemableList = useCallback(\n (props?: { consumeType?: AlpcConsumeType }) => {\n trigger(\n {\n user_id: profile?.user_id,\n ...(props?.consumeType && { consume_type: props.consumeType }),\n },\n {\n onSuccess(responseData) {\n console.log('responseData', responseData)\n let list = responseData?.data?.consume_credit_rules || []\n setRedeemableList(list)\n },\n }\n )\n },\n [profile, trigger, locale]\n )\n\n useEffect(() => {\n if (!brand || isLoadingProfile) {\n return\n }\n getRedeemableList({ consumeType: props?.consumeType })\n }, [getRedeemableList, isLoadingProfile, brand])\n\n return {\n listLoading,\n redeemableList,\n getRedeemableList,\n }\n}\n\nexport default useRedeemableList\n"],
5
+ "mappings": "yaAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,aAAAE,IAAA,eAAAC,EAAAH,GAAA,IAAAI,EAAiD,iBAEjDC,EAAgC,0BAChCC,EAAkD,oBAClDC,EAAkC,uBAElCC,EAAmC,yBAEnC,SAASC,EAAkBC,EAA0C,CACnE,IAAIC,EAAS,GACb,KAAM,CAAE,QAAAC,EAAS,iBAAAC,EAAkB,UAAAC,CAAU,KAAI,qBAAkB,EAC7D,CAAE,OAAQC,EAAe,MAAOC,CAAc,KAAI,sBAAmB,EACrEC,EAAQH,GAAaE,EAEvBD,IAAkB,KACpBJ,EAAS,KAETA,EAASI,EAGX,KAAM,CAACG,EAAgBC,CAAiB,KAAI,YAAsC,CAAC,CAAC,EAC9E,CAAE,WAAYC,EAAa,QAAAC,CAAQ,KAAI,mBAK3C,CACA,IAAK,kCACL,SAAU,CACR,MAAAJ,EACA,KAAM,EACN,UAAW,IACX,SAAU,mBAAiB,IAAIN,CAAM,GAAKA,IAAS,YAAY,CACjE,CACF,CAAC,EAEKW,KAAoB,eACvBZ,GAA8C,CAC7CW,EACE,CACE,QAAST,GAAS,QAClB,GAAIF,GAAO,aAAe,CAAE,aAAcA,EAAM,WAAY,CAC9D,EACA,CACE,UAAUa,EAAc,CACtB,QAAQ,IAAI,eAAgBA,CAAY,EACxC,IAAIC,EAAOD,GAAc,MAAM,sBAAwB,CAAC,EACxDJ,EAAkBK,CAAI,CACxB,CACF,CACF,CACF,EACA,CAACZ,EAASS,EAASV,CAAM,CAC3B,EAEA,sBAAU,IAAM,CACV,CAACM,GAASJ,GAGdS,EAAkB,CAAE,YAAaZ,GAAO,WAAY,CAAC,CACvD,EAAG,CAACY,EAAmBT,EAAkBI,CAAK,CAAC,EAExC,CACL,YAAAG,EACA,eAAAF,EACA,kBAAAI,CACF,CACF,CAEA,IAAOpB,EAAQO",
6
6
  "names": ["useRedeemableList_exports", "__export", "useRedeemableList_default", "__toCommonJS", "import_react", "import_useAlpcFetch", "import_const", "import_provider", "import_lib", "useRedeemableList", "props", "locale", "profile", "isLoadingProfile", "alpcBrand", "contextLocale", "headlessBrand", "brand", "redeemableList", "setRedeemableList", "listLoading", "trigger", "getRedeemableList", "responseData", "list"]
7
7
  }
@@ -1,2 +1,2 @@
1
- "use strict";var f=Object.create;var u=Object.defineProperty;var d=Object.getOwnPropertyDescriptor;var l=Object.getOwnPropertyNames;var S=Object.getPrototypeOf,v=Object.prototype.hasOwnProperty;var x=(e,s)=>{for(var r in s)u(e,r,{get:s[r],enumerable:!0})},b=(e,s,r,i)=>{if(s&&typeof s=="object"||typeof s=="function")for(let t of l(s))!v.call(e,t)&&t!==r&&u(e,t,{get:()=>s[t],enumerable:!(i=d(s,t))||i.enumerable});return e};var C=(e,s,r)=>(r=e!=null?f(S(e)):{},b(s||!e||!e.__esModule?u(r,"default",{value:e,enumerable:!0}):r,e)),g=e=>b(u({},"__esModule",{value:!0}),e);var y={};x(y,{useSubscribed:()=>k});module.exports=g(y);var c=require("react"),p=require("../const"),a=C(require("./useActivities")),m=require("../provider"),n=require("@anker-in/lib");const k=()=>{const{profile:e}=(0,m.useCreditsContext)(),{brand:s}=(0,n.useHeadlessContext)(),r=(0,c.useMemo)(()=>({page:1,pageSize:50}),[]),{activities:i}=(0,a.default)(r),{data:t}=(0,n.useSubscriptions)({email:e?.email});return(0,c.useMemo)(()=>t?.preference?t.preference.some(o=>o.brand===s&&o.subscribe)?!0:i?.some(o=>o.task_sub_type===p.TaskSubType.Subscription):!1,[t?.preference,i])};
1
+ "use strict";var d=Object.create;var n=Object.defineProperty;var l=Object.getOwnPropertyDescriptor;var S=Object.getOwnPropertyNames;var v=Object.getPrototypeOf,x=Object.prototype.hasOwnProperty;var y=(e,s)=>{for(var r in s)n(e,r,{get:s[r],enumerable:!0})},a=(e,s,r,i)=>{if(s&&typeof s=="object"||typeof s=="function")for(let t of S(s))!x.call(e,t)&&t!==r&&n(e,t,{get:()=>s[t],enumerable:!(i=l(s,t))||i.enumerable});return e};var C=(e,s,r)=>(r=e!=null?d(v(e)):{},a(s||!e||!e.__esModule?n(r,"default",{value:e,enumerable:!0}):r,e)),g=e=>a(n({},"__esModule",{value:!0}),e);var R={};y(R,{useSubscribed:()=>k});module.exports=g(R);var b=require("react"),p=require("../const"),m=C(require("./useActivities")),f=require("../provider"),u=require("@anker-in/lib");const k=()=>{const{profile:e}=(0,f.useCreditsContext)(),{brand:s}=(0,u.useHeadlessContext)(),r=(0,b.useMemo)(()=>({page:1,pageSize:50}),[]),{activities:i}=(0,m.default)(r),{data:t}=(0,u.useSubscriptions)({email:e?.email}),c=t?.data||t;return(0,b.useMemo)(()=>c?.preference?c.preference.some(o=>o.brand===s&&o.subscribe)?!0:i?.some(o=>o.task_sub_type===p.TaskSubType.Subscription):!1,[c?.preference,i])};
2
2
  //# sourceMappingURL=useSubscribed.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../../../src/components/credits/context/hooks/useSubscribed.ts"],
4
- "sourcesContent": ["import { useMemo } from 'react'\n\nimport { TaskSubType } from '../const'\nimport useActivities from './useActivities'\nimport { useCreditsContext } from '../provider'\nimport { useHeadlessContext, useSubscriptions } from '@anker-in/lib'\n\nexport const useSubscribed = () => {\n const { profile } = useCreditsContext()\n const { brand } = useHeadlessContext()\n\n const activitiesOptions = useMemo(() => ({ page: 1, pageSize: 50 }), [])\n\n const { activities } = useActivities(activitiesOptions)\n const { data: subscription } = useSubscriptions({ email: profile?.email })\n\n const isSubscribed = useMemo(() => {\n if (!subscription?.preference) {\n return false\n }\n\n const subscribeResult = subscription.preference.some(item => {\n return item.brand === brand && item.subscribe\n })\n\n if (subscribeResult) {\n return true\n }\n\n return activities?.some(item => {\n return item.task_sub_type === TaskSubType.Subscription\n })\n }, [subscription?.preference, activities])\n\n return isSubscribed\n}\n"],
5
- "mappings": "0jBAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,mBAAAE,IAAA,eAAAC,EAAAH,GAAA,IAAAI,EAAwB,iBAExBC,EAA4B,oBAC5BC,EAA0B,8BAC1BC,EAAkC,uBAClCC,EAAqD,yBAE9C,MAAMN,EAAgB,IAAM,CACjC,KAAM,CAAE,QAAAO,CAAQ,KAAI,qBAAkB,EAChC,CAAE,MAAAC,CAAM,KAAI,sBAAmB,EAE/BC,KAAoB,WAAQ,KAAO,CAAE,KAAM,EAAG,SAAU,EAAG,GAAI,CAAC,CAAC,EAEjE,CAAE,WAAAC,CAAW,KAAI,EAAAC,SAAcF,CAAiB,EAChD,CAAE,KAAMG,CAAa,KAAI,oBAAiB,CAAE,MAAOL,GAAS,KAAM,CAAC,EAoBzE,SAlBqB,WAAQ,IACtBK,GAAc,WAIKA,EAAa,WAAW,KAAKC,GAC5CA,EAAK,QAAUL,GAASK,EAAK,SACrC,EAGQ,GAGFH,GAAY,KAAKG,GACfA,EAAK,gBAAkB,cAAY,YAC3C,EAbQ,GAcR,CAACD,GAAc,WAAYF,CAAU,CAAC,CAG3C",
6
- "names": ["useSubscribed_exports", "__export", "useSubscribed", "__toCommonJS", "import_react", "import_const", "import_useActivities", "import_provider", "import_lib", "profile", "brand", "activitiesOptions", "activities", "useActivities", "subscription", "item"]
4
+ "sourcesContent": ["import { useMemo } from 'react'\n\nimport { TaskSubType } from '../const'\nimport useActivities from './useActivities'\nimport { useCreditsContext } from '../provider'\nimport { useHeadlessContext, useSubscriptions } from '@anker-in/lib'\n\nexport const useSubscribed = () => {\n const { profile } = useCreditsContext()\n const { brand } = useHeadlessContext()\n\n const activitiesOptions = useMemo(() => ({ page: 1, pageSize: 50 }), [])\n\n const { activities } = useActivities(activitiesOptions)\n const { data: subscription } = useSubscriptions({ email: profile?.email })\n const subscriptionData = subscription?.data || subscription\n\n const isSubscribed = useMemo(() => {\n if (!subscriptionData?.preference) {\n return false\n }\n\n const subscribeResult = subscriptionData.preference.some((item: any) => {\n return item.brand === brand && item.subscribe\n })\n\n if (subscribeResult) {\n return true\n }\n\n return activities?.some(item => {\n return item.task_sub_type === TaskSubType.Subscription\n })\n }, [subscriptionData?.preference, activities])\n\n return isSubscribed\n}\n"],
5
+ "mappings": "0jBAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,mBAAAE,IAAA,eAAAC,EAAAH,GAAA,IAAAI,EAAwB,iBAExBC,EAA4B,oBAC5BC,EAA0B,8BAC1BC,EAAkC,uBAClCC,EAAqD,yBAE9C,MAAMN,EAAgB,IAAM,CACjC,KAAM,CAAE,QAAAO,CAAQ,KAAI,qBAAkB,EAChC,CAAE,MAAAC,CAAM,KAAI,sBAAmB,EAE/BC,KAAoB,WAAQ,KAAO,CAAE,KAAM,EAAG,SAAU,EAAG,GAAI,CAAC,CAAC,EAEjE,CAAE,WAAAC,CAAW,KAAI,EAAAC,SAAcF,CAAiB,EAChD,CAAE,KAAMG,CAAa,KAAI,oBAAiB,CAAE,MAAOL,GAAS,KAAM,CAAC,EACnEM,EAAmBD,GAAc,MAAQA,EAoB/C,SAlBqB,WAAQ,IACtBC,GAAkB,WAICA,EAAiB,WAAW,KAAMC,GACjDA,EAAK,QAAUN,GAASM,EAAK,SACrC,EAGQ,GAGFJ,GAAY,KAAKI,GACfA,EAAK,gBAAkB,cAAY,YAC3C,EAbQ,GAcR,CAACD,GAAkB,WAAYH,CAAU,CAAC,CAG/C",
6
+ "names": ["useSubscribed_exports", "__export", "useSubscribed", "__toCommonJS", "import_react", "import_const", "import_useActivities", "import_provider", "import_lib", "profile", "brand", "activitiesOptions", "activities", "useActivities", "subscription", "subscriptionData", "item"]
7
7
  }
@@ -1,11 +1,3 @@
1
- export declare const uploadReceipt: (_: any, { arg: { orderName } }: {
2
- arg: {
3
- orderName: string;
4
- };
5
- }) => Promise<{
6
- ok: boolean;
7
- code: number;
8
- }>;
9
1
  export declare const useUploadReceipt: () => import("swr/mutation").SWRMutationResponse<{
10
2
  ok: boolean;
11
3
  code: number;
@@ -1,2 +1,2 @@
1
- "use strict";var p=Object.create;var d=Object.defineProperty;var c=Object.getOwnPropertyDescriptor;var u=Object.getOwnPropertyNames;var m=Object.getPrototypeOf,l=Object.prototype.hasOwnProperty;var _=(e,t)=>{for(var o in t)d(e,o,{get:t[o],enumerable:!0})},i=(e,t,o,r)=>{if(t&&typeof t=="object"||typeof t=="function")for(let a of u(t))!l.call(e,a)&&a!==o&&d(e,a,{get:()=>t[a],enumerable:!(r=c(t,a))||r.enumerable});return e};var y=(e,t,o)=>(o=e!=null?p(m(e)):{},i(t||!e||!e.__esModule?d(o,"default",{value:e,enumerable:!0}):o,e)),h=e=>i(d({},"__esModule",{value:!0}),e);var k={};_(k,{uploadReceipt:()=>s,useUploadReceipt:()=>g});module.exports=h(k);var n=y(require("swr/mutation"));const s=async(e,{arg:{orderName:t}})=>{const o=await fetch("/api/multipass/mktsrv/v1/credit/upload_third_party_order",{credentials:"include",method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({order_name:t})}),{data:r}=await o.json();return{ok:r?.code===0,code:r?.code}},g=()=>(0,n.default)("/api/multipass/mktsrv/v1/credit/upload_third_party_order",s);
1
+ "use strict";var l=Object.create;var d=Object.defineProperty;var p=Object.getOwnPropertyDescriptor;var m=Object.getOwnPropertyNames;var y=Object.getPrototypeOf,_=Object.prototype.hasOwnProperty;var f=(t,e)=>{for(var r in e)d(t,r,{get:e[r],enumerable:!0})},i=(t,e,r,o)=>{if(e&&typeof e=="object"||typeof e=="function")for(let a of m(e))!_.call(t,a)&&a!==r&&d(t,a,{get:()=>e[a],enumerable:!(o=p(e,a))||o.enumerable});return t};var g=(t,e,r)=>(r=t!=null?l(y(t)):{},i(e||!t||!t.__esModule?d(r,"default",{value:t,enumerable:!0}):r,t)),h=t=>i(d({},"__esModule",{value:!0}),t);var k={};f(k,{useUploadReceipt:()=>b});module.exports=h(k);var c=g(require("swr/mutation")),s=require("@anker-in/lib");const R=t=>t&&(t.data&&typeof t.data=="object"&&!Array.isArray(t.data)?t.data:t),b=()=>{const{locale:t}=(0,s.useHeadlessContext)();return(0,c.default)("/api/multipass/mktsrv/v1/credit/upload_third_party_order",async(r,{arg:{orderName:o}})=>{const u=await(await fetch("/api/multipass/mktsrv/v1/credit/upload_third_party_order",{credentials:"include",method:"POST",headers:{"Content-Type":"application/json","current-language":t},body:JSON.stringify({order_name:o})})).json(),n=R(u);return{ok:n?.data?.code===0,code:n?.data?.code??-1}})};
2
2
  //# sourceMappingURL=useUploadReceipt.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../../../src/components/credits/context/hooks/useUploadReceipt.tsx"],
4
- "sourcesContent": ["import useSWRMutation from 'swr/mutation'\n\nexport const uploadReceipt = async (\n _: any,\n { arg: { orderName } }: { arg: { orderName: string } }\n): Promise<{\n ok: boolean\n code: number\n}> => {\n const response = await fetch(`/api/multipass/mktsrv/v1/credit/upload_third_party_order`, {\n credentials: 'include',\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n },\n body: JSON.stringify({\n order_name: orderName,\n }),\n })\n const { data } = await response.json()\n return {\n ok: data?.code === 0,\n code: data?.code,\n }\n}\n\nexport const useUploadReceipt = () => {\n return useSWRMutation('/api/multipass/mktsrv/v1/credit/upload_third_party_order', uploadReceipt)\n}\n"],
5
- "mappings": "0jBAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,mBAAAE,EAAA,qBAAAC,IAAA,eAAAC,EAAAJ,GAAA,IAAAK,EAA2B,2BAEpB,MAAMH,EAAgB,MAC3BI,EACA,CAAE,IAAK,CAAE,UAAAC,CAAU,CAAE,IAIjB,CACJ,MAAMC,EAAW,MAAM,MAAM,2DAA4D,CACvF,YAAa,UACb,OAAQ,OACR,QAAS,CACP,eAAgB,kBAClB,EACA,KAAM,KAAK,UAAU,CACnB,WAAYD,CACd,CAAC,CACH,CAAC,EACK,CAAE,KAAAE,CAAK,EAAI,MAAMD,EAAS,KAAK,EACrC,MAAO,CACL,GAAIC,GAAM,OAAS,EACnB,KAAMA,GAAM,IACd,CACF,EAEaN,EAAmB,OACvB,EAAAO,SAAe,2DAA4DR,CAAa",
6
- "names": ["useUploadReceipt_exports", "__export", "uploadReceipt", "useUploadReceipt", "__toCommonJS", "import_mutation", "_", "orderName", "response", "data", "useSWRMutation"]
4
+ "sourcesContent": ["import useSWRMutation from 'swr/mutation'\nimport { useHeadlessContext } from '@anker-in/lib'\n\n/**\n * \u7EDF\u4E00\u5904\u7406 ALPC \u63A5\u53E3\u8FD4\u56DE\u7684\u6570\u636E\u7ED3\u6784\n * \u517C\u5BB9\u4E00\u5C42 data \u548C\u4E24\u5C42 data \u7684\u573A\u666F\n */\nconst normalizeResponseData = (responseData: any) => {\n if (!responseData) return responseData\n\n // \u5982\u679C responseData.data \u5B58\u5728\u4E14\u662F\u4E00\u4E2A\u5BF9\u8C61\uFF08\u4E0D\u662F\u6570\u7EC4\uFF09\uFF0C\u8BF4\u660E\u662F\u4E24\u5C42 data \u7ED3\u6784\n if (responseData.data && typeof responseData.data === 'object' && !Array.isArray(responseData.data)) {\n return responseData.data\n }\n\n // \u4E00\u5C42 data \u7ED3\u6784\u6216\u5176\u4ED6\u60C5\u51B5\uFF0C\u76F4\u63A5\u8FD4\u56DE\n return responseData\n}\n\nexport const useUploadReceipt = () => {\n const { locale } = useHeadlessContext()\n\n const uploadReceipt = async (\n _: any,\n { arg: { orderName } }: { arg: { orderName: string } }\n ): Promise<{\n ok: boolean\n code: number\n }> => {\n const response = await fetch(`/api/multipass/mktsrv/v1/credit/upload_third_party_order`, {\n credentials: 'include',\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n 'current-language': locale,\n },\n body: JSON.stringify({\n order_name: orderName,\n }),\n })\n const result = await response.json()\n const normalizedData = normalizeResponseData(result)\n return {\n ok: normalizedData?.data?.code === 0,\n code: normalizedData?.data?.code ?? -1,\n }\n }\n\n return useSWRMutation('/api/multipass/mktsrv/v1/credit/upload_third_party_order', uploadReceipt)\n}\n"],
5
+ "mappings": "0jBAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,sBAAAE,IAAA,eAAAC,EAAAH,GAAA,IAAAI,EAA2B,2BAC3BC,EAAmC,yBAMnC,MAAMC,EAAyBC,GACxBA,IAGDA,EAAa,MAAQ,OAAOA,EAAa,MAAS,UAAY,CAAC,MAAM,QAAQA,EAAa,IAAI,EACzFA,EAAa,KAIfA,GAGIL,EAAmB,IAAM,CACpC,KAAM,CAAE,OAAAM,CAAO,KAAI,sBAAmB,EA4BtC,SAAO,EAAAC,SAAe,2DA1BA,MACpBC,EACA,CAAE,IAAK,CAAE,UAAAC,CAAU,CAAE,IAIjB,CAYJ,MAAMC,EAAS,MAXE,MAAM,MAAM,2DAA4D,CACvF,YAAa,UACb,OAAQ,OACR,QAAS,CACP,eAAgB,mBAChB,mBAAoBJ,CACtB,EACA,KAAM,KAAK,UAAU,CACnB,WAAYG,CACd,CAAC,CACH,CAAC,GAC6B,KAAK,EAC7BE,EAAiBP,EAAsBM,CAAM,EACnD,MAAO,CACL,GAAIC,GAAgB,MAAM,OAAS,EACnC,KAAMA,GAAgB,MAAM,MAAQ,EACtC,CACF,CAE+F,CACjG",
6
+ "names": ["useUploadReceipt_exports", "__export", "useUploadReceipt", "__toCommonJS", "import_mutation", "import_lib", "normalizeResponseData", "responseData", "locale", "useSWRMutation", "_", "orderName", "result", "normalizedData"]
7
7
  }
@@ -39,8 +39,9 @@ type Context = {
39
39
  setOpenMyRewardsModal: (open: boolean) => void;
40
40
  openActivitiesModal: boolean;
41
41
  setOpenActivitiesModal: (open: boolean) => void;
42
+ apiBaseUrl?: string;
42
43
  };
43
44
  export declare const CreditsContext: import("react").Context<Context>;
44
- export declare function CreditsProvider({ children, profile, removeProfile, isLoadingProfile, openSignInPopup, openSignUpPopup, taskIdToTypeMapping, creditInfo, customer, customerLoading, fetchCreditInfo, gtm, pageCommon, memberPriceDiscount, alpcBrand, cartConfig, }: PropsWithChildren<Omit<Context, 'openMyRewardsModal' | 'setOpenMyRewardsModal' | 'openActivitiesModal' | 'setOpenActivitiesModal'>>): import("react/jsx-runtime").JSX.Element;
45
+ export declare function CreditsProvider({ children, profile, removeProfile, isLoadingProfile, openSignInPopup, openSignUpPopup, taskIdToTypeMapping, creditInfo, customer, customerLoading, fetchCreditInfo, gtm, pageCommon, memberPriceDiscount, alpcBrand, cartConfig, apiBaseUrl, }: PropsWithChildren<Omit<Context, 'openMyRewardsModal' | 'setOpenMyRewardsModal' | 'openActivitiesModal' | 'setOpenActivitiesModal'>>): import("react/jsx-runtime").JSX.Element;
45
46
  export declare function useCreditsContext(): Context;
46
47
  export {};
@@ -1,2 +1,2 @@
1
- "use strict";var s=Object.defineProperty;var R=Object.getOwnPropertyDescriptor;var w=Object.getOwnPropertyNames;var T=Object.prototype.hasOwnProperty;var I=(e,o)=>{for(var i in o)s(e,i,{get:o[i],enumerable:!0})},O=(e,o,i,r)=>{if(o&&typeof o=="object"||typeof o=="function")for(let t of w(o))!T.call(e,t)&&t!==i&&s(e,t,{get:()=>o[t],enumerable:!(r=R(o,t))||r.enumerable});return e};var h=e=>O(s({},"__esModule",{value:!0}),e);var L={};I(L,{CreditsContext:()=>a,CreditsProvider:()=>S,useCreditsContext:()=>_});module.exports=h(L);var d=require("react/jsx-runtime"),n=require("react");const a=(0,n.createContext)({profile:null,isLoadingProfile:!1,taskIdToTypeMapping:{},removeProfile:()=>{},openSignInPopup:()=>{},openSignUpPopup:()=>{},creditInfo:void 0,customerLoading:!1,fetchCreditInfo:e=>{},gtm:{pageGroup:"",pageHandle:""},pageCommon:{},memberPriceDiscount:void 0,alpcBrand:void 0,cartConfig:void 0,openMyRewardsModal:!1,setOpenMyRewardsModal:()=>{},openActivitiesModal:!1,setOpenActivitiesModal:()=>{}});function S({children:e,profile:o,removeProfile:i,isLoadingProfile:r,openSignInPopup:t,openSignUpPopup:p,taskIdToTypeMapping:l,creditInfo:c,customer:f,customerLoading:u,fetchCreditInfo:g,gtm:m,pageCommon:C,memberPriceDiscount:M,alpcBrand:v,cartConfig:P}){const[y,b]=(0,n.useState)(!1),[A,x]=(0,n.useState)(!1);return(0,d.jsx)(a.Provider,{value:{profile:o,isLoadingProfile:r,removeProfile:i,openSignInPopup:t,openSignUpPopup:p,taskIdToTypeMapping:l,creditInfo:c,fetchCreditInfo:g,customer:f,customerLoading:u,gtm:m,pageCommon:C,memberPriceDiscount:M,alpcBrand:v,cartConfig:P,openMyRewardsModal:y,setOpenMyRewardsModal:b,openActivitiesModal:A,setOpenActivitiesModal:x},children:e})}function _(){const e=(0,n.useContext)(a);if(!e)throw new Error("useCreditsContext must be used within a CreditsProvider");return e}
1
+ "use strict";var s=Object.defineProperty;var w=Object.getOwnPropertyDescriptor;var T=Object.getOwnPropertyNames;var I=Object.prototype.hasOwnProperty;var O=(e,o)=>{for(var i in o)s(e,i,{get:o[i],enumerable:!0})},h=(e,o,i,r)=>{if(o&&typeof o=="object"||typeof o=="function")for(let t of T(o))!I.call(e,t)&&t!==i&&s(e,t,{get:()=>o[t],enumerable:!(r=w(o,t))||r.enumerable});return e};var S=e=>h(s({},"__esModule",{value:!0}),e);var B={};O(B,{CreditsContext:()=>a,CreditsProvider:()=>_,useCreditsContext:()=>L});module.exports=S(B);var d=require("react/jsx-runtime"),n=require("react");const a=(0,n.createContext)({profile:null,isLoadingProfile:!1,taskIdToTypeMapping:{},removeProfile:()=>{},openSignInPopup:()=>{},openSignUpPopup:()=>{},creditInfo:void 0,customerLoading:!1,fetchCreditInfo:e=>{},gtm:{pageGroup:"",pageHandle:""},pageCommon:{},memberPriceDiscount:void 0,alpcBrand:void 0,cartConfig:void 0,openMyRewardsModal:!1,setOpenMyRewardsModal:()=>{},openActivitiesModal:!1,setOpenActivitiesModal:()=>{},apiBaseUrl:void 0});function _({children:e,profile:o,removeProfile:i,isLoadingProfile:r,openSignInPopup:t,openSignUpPopup:p,taskIdToTypeMapping:l,creditInfo:c,customer:f,customerLoading:u,fetchCreditInfo:g,gtm:m,pageCommon:C,memberPriceDiscount:M,alpcBrand:v,cartConfig:P,apiBaseUrl:y}){const[b,A]=(0,n.useState)(!1),[x,R]=(0,n.useState)(!1);return(0,d.jsx)(a.Provider,{value:{profile:o,isLoadingProfile:r,removeProfile:i,openSignInPopup:t,openSignUpPopup:p,taskIdToTypeMapping:l,creditInfo:c,fetchCreditInfo:g,customer:f,customerLoading:u,gtm:m,pageCommon:C,memberPriceDiscount:M,alpcBrand:v,cartConfig:P,apiBaseUrl:y,openMyRewardsModal:b,setOpenMyRewardsModal:A,openActivitiesModal:x,setOpenActivitiesModal:R},children:e})}function L(){const e=(0,n.useContext)(a);if(!e)throw new Error("useCreditsContext must be used within a CreditsProvider");return e}
2
2
  //# sourceMappingURL=provider.js.map