@anker-in/campaign-ui 0.5.24 → 0.5.26

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 (33) hide show
  1. package/dist/cjs/components/credits/creditsWaysToGetCredits/useActions.js +1 -1
  2. package/dist/cjs/components/credits/creditsWaysToGetCredits/useActions.js.map +3 -3
  3. package/dist/cjs/components/credits/modal/SubscribeModal.js +1 -1
  4. package/dist/cjs/components/credits/modal/SubscribeModal.js.map +3 -3
  5. package/dist/cjs/components/memberPopup/panels/EarnCredits/SubscribeEmailPanel.js +1 -1
  6. package/dist/cjs/components/memberPopup/panels/EarnCredits/SubscribeEmailPanel.js.map +3 -3
  7. package/dist/cjs/lib/registration/hooks/useEmailValidation.js +1 -1
  8. package/dist/cjs/lib/registration/hooks/useEmailValidation.js.map +2 -2
  9. package/dist/cjs/lib/registration/hooks/useSendEmailValidation.js +1 -1
  10. package/dist/cjs/lib/registration/hooks/useSendEmailValidation.js.map +2 -2
  11. package/dist/cjs/lib/utils/fetcher/fetcher.d.ts +1 -1
  12. package/dist/cjs/lib/utils/fetcher/fetcher.js +1 -1
  13. package/dist/cjs/lib/utils/fetcher/fetcher.js.map +3 -3
  14. package/dist/esm/components/credits/creditsWaysToGetCredits/useActions.js +1 -1
  15. package/dist/esm/components/credits/creditsWaysToGetCredits/useActions.js.map +3 -3
  16. package/dist/esm/components/credits/modal/SubscribeModal.js +1 -1
  17. package/dist/esm/components/credits/modal/SubscribeModal.js.map +3 -3
  18. package/dist/esm/components/memberPopup/panels/EarnCredits/SubscribeEmailPanel.js +1 -1
  19. package/dist/esm/components/memberPopup/panels/EarnCredits/SubscribeEmailPanel.js.map +3 -3
  20. package/dist/esm/lib/registration/hooks/useEmailValidation.js +1 -1
  21. package/dist/esm/lib/registration/hooks/useEmailValidation.js.map +2 -2
  22. package/dist/esm/lib/registration/hooks/useSendEmailValidation.js +1 -1
  23. package/dist/esm/lib/registration/hooks/useSendEmailValidation.js.map +2 -2
  24. package/dist/esm/lib/utils/fetcher/fetcher.d.ts +1 -1
  25. package/dist/esm/lib/utils/fetcher/fetcher.js +1 -1
  26. package/dist/esm/lib/utils/fetcher/fetcher.js.map +3 -3
  27. package/package.json +1 -1
  28. package/src/components/credits/creditsWaysToGetCredits/useActions.ts +25 -2
  29. package/src/components/credits/modal/SubscribeModal.tsx +3 -3
  30. package/src/components/memberPopup/panels/EarnCredits/SubscribeEmailPanel.tsx +3 -3
  31. package/src/lib/registration/hooks/useEmailValidation.ts +1 -2
  32. package/src/lib/registration/hooks/useSendEmailValidation.ts +1 -2
  33. package/src/lib/utils/fetcher/fetcher.ts +1 -2
@@ -1,2 +1,2 @@
1
- "use strict";var j=Object.create;var b=Object.defineProperty;var _=Object.getOwnPropertyDescriptor;var U=Object.getOwnPropertyNames;var A=Object.getPrototypeOf,T=Object.prototype.hasOwnProperty;var x=(e,i)=>{for(var n in i)b(e,n,{get:i[n],enumerable:!0})},k=(e,i,n,s)=>{if(i&&typeof i=="object"||typeof i=="function")for(let o of U(i))!T.call(e,o)&&o!==n&&b(e,o,{get:()=>i[o],enumerable:!(s=_(i,o))||s.enumerable});return e};var G=(e,i,n)=>(n=e!=null?j(A(e)):{},k(i||!e||!e.__esModule?b(n,"default",{value:e,enumerable:!0}):n,e)),W=e=>k(b({},"__esModule",{value:!0}),e);var E={};x(E,{useActions:()=>$});module.exports=W(E);var r=require("../../../lib"),t=require("./type"),f=require("../context/provider"),d=require("react"),L=G(require("../context/hooks/useReceiptUploaded")),N=require("../context/hooks/useFirstPurchaseFinished"),C=require("../context/hooks/useSubscribed"),P=require("../../registration");const $=({copy:e,subscribe:i,uploadReceipt:n,gaParameters:s})=>{const{openSignUpPopup:o,gtm:g,profile:l}=(0,f.useCreditsContext)(),{authCodeActivate:u}=(0,P.useRegistration)(),c=(0,C.useSubscribed)(),m=(0,N.useFirstPurchaseFinished)(),p=(0,L.default)(),{appName:v,passportUrl:F}=(0,r.useHeadlessContext)(),h=(0,d.useMemo)(()=>(l?.first_name||l?.last_name)&&l?.phone_number&&l?.dob,[l]);return(0,d.useMemo)(()=>{const a=({buttonName:S,id:w,callback:R})=>{(0,r.gaTrack)({event:"ga4Event",event_name:"lp_button",member_active_status:l?.activated?"active":"not active",event_parameters:{page_group:g.pageGroup,position:s?.position||e.title,button_name:S,info:w}}),R()};return{actions:{[t.TaskType.Activate]:{finished:l?.activated,notLogin:{buttonLabel:e?.joinNow,handleClick:()=>a({buttonName:e?.joinNow,callback:o,id:t.TaskType.Activate})},notFinished:{buttonLabel:e?.activate,handleClick:()=>a({buttonName:e?.activate,callback:()=>{u.setAutoSendEmail(!0),u.open()},id:t.TaskType.Activate})},completed:{buttonLabel:e?.completed}},[t.TaskType.Subscribe]:{finished:c,notLogin:{buttonLabel:e?.joinNow,handleClick:()=>a({buttonName:e?.joinNow,callback:o,id:t.TaskType.Subscribe})},notFinished:{buttonLabel:e?.subscribeLabel,handleClick:()=>a({buttonName:e?.subscribeLabel,callback:()=>i.openSubscribePopup(),id:t.TaskType.Subscribe})},completed:{buttonLabel:e?.completed}},[t.TaskType.CompleteProfile]:{finished:h,notLogin:{buttonLabel:e?.joinNow,handleClick:()=>a({buttonName:e?.joinNow,callback:o,id:t.TaskType.CompleteProfile})},notFinished:{buttonLabel:e?.completeProfile,link:`${F}/account/profile?app=${v}&redirect=${window.location.href}`,handleClick:()=>a({buttonName:e?.completeProfile,callback:()=>{},id:t.TaskType.CompleteProfile})},completed:{buttonLabel:e?.completed}},[t.TaskType.FirstPurchase]:{finished:m,notLogin:{buttonLabel:e?.makeFirstPurchase,handleClick:()=>a({buttonName:e?.makeFirstPurchase,callback:o,id:t.TaskType.FirstPurchase})},notFinished:{buttonLabel:e?.makeFirstPurchase,link:e?.goShopLink,handleClick:()=>a({buttonName:e?.makeFirstPurchase,callback:()=>{},id:t.TaskType.FirstPurchase})},completed:{buttonLabel:e?.completed}},[t.TaskType.UploadReceipt]:{finished:p,notLogin:{buttonLabel:e?.joinNow,handleClick:()=>a({buttonName:e?.joinNow,callback:o,id:t.TaskType.UploadReceipt})},notFinished:{buttonLabel:e?.uploadReceipt,handleClick:()=>a({buttonName:e?.uploadReceipt,callback:()=>n.openUploadReceiptPopup(),id:t.TaskType.UploadReceipt})},completed:{buttonLabel:e?.completed}},[t.TaskType.Shop]:{finished:!1,notLogin:{buttonLabel:e?.joinNow,handleClick:()=>a({buttonName:e?.joinNow,callback:o,id:t.TaskType.Shop})},notFinished:{buttonLabel:e?.shopNow,link:e?.goShopLink,handleClick:()=>a({buttonName:e?.shopNow,callback:()=>{},id:t.TaskType.Shop})},completed:{buttonLabel:e?.completed}}}}},[l?.activated,e?.joinNow,e?.activate,e?.completed,e?.subscribe,e?.completeProfile,e?.makeFirstPurchase,e?.uploadReceipt,e?.shopNow,e.title,e?.goShopLink,c,h,m,p,s?.position,o])};
1
+ "use strict";var A=Object.create;var c=Object.defineProperty;var T=Object.getOwnPropertyDescriptor;var x=Object.getOwnPropertyNames;var E=Object.getPrototypeOf,G=Object.prototype.hasOwnProperty;var W=(e,o)=>{for(var a in o)c(e,a,{get:o[a],enumerable:!0})},P=(e,o,a,r)=>{if(o&&typeof o=="object"||typeof o=="function")for(let n of x(o))!G.call(e,n)&&n!==a&&c(e,n,{get:()=>o[n],enumerable:!(r=T(o,n))||r.enumerable});return e};var $=(e,o,a)=>(a=e!=null?A(E(e)):{},P(o||!e||!e.__esModule?c(a,"default",{value:e,enumerable:!0}):a,e)),q=e=>P(c({},"__esModule",{value:!0}),e);var M={};W(M,{useActions:()=>H});module.exports=q(M);var u=require("../../../lib"),t=require("./type"),g=require("../context/provider"),s=require("react"),v=$(require("../context/hooks/useReceiptUploaded")),S=require("../context/hooks/useFirstPurchaseFinished"),w=require("../context/hooks/useSubscribed"),F=require("../../registration");const H=({copy:e,subscribe:o,uploadReceipt:a,gaParameters:r})=>{const{openSignUpPopup:n,gtm:R,profile:l}=(0,g.useCreditsContext)(),{authCodeActivate:p}=(0,F.useRegistration)(),h=(0,w.useSubscribed)(),k=(0,S.useFirstPurchaseFinished)(),f=(0,v.default)(),{appName:d,passportUrl:L}=(0,u.useHeadlessContext)(),[m,j]=(0,s.useState)("");(0,s.useEffect)(()=>{j(window.location.href)},[]);const C=(0,s.useMemo)(()=>{const i=new URLSearchParams;d&&i.set("app",d),m&&i.set("redirect",m);const b=i.toString();return`${L}/account/profile${b?`?${b}`:""}`},[L,d,m]),N=(0,s.useMemo)(()=>(l?.first_name||l?.last_name)&&l?.phone_number&&l?.dob,[l]);return(0,s.useMemo)(()=>{const i=({buttonName:b,id:U,callback:_})=>{(0,u.gaTrack)({event:"ga4Event",event_name:"lp_button",member_active_status:l?.activated?"active":"not active",event_parameters:{page_group:R.pageGroup,position:r?.position||e.title,button_name:b,info:U}}),_()};return{actions:{[t.TaskType.Activate]:{finished:l?.activated,notLogin:{buttonLabel:e?.joinNow,handleClick:()=>i({buttonName:e?.joinNow,callback:n,id:t.TaskType.Activate})},notFinished:{buttonLabel:e?.activate,handleClick:()=>i({buttonName:e?.activate,callback:()=>{p.setAutoSendEmail(!0),p.open()},id:t.TaskType.Activate})},completed:{buttonLabel:e?.completed}},[t.TaskType.Subscribe]:{finished:h,notLogin:{buttonLabel:e?.joinNow,handleClick:()=>i({buttonName:e?.joinNow,callback:n,id:t.TaskType.Subscribe})},notFinished:{buttonLabel:e?.subscribeLabel,handleClick:()=>i({buttonName:e?.subscribeLabel,callback:()=>o.openSubscribePopup(),id:t.TaskType.Subscribe})},completed:{buttonLabel:e?.completed}},[t.TaskType.CompleteProfile]:{finished:N,notLogin:{buttonLabel:e?.joinNow,handleClick:()=>i({buttonName:e?.joinNow,callback:n,id:t.TaskType.CompleteProfile})},notFinished:{buttonLabel:e?.completeProfile,link:C,handleClick:()=>i({buttonName:e?.completeProfile,callback:()=>{},id:t.TaskType.CompleteProfile})},completed:{buttonLabel:e?.completed}},[t.TaskType.FirstPurchase]:{finished:k,notLogin:{buttonLabel:e?.makeFirstPurchase,handleClick:()=>i({buttonName:e?.makeFirstPurchase,callback:n,id:t.TaskType.FirstPurchase})},notFinished:{buttonLabel:e?.makeFirstPurchase,link:e?.goShopLink,handleClick:()=>i({buttonName:e?.makeFirstPurchase,callback:()=>{},id:t.TaskType.FirstPurchase})},completed:{buttonLabel:e?.completed}},[t.TaskType.UploadReceipt]:{finished:f,notLogin:{buttonLabel:e?.joinNow,handleClick:()=>i({buttonName:e?.joinNow,callback:n,id:t.TaskType.UploadReceipt})},notFinished:{buttonLabel:e?.uploadReceipt,handleClick:()=>i({buttonName:e?.uploadReceipt,callback:()=>a.openUploadReceiptPopup(),id:t.TaskType.UploadReceipt})},completed:{buttonLabel:e?.completed}},[t.TaskType.Shop]:{finished:!1,notLogin:{buttonLabel:e?.joinNow,handleClick:()=>i({buttonName:e?.joinNow,callback:n,id:t.TaskType.Shop})},notFinished:{buttonLabel:e?.shopNow,link:e?.goShopLink,handleClick:()=>i({buttonName:e?.shopNow,callback:()=>{},id:t.TaskType.Shop})},completed:{buttonLabel:e?.completed}}}}},[l?.activated,e?.joinNow,e?.activate,e?.completed,e?.subscribe,e?.completeProfile,e?.makeFirstPurchase,e?.uploadReceipt,e?.shopNow,e.title,e?.goShopLink,h,N,k,f,r?.position,n,C])};
2
2
  //# sourceMappingURL=useActions.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../../src/components/credits/creditsWaysToGetCredits/useActions.ts"],
4
- "sourcesContent": ["import { useHeadlessContext, gaTrack } from '../../../lib'\n\nimport { TaskType } from './type'\nimport { useCreditsContext } from '../context/provider'\nimport { useMemo } from 'react'\nimport useReceiptUploaded from '../context/hooks/useReceiptUploaded'\nimport { useFirstPurchaseFinished } from '../context/hooks/useFirstPurchaseFinished'\nimport { useSubscribed } from '../context/hooks/useSubscribed'\nimport type { CreditsWaysToGetCreditsCopy } from './type'\n\nimport { useRegistration } from '../../registration'\n\nexport const useActions = ({\n copy,\n subscribe,\n uploadReceipt,\n gaParameters,\n}: {\n copy: CreditsWaysToGetCreditsCopy\n subscribe: {\n openSubscribePopup: () => void\n isSuccess: boolean\n }\n uploadReceipt: {\n openUploadReceiptPopup: () => void\n isSuccess: boolean\n }\n gaParameters?: {\n position: string\n }\n}) => {\n const { openSignUpPopup, gtm, profile } = useCreditsContext()\n const { authCodeActivate } = useRegistration()\n const isSubscribed = useSubscribed()\n const firstPurchaseFinished = useFirstPurchaseFinished()\n const uploadedReceipt = useReceiptUploaded()\n const { appName, passportUrl } = useHeadlessContext()\n\n const profileCompleted = useMemo(() => {\n return (profile?.first_name || profile?.last_name) && profile?.phone_number && profile?.dob\n }, [profile])\n\n return useMemo(() => {\n const handleClickWithTrack = ({\n buttonName,\n id,\n callback,\n }: {\n buttonName: string\n id?: string\n callback: () => void\n }) => {\n gaTrack({\n event: 'ga4Event',\n event_name: 'lp_button',\n member_active_status: profile?.activated ? 'active' : 'not active',\n event_parameters: {\n page_group: gtm.pageGroup,\n position: gaParameters?.position || copy.title,\n button_name: buttonName,\n info: id,\n },\n })\n callback()\n }\n return {\n actions: {\n [TaskType.Activate]: {\n finished: profile?.activated,\n notLogin: {\n buttonLabel: copy?.joinNow,\n handleClick: () =>\n handleClickWithTrack({ buttonName: copy?.joinNow, callback: openSignUpPopup, id: TaskType.Activate }),\n },\n notFinished: {\n buttonLabel: copy?.activate,\n handleClick: () =>\n handleClickWithTrack({\n buttonName: copy?.activate,\n callback: () => {\n authCodeActivate.setAutoSendEmail(true)\n authCodeActivate.open()\n },\n id: TaskType.Activate,\n }),\n },\n completed: {\n buttonLabel: copy?.completed,\n },\n },\n [TaskType.Subscribe]: {\n finished: isSubscribed,\n notLogin: {\n buttonLabel: copy?.joinNow,\n handleClick: () =>\n handleClickWithTrack({ buttonName: copy?.joinNow, callback: openSignUpPopup, id: TaskType.Subscribe }),\n },\n notFinished: {\n buttonLabel: copy?.subscribeLabel,\n handleClick: () =>\n handleClickWithTrack({\n buttonName: copy?.subscribeLabel,\n callback: () => subscribe.openSubscribePopup(),\n id: TaskType.Subscribe,\n }),\n },\n completed: {\n buttonLabel: copy?.completed,\n },\n },\n [TaskType.CompleteProfile]: {\n finished: profileCompleted,\n notLogin: {\n buttonLabel: copy?.joinNow,\n handleClick: () =>\n handleClickWithTrack({\n buttonName: copy?.joinNow,\n callback: openSignUpPopup,\n id: TaskType.CompleteProfile,\n }),\n },\n notFinished: {\n buttonLabel: copy?.completeProfile,\n link: `${passportUrl}/account/profile?app=${appName}&redirect=${window.location.href}`,\n handleClick: () =>\n handleClickWithTrack({\n buttonName: copy?.completeProfile,\n callback: () => {},\n id: TaskType.CompleteProfile,\n }),\n },\n completed: {\n buttonLabel: copy?.completed,\n },\n },\n [TaskType.FirstPurchase]: {\n finished: firstPurchaseFinished,\n notLogin: {\n buttonLabel: copy?.makeFirstPurchase,\n handleClick: () =>\n handleClickWithTrack({\n buttonName: copy?.makeFirstPurchase,\n callback: openSignUpPopup,\n id: TaskType.FirstPurchase,\n }),\n },\n notFinished: {\n buttonLabel: copy?.makeFirstPurchase,\n link: copy?.goShopLink,\n handleClick: () =>\n handleClickWithTrack({\n buttonName: copy?.makeFirstPurchase,\n callback: () => {},\n id: TaskType.FirstPurchase,\n }),\n },\n completed: {\n buttonLabel: copy?.completed,\n },\n },\n [TaskType.UploadReceipt]: {\n finished: uploadedReceipt,\n notLogin: {\n buttonLabel: copy?.joinNow,\n handleClick: () =>\n handleClickWithTrack({\n buttonName: copy?.joinNow,\n callback: openSignUpPopup,\n id: TaskType.UploadReceipt,\n }),\n },\n notFinished: {\n buttonLabel: copy?.uploadReceipt,\n handleClick: () =>\n handleClickWithTrack({\n buttonName: copy?.uploadReceipt,\n callback: () => uploadReceipt.openUploadReceiptPopup(),\n id: TaskType.UploadReceipt,\n }),\n },\n completed: {\n buttonLabel: copy?.completed,\n },\n },\n [TaskType.Shop]: {\n finished: false,\n notLogin: {\n buttonLabel: copy?.joinNow,\n handleClick: () =>\n handleClickWithTrack({\n buttonName: copy?.joinNow,\n callback: openSignUpPopup,\n id: TaskType.Shop,\n }),\n },\n notFinished: {\n buttonLabel: copy?.shopNow,\n link: copy?.goShopLink,\n handleClick: () =>\n handleClickWithTrack({\n buttonName: copy?.shopNow,\n callback: () => {},\n id: TaskType.Shop,\n }),\n },\n completed: {\n buttonLabel: copy?.completed,\n },\n },\n },\n }\n }, [\n profile?.activated,\n copy?.joinNow,\n copy?.activate,\n copy?.completed,\n copy?.subscribe,\n copy?.completeProfile,\n copy?.makeFirstPurchase,\n copy?.uploadReceipt,\n copy?.shopNow,\n copy.title,\n copy?.goShopLink,\n isSubscribed,\n profileCompleted,\n firstPurchaseFinished,\n uploadedReceipt,\n gaParameters?.position,\n openSignUpPopup,\n ])\n}\n"],
5
- "mappings": "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",
6
- "names": ["useActions_exports", "__export", "useActions", "__toCommonJS", "import_lib", "import_type", "import_provider", "import_react", "import_useReceiptUploaded", "import_useFirstPurchaseFinished", "import_useSubscribed", "import_registration", "copy", "subscribe", "uploadReceipt", "gaParameters", "openSignUpPopup", "gtm", "profile", "authCodeActivate", "isSubscribed", "firstPurchaseFinished", "uploadedReceipt", "useReceiptUploaded", "appName", "passportUrl", "profileCompleted", "handleClickWithTrack", "buttonName", "id", "callback"]
4
+ "sourcesContent": ["import { useHeadlessContext, gaTrack } from '../../../lib'\n\nimport { TaskType } from './type'\nimport { useCreditsContext } from '../context/provider'\nimport { useEffect, useMemo, useState } from 'react'\nimport useReceiptUploaded from '../context/hooks/useReceiptUploaded'\nimport { useFirstPurchaseFinished } from '../context/hooks/useFirstPurchaseFinished'\nimport { useSubscribed } from '../context/hooks/useSubscribed'\nimport type { CreditsWaysToGetCreditsCopy } from './type'\n\nimport { useRegistration } from '../../registration'\n\nexport const useActions = ({\n copy,\n subscribe,\n uploadReceipt,\n gaParameters,\n}: {\n copy: CreditsWaysToGetCreditsCopy\n subscribe: {\n openSubscribePopup: () => void\n isSuccess: boolean\n }\n uploadReceipt: {\n openUploadReceiptPopup: () => void\n isSuccess: boolean\n }\n gaParameters?: {\n position: string\n }\n}) => {\n const { openSignUpPopup, gtm, profile } = useCreditsContext()\n const { authCodeActivate } = useRegistration()\n const isSubscribed = useSubscribed()\n const firstPurchaseFinished = useFirstPurchaseFinished()\n const uploadedReceipt = useReceiptUploaded()\n const { appName, passportUrl } = useHeadlessContext()\n\n // window \u5728 SSR\uFF08Next.js \u670D\u52A1\u7AEF\u6E32\u67D3\uFF09\u4E0B\u4E0D\u5B58\u5728\uFF0C\u76F4\u63A5\u8BFB window.location.href \u4F1A\u5BFC\u81F4\n // \u670D\u52A1\u7AEF\u62A5 \"window is not defined\"\uFF0C\u4E14\u670D\u52A1\u7AEF/\u5BA2\u6237\u7AEF\u9996\u5E27\u7ED3\u679C\u4E0D\u4E00\u81F4\u5F15\u53D1 hydration mismatch\u3002\n // \u8FD9\u91CC\u7EDF\u4E00\u5EF6\u8FDF\u5230\u5BA2\u6237\u7AEF\u6302\u8F7D\u540E\u518D\u8BFB\u53D6\uFF0C\u4FDD\u8BC1\u4E24\u7AEF\u9996\u5E27\u6E32\u67D3\u7ED3\u679C\u4E00\u81F4\u3002\n const [clientUrl, setClientUrl] = useState('')\n\n useEffect(() => {\n setClientUrl(window.location.href)\n }, [])\n\n // passport \u5B8C\u6210\u8D44\u6599\u540E\u56DE\u8DF3\u5230\u5F53\u524D\u9875\u9762\uFF0C\u9700\u6574\u4F53 encode\uFF0C\u5426\u5219 href \u91CC\u7684 ? / & / # \u4F1A\u6C61\u67D3 query\n const completeProfileLink = useMemo(() => {\n const query = new URLSearchParams()\n if (appName) {\n query.set('app', appName)\n }\n if (clientUrl) {\n query.set('redirect', clientUrl)\n }\n const search = query.toString()\n return `${passportUrl}/account/profile${search ? `?${search}` : ''}`\n }, [passportUrl, appName, clientUrl])\n\n const profileCompleted = useMemo(() => {\n return (profile?.first_name || profile?.last_name) && profile?.phone_number && profile?.dob\n }, [profile])\n\n return useMemo(() => {\n const handleClickWithTrack = ({\n buttonName,\n id,\n callback,\n }: {\n buttonName: string\n id?: string\n callback: () => void\n }) => {\n gaTrack({\n event: 'ga4Event',\n event_name: 'lp_button',\n member_active_status: profile?.activated ? 'active' : 'not active',\n event_parameters: {\n page_group: gtm.pageGroup,\n position: gaParameters?.position || copy.title,\n button_name: buttonName,\n info: id,\n },\n })\n callback()\n }\n return {\n actions: {\n [TaskType.Activate]: {\n finished: profile?.activated,\n notLogin: {\n buttonLabel: copy?.joinNow,\n handleClick: () =>\n handleClickWithTrack({ buttonName: copy?.joinNow, callback: openSignUpPopup, id: TaskType.Activate }),\n },\n notFinished: {\n buttonLabel: copy?.activate,\n handleClick: () =>\n handleClickWithTrack({\n buttonName: copy?.activate,\n callback: () => {\n authCodeActivate.setAutoSendEmail(true)\n authCodeActivate.open()\n },\n id: TaskType.Activate,\n }),\n },\n completed: {\n buttonLabel: copy?.completed,\n },\n },\n [TaskType.Subscribe]: {\n finished: isSubscribed,\n notLogin: {\n buttonLabel: copy?.joinNow,\n handleClick: () =>\n handleClickWithTrack({ buttonName: copy?.joinNow, callback: openSignUpPopup, id: TaskType.Subscribe }),\n },\n notFinished: {\n buttonLabel: copy?.subscribeLabel,\n handleClick: () =>\n handleClickWithTrack({\n buttonName: copy?.subscribeLabel,\n callback: () => subscribe.openSubscribePopup(),\n id: TaskType.Subscribe,\n }),\n },\n completed: {\n buttonLabel: copy?.completed,\n },\n },\n [TaskType.CompleteProfile]: {\n finished: profileCompleted,\n notLogin: {\n buttonLabel: copy?.joinNow,\n handleClick: () =>\n handleClickWithTrack({\n buttonName: copy?.joinNow,\n callback: openSignUpPopup,\n id: TaskType.CompleteProfile,\n }),\n },\n notFinished: {\n buttonLabel: copy?.completeProfile,\n link: completeProfileLink,\n handleClick: () =>\n handleClickWithTrack({\n buttonName: copy?.completeProfile,\n callback: () => {},\n id: TaskType.CompleteProfile,\n }),\n },\n completed: {\n buttonLabel: copy?.completed,\n },\n },\n [TaskType.FirstPurchase]: {\n finished: firstPurchaseFinished,\n notLogin: {\n buttonLabel: copy?.makeFirstPurchase,\n handleClick: () =>\n handleClickWithTrack({\n buttonName: copy?.makeFirstPurchase,\n callback: openSignUpPopup,\n id: TaskType.FirstPurchase,\n }),\n },\n notFinished: {\n buttonLabel: copy?.makeFirstPurchase,\n link: copy?.goShopLink,\n handleClick: () =>\n handleClickWithTrack({\n buttonName: copy?.makeFirstPurchase,\n callback: () => {},\n id: TaskType.FirstPurchase,\n }),\n },\n completed: {\n buttonLabel: copy?.completed,\n },\n },\n [TaskType.UploadReceipt]: {\n finished: uploadedReceipt,\n notLogin: {\n buttonLabel: copy?.joinNow,\n handleClick: () =>\n handleClickWithTrack({\n buttonName: copy?.joinNow,\n callback: openSignUpPopup,\n id: TaskType.UploadReceipt,\n }),\n },\n notFinished: {\n buttonLabel: copy?.uploadReceipt,\n handleClick: () =>\n handleClickWithTrack({\n buttonName: copy?.uploadReceipt,\n callback: () => uploadReceipt.openUploadReceiptPopup(),\n id: TaskType.UploadReceipt,\n }),\n },\n completed: {\n buttonLabel: copy?.completed,\n },\n },\n [TaskType.Shop]: {\n finished: false,\n notLogin: {\n buttonLabel: copy?.joinNow,\n handleClick: () =>\n handleClickWithTrack({\n buttonName: copy?.joinNow,\n callback: openSignUpPopup,\n id: TaskType.Shop,\n }),\n },\n notFinished: {\n buttonLabel: copy?.shopNow,\n link: copy?.goShopLink,\n handleClick: () =>\n handleClickWithTrack({\n buttonName: copy?.shopNow,\n callback: () => {},\n id: TaskType.Shop,\n }),\n },\n completed: {\n buttonLabel: copy?.completed,\n },\n },\n },\n }\n }, [\n profile?.activated,\n copy?.joinNow,\n copy?.activate,\n copy?.completed,\n copy?.subscribe,\n copy?.completeProfile,\n copy?.makeFirstPurchase,\n copy?.uploadReceipt,\n copy?.shopNow,\n copy.title,\n copy?.goShopLink,\n isSubscribed,\n profileCompleted,\n firstPurchaseFinished,\n uploadedReceipt,\n gaParameters?.position,\n openSignUpPopup,\n completeProfileLink,\n ])\n}\n"],
5
+ "mappings": "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",
6
+ "names": ["useActions_exports", "__export", "useActions", "__toCommonJS", "import_lib", "import_type", "import_provider", "import_react", "import_useReceiptUploaded", "import_useFirstPurchaseFinished", "import_useSubscribed", "import_registration", "copy", "subscribe", "uploadReceipt", "gaParameters", "openSignUpPopup", "gtm", "profile", "authCodeActivate", "isSubscribed", "firstPurchaseFinished", "uploadedReceipt", "useReceiptUploaded", "appName", "passportUrl", "clientUrl", "setClientUrl", "completeProfileLink", "query", "search", "profileCompleted", "handleClickWithTrack", "buttonName", "id", "callback"]
7
7
  }
@@ -1,2 +1,2 @@
1
- "use strict";var I=Object.create;var u=Object.defineProperty;var R=Object.getOwnPropertyDescriptor;var B=Object.getOwnPropertyNames;var O=Object.getPrototypeOf,z=Object.prototype.hasOwnProperty;var U=(e,s)=>{for(var r in s)u(e,r,{get:s[r],enumerable:!0})},T=(e,s,r,d)=>{if(s&&typeof s=="object"||typeof s=="function")for(let l of B(s))!z.call(e,l)&&l!==r&&u(e,l,{get:()=>s[l],enumerable:!(d=R(s,l))||d.enumerable});return e};var S=(e,s,r)=>(r=e!=null?I(O(e)):{},T(s||!e||!e.__esModule?u(r,"default",{value:e,enumerable:!0}):r,e)),V=e=>T(u({},"__esModule",{value:!0}),e);var K={};U(K,{CreditsSubscribeModal:()=>J});module.exports=V(K);var t=require("react/jsx-runtime"),i=require("react"),o=require("@anker-in/headless-ui"),a=require("../../../lib"),n=S(require("js-cookie")),M=require("query-string"),k=S(require("crypto-js/sha256")),w=require("../context/provider"),E=require("../../../constants"),A=require("./ModalContainer");const G=()=>{if(typeof window>"u")return{register_source:""};const{search:e,href:s}=window.location||{},r=(0,M.parse)(e);return{fbuy_ref_code:n.default.get("fbuy_ref_code"),affiliate:n.default.get("affiliate"),ref:n.default.get("ref_ads"),inviter_code:r.ic||r.inviter_code||n.default.get("inviter_code"),register_source:r.redirect||n.default.get("reg_source")||s,deals_type:n.default.get("deal"),transfer_id:n.default.get("transfer_id")}};function J({copy:e,onSuccess:s,...r}){const{brand:d,locale:l}=(0,a.useHeadlessContext)(),p=E.ROUNDED_BRANDS.includes(d),[g,P]=(0,i.useState)(!1),[h,L]=(0,i.useState)(!1),[c,v]=(0,i.useState)(""),[_,f]=(0,i.useState)(""),[C,y]=(0,i.useState)(""),[D,N]=(0,i.useState)(!1),{profile:m}=(0,w.useCreditsContext)(),F=(0,i.useCallback)(b=>{f(""),v(b.target?.value?.trim())},[]),H=(0,i.useCallback)(async b=>{b.preventDefault(),f(""),N(!0);const{register_source:q}=G(),x=await(0,a.fetcher)({locale:l,action:"subscribe",url:"/api/multipass/subscribe/subscribe_emails",method:"POST",body:{email:c,register_source:q,brand:d,deals_type:e.dealsType||"vip_subscribe"},headers:{},type:""});N(!1),x.errors?f(x.errors||x.statusText):(y(e.successTips||"Subscribed successfully!"),s&&s(),setTimeout(()=>{y("")},3e3),(0,a.gaTrack)({subscribe_hashed_email:c?(0,k.default)(c):""}),(0,a.gaTrack)({event:"ga4Event",event_name:"subscribe",event_parameters:{page_group:e.dealsType||"vip_subscribe",position:"pop_up"}}),(0,a.gaTrack)({event:"uaEvent",eventCategory:"subscribe",eventAction:e.dealsType||"vip_subscribe",eventLabel:"pop_up",nonInteraction:!1}))},[c,l,d,e.dealsType,e.successTips,s]);return(0,i.useEffect)(()=>{m&&m?.email&&v(m?.email)},[m]),(0,t.jsx)(A.CreditsModalContainer,{className:"w-[540px] md:h-auto",scrollClassName:"mb-[40px] min-l:px-[48px] md:mb-[24px]",titleClassName:"h-[56px]",useAnimation:!0,animationClassName:"md:translate-y-[100vh]",...r,children:(0,t.jsxs)("form",{className:"min-l:px-[16px] flex flex-col gap-[16px] text-center",onSubmit:H,noValidate:!1,children:[(0,t.jsx)("div",{children:(0,t.jsx)(o.Text,{className:(0,a.classNames)("mb-[24px] text-[22px] font-bold"),html:e.title})}),e.desc&&(0,t.jsx)(o.Text,{className:"mb-[8px] text-left text-[16px] font-semibold leading-[1.4] text-[#1F2021]",html:e.desc}),(0,t.jsxs)("div",{className:(0,a.classNames)("relative flex h-[52px] w-full overflow-hidden rounded-[2px] md:grid md:h-auto md:grid-rows-1 md:gap-[16px]",!p&&"rounded-none"),children:[(0,t.jsx)("input",{className:(0,a.classNames)("h-full flex-1 rounded-l-[2px] border-[1px] border-[#d8d8d8] px-[14px] py-[17px] text-[16px] font-semibold leading-[1] outline-none placeholder:text-[#999] md:h-[52px] md:rounded-[2px]",!p&&"rounded-none"),type:"email",required:!0,placeholder:e.placeholder,value:c,onChange:F}),(0,t.jsx)(o.Button,{type:"submit",variant:"primary",loading:D,className:(0,a.classNames)("legacy-headless-ui-primary-button !h-full !min-w-0 !rounded-l-none !rounded-r-[2px] !px-[40px] !py-[13px]",!p&&"rounded-none"),children:(0,t.jsx)(o.Picture,{source:"https://cdn.shopify.com/s/files/1/0512/8568/8505/files/icon_email.png?v=1697527383",className:"size-[24px]",alt:"email"})})]}),e?.oneankerSubscribeAgree&&(0,t.jsxs)("div",{className:"flex w-full",children:[(0,t.jsx)(o.Checkbox,{checked:h,onCheckedChange:()=>L(!h),required:!0,className:"border-[#1d1d1f]"}),(0,t.jsx)("label",{className:"ml-2 text-left text-[14px] font-semibold text-[#777] [&_a]:underline",dangerouslySetInnerHTML:{__html:e.oneankerSubscribeAgree}})]}),(0,t.jsxs)("div",{className:"flex w-full",children:[(0,t.jsx)(o.Checkbox,{checked:g,onCheckedChange:()=>P(!g),required:!0,className:"border-[#1d1d1f]"}),(0,t.jsx)("label",{className:"ml-2 text-left text-[14px] font-semibold text-[#777] [&_a]:underline",dangerouslySetInnerHTML:{__html:e?.policy||""}})]}),(0,t.jsx)("div",{className:(0,a.classNames)("w-full text-left text-[16px] font-semibold",_&&"text-[#F84D4F]",C&&"text-[#52C41A]"),children:(0,t.jsx)(o.Text,{html:C||_||""})})]})})}
1
+ "use strict";var I=Object.create;var u=Object.defineProperty;var R=Object.getOwnPropertyDescriptor;var O=Object.getOwnPropertyNames;var U=Object.getPrototypeOf,z=Object.prototype.hasOwnProperty;var V=(e,s)=>{for(var r in s)u(e,r,{get:s[r],enumerable:!0})},S=(e,s,r,d)=>{if(s&&typeof s=="object"||typeof s=="function")for(let l of O(s))!z.call(e,l)&&l!==r&&u(e,l,{get:()=>s[l],enumerable:!(d=R(s,l))||d.enumerable});return e};var M=(e,s,r)=>(r=e!=null?I(U(e)):{},S(s||!e||!e.__esModule?u(r,"default",{value:e,enumerable:!0}):r,e)),$=e=>S(u({},"__esModule",{value:!0}),e);var K={};V(K,{CreditsSubscribeModal:()=>J});module.exports=$(K);var t=require("react/jsx-runtime"),i=require("react"),o=require("@anker-in/headless-ui"),a=require("../../../lib"),n=M(require("js-cookie")),k=require("query-string"),w=M(require("crypto-js/sha256")),E=require("../context/provider"),A=require("../../../constants"),P=require("./ModalContainer");const G=()=>{if(typeof window>"u")return{register_source:""};const{search:e,href:s}=window.location||{},r=(0,k.parse)(e);return{fbuy_ref_code:n.default.get("fbuy_ref_code"),affiliate:n.default.get("affiliate"),ref:n.default.get("ref_ads"),inviter_code:r.ic||r.inviter_code||n.default.get("inviter_code"),register_source:r.redirect||n.default.get("reg_source")||s,deals_type:n.default.get("deal"),transfer_id:n.default.get("transfer_id")}};function J({copy:e,onSuccess:s,...r}){const{brand:d,locale:l}=(0,a.useHeadlessContext)(),p=A.ROUNDED_BRANDS.includes(d),[g,L]=(0,i.useState)(!1),[h,D]=(0,i.useState)(!1),[c,v]=(0,i.useState)(""),[_,f]=(0,i.useState)(""),[C,y]=(0,i.useState)(""),[F,N]=(0,i.useState)(!1),{profile:m,apiBaseUrl:T}=(0,E.useCreditsContext)(),H=(0,i.useCallback)(b=>{f(""),v(b.target?.value?.trim())},[]),q=(0,i.useCallback)(async b=>{b.preventDefault(),f(""),N(!0);const{register_source:B}=G(),x=await(0,a.fetcher)({locale:l,action:"subscribe",url:`${T||""}/api/multipass/subscribe/subscribe_emails`,method:"POST",body:{email:c,register_source:B,brand:d,deals_type:e.dealsType||"vip_subscribe"},headers:{},type:""});N(!1),x.errors?f(x.errors||x.statusText):(y(e.successTips||"Subscribed successfully!"),s&&s(),setTimeout(()=>{y("")},3e3),(0,a.gaTrack)({subscribe_hashed_email:c?(0,w.default)(c):""}),(0,a.gaTrack)({event:"ga4Event",event_name:"subscribe",event_parameters:{page_group:e.dealsType||"vip_subscribe",position:"pop_up"}}),(0,a.gaTrack)({event:"uaEvent",eventCategory:"subscribe",eventAction:e.dealsType||"vip_subscribe",eventLabel:"pop_up",nonInteraction:!1}))},[c,l,d,e.dealsType,e.successTips,s,T]);return(0,i.useEffect)(()=>{m&&m?.email&&v(m?.email)},[m]),(0,t.jsx)(P.CreditsModalContainer,{className:"w-[540px] md:h-auto",scrollClassName:"mb-[40px] min-l:px-[48px] md:mb-[24px]",titleClassName:"h-[56px]",useAnimation:!0,animationClassName:"md:translate-y-[100vh]",...r,children:(0,t.jsxs)("form",{className:"min-l:px-[16px] flex flex-col gap-[16px] text-center",onSubmit:q,noValidate:!1,children:[(0,t.jsx)("div",{children:(0,t.jsx)(o.Text,{className:(0,a.classNames)("mb-[24px] text-[22px] font-bold"),html:e.title})}),e.desc&&(0,t.jsx)(o.Text,{className:"mb-[8px] text-left text-[16px] font-semibold leading-[1.4] text-[#1F2021]",html:e.desc}),(0,t.jsxs)("div",{className:(0,a.classNames)("relative flex h-[52px] w-full overflow-hidden rounded-[2px] md:grid md:h-auto md:grid-rows-1 md:gap-[16px]",!p&&"rounded-none"),children:[(0,t.jsx)("input",{className:(0,a.classNames)("h-full flex-1 rounded-l-[2px] border-[1px] border-[#d8d8d8] px-[14px] py-[17px] text-[16px] font-semibold leading-[1] outline-none placeholder:text-[#999] md:h-[52px] md:rounded-[2px]",!p&&"rounded-none"),type:"email",required:!0,placeholder:e.placeholder,value:c,onChange:H}),(0,t.jsx)(o.Button,{type:"submit",variant:"primary",loading:F,className:(0,a.classNames)("legacy-headless-ui-primary-button !h-full !min-w-0 !rounded-l-none !rounded-r-[2px] !px-[40px] !py-[13px]",!p&&"rounded-none"),children:(0,t.jsx)(o.Picture,{source:"https://cdn.shopify.com/s/files/1/0512/8568/8505/files/icon_email.png?v=1697527383",className:"size-[24px]",alt:"email"})})]}),e?.oneankerSubscribeAgree&&(0,t.jsxs)("div",{className:"flex w-full",children:[(0,t.jsx)(o.Checkbox,{checked:h,onCheckedChange:()=>D(!h),required:!0,className:"border-[#1d1d1f]"}),(0,t.jsx)("label",{className:"ml-2 text-left text-[14px] font-semibold text-[#777] [&_a]:underline",dangerouslySetInnerHTML:{__html:e.oneankerSubscribeAgree}})]}),(0,t.jsxs)("div",{className:"flex w-full",children:[(0,t.jsx)(o.Checkbox,{checked:g,onCheckedChange:()=>L(!g),required:!0,className:"border-[#1d1d1f]"}),(0,t.jsx)("label",{className:"ml-2 text-left text-[14px] font-semibold text-[#777] [&_a]:underline",dangerouslySetInnerHTML:{__html:e?.policy||""}})]}),(0,t.jsx)("div",{className:(0,a.classNames)("w-full text-left text-[16px] font-semibold",_&&"text-[#F84D4F]",C&&"text-[#52C41A]"),children:(0,t.jsx)(o.Text,{html:C||_||""})})]})})}
2
2
  //# sourceMappingURL=SubscribeModal.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../../src/components/credits/modal/SubscribeModal.tsx"],
4
- "sourcesContent": ["import { useCallback, useEffect, useState } from 'react'\nimport { Button, Checkbox, Picture, Text } from '@anker-in/headless-ui'\nimport { classNames, fetcher, gaTrack, useHeadlessContext } from '../../../lib'\nimport Cookies from 'js-cookie'\nimport { parse } from 'query-string'\nimport sha256 from 'crypto-js/sha256'\nimport { useCreditsContext } from '../context/provider'\nimport { ROUNDED_BRANDS } from '../../../constants'\nimport { CreditsModalContainer, type ModalContainerProps } from './ModalContainer'\n\nexport type CreditsSubscribeModalCopy = {\n title: string\n desc?: string\n placeholder: string\n policy?: string\n oneankerSubscribeAgree?: string\n successTips?: string\n dealsType?: string\n}\n\ninterface CreditsSubscribeModalProps extends ModalContainerProps {\n copy: CreditsSubscribeModalCopy\n onSuccess?: () => void\n}\n\nconst getAdCookie = () => {\n if (typeof window === 'undefined') {\n return { register_source: '' }\n }\n const { search, href } = window.location || {}\n const query = parse(search)\n\n return {\n fbuy_ref_code: Cookies.get('fbuy_ref_code'),\n affiliate: Cookies.get('affiliate'),\n ref: Cookies.get('ref_ads'),\n inviter_code: query.ic || query.inviter_code || Cookies.get('inviter_code'),\n register_source: query.redirect || Cookies.get('reg_source') || href,\n deals_type: Cookies.get('deal'),\n transfer_id: Cookies.get('transfer_id'),\n }\n}\n\nexport function CreditsSubscribeModal({ copy, onSuccess, ...props }: CreditsSubscribeModalProps) {\n const { brand, locale } = useHeadlessContext()\n const rounded = ROUNDED_BRANDS.includes(brand)\n const [policy, setPolicy] = useState(false)\n const [oneankerSubscribeAgree, setOneankerSubscribeAgree] = useState(false)\n const [email, setEmail] = useState('')\n const [errorMessage, setErrorMessage] = useState('')\n const [successMessage, setSuccessMessage] = useState('')\n const [loading, setLoading] = useState(false)\n const { profile } = useCreditsContext()\n\n const handleEmailChange = useCallback((event: React.ChangeEvent<HTMLInputElement>) => {\n setErrorMessage('')\n setEmail(event.target?.value?.trim())\n }, [])\n\n const handleSubmit = useCallback(\n async (event: React.FormEvent<HTMLFormElement>) => {\n event.preventDefault()\n setErrorMessage('')\n\n setLoading(true)\n const { register_source } = getAdCookie()\n\n const result = await fetcher({\n locale,\n action: 'subscribe',\n url: '/api/multipass/subscribe/subscribe_emails',\n method: 'POST',\n body: {\n email,\n register_source,\n brand,\n deals_type: copy.dealsType || 'vip_subscribe',\n },\n headers: {},\n type: '',\n })\n setLoading(false)\n\n if (!result.errors) {\n setSuccessMessage(copy.successTips || 'Subscribed successfully!')\n if (onSuccess) {\n onSuccess()\n }\n setTimeout(() => {\n setSuccessMessage('')\n }, 3000)\n gaTrack({\n subscribe_hashed_email: email ? sha256(email) : '',\n })\n gaTrack({\n event: 'ga4Event',\n event_name: 'subscribe',\n event_parameters: {\n page_group: copy.dealsType || 'vip_subscribe',\n position: 'pop_up',\n },\n })\n gaTrack({\n event: 'uaEvent',\n eventCategory: 'subscribe',\n eventAction: copy.dealsType || 'vip_subscribe',\n eventLabel: 'pop_up',\n nonInteraction: false,\n })\n } else {\n setErrorMessage(result.errors || result.statusText)\n }\n },\n [email, locale, brand, copy.dealsType, copy.successTips, onSuccess]\n )\n\n useEffect(() => {\n if (profile && profile?.email) {\n setEmail(profile?.email)\n }\n }, [profile])\n\n return (\n <CreditsModalContainer\n className=\"w-[540px] md:h-auto\"\n scrollClassName=\"mb-[40px] min-l:px-[48px] md:mb-[24px]\"\n titleClassName=\"h-[56px]\"\n useAnimation\n animationClassName=\"md:translate-y-[100vh]\"\n {...props}\n >\n <form className=\"min-l:px-[16px] flex flex-col gap-[16px] text-center\" onSubmit={handleSubmit} noValidate={false}>\n <div>\n <Text className={classNames('mb-[24px] text-[22px] font-bold')} html={copy.title}></Text>\n </div>\n {copy.desc && (\n <Text\n className=\"mb-[8px] text-left text-[16px] font-semibold leading-[1.4] text-[#1F2021]\"\n html={copy.desc}\n ></Text>\n )}\n <div\n className={classNames(\n 'relative flex h-[52px] w-full overflow-hidden rounded-[2px] md:grid md:h-auto md:grid-rows-1 md:gap-[16px]',\n !rounded && 'rounded-none'\n )}\n >\n <input\n className={classNames(\n 'h-full flex-1 rounded-l-[2px] border-[1px] border-[#d8d8d8] px-[14px] py-[17px] text-[16px] font-semibold leading-[1] outline-none placeholder:text-[#999] md:h-[52px] md:rounded-[2px]',\n !rounded && 'rounded-none'\n )}\n type=\"email\"\n required\n placeholder={copy.placeholder}\n value={email}\n onChange={handleEmailChange}\n />\n <Button\n type=\"submit\"\n variant=\"primary\"\n loading={loading}\n className={classNames(\n 'legacy-headless-ui-primary-button !h-full !min-w-0 !rounded-l-none !rounded-r-[2px] !px-[40px] !py-[13px]',\n !rounded && 'rounded-none'\n )}\n >\n <Picture\n source=\"https://cdn.shopify.com/s/files/1/0512/8568/8505/files/icon_email.png?v=1697527383\"\n className=\"size-[24px]\"\n alt=\"email\"\n />\n </Button>\n </div>\n {copy?.oneankerSubscribeAgree && (\n <div className=\"flex w-full\">\n <Checkbox\n checked={oneankerSubscribeAgree}\n onCheckedChange={() => setOneankerSubscribeAgree(!oneankerSubscribeAgree)}\n required\n className=\"border-[#1d1d1f]\"\n />\n <label\n className=\"ml-2 text-left text-[14px] font-semibold text-[#777] [&_a]:underline\"\n dangerouslySetInnerHTML={{\n __html: copy.oneankerSubscribeAgree,\n }}\n />\n </div>\n )}\n <div className=\"flex w-full\">\n <Checkbox checked={policy} onCheckedChange={() => setPolicy(!policy)} required className=\"border-[#1d1d1f]\" />\n <label\n className=\"ml-2 text-left text-[14px] font-semibold text-[#777] [&_a]:underline\"\n dangerouslySetInnerHTML={{\n __html: copy?.policy || '',\n }}\n />\n </div>\n <div\n className={classNames(\n 'w-full text-left text-[16px] font-semibold',\n errorMessage && 'text-[#F84D4F]',\n successMessage && 'text-[#52C41A]'\n )}\n >\n <Text html={successMessage || errorMessage || ''} />\n </div>\n </form>\n </CreditsModalContainer>\n )\n}\n"],
5
- "mappings": "0jBAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,2BAAAE,IAAA,eAAAC,EAAAH,GAqIU,IAAAI,EAAA,6BArIVC,EAAiD,iBACjDC,EAAgD,iCAChDC,EAAiE,wBACjEC,EAAoB,wBACpBC,EAAsB,wBACtBC,EAAmB,+BACnBC,EAAkC,+BAClCC,EAA+B,8BAC/BC,EAAgE,4BAiBhE,MAAMC,EAAc,IAAM,CACxB,GAAI,OAAO,OAAW,IACpB,MAAO,CAAE,gBAAiB,EAAG,EAE/B,KAAM,CAAE,OAAAC,EAAQ,KAAAC,CAAK,EAAI,OAAO,UAAY,CAAC,EACvCC,KAAQ,SAAMF,CAAM,EAE1B,MAAO,CACL,cAAe,EAAAG,QAAQ,IAAI,eAAe,EAC1C,UAAW,EAAAA,QAAQ,IAAI,WAAW,EAClC,IAAK,EAAAA,QAAQ,IAAI,SAAS,EAC1B,aAAcD,EAAM,IAAMA,EAAM,cAAgB,EAAAC,QAAQ,IAAI,cAAc,EAC1E,gBAAiBD,EAAM,UAAY,EAAAC,QAAQ,IAAI,YAAY,GAAKF,EAChE,WAAY,EAAAE,QAAQ,IAAI,MAAM,EAC9B,YAAa,EAAAA,QAAQ,IAAI,aAAa,CACxC,CACF,EAEO,SAAShB,EAAsB,CAAE,KAAAiB,EAAM,UAAAC,EAAW,GAAGC,CAAM,EAA+B,CAC/F,KAAM,CAAE,MAAAC,EAAO,OAAAC,CAAO,KAAI,sBAAmB,EACvCC,EAAU,iBAAe,SAASF,CAAK,EACvC,CAACG,EAAQC,CAAS,KAAI,YAAS,EAAK,EACpC,CAACC,EAAwBC,CAAyB,KAAI,YAAS,EAAK,EACpE,CAACC,EAAOC,CAAQ,KAAI,YAAS,EAAE,EAC/B,CAACC,EAAcC,CAAe,KAAI,YAAS,EAAE,EAC7C,CAACC,EAAgBC,CAAiB,KAAI,YAAS,EAAE,EACjD,CAACC,EAASC,CAAU,KAAI,YAAS,EAAK,EACtC,CAAE,QAAAC,CAAQ,KAAI,qBAAkB,EAEhCC,KAAoB,eAAaC,GAA+C,CACpFP,EAAgB,EAAE,EAClBF,EAASS,EAAM,QAAQ,OAAO,KAAK,CAAC,CACtC,EAAG,CAAC,CAAC,EAECC,KAAe,eACnB,MAAOD,GAA4C,CACjDA,EAAM,eAAe,EACrBP,EAAgB,EAAE,EAElBI,EAAW,EAAI,EACf,KAAM,CAAE,gBAAAK,CAAgB,EAAI3B,EAAY,EAElC4B,EAAS,QAAM,WAAQ,CAC3B,OAAAnB,EACA,OAAQ,YACR,IAAK,4CACL,OAAQ,OACR,KAAM,CACJ,MAAAM,EACA,gBAAAY,EACA,MAAAnB,EACA,WAAYH,EAAK,WAAa,eAChC,EACA,QAAS,CAAC,EACV,KAAM,EACR,CAAC,EACDiB,EAAW,EAAK,EAEXM,EAAO,OA2BVV,EAAgBU,EAAO,QAAUA,EAAO,UAAU,GA1BlDR,EAAkBf,EAAK,aAAe,0BAA0B,EAC5DC,GACFA,EAAU,EAEZ,WAAW,IAAM,CACfc,EAAkB,EAAE,CACtB,EAAG,GAAI,KACP,WAAQ,CACN,uBAAwBL,KAAQ,EAAAc,SAAOd,CAAK,EAAI,EAClD,CAAC,KACD,WAAQ,CACN,MAAO,WACP,WAAY,YACZ,iBAAkB,CAChB,WAAYV,EAAK,WAAa,gBAC9B,SAAU,QACZ,CACF,CAAC,KACD,WAAQ,CACN,MAAO,UACP,cAAe,YACf,YAAaA,EAAK,WAAa,gBAC/B,WAAY,SACZ,eAAgB,EAClB,CAAC,EAIL,EACA,CAACU,EAAON,EAAQD,EAAOH,EAAK,UAAWA,EAAK,YAAaC,CAAS,CACpE,EAEA,sBAAU,IAAM,CACViB,GAAWA,GAAS,OACtBP,EAASO,GAAS,KAAK,CAE3B,EAAG,CAACA,CAAO,CAAC,KAGV,OAAC,yBACC,UAAU,sBACV,gBAAgB,yCAChB,eAAe,WACf,aAAY,GACZ,mBAAmB,yBAClB,GAAGhB,EAEJ,oBAAC,QAAK,UAAU,uDAAuD,SAAUmB,EAAc,WAAY,GACzG,oBAAC,OACC,mBAAC,QAAK,aAAW,cAAW,iCAAiC,EAAG,KAAMrB,EAAK,MAAO,EACpF,EACCA,EAAK,SACJ,OAAC,QACC,UAAU,4EACV,KAAMA,EAAK,KACZ,KAEH,QAAC,OACC,aAAW,cACT,6GACA,CAACK,GAAW,cACd,EAEA,oBAAC,SACC,aAAW,cACT,0LACA,CAACA,GAAW,cACd,EACA,KAAK,QACL,SAAQ,GACR,YAAaL,EAAK,YAClB,MAAOU,EACP,SAAUS,EACZ,KACA,OAAC,UACC,KAAK,SACL,QAAQ,UACR,QAASH,EACT,aAAW,cACT,4GACA,CAACX,GAAW,cACd,EAEA,mBAAC,WACC,OAAO,qFACP,UAAU,cACV,IAAI,QACN,EACF,GACF,EACCL,GAAM,2BACL,QAAC,OAAI,UAAU,cACb,oBAAC,YACC,QAASQ,EACT,gBAAiB,IAAMC,EAA0B,CAACD,CAAsB,EACxE,SAAQ,GACR,UAAU,mBACZ,KACA,OAAC,SACC,UAAU,uEACV,wBAAyB,CACvB,OAAQR,EAAK,sBACf,EACF,GACF,KAEF,QAAC,OAAI,UAAU,cACb,oBAAC,YAAS,QAASM,EAAQ,gBAAiB,IAAMC,EAAU,CAACD,CAAM,EAAG,SAAQ,GAAC,UAAU,mBAAmB,KAC5G,OAAC,SACC,UAAU,uEACV,wBAAyB,CACvB,OAAQN,GAAM,QAAU,EAC1B,EACF,GACF,KACA,OAAC,OACC,aAAW,cACT,6CACAY,GAAgB,iBAChBE,GAAkB,gBACpB,EAEA,mBAAC,QAAK,KAAMA,GAAkBF,GAAgB,GAAI,EACpD,GACF,EACF,CAEJ",
6
- "names": ["SubscribeModal_exports", "__export", "CreditsSubscribeModal", "__toCommonJS", "import_jsx_runtime", "import_react", "import_headless_ui", "import_lib", "import_js_cookie", "import_query_string", "import_sha256", "import_provider", "import_constants", "import_ModalContainer", "getAdCookie", "search", "href", "query", "Cookies", "copy", "onSuccess", "props", "brand", "locale", "rounded", "policy", "setPolicy", "oneankerSubscribeAgree", "setOneankerSubscribeAgree", "email", "setEmail", "errorMessage", "setErrorMessage", "successMessage", "setSuccessMessage", "loading", "setLoading", "profile", "handleEmailChange", "event", "handleSubmit", "register_source", "result", "sha256"]
4
+ "sourcesContent": ["import { useCallback, useEffect, useState } from 'react'\nimport { Button, Checkbox, Picture, Text } from '@anker-in/headless-ui'\nimport { classNames, fetcher, gaTrack, useHeadlessContext } from '../../../lib'\nimport Cookies from 'js-cookie'\nimport { parse } from 'query-string'\nimport sha256 from 'crypto-js/sha256'\nimport { useCreditsContext } from '../context/provider'\nimport { ROUNDED_BRANDS } from '../../../constants'\nimport { CreditsModalContainer, type ModalContainerProps } from './ModalContainer'\n\nexport type CreditsSubscribeModalCopy = {\n title: string\n desc?: string\n placeholder: string\n policy?: string\n oneankerSubscribeAgree?: string\n successTips?: string\n dealsType?: string\n}\n\ninterface CreditsSubscribeModalProps extends ModalContainerProps {\n copy: CreditsSubscribeModalCopy\n onSuccess?: () => void\n}\n\nconst getAdCookie = () => {\n if (typeof window === 'undefined') {\n return { register_source: '' }\n }\n const { search, href } = window.location || {}\n const query = parse(search)\n\n return {\n fbuy_ref_code: Cookies.get('fbuy_ref_code'),\n affiliate: Cookies.get('affiliate'),\n ref: Cookies.get('ref_ads'),\n inviter_code: query.ic || query.inviter_code || Cookies.get('inviter_code'),\n register_source: query.redirect || Cookies.get('reg_source') || href,\n deals_type: Cookies.get('deal'),\n transfer_id: Cookies.get('transfer_id'),\n }\n}\n\nexport function CreditsSubscribeModal({ copy, onSuccess, ...props }: CreditsSubscribeModalProps) {\n const { brand, locale } = useHeadlessContext()\n const rounded = ROUNDED_BRANDS.includes(brand)\n const [policy, setPolicy] = useState(false)\n const [oneankerSubscribeAgree, setOneankerSubscribeAgree] = useState(false)\n const [email, setEmail] = useState('')\n const [errorMessage, setErrorMessage] = useState('')\n const [successMessage, setSuccessMessage] = useState('')\n const [loading, setLoading] = useState(false)\n const { profile, apiBaseUrl } = useCreditsContext()\n\n const handleEmailChange = useCallback((event: React.ChangeEvent<HTMLInputElement>) => {\n setErrorMessage('')\n setEmail(event.target?.value?.trim())\n }, [])\n\n const handleSubmit = useCallback(\n async (event: React.FormEvent<HTMLFormElement>) => {\n event.preventDefault()\n setErrorMessage('')\n\n setLoading(true)\n const { register_source } = getAdCookie()\n\n const result = await fetcher({\n locale,\n action: 'subscribe',\n url: `${apiBaseUrl || ''}/api/multipass/subscribe/subscribe_emails`,\n method: 'POST',\n body: {\n email,\n register_source,\n brand,\n deals_type: copy.dealsType || 'vip_subscribe',\n },\n headers: {},\n type: '',\n })\n setLoading(false)\n\n if (!result.errors) {\n setSuccessMessage(copy.successTips || 'Subscribed successfully!')\n if (onSuccess) {\n onSuccess()\n }\n setTimeout(() => {\n setSuccessMessage('')\n }, 3000)\n gaTrack({\n subscribe_hashed_email: email ? sha256(email) : '',\n })\n gaTrack({\n event: 'ga4Event',\n event_name: 'subscribe',\n event_parameters: {\n page_group: copy.dealsType || 'vip_subscribe',\n position: 'pop_up',\n },\n })\n gaTrack({\n event: 'uaEvent',\n eventCategory: 'subscribe',\n eventAction: copy.dealsType || 'vip_subscribe',\n eventLabel: 'pop_up',\n nonInteraction: false,\n })\n } else {\n setErrorMessage(result.errors || result.statusText)\n }\n },\n [email, locale, brand, copy.dealsType, copy.successTips, onSuccess, apiBaseUrl]\n )\n\n useEffect(() => {\n if (profile && profile?.email) {\n setEmail(profile?.email)\n }\n }, [profile])\n\n return (\n <CreditsModalContainer\n className=\"w-[540px] md:h-auto\"\n scrollClassName=\"mb-[40px] min-l:px-[48px] md:mb-[24px]\"\n titleClassName=\"h-[56px]\"\n useAnimation\n animationClassName=\"md:translate-y-[100vh]\"\n {...props}\n >\n <form className=\"min-l:px-[16px] flex flex-col gap-[16px] text-center\" onSubmit={handleSubmit} noValidate={false}>\n <div>\n <Text className={classNames('mb-[24px] text-[22px] font-bold')} html={copy.title}></Text>\n </div>\n {copy.desc && (\n <Text\n className=\"mb-[8px] text-left text-[16px] font-semibold leading-[1.4] text-[#1F2021]\"\n html={copy.desc}\n ></Text>\n )}\n <div\n className={classNames(\n 'relative flex h-[52px] w-full overflow-hidden rounded-[2px] md:grid md:h-auto md:grid-rows-1 md:gap-[16px]',\n !rounded && 'rounded-none'\n )}\n >\n <input\n className={classNames(\n 'h-full flex-1 rounded-l-[2px] border-[1px] border-[#d8d8d8] px-[14px] py-[17px] text-[16px] font-semibold leading-[1] outline-none placeholder:text-[#999] md:h-[52px] md:rounded-[2px]',\n !rounded && 'rounded-none'\n )}\n type=\"email\"\n required\n placeholder={copy.placeholder}\n value={email}\n onChange={handleEmailChange}\n />\n <Button\n type=\"submit\"\n variant=\"primary\"\n loading={loading}\n className={classNames(\n 'legacy-headless-ui-primary-button !h-full !min-w-0 !rounded-l-none !rounded-r-[2px] !px-[40px] !py-[13px]',\n !rounded && 'rounded-none'\n )}\n >\n <Picture\n source=\"https://cdn.shopify.com/s/files/1/0512/8568/8505/files/icon_email.png?v=1697527383\"\n className=\"size-[24px]\"\n alt=\"email\"\n />\n </Button>\n </div>\n {copy?.oneankerSubscribeAgree && (\n <div className=\"flex w-full\">\n <Checkbox\n checked={oneankerSubscribeAgree}\n onCheckedChange={() => setOneankerSubscribeAgree(!oneankerSubscribeAgree)}\n required\n className=\"border-[#1d1d1f]\"\n />\n <label\n className=\"ml-2 text-left text-[14px] font-semibold text-[#777] [&_a]:underline\"\n dangerouslySetInnerHTML={{\n __html: copy.oneankerSubscribeAgree,\n }}\n />\n </div>\n )}\n <div className=\"flex w-full\">\n <Checkbox checked={policy} onCheckedChange={() => setPolicy(!policy)} required className=\"border-[#1d1d1f]\" />\n <label\n className=\"ml-2 text-left text-[14px] font-semibold text-[#777] [&_a]:underline\"\n dangerouslySetInnerHTML={{\n __html: copy?.policy || '',\n }}\n />\n </div>\n <div\n className={classNames(\n 'w-full text-left text-[16px] font-semibold',\n errorMessage && 'text-[#F84D4F]',\n successMessage && 'text-[#52C41A]'\n )}\n >\n <Text html={successMessage || errorMessage || ''} />\n </div>\n </form>\n </CreditsModalContainer>\n )\n}\n"],
5
+ "mappings": "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",
6
+ "names": ["SubscribeModal_exports", "__export", "CreditsSubscribeModal", "__toCommonJS", "import_jsx_runtime", "import_react", "import_headless_ui", "import_lib", "import_js_cookie", "import_query_string", "import_sha256", "import_provider", "import_constants", "import_ModalContainer", "getAdCookie", "search", "href", "query", "Cookies", "copy", "onSuccess", "props", "brand", "locale", "rounded", "policy", "setPolicy", "oneankerSubscribeAgree", "setOneankerSubscribeAgree", "email", "setEmail", "errorMessage", "setErrorMessage", "successMessage", "setSuccessMessage", "loading", "setLoading", "profile", "apiBaseUrl", "handleEmailChange", "event", "handleSubmit", "register_source", "result", "sha256"]
7
7
  }
@@ -1,2 +1,2 @@
1
- "use strict";var A=Object.create;var m=Object.defineProperty;var H=Object.getOwnPropertyDescriptor;var R=Object.getOwnPropertyNames;var j=Object.getPrototypeOf,q=Object.prototype.hasOwnProperty;var J=(e,t)=>{for(var s in t)m(e,s,{get:t[s],enumerable:!0})},k=(e,t,s,f)=>{if(t&&typeof t=="object"||typeof t=="function")for(let a of R(t))!q.call(e,a)&&a!==s&&m(e,a,{get:()=>t[a],enumerable:!(f=H(t,a))||f.enumerable});return e};var U=(e,t,s)=>(s=e!=null?A(j(e)):{},k(t||!e||!e.__esModule?m(s,"default",{value:e,enumerable:!0}):s,e)),V=e=>k(m({},"__esModule",{value:!0}),e);var F={};J(F,{default:()=>B});module.exports=V(F);var r=require("react/jsx-runtime"),o=require("react"),n=require("@anker-in/headless-ui"),c=require("../../../../lib"),u=U(require("js-cookie")),w=require("query-string"),T=require("../../../credits/context/utils"),M=require("../../context/provider"),P=require("../../../../constants");function z(){if(typeof window>"u")return{register_source:""};const{search:e,href:t}=window.location,s=(0,w.parse)(e);return{fbuy_ref_code:u.default.get("fbuy_ref_code"),ref:u.default.get("ref_ads"),inviter_code:s.ic??s.inviter_code??u.default.get("inviter_code"),register_source:s.redirect??u.default.get("reg_source")??t}}function B({copy:e,email:t,onClose:s}){const{alpcConfig:f,setIsSubscribeSuccess:a,fetchCreditInfo:D,profile:g}=(0,M.useMemberPopupContext)(),{brand:h,locale:_}=f,{brand:E}=(0,c.useHeadlessContext)(),I=P.ROUNDED_BRANDS.includes(E),[x,v]=(0,o.useState)(e.policyDefaultChecked??!1),[d,y]=(0,o.useState)(t??""),[p,i]=(0,o.useState)(""),[b,C]=(0,o.useState)(""),[L,N]=(0,o.useState)(!1);(0,o.useEffect)(()=>{t&&y(t)},[t]);const O=(0,o.useCallback)(async()=>{if(i(""),!d)return i("Please fill in your email");if(!(0,T.emailValidate)(d))return i("Invalid email address");if(!x)return i("Please agree to the policy");N(!0);const{register_source:l}=z();try{const S=await(await fetch("/api/multipass/subscribe/subscribe_emails",{method:"POST",credentials:"include",headers:{"Content-Type":"application/json","current-language":_},body:JSON.stringify({email:d,register_source:l,brand:h,deals_type:e.dealsType??"vip_subscribe"})})).json();S.errors?i(S.errors??"Error occurred"):(C(e.successTips??"Subscribed successfully!"),a(!0),g?.user_id&&setTimeout(()=>D(g.user_id),3e3),(0,c.gaTrack)({event:"ga4Event",event_name:"subscribe",event_parameters:{page_group:e.dealsType??"",position:"sticky",info:""}}),setTimeout(()=>{C(""),s()},3e3))}catch{i("Network error")}finally{N(!1)}},[d,x,_,h,e,s,a]);return(0,r.jsxs)("div",{className:"flex flex-col gap-[12px]",children:[(0,r.jsxs)("div",{className:"flex flex-col gap-[8px]",children:[e.title&&(0,r.jsx)("h2",{className:"text-[24px] font-[700] leading-[1.2] text-[#080a0f]",children:e.title}),e.desc&&(0,r.jsx)(n.Text,{className:"text-[16px] text-[#1e2024]",html:e.desc})]}),(0,r.jsxs)("div",{className:"flex flex-col gap-[16px]",children:[(0,r.jsx)("input",{className:(0,c.classNames)("h-[46px] w-full border px-[14px] text-[16px] outline-none placeholder:text-[#999]",p?"border-[#f84d4f]":"border-[#d8d8d8]",I?"rounded-[4px]":"rounded-none"),placeholder:e.placeholder,value:d,onChange:l=>{i(""),y(l.target.value.trim())}}),(0,r.jsxs)("div",{className:"flex w-full items-start gap-[8px]",children:[(0,r.jsx)(n.Checkbox,{checked:x,onCheckedChange:()=>v(l=>!l),className:"mt-[2px] border-[#1d1d1f]"}),(0,r.jsx)("label",{className:"cursor-pointer text-left text-[14px] text-[#1e2024] [&_a]:underline",onClick:()=>v(l=>!l),dangerouslySetInnerHTML:{__html:e.policy??""}})]}),(p||b)&&(0,r.jsx)("div",{className:(0,c.classNames)("text-[14px] font-[700]",p&&"text-[#f84d4f]",b&&"text-[#52c41a]"),children:(0,r.jsx)(n.Text,{html:b||p})}),(0,r.jsx)(n.Button,{className:"w-full",loading:L,onClick:O,children:e.buttonLabel??"Subscribe"})]})]})}
1
+ "use strict";var H=Object.create;var m=Object.defineProperty;var R=Object.getOwnPropertyDescriptor;var U=Object.getOwnPropertyNames;var j=Object.getPrototypeOf,q=Object.prototype.hasOwnProperty;var J=(e,s)=>{for(var t in s)m(e,t,{get:s[t],enumerable:!0})},w=(e,s,t,f)=>{if(s&&typeof s=="object"||typeof s=="function")for(let a of U(s))!q.call(e,a)&&a!==t&&m(e,a,{get:()=>s[a],enumerable:!(f=R(s,a))||f.enumerable});return e};var V=(e,s,t)=>(t=e!=null?H(j(e)):{},w(s||!e||!e.__esModule?m(t,"default",{value:e,enumerable:!0}):t,e)),$=e=>w(m({},"__esModule",{value:!0}),e);var F={};J(F,{default:()=>D});module.exports=$(F);var r=require("react/jsx-runtime"),o=require("react"),n=require("@anker-in/headless-ui"),c=require("../../../../lib"),u=V(require("js-cookie")),T=require("query-string"),M=require("../../../credits/context/utils"),P=require("../../context/provider"),B=require("../../../../constants");function z(){if(typeof window>"u")return{register_source:""};const{search:e,href:s}=window.location,t=(0,T.parse)(e);return{fbuy_ref_code:u.default.get("fbuy_ref_code"),ref:u.default.get("ref_ads"),inviter_code:t.ic??t.inviter_code??u.default.get("inviter_code"),register_source:t.redirect??u.default.get("reg_source")??s}}function D({copy:e,email:s,onClose:t}){const{alpcConfig:f,setIsSubscribeSuccess:a,fetchCreditInfo:E,profile:g}=(0,P.useMemberPopupContext)(),{brand:h,locale:_,apiBaseUrl:v}=f,{brand:I}=(0,c.useHeadlessContext)(),L=B.ROUNDED_BRANDS.includes(I),[x,y]=(0,o.useState)(e.policyDefaultChecked??!1),[d,C]=(0,o.useState)(s??""),[p,i]=(0,o.useState)(""),[b,N]=(0,o.useState)(""),[O,S]=(0,o.useState)(!1);(0,o.useEffect)(()=>{s&&C(s)},[s]);const A=(0,o.useCallback)(async()=>{if(i(""),!d)return i("Please fill in your email");if(!(0,M.emailValidate)(d))return i("Invalid email address");if(!x)return i("Please agree to the policy");S(!0);const{register_source:l}=z();try{const k=await(await fetch(`${v||""}/api/multipass/subscribe/subscribe_emails`,{method:"POST",credentials:"include",headers:{"Content-Type":"application/json","current-language":_},body:JSON.stringify({email:d,register_source:l,brand:h,deals_type:e.dealsType??"vip_subscribe"})})).json();k.errors?i(k.errors??"Error occurred"):(N(e.successTips??"Subscribed successfully!"),a(!0),g?.user_id&&setTimeout(()=>E(g.user_id),3e3),(0,c.gaTrack)({event:"ga4Event",event_name:"subscribe",event_parameters:{page_group:e.dealsType??"",position:"sticky",info:""}}),setTimeout(()=>{N(""),t()},3e3))}catch{i("Network error")}finally{S(!1)}},[d,x,_,h,e,t,a,v]);return(0,r.jsxs)("div",{className:"flex flex-col gap-[12px]",children:[(0,r.jsxs)("div",{className:"flex flex-col gap-[8px]",children:[e.title&&(0,r.jsx)("h2",{className:"text-[24px] font-[700] leading-[1.2] text-[#080a0f]",children:e.title}),e.desc&&(0,r.jsx)(n.Text,{className:"text-[16px] text-[#1e2024]",html:e.desc})]}),(0,r.jsxs)("div",{className:"flex flex-col gap-[16px]",children:[(0,r.jsx)("input",{className:(0,c.classNames)("h-[46px] w-full border px-[14px] text-[16px] outline-none placeholder:text-[#999]",p?"border-[#f84d4f]":"border-[#d8d8d8]",L?"rounded-[4px]":"rounded-none"),placeholder:e.placeholder,value:d,onChange:l=>{i(""),C(l.target.value.trim())}}),(0,r.jsxs)("div",{className:"flex w-full items-start gap-[8px]",children:[(0,r.jsx)(n.Checkbox,{checked:x,onCheckedChange:()=>y(l=>!l),className:"mt-[2px] border-[#1d1d1f]"}),(0,r.jsx)("label",{className:"cursor-pointer text-left text-[14px] text-[#1e2024] [&_a]:underline",onClick:()=>y(l=>!l),dangerouslySetInnerHTML:{__html:e.policy??""}})]}),(p||b)&&(0,r.jsx)("div",{className:(0,c.classNames)("text-[14px] font-[700]",p&&"text-[#f84d4f]",b&&"text-[#52c41a]"),children:(0,r.jsx)(n.Text,{html:b||p})}),(0,r.jsx)(n.Button,{className:"w-full",loading:O,onClick:A,children:e.buttonLabel??"Subscribe"})]})]})}
2
2
  //# sourceMappingURL=SubscribeEmailPanel.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../../../src/components/memberPopup/panels/EarnCredits/SubscribeEmailPanel.tsx"],
4
- "sourcesContent": ["import { useCallback, useEffect, useState } from 'react'\nimport { Button, Checkbox, Text } from '@anker-in/headless-ui'\nimport { gaTrack, classNames as cn, useHeadlessContext } from '../../../../lib'\nimport Cookies from 'js-cookie'\nimport { parse } from 'query-string'\nimport { emailValidate } from '../../../credits/context/utils'\nimport { useMemberPopupContext } from '../../context/provider'\nimport type { SubscribeModalCopy } from '../../type'\nimport { ROUNDED_BRANDS } from '../../../../constants'\n\ntype Props = {\n copy: SubscribeModalCopy\n email?: string\n onClose: () => void\n}\n\nfunction getAdCookie() {\n if (typeof window === 'undefined') return { register_source: '' }\n const { search, href } = window.location\n const query = parse(search)\n return {\n fbuy_ref_code: Cookies.get('fbuy_ref_code'),\n ref: Cookies.get('ref_ads'),\n inviter_code: query.ic ?? query.inviter_code ?? Cookies.get('inviter_code'),\n register_source: query.redirect ?? Cookies.get('reg_source') ?? href,\n }\n}\n\nexport default function SubscribeEmailPanel({ copy, email: initialEmail, onClose }: Props) {\n const { alpcConfig, setIsSubscribeSuccess, fetchCreditInfo, profile } = useMemberPopupContext()\n const { brand, locale } = alpcConfig\n const { brand: headlessBrand } = useHeadlessContext()\n const rounded = ROUNDED_BRANDS.includes(headlessBrand)\n const [policy, setPolicy] = useState(copy.policyDefaultChecked ?? false)\n const [email, setEmail] = useState(initialEmail ?? '')\n const [errorMessage, setErrorMessage] = useState('')\n const [successMessage, setSuccessMessage] = useState('')\n const [loading, setLoading] = useState(false)\n\n useEffect(() => {\n if (initialEmail) setEmail(initialEmail)\n }, [initialEmail])\n\n const handleSubmit = useCallback(async () => {\n setErrorMessage('')\n if (!email) return setErrorMessage('Please fill in your email')\n if (!emailValidate(email)) return setErrorMessage('Invalid email address')\n if (!policy) return setErrorMessage('Please agree to the policy')\n\n setLoading(true)\n const { register_source } = getAdCookie()\n try {\n const response = await fetch('/api/multipass/subscribe/subscribe_emails', {\n method: 'POST',\n credentials: 'include',\n headers: { 'Content-Type': 'application/json', 'current-language': locale },\n body: JSON.stringify({\n email,\n register_source,\n brand,\n deals_type: copy.dealsType ?? 'vip_subscribe',\n }),\n })\n const result = await response.json()\n if (!result.errors) {\n setSuccessMessage(copy.successTips ?? 'Subscribed successfully!')\n setIsSubscribeSuccess(true)\n if (profile?.user_id) setTimeout(() => fetchCreditInfo(profile.user_id), 3000)\n gaTrack({\n event: 'ga4Event',\n event_name: 'subscribe',\n event_parameters: {\n page_group: copy.dealsType ?? '',\n position: 'sticky',\n info: '',\n },\n })\n setTimeout(() => {\n setSuccessMessage('')\n onClose()\n }, 3000)\n } else {\n setErrorMessage(result.errors ?? 'Error occurred')\n }\n } catch {\n setErrorMessage('Network error')\n } finally {\n setLoading(false)\n }\n }, [email, policy, locale, brand, copy, onClose, setIsSubscribeSuccess])\n\n return (\n <div className=\"flex flex-col gap-[12px]\">\n <div className=\"flex flex-col gap-[8px]\">\n {copy.title && <h2 className=\"text-[24px] font-[700] leading-[1.2] text-[#080a0f]\">{copy.title}</h2>}\n {copy.desc && <Text className=\"text-[16px] text-[#1e2024]\" html={copy.desc} />}\n </div>\n\n <div className=\"flex flex-col gap-[16px]\">\n <input\n className={cn(\n 'h-[46px] w-full border px-[14px] text-[16px] outline-none placeholder:text-[#999]',\n errorMessage ? 'border-[#f84d4f]' : 'border-[#d8d8d8]',\n rounded ? 'rounded-[4px]' : 'rounded-none'\n )}\n placeholder={copy.placeholder}\n value={email}\n onChange={e => {\n setErrorMessage('')\n setEmail(e.target.value.trim())\n }}\n />\n\n <div className=\"flex w-full items-start gap-[8px]\">\n <Checkbox checked={policy} onCheckedChange={() => setPolicy(v => !v)} className=\"mt-[2px] border-[#1d1d1f]\" />\n <label\n className=\"cursor-pointer text-left text-[14px] text-[#1e2024] [&_a]:underline\"\n onClick={() => setPolicy(v => !v)}\n dangerouslySetInnerHTML={{ __html: copy.policy ?? '' }}\n />\n </div>\n\n {(errorMessage || successMessage) && (\n <div\n className={cn(\n 'text-[14px] font-[700]',\n errorMessage && 'text-[#f84d4f]',\n successMessage && 'text-[#52c41a]'\n )}\n >\n <Text html={successMessage || errorMessage} />\n </div>\n )}\n\n <Button className=\"w-full\" loading={loading} onClick={handleSubmit}>\n {copy.buttonLabel ?? 'Subscribe'}\n </Button>\n </div>\n </div>\n )\n}\n"],
5
- "mappings": "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",
6
- "names": ["SubscribeEmailPanel_exports", "__export", "SubscribeEmailPanel", "__toCommonJS", "import_jsx_runtime", "import_react", "import_headless_ui", "import_lib", "import_js_cookie", "import_query_string", "import_utils", "import_provider", "import_constants", "getAdCookie", "search", "href", "query", "Cookies", "copy", "initialEmail", "onClose", "alpcConfig", "setIsSubscribeSuccess", "fetchCreditInfo", "profile", "brand", "locale", "headlessBrand", "rounded", "policy", "setPolicy", "email", "setEmail", "errorMessage", "setErrorMessage", "successMessage", "setSuccessMessage", "loading", "setLoading", "handleSubmit", "register_source", "result", "cn", "e", "v"]
4
+ "sourcesContent": ["import { useCallback, useEffect, useState } from 'react'\nimport { Button, Checkbox, Text } from '@anker-in/headless-ui'\nimport { gaTrack, classNames as cn, useHeadlessContext } from '../../../../lib'\nimport Cookies from 'js-cookie'\nimport { parse } from 'query-string'\nimport { emailValidate } from '../../../credits/context/utils'\nimport { useMemberPopupContext } from '../../context/provider'\nimport type { SubscribeModalCopy } from '../../type'\nimport { ROUNDED_BRANDS } from '../../../../constants'\n\ntype Props = {\n copy: SubscribeModalCopy\n email?: string\n onClose: () => void\n}\n\nfunction getAdCookie() {\n if (typeof window === 'undefined') return { register_source: '' }\n const { search, href } = window.location\n const query = parse(search)\n return {\n fbuy_ref_code: Cookies.get('fbuy_ref_code'),\n ref: Cookies.get('ref_ads'),\n inviter_code: query.ic ?? query.inviter_code ?? Cookies.get('inviter_code'),\n register_source: query.redirect ?? Cookies.get('reg_source') ?? href,\n }\n}\n\nexport default function SubscribeEmailPanel({ copy, email: initialEmail, onClose }: Props) {\n const { alpcConfig, setIsSubscribeSuccess, fetchCreditInfo, profile } = useMemberPopupContext()\n const { brand, locale, apiBaseUrl } = alpcConfig\n const { brand: headlessBrand } = useHeadlessContext()\n const rounded = ROUNDED_BRANDS.includes(headlessBrand)\n const [policy, setPolicy] = useState(copy.policyDefaultChecked ?? false)\n const [email, setEmail] = useState(initialEmail ?? '')\n const [errorMessage, setErrorMessage] = useState('')\n const [successMessage, setSuccessMessage] = useState('')\n const [loading, setLoading] = useState(false)\n\n useEffect(() => {\n if (initialEmail) setEmail(initialEmail)\n }, [initialEmail])\n\n const handleSubmit = useCallback(async () => {\n setErrorMessage('')\n if (!email) return setErrorMessage('Please fill in your email')\n if (!emailValidate(email)) return setErrorMessage('Invalid email address')\n if (!policy) return setErrorMessage('Please agree to the policy')\n\n setLoading(true)\n const { register_source } = getAdCookie()\n try {\n const response = await fetch(`${apiBaseUrl || ''}/api/multipass/subscribe/subscribe_emails`, {\n method: 'POST',\n credentials: 'include',\n headers: { 'Content-Type': 'application/json', 'current-language': locale },\n body: JSON.stringify({\n email,\n register_source,\n brand,\n deals_type: copy.dealsType ?? 'vip_subscribe',\n }),\n })\n const result = await response.json()\n if (!result.errors) {\n setSuccessMessage(copy.successTips ?? 'Subscribed successfully!')\n setIsSubscribeSuccess(true)\n if (profile?.user_id) setTimeout(() => fetchCreditInfo(profile.user_id), 3000)\n gaTrack({\n event: 'ga4Event',\n event_name: 'subscribe',\n event_parameters: {\n page_group: copy.dealsType ?? '',\n position: 'sticky',\n info: '',\n },\n })\n setTimeout(() => {\n setSuccessMessage('')\n onClose()\n }, 3000)\n } else {\n setErrorMessage(result.errors ?? 'Error occurred')\n }\n } catch {\n setErrorMessage('Network error')\n } finally {\n setLoading(false)\n }\n }, [email, policy, locale, brand, copy, onClose, setIsSubscribeSuccess, apiBaseUrl])\n\n return (\n <div className=\"flex flex-col gap-[12px]\">\n <div className=\"flex flex-col gap-[8px]\">\n {copy.title && <h2 className=\"text-[24px] font-[700] leading-[1.2] text-[#080a0f]\">{copy.title}</h2>}\n {copy.desc && <Text className=\"text-[16px] text-[#1e2024]\" html={copy.desc} />}\n </div>\n\n <div className=\"flex flex-col gap-[16px]\">\n <input\n className={cn(\n 'h-[46px] w-full border px-[14px] text-[16px] outline-none placeholder:text-[#999]',\n errorMessage ? 'border-[#f84d4f]' : 'border-[#d8d8d8]',\n rounded ? 'rounded-[4px]' : 'rounded-none'\n )}\n placeholder={copy.placeholder}\n value={email}\n onChange={e => {\n setErrorMessage('')\n setEmail(e.target.value.trim())\n }}\n />\n\n <div className=\"flex w-full items-start gap-[8px]\">\n <Checkbox checked={policy} onCheckedChange={() => setPolicy(v => !v)} className=\"mt-[2px] border-[#1d1d1f]\" />\n <label\n className=\"cursor-pointer text-left text-[14px] text-[#1e2024] [&_a]:underline\"\n onClick={() => setPolicy(v => !v)}\n dangerouslySetInnerHTML={{ __html: copy.policy ?? '' }}\n />\n </div>\n\n {(errorMessage || successMessage) && (\n <div\n className={cn(\n 'text-[14px] font-[700]',\n errorMessage && 'text-[#f84d4f]',\n successMessage && 'text-[#52c41a]'\n )}\n >\n <Text html={successMessage || errorMessage} />\n </div>\n )}\n\n <Button className=\"w-full\" loading={loading} onClick={handleSubmit}>\n {copy.buttonLabel ?? 'Subscribe'}\n </Button>\n </div>\n </div>\n )\n}\n"],
5
+ "mappings": "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",
6
+ "names": ["SubscribeEmailPanel_exports", "__export", "SubscribeEmailPanel", "__toCommonJS", "import_jsx_runtime", "import_react", "import_headless_ui", "import_lib", "import_js_cookie", "import_query_string", "import_utils", "import_provider", "import_constants", "getAdCookie", "search", "href", "query", "Cookies", "copy", "initialEmail", "onClose", "alpcConfig", "setIsSubscribeSuccess", "fetchCreditInfo", "profile", "brand", "locale", "apiBaseUrl", "headlessBrand", "rounded", "policy", "setPolicy", "email", "setEmail", "errorMessage", "setErrorMessage", "successMessage", "setSuccessMessage", "loading", "setLoading", "handleSubmit", "register_source", "result", "cn", "e", "v"]
7
7
  }
@@ -1,2 +1,2 @@
1
- "use strict";var l=Object.create;var n=Object.defineProperty;var m=Object.getOwnPropertyDescriptor;var g=Object.getOwnPropertyNames;var p=Object.getPrototypeOf,f=Object.prototype.hasOwnProperty;var y=(t,o)=>{for(var a in o)n(t,a,{get:o[a],enumerable:!0})},i=(t,o,a,r)=>{if(o&&typeof o=="object"||typeof o=="function")for(let e of g(o))!f.call(t,e)&&e!==a&&n(t,e,{get:()=>o[e],enumerable:!(r=m(o,e))||r.enumerable});return t};var R=(t,o,a)=>(a=t!=null?l(p(t)):{},i(o||!t||!t.__esModule?n(a,"default",{value:t,enumerable:!0}):a,t)),S=t=>i(n({},"__esModule",{value:!0}),t);var h={};y(h,{useEmailValidation:()=>_});module.exports=S(h);var s=R(require("swr/mutation")),c=require("../../context"),u=require("../../utils");const _=(t,o)=>{const{locale:a}=(0,c.useHeadlessContext)();return(0,s.default)("emailValidation",(r,{arg:{token:e,code:d}})=>(0,u.fetcher)({url:"/api/multipass/account/users/email_validation",baseUrl:o,method:"POST",body:{activation_code:e,verify_code:d},action:"account",needRecaptcha:!0,locale:a}),t)};
1
+ "use strict";var l=Object.create;var e=Object.defineProperty;var m=Object.getOwnPropertyDescriptor;var g=Object.getOwnPropertyNames;var p=Object.getPrototypeOf,f=Object.prototype.hasOwnProperty;var y=(t,o)=>{for(var n in o)e(t,n,{get:o[n],enumerable:!0})},r=(t,o,n,i)=>{if(o&&typeof o=="object"||typeof o=="function")for(let a of g(o))!f.call(t,a)&&a!==n&&e(t,a,{get:()=>o[a],enumerable:!(i=m(o,a))||i.enumerable});return t};var R=(t,o,n)=>(n=t!=null?l(p(t)):{},r(o||!t||!t.__esModule?e(n,"default",{value:t,enumerable:!0}):n,t)),S=t=>r(e({},"__esModule",{value:!0}),t);var h={};y(h,{useEmailValidation:()=>_});module.exports=S(h);var s=R(require("swr/mutation")),c=require("../../context"),u=require("../../utils");const _=(t,o)=>{const{locale:n}=(0,c.useHeadlessContext)();return(0,s.default)("emailValidation",(i,{arg:{token:a,code:d}})=>(0,u.fetcher)({url:`${o||""}/api/multipass/account/users/email_validation`,method:"POST",body:{activation_code:a,verify_code:d},action:"account",needRecaptcha:!0,locale:n}),t)};
2
2
  //# sourceMappingURL=useEmailValidation.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../../src/lib/registration/hooks/useEmailValidation.ts"],
4
- "sourcesContent": ["import useSWRMutation, { SWRMutationConfiguration } from 'swr/mutation'\nimport { useHeadlessContext } from '../../context'\nimport { fetcher } from '../../utils'\n\nexport const useEmailValidation = (\n config?: SWRMutationConfiguration<\n any,\n { type: 'responseError'; data: any; response: any },\n string,\n { token: string; code: string }\n >,\n apiBaseUrl?: string\n) => {\n const { locale } = useHeadlessContext()\n return useSWRMutation(\n 'emailValidation',\n (_, { arg: { token, code } }: { arg: { token: string; code: string } }) => {\n return fetcher({\n url: `/api/multipass/account/users/email_validation`,\n baseUrl: apiBaseUrl,\n method: 'POST',\n body: { activation_code: token, verify_code: code },\n action: 'account',\n needRecaptcha: true,\n locale,\n })\n },\n config\n )\n}\n"],
5
- "mappings": "0jBAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,wBAAAE,IAAA,eAAAC,EAAAH,GAAA,IAAAI,EAAyD,2BACzDC,EAAmC,yBACnCC,EAAwB,uBAEjB,MAAMJ,EAAqB,CAChCK,EAMAC,IACG,CACH,KAAM,CAAE,OAAAC,CAAO,KAAI,sBAAmB,EACtC,SAAO,EAAAC,SACL,kBACA,CAACC,EAAG,CAAE,IAAK,CAAE,MAAAC,EAAO,KAAAC,CAAK,CAAE,OAClB,WAAQ,CACb,IAAK,gDACL,QAASL,EACT,OAAQ,OACR,KAAM,CAAE,gBAAiBI,EAAO,YAAaC,CAAK,EAClD,OAAQ,UACR,cAAe,GACf,OAAAJ,CACF,CAAC,EAEHF,CACF,CACF",
4
+ "sourcesContent": ["import useSWRMutation, { SWRMutationConfiguration } from 'swr/mutation'\nimport { useHeadlessContext } from '../../context'\nimport { fetcher } from '../../utils'\n\nexport const useEmailValidation = (\n config?: SWRMutationConfiguration<\n any,\n { type: 'responseError'; data: any; response: any },\n string,\n { token: string; code: string }\n >,\n apiBaseUrl?: string\n) => {\n const { locale } = useHeadlessContext()\n return useSWRMutation(\n 'emailValidation',\n (_, { arg: { token, code } }: { arg: { token: string; code: string } }) => {\n return fetcher({\n url: `${apiBaseUrl || ''}/api/multipass/account/users/email_validation`,\n method: 'POST',\n body: { activation_code: token, verify_code: code },\n action: 'account',\n needRecaptcha: true,\n locale,\n })\n },\n config\n )\n}\n"],
5
+ "mappings": "0jBAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,wBAAAE,IAAA,eAAAC,EAAAH,GAAA,IAAAI,EAAyD,2BACzDC,EAAmC,yBACnCC,EAAwB,uBAEjB,MAAMJ,EAAqB,CAChCK,EAMAC,IACG,CACH,KAAM,CAAE,OAAAC,CAAO,KAAI,sBAAmB,EACtC,SAAO,EAAAC,SACL,kBACA,CAACC,EAAG,CAAE,IAAK,CAAE,MAAAC,EAAO,KAAAC,CAAK,CAAE,OAClB,WAAQ,CACb,IAAK,GAAGL,GAAc,EAAE,gDACxB,OAAQ,OACR,KAAM,CAAE,gBAAiBI,EAAO,YAAaC,CAAK,EAClD,OAAQ,UACR,cAAe,GACf,OAAAJ,CACF,CAAC,EAEHF,CACF,CACF",
6
6
  "names": ["useEmailValidation_exports", "__export", "useEmailValidation", "__toCommonJS", "import_mutation", "import_context", "import_utils", "config", "apiBaseUrl", "locale", "useSWRMutation", "_", "token", "code"]
7
7
  }
@@ -1,2 +1,2 @@
1
- "use strict";var m=Object.create;var i=Object.defineProperty;var c=Object.getOwnPropertyDescriptor;var d=Object.getOwnPropertyNames;var y=Object.getPrototypeOf,R=Object.prototype.hasOwnProperty;var f=(a,e)=>{for(var t in e)i(a,t,{get:e[t],enumerable:!0})},s=(a,e,t,o)=>{if(e&&typeof e=="object"||typeof e=="function")for(let n of d(e))!R.call(a,n)&&n!==t&&i(a,n,{get:()=>e[n],enumerable:!(o=c(e,n))||o.enumerable});return a};var g=(a,e,t)=>(t=a!=null?m(y(a)):{},s(e||!a||!a.__esModule?i(t,"default",{value:a,enumerable:!0}):t,a)),S=a=>s(i({},"__esModule",{value:!0}),a);var v={};f(v,{useSendEmailValidation:()=>h});module.exports=S(v);var r=g(require("swr/mutation")),p=require("../../context"),u=require("../../utils");function h(a){const{appName:e,locale:t}=(0,p.useHeadlessContext)();return(0,r.default)("send-email-validation",(o,{arg:{email:n,...l}})=>(0,u.fetcher)({locale:t,url:"/api/multipass/account/users/send_validation_email",baseUrl:a,method:"POST",body:{email:n,app:e,...l},needRecaptcha:!0,action:"verifyAccount"}))}
1
+ "use strict";var l=Object.create;var i=Object.defineProperty;var c=Object.getOwnPropertyDescriptor;var d=Object.getOwnPropertyNames;var y=Object.getPrototypeOf,R=Object.prototype.hasOwnProperty;var f=(a,e)=>{for(var t in e)i(a,t,{get:e[t],enumerable:!0})},s=(a,e,t,o)=>{if(e&&typeof e=="object"||typeof e=="function")for(let n of d(e))!R.call(a,n)&&n!==t&&i(a,n,{get:()=>e[n],enumerable:!(o=c(e,n))||o.enumerable});return a};var g=(a,e,t)=>(t=a!=null?l(y(a)):{},s(e||!a||!a.__esModule?i(t,"default",{value:a,enumerable:!0}):t,a)),S=a=>s(i({},"__esModule",{value:!0}),a);var v={};f(v,{useSendEmailValidation:()=>h});module.exports=S(v);var r=g(require("swr/mutation")),p=require("../../context"),u=require("../../utils");function h(a){const{appName:e,locale:t}=(0,p.useHeadlessContext)();return(0,r.default)("send-email-validation",(o,{arg:{email:n,...m}})=>(0,u.fetcher)({locale:t,url:`${a||""}/api/multipass/account/users/send_validation_email`,method:"POST",body:{email:n,app:e,...m},needRecaptcha:!0,action:"verifyAccount"}))}
2
2
  //# sourceMappingURL=useSendEmailValidation.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../../src/lib/registration/hooks/useSendEmailValidation.ts"],
4
- "sourcesContent": ["import useSWRMutation, { type SWRMutationResponse } from 'swr/mutation'\nimport { useHeadlessContext } from '../../context'\nimport { fetcher } from '../../utils'\n\n// data \u53C2\u6570\u4F1A\u88AB stringify \u540E\u653E\u5165\u5230\u90AE\u4EF6\u94FE\u63A5\u53C2\u6570\u4E2D\nexport type RequestData = { email: string; data: any }\n\nexport function useSendEmailValidation(apiBaseUrl?: string): SWRMutationResponse<any, any, string, { email: string } & any> {\n const { appName, locale } = useHeadlessContext()\n\n return useSWRMutation('send-email-validation', (_, { arg: { email, ...rest } }: { arg: RequestData }) =>\n fetcher({\n locale,\n url: '/api/multipass/account/users/send_validation_email',\n baseUrl: apiBaseUrl,\n method: 'POST',\n body: { email: email, app: appName, ...rest },\n needRecaptcha: true,\n action: 'verifyAccount',\n })\n )\n}\n"],
5
- "mappings": "0jBAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,4BAAAE,IAAA,eAAAC,EAAAH,GAAA,IAAAI,EAAyD,2BACzDC,EAAmC,yBACnCC,EAAwB,uBAKjB,SAASJ,EAAuBK,EAAqF,CAC1H,KAAM,CAAE,QAAAC,EAAS,OAAAC,CAAO,KAAI,sBAAmB,EAE/C,SAAO,EAAAC,SAAe,wBAAyB,CAACC,EAAG,CAAE,IAAK,CAAE,MAAAC,EAAO,GAAGC,CAAK,CAAE,OAC3E,WAAQ,CACN,OAAAJ,EACA,IAAK,qDACL,QAASF,EACT,OAAQ,OACR,KAAM,CAAE,MAAOK,EAAO,IAAKJ,EAAS,GAAGK,CAAK,EAC5C,cAAe,GACf,OAAQ,eACV,CAAC,CACH,CACF",
4
+ "sourcesContent": ["import useSWRMutation, { type SWRMutationResponse } from 'swr/mutation'\nimport { useHeadlessContext } from '../../context'\nimport { fetcher } from '../../utils'\n\n// data \u53C2\u6570\u4F1A\u88AB stringify \u540E\u653E\u5165\u5230\u90AE\u4EF6\u94FE\u63A5\u53C2\u6570\u4E2D\nexport type RequestData = { email: string; data: any }\n\nexport function useSendEmailValidation(apiBaseUrl?: string): SWRMutationResponse<any, any, string, { email: string } & any> {\n const { appName, locale } = useHeadlessContext()\n\n return useSWRMutation('send-email-validation', (_, { arg: { email, ...rest } }: { arg: RequestData }) =>\n fetcher({\n locale,\n url: `${apiBaseUrl || ''}/api/multipass/account/users/send_validation_email`,\n method: 'POST',\n body: { email: email, app: appName, ...rest },\n needRecaptcha: true,\n action: 'verifyAccount',\n })\n )\n}\n"],
5
+ "mappings": "0jBAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,4BAAAE,IAAA,eAAAC,EAAAH,GAAA,IAAAI,EAAyD,2BACzDC,EAAmC,yBACnCC,EAAwB,uBAKjB,SAASJ,EAAuBK,EAAqF,CAC1H,KAAM,CAAE,QAAAC,EAAS,OAAAC,CAAO,KAAI,sBAAmB,EAE/C,SAAO,EAAAC,SAAe,wBAAyB,CAACC,EAAG,CAAE,IAAK,CAAE,MAAAC,EAAO,GAAGC,CAAK,CAAE,OAC3E,WAAQ,CACN,OAAAJ,EACA,IAAK,GAAGF,GAAc,EAAE,qDACxB,OAAQ,OACR,KAAM,CAAE,MAAOK,EAAO,IAAKJ,EAAS,GAAGK,CAAK,EAC5C,cAAe,GACf,OAAQ,eACV,CAAC,CACH,CACF",
6
6
  "names": ["useSendEmailValidation_exports", "__export", "useSendEmailValidation", "__toCommonJS", "import_mutation", "import_context", "import_utils", "apiBaseUrl", "appName", "locale", "useSWRMutation", "_", "email", "rest"]
7
7
  }
@@ -1 +1 @@
1
- export declare const fetcher: ({ locale, url, baseUrl, method, headers, repeatKey, body, type, timeout, }: any) => Promise<any>;
1
+ export declare const fetcher: ({ locale, url, method, headers, repeatKey, body, type, timeout, }: any) => Promise<any>;
@@ -1,2 +1,2 @@
1
- "use strict";var c=Object.defineProperty;var p=Object.getOwnPropertyDescriptor;var h=Object.getOwnPropertyNames;var u=Object.prototype.hasOwnProperty;var y=(n,e)=>{for(var a in e)c(n,a,{get:e[a],enumerable:!0})},T=(n,e,a,t)=>{if(e&&typeof e=="object"||typeof e=="function")for(let r of h(e))!u.call(n,r)&&r!==a&&c(n,r,{get:()=>e[r],enumerable:!(t=p(e,r))||t.enumerable});return n};var b=n=>T(c({},"__esModule",{value:!0}),n);var F={};y(F,{fetcher:()=>w});module.exports=b(F);var d=require("./fetchResponse");const w=async({locale:n="en",url:e,baseUrl:a,method:t="POST",headers:r={},repeatKey:O,body:l,type:f,timeout:o=9e4})=>{let s="";f==="uploadFile"?s=l:s=l?JSON.stringify(l):"";const i=new AbortController;o&&setTimeout(()=>i.abort(),o);const g=await fetch(`${a||""}${e}`,{method:t,mode:"cors",credentials:"include",headers:{"current-language":n,...r},...o&&{signal:i.signal},...t!=="GET"&&{body:s}});return(0,d.handleFetchResponse)(g)};
1
+ "use strict";var c=Object.defineProperty;var p=Object.getOwnPropertyDescriptor;var h=Object.getOwnPropertyNames;var u=Object.prototype.hasOwnProperty;var y=(n,e)=>{for(var r in e)c(n,r,{get:e[r],enumerable:!0})},T=(n,e,r,t)=>{if(e&&typeof e=="object"||typeof e=="function")for(let a of h(e))!u.call(n,a)&&a!==r&&c(n,a,{get:()=>e[a],enumerable:!(t=p(e,a))||t.enumerable});return n};var b=n=>T(c({},"__esModule",{value:!0}),n);var F={};y(F,{fetcher:()=>w});module.exports=b(F);var d=require("./fetchResponse");const w=async({locale:n="en",url:e,method:r="POST",headers:t={},repeatKey:a,body:l,type:f,timeout:o=9e4})=>{let s="";f==="uploadFile"?s=l:s=l?JSON.stringify(l):"";const i=new AbortController;o&&setTimeout(()=>i.abort(),o);const g=await fetch(e,{method:r,mode:"cors",credentials:"include",headers:{"current-language":n,...t},...o&&{signal:i.signal},...r!=="GET"&&{body:s}});return(0,d.handleFetchResponse)(g)};
2
2
  //# sourceMappingURL=fetcher.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../../src/lib/utils/fetcher/fetcher.ts"],
4
- "sourcesContent": ["import { handleFetchResponse } from './fetchResponse'\n\nexport const fetcher = async ({\n locale = 'en',\n url,\n baseUrl,\n method = 'POST',\n headers = {},\n repeatKey,\n body,\n type,\n timeout = 90000,\n}: any) => {\n // \u6DFB\u52A0\u8C37\u6B4C\u9A8C\u8BC1\n let bodyData = ''\n if (type === 'uploadFile') {\n bodyData = body\n } else {\n bodyData = body ? JSON.stringify(body) : ''\n }\n\n const controller = new AbortController()\n if (timeout) {\n // \u8D85\u65F6\u62A5\u9519\n setTimeout(() => controller.abort(), timeout)\n }\n\n const data = await fetch(`${baseUrl || ''}${url}`, {\n method,\n mode: 'cors',\n credentials: 'include',\n headers: {\n 'current-language': locale,\n ...headers,\n },\n ...(timeout && { signal: controller.signal }),\n ...(method !== 'GET' && { body: bodyData }),\n })\n return handleFetchResponse(data)\n}\n"],
5
- "mappings": "yaAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,aAAAE,IAAA,eAAAC,EAAAH,GAAA,IAAAI,EAAoC,2BAE7B,MAAMF,EAAU,MAAO,CAC5B,OAAAG,EAAS,KACT,IAAAC,EACA,QAAAC,EACA,OAAAC,EAAS,OACT,QAAAC,EAAU,CAAC,EACX,UAAAC,EACA,KAAAC,EACA,KAAAC,EACA,QAAAC,EAAU,GACZ,IAAW,CAET,IAAIC,EAAW,GACXF,IAAS,aACXE,EAAWH,EAEXG,EAAWH,EAAO,KAAK,UAAUA,CAAI,EAAI,GAG3C,MAAMI,EAAa,IAAI,gBACnBF,GAEF,WAAW,IAAME,EAAW,MAAM,EAAGF,CAAO,EAG9C,MAAMG,EAAO,MAAM,MAAM,GAAGT,GAAW,EAAE,GAAGD,CAAG,GAAI,CACjD,OAAAE,EACA,KAAM,OACN,YAAa,UACb,QAAS,CACP,mBAAoBH,EACpB,GAAGI,CACL,EACA,GAAII,GAAW,CAAE,OAAQE,EAAW,MAAO,EAC3C,GAAIP,IAAW,OAAS,CAAE,KAAMM,CAAS,CAC3C,CAAC,EACD,SAAO,uBAAoBE,CAAI,CACjC",
6
- "names": ["fetcher_exports", "__export", "fetcher", "__toCommonJS", "import_fetchResponse", "locale", "url", "baseUrl", "method", "headers", "repeatKey", "body", "type", "timeout", "bodyData", "controller", "data"]
4
+ "sourcesContent": ["import { handleFetchResponse } from './fetchResponse'\n\nexport const fetcher = async ({\n locale = 'en',\n url,\n method = 'POST',\n headers = {},\n repeatKey,\n body,\n type,\n timeout = 90000,\n}: any) => {\n // \u6DFB\u52A0\u8C37\u6B4C\u9A8C\u8BC1\n let bodyData = ''\n if (type === 'uploadFile') {\n bodyData = body\n } else {\n bodyData = body ? JSON.stringify(body) : ''\n }\n\n const controller = new AbortController()\n if (timeout) {\n // \u8D85\u65F6\u62A5\u9519\n setTimeout(() => controller.abort(), timeout)\n }\n\n const data = await fetch(url, {\n method,\n mode: 'cors',\n credentials: 'include',\n headers: {\n 'current-language': locale,\n ...headers,\n },\n ...(timeout && { signal: controller.signal }),\n ...(method !== 'GET' && { body: bodyData }),\n })\n return handleFetchResponse(data)\n}\n"],
5
+ "mappings": "yaAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,aAAAE,IAAA,eAAAC,EAAAH,GAAA,IAAAI,EAAoC,2BAE7B,MAAMF,EAAU,MAAO,CAC5B,OAAAG,EAAS,KACT,IAAAC,EACA,OAAAC,EAAS,OACT,QAAAC,EAAU,CAAC,EACX,UAAAC,EACA,KAAAC,EACA,KAAAC,EACA,QAAAC,EAAU,GACZ,IAAW,CAET,IAAIC,EAAW,GACXF,IAAS,aACXE,EAAWH,EAEXG,EAAWH,EAAO,KAAK,UAAUA,CAAI,EAAI,GAG3C,MAAMI,EAAa,IAAI,gBACnBF,GAEF,WAAW,IAAME,EAAW,MAAM,EAAGF,CAAO,EAG9C,MAAMG,EAAO,MAAM,MAAMT,EAAK,CAC5B,OAAAC,EACA,KAAM,OACN,YAAa,UACb,QAAS,CACP,mBAAoBF,EACpB,GAAGG,CACL,EACA,GAAII,GAAW,CAAE,OAAQE,EAAW,MAAO,EAC3C,GAAIP,IAAW,OAAS,CAAE,KAAMM,CAAS,CAC3C,CAAC,EACD,SAAO,uBAAoBE,CAAI,CACjC",
6
+ "names": ["fetcher_exports", "__export", "fetcher", "__toCommonJS", "import_fetchResponse", "locale", "url", "method", "headers", "repeatKey", "body", "type", "timeout", "bodyData", "controller", "data"]
7
7
  }
@@ -1,2 +1,2 @@
1
- import{useHeadlessContext as C,gaTrack as P}from"../../../lib";import{TaskType as t}from"./type";import{useCreditsContext as g}from"../context/provider";import{useMemo as u}from"react";import v from"../context/hooks/useReceiptUploaded";import{useFirstPurchaseFinished as F}from"../context/hooks/useFirstPurchaseFinished";import{useSubscribed as S}from"../context/hooks/useSubscribed";import{useRegistration as w}from"../../registration";const W=({copy:e,subscribe:c,uploadReceipt:m,gaParameters:n})=>{const{openSignUpPopup:a,gtm:p,profile:o}=g(),{authCodeActivate:l}=w(),s=S(),b=F(),r=v(),{appName:h,passportUrl:k}=C(),d=u(()=>(o?.first_name||o?.last_name)&&o?.phone_number&&o?.dob,[o]);return u(()=>{const i=({buttonName:f,id:L,callback:N})=>{P({event:"ga4Event",event_name:"lp_button",member_active_status:o?.activated?"active":"not active",event_parameters:{page_group:p.pageGroup,position:n?.position||e.title,button_name:f,info:L}}),N()};return{actions:{[t.Activate]:{finished:o?.activated,notLogin:{buttonLabel:e?.joinNow,handleClick:()=>i({buttonName:e?.joinNow,callback:a,id:t.Activate})},notFinished:{buttonLabel:e?.activate,handleClick:()=>i({buttonName:e?.activate,callback:()=>{l.setAutoSendEmail(!0),l.open()},id:t.Activate})},completed:{buttonLabel:e?.completed}},[t.Subscribe]:{finished:s,notLogin:{buttonLabel:e?.joinNow,handleClick:()=>i({buttonName:e?.joinNow,callback:a,id:t.Subscribe})},notFinished:{buttonLabel:e?.subscribeLabel,handleClick:()=>i({buttonName:e?.subscribeLabel,callback:()=>c.openSubscribePopup(),id:t.Subscribe})},completed:{buttonLabel:e?.completed}},[t.CompleteProfile]:{finished:d,notLogin:{buttonLabel:e?.joinNow,handleClick:()=>i({buttonName:e?.joinNow,callback:a,id:t.CompleteProfile})},notFinished:{buttonLabel:e?.completeProfile,link:`${k}/account/profile?app=${h}&redirect=${window.location.href}`,handleClick:()=>i({buttonName:e?.completeProfile,callback:()=>{},id:t.CompleteProfile})},completed:{buttonLabel:e?.completed}},[t.FirstPurchase]:{finished:b,notLogin:{buttonLabel:e?.makeFirstPurchase,handleClick:()=>i({buttonName:e?.makeFirstPurchase,callback:a,id:t.FirstPurchase})},notFinished:{buttonLabel:e?.makeFirstPurchase,link:e?.goShopLink,handleClick:()=>i({buttonName:e?.makeFirstPurchase,callback:()=>{},id:t.FirstPurchase})},completed:{buttonLabel:e?.completed}},[t.UploadReceipt]:{finished:r,notLogin:{buttonLabel:e?.joinNow,handleClick:()=>i({buttonName:e?.joinNow,callback:a,id:t.UploadReceipt})},notFinished:{buttonLabel:e?.uploadReceipt,handleClick:()=>i({buttonName:e?.uploadReceipt,callback:()=>m.openUploadReceiptPopup(),id:t.UploadReceipt})},completed:{buttonLabel:e?.completed}},[t.Shop]:{finished:!1,notLogin:{buttonLabel:e?.joinNow,handleClick:()=>i({buttonName:e?.joinNow,callback:a,id:t.Shop})},notFinished:{buttonLabel:e?.shopNow,link:e?.goShopLink,handleClick:()=>i({buttonName:e?.shopNow,callback:()=>{},id:t.Shop})},completed:{buttonLabel:e?.completed}}}}},[o?.activated,e?.joinNow,e?.activate,e?.completed,e?.subscribe,e?.completeProfile,e?.makeFirstPurchase,e?.uploadReceipt,e?.shopNow,e.title,e?.goShopLink,s,d,b,r,n?.position,a])};export{W as useActions};
1
+ import{useHeadlessContext as v,gaTrack as S}from"../../../lib";import{TaskType as t}from"./type";import{useCreditsContext as w}from"../context/provider";import{useEffect as F,useMemo as r,useState as R}from"react";import j from"../context/hooks/useReceiptUploaded";import{useFirstPurchaseFinished as U}from"../context/hooks/useFirstPurchaseFinished";import{useSubscribed as _}from"../context/hooks/useSubscribed";import{useRegistration as A}from"../../registration";const M=({copy:e,subscribe:f,uploadReceipt:L,gaParameters:b})=>{const{openSignUpPopup:n,gtm:C,profile:o}=w(),{authCodeActivate:c}=A(),u=_(),d=U(),m=j(),{appName:l,passportUrl:p}=v(),[s,N]=R("");F(()=>{N(window.location.href)},[]);const h=r(()=>{const i=new URLSearchParams;l&&i.set("app",l),s&&i.set("redirect",s);const a=i.toString();return`${p}/account/profile${a?`?${a}`:""}`},[p,l,s]),k=r(()=>(o?.first_name||o?.last_name)&&o?.phone_number&&o?.dob,[o]);return r(()=>{const i=({buttonName:a,id:P,callback:g})=>{S({event:"ga4Event",event_name:"lp_button",member_active_status:o?.activated?"active":"not active",event_parameters:{page_group:C.pageGroup,position:b?.position||e.title,button_name:a,info:P}}),g()};return{actions:{[t.Activate]:{finished:o?.activated,notLogin:{buttonLabel:e?.joinNow,handleClick:()=>i({buttonName:e?.joinNow,callback:n,id:t.Activate})},notFinished:{buttonLabel:e?.activate,handleClick:()=>i({buttonName:e?.activate,callback:()=>{c.setAutoSendEmail(!0),c.open()},id:t.Activate})},completed:{buttonLabel:e?.completed}},[t.Subscribe]:{finished:u,notLogin:{buttonLabel:e?.joinNow,handleClick:()=>i({buttonName:e?.joinNow,callback:n,id:t.Subscribe})},notFinished:{buttonLabel:e?.subscribeLabel,handleClick:()=>i({buttonName:e?.subscribeLabel,callback:()=>f.openSubscribePopup(),id:t.Subscribe})},completed:{buttonLabel:e?.completed}},[t.CompleteProfile]:{finished:k,notLogin:{buttonLabel:e?.joinNow,handleClick:()=>i({buttonName:e?.joinNow,callback:n,id:t.CompleteProfile})},notFinished:{buttonLabel:e?.completeProfile,link:h,handleClick:()=>i({buttonName:e?.completeProfile,callback:()=>{},id:t.CompleteProfile})},completed:{buttonLabel:e?.completed}},[t.FirstPurchase]:{finished:d,notLogin:{buttonLabel:e?.makeFirstPurchase,handleClick:()=>i({buttonName:e?.makeFirstPurchase,callback:n,id:t.FirstPurchase})},notFinished:{buttonLabel:e?.makeFirstPurchase,link:e?.goShopLink,handleClick:()=>i({buttonName:e?.makeFirstPurchase,callback:()=>{},id:t.FirstPurchase})},completed:{buttonLabel:e?.completed}},[t.UploadReceipt]:{finished:m,notLogin:{buttonLabel:e?.joinNow,handleClick:()=>i({buttonName:e?.joinNow,callback:n,id:t.UploadReceipt})},notFinished:{buttonLabel:e?.uploadReceipt,handleClick:()=>i({buttonName:e?.uploadReceipt,callback:()=>L.openUploadReceiptPopup(),id:t.UploadReceipt})},completed:{buttonLabel:e?.completed}},[t.Shop]:{finished:!1,notLogin:{buttonLabel:e?.joinNow,handleClick:()=>i({buttonName:e?.joinNow,callback:n,id:t.Shop})},notFinished:{buttonLabel:e?.shopNow,link:e?.goShopLink,handleClick:()=>i({buttonName:e?.shopNow,callback:()=>{},id:t.Shop})},completed:{buttonLabel:e?.completed}}}}},[o?.activated,e?.joinNow,e?.activate,e?.completed,e?.subscribe,e?.completeProfile,e?.makeFirstPurchase,e?.uploadReceipt,e?.shopNow,e.title,e?.goShopLink,u,k,d,m,b?.position,n,h])};export{M as useActions};
2
2
  //# sourceMappingURL=useActions.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../../src/components/credits/creditsWaysToGetCredits/useActions.ts"],
4
- "sourcesContent": ["import { useHeadlessContext, gaTrack } from '../../../lib'\n\nimport { TaskType } from './type'\nimport { useCreditsContext } from '../context/provider'\nimport { useMemo } from 'react'\nimport useReceiptUploaded from '../context/hooks/useReceiptUploaded'\nimport { useFirstPurchaseFinished } from '../context/hooks/useFirstPurchaseFinished'\nimport { useSubscribed } from '../context/hooks/useSubscribed'\nimport type { CreditsWaysToGetCreditsCopy } from './type'\n\nimport { useRegistration } from '../../registration'\n\nexport const useActions = ({\n copy,\n subscribe,\n uploadReceipt,\n gaParameters,\n}: {\n copy: CreditsWaysToGetCreditsCopy\n subscribe: {\n openSubscribePopup: () => void\n isSuccess: boolean\n }\n uploadReceipt: {\n openUploadReceiptPopup: () => void\n isSuccess: boolean\n }\n gaParameters?: {\n position: string\n }\n}) => {\n const { openSignUpPopup, gtm, profile } = useCreditsContext()\n const { authCodeActivate } = useRegistration()\n const isSubscribed = useSubscribed()\n const firstPurchaseFinished = useFirstPurchaseFinished()\n const uploadedReceipt = useReceiptUploaded()\n const { appName, passportUrl } = useHeadlessContext()\n\n const profileCompleted = useMemo(() => {\n return (profile?.first_name || profile?.last_name) && profile?.phone_number && profile?.dob\n }, [profile])\n\n return useMemo(() => {\n const handleClickWithTrack = ({\n buttonName,\n id,\n callback,\n }: {\n buttonName: string\n id?: string\n callback: () => void\n }) => {\n gaTrack({\n event: 'ga4Event',\n event_name: 'lp_button',\n member_active_status: profile?.activated ? 'active' : 'not active',\n event_parameters: {\n page_group: gtm.pageGroup,\n position: gaParameters?.position || copy.title,\n button_name: buttonName,\n info: id,\n },\n })\n callback()\n }\n return {\n actions: {\n [TaskType.Activate]: {\n finished: profile?.activated,\n notLogin: {\n buttonLabel: copy?.joinNow,\n handleClick: () =>\n handleClickWithTrack({ buttonName: copy?.joinNow, callback: openSignUpPopup, id: TaskType.Activate }),\n },\n notFinished: {\n buttonLabel: copy?.activate,\n handleClick: () =>\n handleClickWithTrack({\n buttonName: copy?.activate,\n callback: () => {\n authCodeActivate.setAutoSendEmail(true)\n authCodeActivate.open()\n },\n id: TaskType.Activate,\n }),\n },\n completed: {\n buttonLabel: copy?.completed,\n },\n },\n [TaskType.Subscribe]: {\n finished: isSubscribed,\n notLogin: {\n buttonLabel: copy?.joinNow,\n handleClick: () =>\n handleClickWithTrack({ buttonName: copy?.joinNow, callback: openSignUpPopup, id: TaskType.Subscribe }),\n },\n notFinished: {\n buttonLabel: copy?.subscribeLabel,\n handleClick: () =>\n handleClickWithTrack({\n buttonName: copy?.subscribeLabel,\n callback: () => subscribe.openSubscribePopup(),\n id: TaskType.Subscribe,\n }),\n },\n completed: {\n buttonLabel: copy?.completed,\n },\n },\n [TaskType.CompleteProfile]: {\n finished: profileCompleted,\n notLogin: {\n buttonLabel: copy?.joinNow,\n handleClick: () =>\n handleClickWithTrack({\n buttonName: copy?.joinNow,\n callback: openSignUpPopup,\n id: TaskType.CompleteProfile,\n }),\n },\n notFinished: {\n buttonLabel: copy?.completeProfile,\n link: `${passportUrl}/account/profile?app=${appName}&redirect=${window.location.href}`,\n handleClick: () =>\n handleClickWithTrack({\n buttonName: copy?.completeProfile,\n callback: () => {},\n id: TaskType.CompleteProfile,\n }),\n },\n completed: {\n buttonLabel: copy?.completed,\n },\n },\n [TaskType.FirstPurchase]: {\n finished: firstPurchaseFinished,\n notLogin: {\n buttonLabel: copy?.makeFirstPurchase,\n handleClick: () =>\n handleClickWithTrack({\n buttonName: copy?.makeFirstPurchase,\n callback: openSignUpPopup,\n id: TaskType.FirstPurchase,\n }),\n },\n notFinished: {\n buttonLabel: copy?.makeFirstPurchase,\n link: copy?.goShopLink,\n handleClick: () =>\n handleClickWithTrack({\n buttonName: copy?.makeFirstPurchase,\n callback: () => {},\n id: TaskType.FirstPurchase,\n }),\n },\n completed: {\n buttonLabel: copy?.completed,\n },\n },\n [TaskType.UploadReceipt]: {\n finished: uploadedReceipt,\n notLogin: {\n buttonLabel: copy?.joinNow,\n handleClick: () =>\n handleClickWithTrack({\n buttonName: copy?.joinNow,\n callback: openSignUpPopup,\n id: TaskType.UploadReceipt,\n }),\n },\n notFinished: {\n buttonLabel: copy?.uploadReceipt,\n handleClick: () =>\n handleClickWithTrack({\n buttonName: copy?.uploadReceipt,\n callback: () => uploadReceipt.openUploadReceiptPopup(),\n id: TaskType.UploadReceipt,\n }),\n },\n completed: {\n buttonLabel: copy?.completed,\n },\n },\n [TaskType.Shop]: {\n finished: false,\n notLogin: {\n buttonLabel: copy?.joinNow,\n handleClick: () =>\n handleClickWithTrack({\n buttonName: copy?.joinNow,\n callback: openSignUpPopup,\n id: TaskType.Shop,\n }),\n },\n notFinished: {\n buttonLabel: copy?.shopNow,\n link: copy?.goShopLink,\n handleClick: () =>\n handleClickWithTrack({\n buttonName: copy?.shopNow,\n callback: () => {},\n id: TaskType.Shop,\n }),\n },\n completed: {\n buttonLabel: copy?.completed,\n },\n },\n },\n }\n }, [\n profile?.activated,\n copy?.joinNow,\n copy?.activate,\n copy?.completed,\n copy?.subscribe,\n copy?.completeProfile,\n copy?.makeFirstPurchase,\n copy?.uploadReceipt,\n copy?.shopNow,\n copy.title,\n copy?.goShopLink,\n isSubscribed,\n profileCompleted,\n firstPurchaseFinished,\n uploadedReceipt,\n gaParameters?.position,\n openSignUpPopup,\n ])\n}\n"],
5
- "mappings": "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",
6
- "names": ["useHeadlessContext", "gaTrack", "TaskType", "useCreditsContext", "useMemo", "useReceiptUploaded", "useFirstPurchaseFinished", "useSubscribed", "useRegistration", "useActions", "copy", "subscribe", "uploadReceipt", "gaParameters", "openSignUpPopup", "gtm", "profile", "authCodeActivate", "isSubscribed", "firstPurchaseFinished", "uploadedReceipt", "appName", "passportUrl", "profileCompleted", "handleClickWithTrack", "buttonName", "id", "callback"]
4
+ "sourcesContent": ["import { useHeadlessContext, gaTrack } from '../../../lib'\n\nimport { TaskType } from './type'\nimport { useCreditsContext } from '../context/provider'\nimport { useEffect, useMemo, useState } from 'react'\nimport useReceiptUploaded from '../context/hooks/useReceiptUploaded'\nimport { useFirstPurchaseFinished } from '../context/hooks/useFirstPurchaseFinished'\nimport { useSubscribed } from '../context/hooks/useSubscribed'\nimport type { CreditsWaysToGetCreditsCopy } from './type'\n\nimport { useRegistration } from '../../registration'\n\nexport const useActions = ({\n copy,\n subscribe,\n uploadReceipt,\n gaParameters,\n}: {\n copy: CreditsWaysToGetCreditsCopy\n subscribe: {\n openSubscribePopup: () => void\n isSuccess: boolean\n }\n uploadReceipt: {\n openUploadReceiptPopup: () => void\n isSuccess: boolean\n }\n gaParameters?: {\n position: string\n }\n}) => {\n const { openSignUpPopup, gtm, profile } = useCreditsContext()\n const { authCodeActivate } = useRegistration()\n const isSubscribed = useSubscribed()\n const firstPurchaseFinished = useFirstPurchaseFinished()\n const uploadedReceipt = useReceiptUploaded()\n const { appName, passportUrl } = useHeadlessContext()\n\n // window \u5728 SSR\uFF08Next.js \u670D\u52A1\u7AEF\u6E32\u67D3\uFF09\u4E0B\u4E0D\u5B58\u5728\uFF0C\u76F4\u63A5\u8BFB window.location.href \u4F1A\u5BFC\u81F4\n // \u670D\u52A1\u7AEF\u62A5 \"window is not defined\"\uFF0C\u4E14\u670D\u52A1\u7AEF/\u5BA2\u6237\u7AEF\u9996\u5E27\u7ED3\u679C\u4E0D\u4E00\u81F4\u5F15\u53D1 hydration mismatch\u3002\n // \u8FD9\u91CC\u7EDF\u4E00\u5EF6\u8FDF\u5230\u5BA2\u6237\u7AEF\u6302\u8F7D\u540E\u518D\u8BFB\u53D6\uFF0C\u4FDD\u8BC1\u4E24\u7AEF\u9996\u5E27\u6E32\u67D3\u7ED3\u679C\u4E00\u81F4\u3002\n const [clientUrl, setClientUrl] = useState('')\n\n useEffect(() => {\n setClientUrl(window.location.href)\n }, [])\n\n // passport \u5B8C\u6210\u8D44\u6599\u540E\u56DE\u8DF3\u5230\u5F53\u524D\u9875\u9762\uFF0C\u9700\u6574\u4F53 encode\uFF0C\u5426\u5219 href \u91CC\u7684 ? / & / # \u4F1A\u6C61\u67D3 query\n const completeProfileLink = useMemo(() => {\n const query = new URLSearchParams()\n if (appName) {\n query.set('app', appName)\n }\n if (clientUrl) {\n query.set('redirect', clientUrl)\n }\n const search = query.toString()\n return `${passportUrl}/account/profile${search ? `?${search}` : ''}`\n }, [passportUrl, appName, clientUrl])\n\n const profileCompleted = useMemo(() => {\n return (profile?.first_name || profile?.last_name) && profile?.phone_number && profile?.dob\n }, [profile])\n\n return useMemo(() => {\n const handleClickWithTrack = ({\n buttonName,\n id,\n callback,\n }: {\n buttonName: string\n id?: string\n callback: () => void\n }) => {\n gaTrack({\n event: 'ga4Event',\n event_name: 'lp_button',\n member_active_status: profile?.activated ? 'active' : 'not active',\n event_parameters: {\n page_group: gtm.pageGroup,\n position: gaParameters?.position || copy.title,\n button_name: buttonName,\n info: id,\n },\n })\n callback()\n }\n return {\n actions: {\n [TaskType.Activate]: {\n finished: profile?.activated,\n notLogin: {\n buttonLabel: copy?.joinNow,\n handleClick: () =>\n handleClickWithTrack({ buttonName: copy?.joinNow, callback: openSignUpPopup, id: TaskType.Activate }),\n },\n notFinished: {\n buttonLabel: copy?.activate,\n handleClick: () =>\n handleClickWithTrack({\n buttonName: copy?.activate,\n callback: () => {\n authCodeActivate.setAutoSendEmail(true)\n authCodeActivate.open()\n },\n id: TaskType.Activate,\n }),\n },\n completed: {\n buttonLabel: copy?.completed,\n },\n },\n [TaskType.Subscribe]: {\n finished: isSubscribed,\n notLogin: {\n buttonLabel: copy?.joinNow,\n handleClick: () =>\n handleClickWithTrack({ buttonName: copy?.joinNow, callback: openSignUpPopup, id: TaskType.Subscribe }),\n },\n notFinished: {\n buttonLabel: copy?.subscribeLabel,\n handleClick: () =>\n handleClickWithTrack({\n buttonName: copy?.subscribeLabel,\n callback: () => subscribe.openSubscribePopup(),\n id: TaskType.Subscribe,\n }),\n },\n completed: {\n buttonLabel: copy?.completed,\n },\n },\n [TaskType.CompleteProfile]: {\n finished: profileCompleted,\n notLogin: {\n buttonLabel: copy?.joinNow,\n handleClick: () =>\n handleClickWithTrack({\n buttonName: copy?.joinNow,\n callback: openSignUpPopup,\n id: TaskType.CompleteProfile,\n }),\n },\n notFinished: {\n buttonLabel: copy?.completeProfile,\n link: completeProfileLink,\n handleClick: () =>\n handleClickWithTrack({\n buttonName: copy?.completeProfile,\n callback: () => {},\n id: TaskType.CompleteProfile,\n }),\n },\n completed: {\n buttonLabel: copy?.completed,\n },\n },\n [TaskType.FirstPurchase]: {\n finished: firstPurchaseFinished,\n notLogin: {\n buttonLabel: copy?.makeFirstPurchase,\n handleClick: () =>\n handleClickWithTrack({\n buttonName: copy?.makeFirstPurchase,\n callback: openSignUpPopup,\n id: TaskType.FirstPurchase,\n }),\n },\n notFinished: {\n buttonLabel: copy?.makeFirstPurchase,\n link: copy?.goShopLink,\n handleClick: () =>\n handleClickWithTrack({\n buttonName: copy?.makeFirstPurchase,\n callback: () => {},\n id: TaskType.FirstPurchase,\n }),\n },\n completed: {\n buttonLabel: copy?.completed,\n },\n },\n [TaskType.UploadReceipt]: {\n finished: uploadedReceipt,\n notLogin: {\n buttonLabel: copy?.joinNow,\n handleClick: () =>\n handleClickWithTrack({\n buttonName: copy?.joinNow,\n callback: openSignUpPopup,\n id: TaskType.UploadReceipt,\n }),\n },\n notFinished: {\n buttonLabel: copy?.uploadReceipt,\n handleClick: () =>\n handleClickWithTrack({\n buttonName: copy?.uploadReceipt,\n callback: () => uploadReceipt.openUploadReceiptPopup(),\n id: TaskType.UploadReceipt,\n }),\n },\n completed: {\n buttonLabel: copy?.completed,\n },\n },\n [TaskType.Shop]: {\n finished: false,\n notLogin: {\n buttonLabel: copy?.joinNow,\n handleClick: () =>\n handleClickWithTrack({\n buttonName: copy?.joinNow,\n callback: openSignUpPopup,\n id: TaskType.Shop,\n }),\n },\n notFinished: {\n buttonLabel: copy?.shopNow,\n link: copy?.goShopLink,\n handleClick: () =>\n handleClickWithTrack({\n buttonName: copy?.shopNow,\n callback: () => {},\n id: TaskType.Shop,\n }),\n },\n completed: {\n buttonLabel: copy?.completed,\n },\n },\n },\n }\n }, [\n profile?.activated,\n copy?.joinNow,\n copy?.activate,\n copy?.completed,\n copy?.subscribe,\n copy?.completeProfile,\n copy?.makeFirstPurchase,\n copy?.uploadReceipt,\n copy?.shopNow,\n copy.title,\n copy?.goShopLink,\n isSubscribed,\n profileCompleted,\n firstPurchaseFinished,\n uploadedReceipt,\n gaParameters?.position,\n openSignUpPopup,\n completeProfileLink,\n ])\n}\n"],
5
+ "mappings": "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",
6
+ "names": ["useHeadlessContext", "gaTrack", "TaskType", "useCreditsContext", "useEffect", "useMemo", "useState", "useReceiptUploaded", "useFirstPurchaseFinished", "useSubscribed", "useRegistration", "useActions", "copy", "subscribe", "uploadReceipt", "gaParameters", "openSignUpPopup", "gtm", "profile", "authCodeActivate", "isSubscribed", "firstPurchaseFinished", "uploadedReceipt", "appName", "passportUrl", "clientUrl", "setClientUrl", "completeProfileLink", "query", "search", "profileCompleted", "handleClickWithTrack", "buttonName", "id", "callback"]
7
7
  }
@@ -1,2 +1,2 @@
1
- import{jsx as t,jsxs as d}from"react/jsx-runtime";import{useCallback as S,useEffect as D,useState as r}from"react";import{Button as F,Checkbox as M,Picture as H,Text as b}from"@anker-in/headless-ui";import{classNames as l,fetcher as q,gaTrack as x,useHeadlessContext as I}from"../../../lib";import s from"js-cookie";import{parse as R}from"query-string";import B from"crypto-js/sha256";import{useCreditsContext as O}from"../context/provider";import{ROUNDED_BRANDS as z}from"../../../constants";import{CreditsModalContainer as U}from"./ModalContainer";const V=()=>{if(typeof window>"u")return{register_source:""};const{search:e,href:a}=window.location||{},i=R(e);return{fbuy_ref_code:s.get("fbuy_ref_code"),affiliate:s.get("affiliate"),ref:s.get("ref_ads"),inviter_code:i.ic||i.inviter_code||s.get("inviter_code"),register_source:i.redirect||s.get("reg_source")||a,deals_type:s.get("deal"),transfer_id:s.get("transfer_id")}};function j({copy:e,onSuccess:a,...i}){const{brand:c,locale:g}=I(),m=z.includes(c),[h,k]=r(!1),[v,w]=r(!1),[o,_]=r(""),[C,u]=r(""),[y,N]=r(""),[E,T]=r(!1),{profile:n}=O(),A=S(p=>{u(""),_(p.target?.value?.trim())},[]),P=S(async p=>{p.preventDefault(),u(""),T(!0);const{register_source:L}=V(),f=await q({locale:g,action:"subscribe",url:"/api/multipass/subscribe/subscribe_emails",method:"POST",body:{email:o,register_source:L,brand:c,deals_type:e.dealsType||"vip_subscribe"},headers:{},type:""});T(!1),f.errors?u(f.errors||f.statusText):(N(e.successTips||"Subscribed successfully!"),a&&a(),setTimeout(()=>{N("")},3e3),x({subscribe_hashed_email:o?B(o):""}),x({event:"ga4Event",event_name:"subscribe",event_parameters:{page_group:e.dealsType||"vip_subscribe",position:"pop_up"}}),x({event:"uaEvent",eventCategory:"subscribe",eventAction:e.dealsType||"vip_subscribe",eventLabel:"pop_up",nonInteraction:!1}))},[o,g,c,e.dealsType,e.successTips,a]);return D(()=>{n&&n?.email&&_(n?.email)},[n]),t(U,{className:"w-[540px] md:h-auto",scrollClassName:"mb-[40px] min-l:px-[48px] md:mb-[24px]",titleClassName:"h-[56px]",useAnimation:!0,animationClassName:"md:translate-y-[100vh]",...i,children:d("form",{className:"min-l:px-[16px] flex flex-col gap-[16px] text-center",onSubmit:P,noValidate:!1,children:[t("div",{children:t(b,{className:l("mb-[24px] text-[22px] font-bold"),html:e.title})}),e.desc&&t(b,{className:"mb-[8px] text-left text-[16px] font-semibold leading-[1.4] text-[#1F2021]",html:e.desc}),d("div",{className:l("relative flex h-[52px] w-full overflow-hidden rounded-[2px] md:grid md:h-auto md:grid-rows-1 md:gap-[16px]",!m&&"rounded-none"),children:[t("input",{className:l("h-full flex-1 rounded-l-[2px] border-[1px] border-[#d8d8d8] px-[14px] py-[17px] text-[16px] font-semibold leading-[1] outline-none placeholder:text-[#999] md:h-[52px] md:rounded-[2px]",!m&&"rounded-none"),type:"email",required:!0,placeholder:e.placeholder,value:o,onChange:A}),t(F,{type:"submit",variant:"primary",loading:E,className:l("legacy-headless-ui-primary-button !h-full !min-w-0 !rounded-l-none !rounded-r-[2px] !px-[40px] !py-[13px]",!m&&"rounded-none"),children:t(H,{source:"https://cdn.shopify.com/s/files/1/0512/8568/8505/files/icon_email.png?v=1697527383",className:"size-[24px]",alt:"email"})})]}),e?.oneankerSubscribeAgree&&d("div",{className:"flex w-full",children:[t(M,{checked:v,onCheckedChange:()=>w(!v),required:!0,className:"border-[#1d1d1f]"}),t("label",{className:"ml-2 text-left text-[14px] font-semibold text-[#777] [&_a]:underline",dangerouslySetInnerHTML:{__html:e.oneankerSubscribeAgree}})]}),d("div",{className:"flex w-full",children:[t(M,{checked:h,onCheckedChange:()=>k(!h),required:!0,className:"border-[#1d1d1f]"}),t("label",{className:"ml-2 text-left text-[14px] font-semibold text-[#777] [&_a]:underline",dangerouslySetInnerHTML:{__html:e?.policy||""}})]}),t("div",{className:l("w-full text-left text-[16px] font-semibold",C&&"text-[#F84D4F]",y&&"text-[#52C41A]"),children:t(b,{html:y||C||""})})]})})}export{j as CreditsSubscribeModal};
1
+ import{jsx as t,jsxs as d}from"react/jsx-runtime";import{useCallback as M,useEffect as F,useState as r}from"react";import{Button as H,Checkbox as k,Picture as q,Text as b}from"@anker-in/headless-ui";import{classNames as l,fetcher as B,gaTrack as x,useHeadlessContext as I}from"../../../lib";import s from"js-cookie";import{parse as R}from"query-string";import O from"crypto-js/sha256";import{useCreditsContext as U}from"../context/provider";import{ROUNDED_BRANDS as z}from"../../../constants";import{CreditsModalContainer as V}from"./ModalContainer";const $=()=>{if(typeof window>"u")return{register_source:""};const{search:e,href:a}=window.location||{},i=R(e);return{fbuy_ref_code:s.get("fbuy_ref_code"),affiliate:s.get("affiliate"),ref:s.get("ref_ads"),inviter_code:i.ic||i.inviter_code||s.get("inviter_code"),register_source:i.redirect||s.get("reg_source")||a,deals_type:s.get("deal"),transfer_id:s.get("transfer_id")}};function ee({copy:e,onSuccess:a,...i}){const{brand:c,locale:g}=I(),m=z.includes(c),[h,w]=r(!1),[v,E]=r(!1),[o,_]=r(""),[C,u]=r(""),[y,N]=r(""),[A,T]=r(!1),{profile:n,apiBaseUrl:S}=U(),P=M(p=>{u(""),_(p.target?.value?.trim())},[]),L=M(async p=>{p.preventDefault(),u(""),T(!0);const{register_source:D}=$(),f=await B({locale:g,action:"subscribe",url:`${S||""}/api/multipass/subscribe/subscribe_emails`,method:"POST",body:{email:o,register_source:D,brand:c,deals_type:e.dealsType||"vip_subscribe"},headers:{},type:""});T(!1),f.errors?u(f.errors||f.statusText):(N(e.successTips||"Subscribed successfully!"),a&&a(),setTimeout(()=>{N("")},3e3),x({subscribe_hashed_email:o?O(o):""}),x({event:"ga4Event",event_name:"subscribe",event_parameters:{page_group:e.dealsType||"vip_subscribe",position:"pop_up"}}),x({event:"uaEvent",eventCategory:"subscribe",eventAction:e.dealsType||"vip_subscribe",eventLabel:"pop_up",nonInteraction:!1}))},[o,g,c,e.dealsType,e.successTips,a,S]);return F(()=>{n&&n?.email&&_(n?.email)},[n]),t(V,{className:"w-[540px] md:h-auto",scrollClassName:"mb-[40px] min-l:px-[48px] md:mb-[24px]",titleClassName:"h-[56px]",useAnimation:!0,animationClassName:"md:translate-y-[100vh]",...i,children:d("form",{className:"min-l:px-[16px] flex flex-col gap-[16px] text-center",onSubmit:L,noValidate:!1,children:[t("div",{children:t(b,{className:l("mb-[24px] text-[22px] font-bold"),html:e.title})}),e.desc&&t(b,{className:"mb-[8px] text-left text-[16px] font-semibold leading-[1.4] text-[#1F2021]",html:e.desc}),d("div",{className:l("relative flex h-[52px] w-full overflow-hidden rounded-[2px] md:grid md:h-auto md:grid-rows-1 md:gap-[16px]",!m&&"rounded-none"),children:[t("input",{className:l("h-full flex-1 rounded-l-[2px] border-[1px] border-[#d8d8d8] px-[14px] py-[17px] text-[16px] font-semibold leading-[1] outline-none placeholder:text-[#999] md:h-[52px] md:rounded-[2px]",!m&&"rounded-none"),type:"email",required:!0,placeholder:e.placeholder,value:o,onChange:P}),t(H,{type:"submit",variant:"primary",loading:A,className:l("legacy-headless-ui-primary-button !h-full !min-w-0 !rounded-l-none !rounded-r-[2px] !px-[40px] !py-[13px]",!m&&"rounded-none"),children:t(q,{source:"https://cdn.shopify.com/s/files/1/0512/8568/8505/files/icon_email.png?v=1697527383",className:"size-[24px]",alt:"email"})})]}),e?.oneankerSubscribeAgree&&d("div",{className:"flex w-full",children:[t(k,{checked:v,onCheckedChange:()=>E(!v),required:!0,className:"border-[#1d1d1f]"}),t("label",{className:"ml-2 text-left text-[14px] font-semibold text-[#777] [&_a]:underline",dangerouslySetInnerHTML:{__html:e.oneankerSubscribeAgree}})]}),d("div",{className:"flex w-full",children:[t(k,{checked:h,onCheckedChange:()=>w(!h),required:!0,className:"border-[#1d1d1f]"}),t("label",{className:"ml-2 text-left text-[14px] font-semibold text-[#777] [&_a]:underline",dangerouslySetInnerHTML:{__html:e?.policy||""}})]}),t("div",{className:l("w-full text-left text-[16px] font-semibold",C&&"text-[#F84D4F]",y&&"text-[#52C41A]"),children:t(b,{html:y||C||""})})]})})}export{ee as CreditsSubscribeModal};
2
2
  //# sourceMappingURL=SubscribeModal.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../../src/components/credits/modal/SubscribeModal.tsx"],
4
- "sourcesContent": ["import { useCallback, useEffect, useState } from 'react'\nimport { Button, Checkbox, Picture, Text } from '@anker-in/headless-ui'\nimport { classNames, fetcher, gaTrack, useHeadlessContext } from '../../../lib'\nimport Cookies from 'js-cookie'\nimport { parse } from 'query-string'\nimport sha256 from 'crypto-js/sha256'\nimport { useCreditsContext } from '../context/provider'\nimport { ROUNDED_BRANDS } from '../../../constants'\nimport { CreditsModalContainer, type ModalContainerProps } from './ModalContainer'\n\nexport type CreditsSubscribeModalCopy = {\n title: string\n desc?: string\n placeholder: string\n policy?: string\n oneankerSubscribeAgree?: string\n successTips?: string\n dealsType?: string\n}\n\ninterface CreditsSubscribeModalProps extends ModalContainerProps {\n copy: CreditsSubscribeModalCopy\n onSuccess?: () => void\n}\n\nconst getAdCookie = () => {\n if (typeof window === 'undefined') {\n return { register_source: '' }\n }\n const { search, href } = window.location || {}\n const query = parse(search)\n\n return {\n fbuy_ref_code: Cookies.get('fbuy_ref_code'),\n affiliate: Cookies.get('affiliate'),\n ref: Cookies.get('ref_ads'),\n inviter_code: query.ic || query.inviter_code || Cookies.get('inviter_code'),\n register_source: query.redirect || Cookies.get('reg_source') || href,\n deals_type: Cookies.get('deal'),\n transfer_id: Cookies.get('transfer_id'),\n }\n}\n\nexport function CreditsSubscribeModal({ copy, onSuccess, ...props }: CreditsSubscribeModalProps) {\n const { brand, locale } = useHeadlessContext()\n const rounded = ROUNDED_BRANDS.includes(brand)\n const [policy, setPolicy] = useState(false)\n const [oneankerSubscribeAgree, setOneankerSubscribeAgree] = useState(false)\n const [email, setEmail] = useState('')\n const [errorMessage, setErrorMessage] = useState('')\n const [successMessage, setSuccessMessage] = useState('')\n const [loading, setLoading] = useState(false)\n const { profile } = useCreditsContext()\n\n const handleEmailChange = useCallback((event: React.ChangeEvent<HTMLInputElement>) => {\n setErrorMessage('')\n setEmail(event.target?.value?.trim())\n }, [])\n\n const handleSubmit = useCallback(\n async (event: React.FormEvent<HTMLFormElement>) => {\n event.preventDefault()\n setErrorMessage('')\n\n setLoading(true)\n const { register_source } = getAdCookie()\n\n const result = await fetcher({\n locale,\n action: 'subscribe',\n url: '/api/multipass/subscribe/subscribe_emails',\n method: 'POST',\n body: {\n email,\n register_source,\n brand,\n deals_type: copy.dealsType || 'vip_subscribe',\n },\n headers: {},\n type: '',\n })\n setLoading(false)\n\n if (!result.errors) {\n setSuccessMessage(copy.successTips || 'Subscribed successfully!')\n if (onSuccess) {\n onSuccess()\n }\n setTimeout(() => {\n setSuccessMessage('')\n }, 3000)\n gaTrack({\n subscribe_hashed_email: email ? sha256(email) : '',\n })\n gaTrack({\n event: 'ga4Event',\n event_name: 'subscribe',\n event_parameters: {\n page_group: copy.dealsType || 'vip_subscribe',\n position: 'pop_up',\n },\n })\n gaTrack({\n event: 'uaEvent',\n eventCategory: 'subscribe',\n eventAction: copy.dealsType || 'vip_subscribe',\n eventLabel: 'pop_up',\n nonInteraction: false,\n })\n } else {\n setErrorMessage(result.errors || result.statusText)\n }\n },\n [email, locale, brand, copy.dealsType, copy.successTips, onSuccess]\n )\n\n useEffect(() => {\n if (profile && profile?.email) {\n setEmail(profile?.email)\n }\n }, [profile])\n\n return (\n <CreditsModalContainer\n className=\"w-[540px] md:h-auto\"\n scrollClassName=\"mb-[40px] min-l:px-[48px] md:mb-[24px]\"\n titleClassName=\"h-[56px]\"\n useAnimation\n animationClassName=\"md:translate-y-[100vh]\"\n {...props}\n >\n <form className=\"min-l:px-[16px] flex flex-col gap-[16px] text-center\" onSubmit={handleSubmit} noValidate={false}>\n <div>\n <Text className={classNames('mb-[24px] text-[22px] font-bold')} html={copy.title}></Text>\n </div>\n {copy.desc && (\n <Text\n className=\"mb-[8px] text-left text-[16px] font-semibold leading-[1.4] text-[#1F2021]\"\n html={copy.desc}\n ></Text>\n )}\n <div\n className={classNames(\n 'relative flex h-[52px] w-full overflow-hidden rounded-[2px] md:grid md:h-auto md:grid-rows-1 md:gap-[16px]',\n !rounded && 'rounded-none'\n )}\n >\n <input\n className={classNames(\n 'h-full flex-1 rounded-l-[2px] border-[1px] border-[#d8d8d8] px-[14px] py-[17px] text-[16px] font-semibold leading-[1] outline-none placeholder:text-[#999] md:h-[52px] md:rounded-[2px]',\n !rounded && 'rounded-none'\n )}\n type=\"email\"\n required\n placeholder={copy.placeholder}\n value={email}\n onChange={handleEmailChange}\n />\n <Button\n type=\"submit\"\n variant=\"primary\"\n loading={loading}\n className={classNames(\n 'legacy-headless-ui-primary-button !h-full !min-w-0 !rounded-l-none !rounded-r-[2px] !px-[40px] !py-[13px]',\n !rounded && 'rounded-none'\n )}\n >\n <Picture\n source=\"https://cdn.shopify.com/s/files/1/0512/8568/8505/files/icon_email.png?v=1697527383\"\n className=\"size-[24px]\"\n alt=\"email\"\n />\n </Button>\n </div>\n {copy?.oneankerSubscribeAgree && (\n <div className=\"flex w-full\">\n <Checkbox\n checked={oneankerSubscribeAgree}\n onCheckedChange={() => setOneankerSubscribeAgree(!oneankerSubscribeAgree)}\n required\n className=\"border-[#1d1d1f]\"\n />\n <label\n className=\"ml-2 text-left text-[14px] font-semibold text-[#777] [&_a]:underline\"\n dangerouslySetInnerHTML={{\n __html: copy.oneankerSubscribeAgree,\n }}\n />\n </div>\n )}\n <div className=\"flex w-full\">\n <Checkbox checked={policy} onCheckedChange={() => setPolicy(!policy)} required className=\"border-[#1d1d1f]\" />\n <label\n className=\"ml-2 text-left text-[14px] font-semibold text-[#777] [&_a]:underline\"\n dangerouslySetInnerHTML={{\n __html: copy?.policy || '',\n }}\n />\n </div>\n <div\n className={classNames(\n 'w-full text-left text-[16px] font-semibold',\n errorMessage && 'text-[#F84D4F]',\n successMessage && 'text-[#52C41A]'\n )}\n >\n <Text html={successMessage || errorMessage || ''} />\n </div>\n </form>\n </CreditsModalContainer>\n )\n}\n"],
5
- "mappings": "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",
6
- "names": ["jsx", "jsxs", "useCallback", "useEffect", "useState", "Button", "Checkbox", "Picture", "Text", "classNames", "fetcher", "gaTrack", "useHeadlessContext", "Cookies", "parse", "sha256", "useCreditsContext", "ROUNDED_BRANDS", "CreditsModalContainer", "getAdCookie", "search", "href", "query", "CreditsSubscribeModal", "copy", "onSuccess", "props", "brand", "locale", "rounded", "policy", "setPolicy", "oneankerSubscribeAgree", "setOneankerSubscribeAgree", "email", "setEmail", "errorMessage", "setErrorMessage", "successMessage", "setSuccessMessage", "loading", "setLoading", "profile", "handleEmailChange", "event", "handleSubmit", "register_source", "result"]
4
+ "sourcesContent": ["import { useCallback, useEffect, useState } from 'react'\nimport { Button, Checkbox, Picture, Text } from '@anker-in/headless-ui'\nimport { classNames, fetcher, gaTrack, useHeadlessContext } from '../../../lib'\nimport Cookies from 'js-cookie'\nimport { parse } from 'query-string'\nimport sha256 from 'crypto-js/sha256'\nimport { useCreditsContext } from '../context/provider'\nimport { ROUNDED_BRANDS } from '../../../constants'\nimport { CreditsModalContainer, type ModalContainerProps } from './ModalContainer'\n\nexport type CreditsSubscribeModalCopy = {\n title: string\n desc?: string\n placeholder: string\n policy?: string\n oneankerSubscribeAgree?: string\n successTips?: string\n dealsType?: string\n}\n\ninterface CreditsSubscribeModalProps extends ModalContainerProps {\n copy: CreditsSubscribeModalCopy\n onSuccess?: () => void\n}\n\nconst getAdCookie = () => {\n if (typeof window === 'undefined') {\n return { register_source: '' }\n }\n const { search, href } = window.location || {}\n const query = parse(search)\n\n return {\n fbuy_ref_code: Cookies.get('fbuy_ref_code'),\n affiliate: Cookies.get('affiliate'),\n ref: Cookies.get('ref_ads'),\n inviter_code: query.ic || query.inviter_code || Cookies.get('inviter_code'),\n register_source: query.redirect || Cookies.get('reg_source') || href,\n deals_type: Cookies.get('deal'),\n transfer_id: Cookies.get('transfer_id'),\n }\n}\n\nexport function CreditsSubscribeModal({ copy, onSuccess, ...props }: CreditsSubscribeModalProps) {\n const { brand, locale } = useHeadlessContext()\n const rounded = ROUNDED_BRANDS.includes(brand)\n const [policy, setPolicy] = useState(false)\n const [oneankerSubscribeAgree, setOneankerSubscribeAgree] = useState(false)\n const [email, setEmail] = useState('')\n const [errorMessage, setErrorMessage] = useState('')\n const [successMessage, setSuccessMessage] = useState('')\n const [loading, setLoading] = useState(false)\n const { profile, apiBaseUrl } = useCreditsContext()\n\n const handleEmailChange = useCallback((event: React.ChangeEvent<HTMLInputElement>) => {\n setErrorMessage('')\n setEmail(event.target?.value?.trim())\n }, [])\n\n const handleSubmit = useCallback(\n async (event: React.FormEvent<HTMLFormElement>) => {\n event.preventDefault()\n setErrorMessage('')\n\n setLoading(true)\n const { register_source } = getAdCookie()\n\n const result = await fetcher({\n locale,\n action: 'subscribe',\n url: `${apiBaseUrl || ''}/api/multipass/subscribe/subscribe_emails`,\n method: 'POST',\n body: {\n email,\n register_source,\n brand,\n deals_type: copy.dealsType || 'vip_subscribe',\n },\n headers: {},\n type: '',\n })\n setLoading(false)\n\n if (!result.errors) {\n setSuccessMessage(copy.successTips || 'Subscribed successfully!')\n if (onSuccess) {\n onSuccess()\n }\n setTimeout(() => {\n setSuccessMessage('')\n }, 3000)\n gaTrack({\n subscribe_hashed_email: email ? sha256(email) : '',\n })\n gaTrack({\n event: 'ga4Event',\n event_name: 'subscribe',\n event_parameters: {\n page_group: copy.dealsType || 'vip_subscribe',\n position: 'pop_up',\n },\n })\n gaTrack({\n event: 'uaEvent',\n eventCategory: 'subscribe',\n eventAction: copy.dealsType || 'vip_subscribe',\n eventLabel: 'pop_up',\n nonInteraction: false,\n })\n } else {\n setErrorMessage(result.errors || result.statusText)\n }\n },\n [email, locale, brand, copy.dealsType, copy.successTips, onSuccess, apiBaseUrl]\n )\n\n useEffect(() => {\n if (profile && profile?.email) {\n setEmail(profile?.email)\n }\n }, [profile])\n\n return (\n <CreditsModalContainer\n className=\"w-[540px] md:h-auto\"\n scrollClassName=\"mb-[40px] min-l:px-[48px] md:mb-[24px]\"\n titleClassName=\"h-[56px]\"\n useAnimation\n animationClassName=\"md:translate-y-[100vh]\"\n {...props}\n >\n <form className=\"min-l:px-[16px] flex flex-col gap-[16px] text-center\" onSubmit={handleSubmit} noValidate={false}>\n <div>\n <Text className={classNames('mb-[24px] text-[22px] font-bold')} html={copy.title}></Text>\n </div>\n {copy.desc && (\n <Text\n className=\"mb-[8px] text-left text-[16px] font-semibold leading-[1.4] text-[#1F2021]\"\n html={copy.desc}\n ></Text>\n )}\n <div\n className={classNames(\n 'relative flex h-[52px] w-full overflow-hidden rounded-[2px] md:grid md:h-auto md:grid-rows-1 md:gap-[16px]',\n !rounded && 'rounded-none'\n )}\n >\n <input\n className={classNames(\n 'h-full flex-1 rounded-l-[2px] border-[1px] border-[#d8d8d8] px-[14px] py-[17px] text-[16px] font-semibold leading-[1] outline-none placeholder:text-[#999] md:h-[52px] md:rounded-[2px]',\n !rounded && 'rounded-none'\n )}\n type=\"email\"\n required\n placeholder={copy.placeholder}\n value={email}\n onChange={handleEmailChange}\n />\n <Button\n type=\"submit\"\n variant=\"primary\"\n loading={loading}\n className={classNames(\n 'legacy-headless-ui-primary-button !h-full !min-w-0 !rounded-l-none !rounded-r-[2px] !px-[40px] !py-[13px]',\n !rounded && 'rounded-none'\n )}\n >\n <Picture\n source=\"https://cdn.shopify.com/s/files/1/0512/8568/8505/files/icon_email.png?v=1697527383\"\n className=\"size-[24px]\"\n alt=\"email\"\n />\n </Button>\n </div>\n {copy?.oneankerSubscribeAgree && (\n <div className=\"flex w-full\">\n <Checkbox\n checked={oneankerSubscribeAgree}\n onCheckedChange={() => setOneankerSubscribeAgree(!oneankerSubscribeAgree)}\n required\n className=\"border-[#1d1d1f]\"\n />\n <label\n className=\"ml-2 text-left text-[14px] font-semibold text-[#777] [&_a]:underline\"\n dangerouslySetInnerHTML={{\n __html: copy.oneankerSubscribeAgree,\n }}\n />\n </div>\n )}\n <div className=\"flex w-full\">\n <Checkbox checked={policy} onCheckedChange={() => setPolicy(!policy)} required className=\"border-[#1d1d1f]\" />\n <label\n className=\"ml-2 text-left text-[14px] font-semibold text-[#777] [&_a]:underline\"\n dangerouslySetInnerHTML={{\n __html: copy?.policy || '',\n }}\n />\n </div>\n <div\n className={classNames(\n 'w-full text-left text-[16px] font-semibold',\n errorMessage && 'text-[#F84D4F]',\n successMessage && 'text-[#52C41A]'\n )}\n >\n <Text html={successMessage || errorMessage || ''} />\n </div>\n </form>\n </CreditsModalContainer>\n )\n}\n"],
5
+ "mappings": "AAqIU,cAAAA,EAQF,QAAAC,MARE,oBArIV,OAAS,eAAAC,EAAa,aAAAC,EAAW,YAAAC,MAAgB,QACjD,OAAS,UAAAC,EAAQ,YAAAC,EAAU,WAAAC,EAAS,QAAAC,MAAY,wBAChD,OAAS,cAAAC,EAAY,WAAAC,EAAS,WAAAC,EAAS,sBAAAC,MAA0B,eACjE,OAAOC,MAAa,YACpB,OAAS,SAAAC,MAAa,eACtB,OAAOC,MAAY,mBACnB,OAAS,qBAAAC,MAAyB,sBAClC,OAAS,kBAAAC,MAAsB,qBAC/B,OAAS,yBAAAC,MAAuD,mBAiBhE,MAAMC,EAAc,IAAM,CACxB,GAAI,OAAO,OAAW,IACpB,MAAO,CAAE,gBAAiB,EAAG,EAE/B,KAAM,CAAE,OAAAC,EAAQ,KAAAC,CAAK,EAAI,OAAO,UAAY,CAAC,EACvCC,EAAQR,EAAMM,CAAM,EAE1B,MAAO,CACL,cAAeP,EAAQ,IAAI,eAAe,EAC1C,UAAWA,EAAQ,IAAI,WAAW,EAClC,IAAKA,EAAQ,IAAI,SAAS,EAC1B,aAAcS,EAAM,IAAMA,EAAM,cAAgBT,EAAQ,IAAI,cAAc,EAC1E,gBAAiBS,EAAM,UAAYT,EAAQ,IAAI,YAAY,GAAKQ,EAChE,WAAYR,EAAQ,IAAI,MAAM,EAC9B,YAAaA,EAAQ,IAAI,aAAa,CACxC,CACF,EAEO,SAASU,GAAsB,CAAE,KAAAC,EAAM,UAAAC,EAAW,GAAGC,CAAM,EAA+B,CAC/F,KAAM,CAAE,MAAAC,EAAO,OAAAC,CAAO,EAAIhB,EAAmB,EACvCiB,EAAUZ,EAAe,SAASU,CAAK,EACvC,CAACG,EAAQC,CAAS,EAAI3B,EAAS,EAAK,EACpC,CAAC4B,EAAwBC,CAAyB,EAAI7B,EAAS,EAAK,EACpE,CAAC8B,EAAOC,CAAQ,EAAI/B,EAAS,EAAE,EAC/B,CAACgC,EAAcC,CAAe,EAAIjC,EAAS,EAAE,EAC7C,CAACkC,EAAgBC,CAAiB,EAAInC,EAAS,EAAE,EACjD,CAACoC,EAASC,CAAU,EAAIrC,EAAS,EAAK,EACtC,CAAE,QAAAsC,EAAS,WAAAC,CAAW,EAAI3B,EAAkB,EAE5C4B,EAAoB1C,EAAa2C,GAA+C,CACpFR,EAAgB,EAAE,EAClBF,EAASU,EAAM,QAAQ,OAAO,KAAK,CAAC,CACtC,EAAG,CAAC,CAAC,EAECC,EAAe5C,EACnB,MAAO2C,GAA4C,CACjDA,EAAM,eAAe,EACrBR,EAAgB,EAAE,EAElBI,EAAW,EAAI,EACf,KAAM,CAAE,gBAAAM,CAAgB,EAAI5B,EAAY,EAElC6B,EAAS,MAAMtC,EAAQ,CAC3B,OAAAkB,EACA,OAAQ,YACR,IAAK,GAAGe,GAAc,EAAE,4CACxB,OAAQ,OACR,KAAM,CACJ,MAAAT,EACA,gBAAAa,EACA,MAAApB,EACA,WAAYH,EAAK,WAAa,eAChC,EACA,QAAS,CAAC,EACV,KAAM,EACR,CAAC,EACDiB,EAAW,EAAK,EAEXO,EAAO,OA2BVX,EAAgBW,EAAO,QAAUA,EAAO,UAAU,GA1BlDT,EAAkBf,EAAK,aAAe,0BAA0B,EAC5DC,GACFA,EAAU,EAEZ,WAAW,IAAM,CACfc,EAAkB,EAAE,CACtB,EAAG,GAAI,EACP5B,EAAQ,CACN,uBAAwBuB,EAAQnB,EAAOmB,CAAK,EAAI,EAClD,CAAC,EACDvB,EAAQ,CACN,MAAO,WACP,WAAY,YACZ,iBAAkB,CAChB,WAAYa,EAAK,WAAa,gBAC9B,SAAU,QACZ,CACF,CAAC,EACDb,EAAQ,CACN,MAAO,UACP,cAAe,YACf,YAAaa,EAAK,WAAa,gBAC/B,WAAY,SACZ,eAAgB,EAClB,CAAC,EAIL,EACA,CAACU,EAAON,EAAQD,EAAOH,EAAK,UAAWA,EAAK,YAAaC,EAAWkB,CAAU,CAChF,EAEA,OAAAxC,EAAU,IAAM,CACVuC,GAAWA,GAAS,OACtBP,EAASO,GAAS,KAAK,CAE3B,EAAG,CAACA,CAAO,CAAC,EAGV1C,EAACkB,EAAA,CACC,UAAU,sBACV,gBAAgB,yCAChB,eAAe,WACf,aAAY,GACZ,mBAAmB,yBAClB,GAAGQ,EAEJ,SAAAzB,EAAC,QAAK,UAAU,uDAAuD,SAAU6C,EAAc,WAAY,GACzG,UAAA9C,EAAC,OACC,SAAAA,EAACQ,EAAA,CAAK,UAAWC,EAAW,iCAAiC,EAAG,KAAMe,EAAK,MAAO,EACpF,EACCA,EAAK,MACJxB,EAACQ,EAAA,CACC,UAAU,4EACV,KAAMgB,EAAK,KACZ,EAEHvB,EAAC,OACC,UAAWQ,EACT,6GACA,CAACoB,GAAW,cACd,EAEA,UAAA7B,EAAC,SACC,UAAWS,EACT,0LACA,CAACoB,GAAW,cACd,EACA,KAAK,QACL,SAAQ,GACR,YAAaL,EAAK,YAClB,MAAOU,EACP,SAAUU,EACZ,EACA5C,EAACK,EAAA,CACC,KAAK,SACL,QAAQ,UACR,QAASmC,EACT,UAAW/B,EACT,4GACA,CAACoB,GAAW,cACd,EAEA,SAAA7B,EAACO,EAAA,CACC,OAAO,qFACP,UAAU,cACV,IAAI,QACN,EACF,GACF,EACCiB,GAAM,wBACLvB,EAAC,OAAI,UAAU,cACb,UAAAD,EAACM,EAAA,CACC,QAAS0B,EACT,gBAAiB,IAAMC,EAA0B,CAACD,CAAsB,EACxE,SAAQ,GACR,UAAU,mBACZ,EACAhC,EAAC,SACC,UAAU,uEACV,wBAAyB,CACvB,OAAQwB,EAAK,sBACf,EACF,GACF,EAEFvB,EAAC,OAAI,UAAU,cACb,UAAAD,EAACM,EAAA,CAAS,QAASwB,EAAQ,gBAAiB,IAAMC,EAAU,CAACD,CAAM,EAAG,SAAQ,GAAC,UAAU,mBAAmB,EAC5G9B,EAAC,SACC,UAAU,uEACV,wBAAyB,CACvB,OAAQwB,GAAM,QAAU,EAC1B,EACF,GACF,EACAxB,EAAC,OACC,UAAWS,EACT,6CACA2B,GAAgB,iBAChBE,GAAkB,gBACpB,EAEA,SAAAtC,EAACQ,EAAA,CAAK,KAAM8B,GAAkBF,GAAgB,GAAI,EACpD,GACF,EACF,CAEJ",
6
+ "names": ["jsx", "jsxs", "useCallback", "useEffect", "useState", "Button", "Checkbox", "Picture", "Text", "classNames", "fetcher", "gaTrack", "useHeadlessContext", "Cookies", "parse", "sha256", "useCreditsContext", "ROUNDED_BRANDS", "CreditsModalContainer", "getAdCookie", "search", "href", "query", "CreditsSubscribeModal", "copy", "onSuccess", "props", "brand", "locale", "rounded", "policy", "setPolicy", "oneankerSubscribeAgree", "setOneankerSubscribeAgree", "email", "setEmail", "errorMessage", "setErrorMessage", "successMessage", "setSuccessMessage", "loading", "setLoading", "profile", "apiBaseUrl", "handleEmailChange", "event", "handleSubmit", "register_source", "result"]
7
7
  }
@@ -1,2 +1,2 @@
1
- import{jsx as t,jsxs as d}from"react/jsx-runtime";import{useCallback as B,useEffect as D,useState as l}from"react";import{Button as E,Checkbox as I,Text as C}from"@anker-in/headless-ui";import{gaTrack as L,classNames as N,useHeadlessContext as O}from"../../../../lib";import c from"js-cookie";import{parse as A}from"query-string";import{emailValidate as H}from"../../../credits/context/utils";import{useMemberPopupContext as R}from"../../context/provider";import{ROUNDED_BRANDS as j}from"../../../../constants";function q(){if(typeof window>"u")return{register_source:""};const{search:e,href:o}=window.location,a=A(e);return{fbuy_ref_code:c.get("fbuy_ref_code"),ref:c.get("ref_ads"),inviter_code:a.ic??a.inviter_code??c.get("inviter_code"),register_source:a.redirect??c.get("reg_source")??o}}function J({copy:e,email:o,onClose:a}){const{alpcConfig:S,setIsSubscribeSuccess:p,fetchCreditInfo:k,profile:m}=R(),{brand:x,locale:b}=S,{brand:w}=O(),T=j.includes(w),[u,g]=l(e.policyDefaultChecked??!1),[i,h]=l(o??""),[n,s]=l(""),[f,_]=l(""),[M,v]=l(!1);D(()=>{o&&h(o)},[o]);const P=B(async()=>{if(s(""),!i)return s("Please fill in your email");if(!H(i))return s("Invalid email address");if(!u)return s("Please agree to the policy");v(!0);const{register_source:r}=q();try{const y=await(await fetch("/api/multipass/subscribe/subscribe_emails",{method:"POST",credentials:"include",headers:{"Content-Type":"application/json","current-language":b},body:JSON.stringify({email:i,register_source:r,brand:x,deals_type:e.dealsType??"vip_subscribe"})})).json();y.errors?s(y.errors??"Error occurred"):(_(e.successTips??"Subscribed successfully!"),p(!0),m?.user_id&&setTimeout(()=>k(m.user_id),3e3),L({event:"ga4Event",event_name:"subscribe",event_parameters:{page_group:e.dealsType??"",position:"sticky",info:""}}),setTimeout(()=>{_(""),a()},3e3))}catch{s("Network error")}finally{v(!1)}},[i,u,b,x,e,a,p]);return d("div",{className:"flex flex-col gap-[12px]",children:[d("div",{className:"flex flex-col gap-[8px]",children:[e.title&&t("h2",{className:"text-[24px] font-[700] leading-[1.2] text-[#080a0f]",children:e.title}),e.desc&&t(C,{className:"text-[16px] text-[#1e2024]",html:e.desc})]}),d("div",{className:"flex flex-col gap-[16px]",children:[t("input",{className:N("h-[46px] w-full border px-[14px] text-[16px] outline-none placeholder:text-[#999]",n?"border-[#f84d4f]":"border-[#d8d8d8]",T?"rounded-[4px]":"rounded-none"),placeholder:e.placeholder,value:i,onChange:r=>{s(""),h(r.target.value.trim())}}),d("div",{className:"flex w-full items-start gap-[8px]",children:[t(I,{checked:u,onCheckedChange:()=>g(r=>!r),className:"mt-[2px] border-[#1d1d1f]"}),t("label",{className:"cursor-pointer text-left text-[14px] text-[#1e2024] [&_a]:underline",onClick:()=>g(r=>!r),dangerouslySetInnerHTML:{__html:e.policy??""}})]}),(n||f)&&t("div",{className:N("text-[14px] font-[700]",n&&"text-[#f84d4f]",f&&"text-[#52c41a]"),children:t(C,{html:f||n})}),t(E,{className:"w-full",loading:M,onClick:P,children:e.buttonLabel??"Subscribe"})]})]})}export{J as default};
1
+ import{jsx as s,jsxs as d}from"react/jsx-runtime";import{useCallback as D,useEffect as E,useState as l}from"react";import{Button as I,Checkbox as L,Text as N}from"@anker-in/headless-ui";import{gaTrack as O,classNames as S,useHeadlessContext as A}from"../../../../lib";import c from"js-cookie";import{parse as H}from"query-string";import{emailValidate as R}from"../../../credits/context/utils";import{useMemberPopupContext as U}from"../../context/provider";import{ROUNDED_BRANDS as j}from"../../../../constants";function q(){if(typeof window>"u")return{register_source:""};const{search:e,href:o}=window.location,a=H(e);return{fbuy_ref_code:c.get("fbuy_ref_code"),ref:c.get("ref_ads"),inviter_code:a.ic??a.inviter_code??c.get("inviter_code"),register_source:a.redirect??c.get("reg_source")??o}}function J({copy:e,email:o,onClose:a}){const{alpcConfig:k,setIsSubscribeSuccess:p,fetchCreditInfo:w,profile:m}=U(),{brand:x,locale:b,apiBaseUrl:g}=k,{brand:T}=A(),M=j.includes(T),[u,h]=l(e.policyDefaultChecked??!1),[i,_]=l(o??""),[n,t]=l(""),[f,v]=l(""),[P,y]=l(!1);E(()=>{o&&_(o)},[o]);const B=D(async()=>{if(t(""),!i)return t("Please fill in your email");if(!R(i))return t("Invalid email address");if(!u)return t("Please agree to the policy");y(!0);const{register_source:r}=q();try{const C=await(await fetch(`${g||""}/api/multipass/subscribe/subscribe_emails`,{method:"POST",credentials:"include",headers:{"Content-Type":"application/json","current-language":b},body:JSON.stringify({email:i,register_source:r,brand:x,deals_type:e.dealsType??"vip_subscribe"})})).json();C.errors?t(C.errors??"Error occurred"):(v(e.successTips??"Subscribed successfully!"),p(!0),m?.user_id&&setTimeout(()=>w(m.user_id),3e3),O({event:"ga4Event",event_name:"subscribe",event_parameters:{page_group:e.dealsType??"",position:"sticky",info:""}}),setTimeout(()=>{v(""),a()},3e3))}catch{t("Network error")}finally{y(!1)}},[i,u,b,x,e,a,p,g]);return d("div",{className:"flex flex-col gap-[12px]",children:[d("div",{className:"flex flex-col gap-[8px]",children:[e.title&&s("h2",{className:"text-[24px] font-[700] leading-[1.2] text-[#080a0f]",children:e.title}),e.desc&&s(N,{className:"text-[16px] text-[#1e2024]",html:e.desc})]}),d("div",{className:"flex flex-col gap-[16px]",children:[s("input",{className:S("h-[46px] w-full border px-[14px] text-[16px] outline-none placeholder:text-[#999]",n?"border-[#f84d4f]":"border-[#d8d8d8]",M?"rounded-[4px]":"rounded-none"),placeholder:e.placeholder,value:i,onChange:r=>{t(""),_(r.target.value.trim())}}),d("div",{className:"flex w-full items-start gap-[8px]",children:[s(L,{checked:u,onCheckedChange:()=>h(r=>!r),className:"mt-[2px] border-[#1d1d1f]"}),s("label",{className:"cursor-pointer text-left text-[14px] text-[#1e2024] [&_a]:underline",onClick:()=>h(r=>!r),dangerouslySetInnerHTML:{__html:e.policy??""}})]}),(n||f)&&s("div",{className:S("text-[14px] font-[700]",n&&"text-[#f84d4f]",f&&"text-[#52c41a]"),children:s(N,{html:f||n})}),s(I,{className:"w-full",loading:P,onClick:B,children:e.buttonLabel??"Subscribe"})]})]})}export{J as default};
2
2
  //# sourceMappingURL=SubscribeEmailPanel.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../../../src/components/memberPopup/panels/EarnCredits/SubscribeEmailPanel.tsx"],
4
- "sourcesContent": ["import { useCallback, useEffect, useState } from 'react'\nimport { Button, Checkbox, Text } from '@anker-in/headless-ui'\nimport { gaTrack, classNames as cn, useHeadlessContext } from '../../../../lib'\nimport Cookies from 'js-cookie'\nimport { parse } from 'query-string'\nimport { emailValidate } from '../../../credits/context/utils'\nimport { useMemberPopupContext } from '../../context/provider'\nimport type { SubscribeModalCopy } from '../../type'\nimport { ROUNDED_BRANDS } from '../../../../constants'\n\ntype Props = {\n copy: SubscribeModalCopy\n email?: string\n onClose: () => void\n}\n\nfunction getAdCookie() {\n if (typeof window === 'undefined') return { register_source: '' }\n const { search, href } = window.location\n const query = parse(search)\n return {\n fbuy_ref_code: Cookies.get('fbuy_ref_code'),\n ref: Cookies.get('ref_ads'),\n inviter_code: query.ic ?? query.inviter_code ?? Cookies.get('inviter_code'),\n register_source: query.redirect ?? Cookies.get('reg_source') ?? href,\n }\n}\n\nexport default function SubscribeEmailPanel({ copy, email: initialEmail, onClose }: Props) {\n const { alpcConfig, setIsSubscribeSuccess, fetchCreditInfo, profile } = useMemberPopupContext()\n const { brand, locale } = alpcConfig\n const { brand: headlessBrand } = useHeadlessContext()\n const rounded = ROUNDED_BRANDS.includes(headlessBrand)\n const [policy, setPolicy] = useState(copy.policyDefaultChecked ?? false)\n const [email, setEmail] = useState(initialEmail ?? '')\n const [errorMessage, setErrorMessage] = useState('')\n const [successMessage, setSuccessMessage] = useState('')\n const [loading, setLoading] = useState(false)\n\n useEffect(() => {\n if (initialEmail) setEmail(initialEmail)\n }, [initialEmail])\n\n const handleSubmit = useCallback(async () => {\n setErrorMessage('')\n if (!email) return setErrorMessage('Please fill in your email')\n if (!emailValidate(email)) return setErrorMessage('Invalid email address')\n if (!policy) return setErrorMessage('Please agree to the policy')\n\n setLoading(true)\n const { register_source } = getAdCookie()\n try {\n const response = await fetch('/api/multipass/subscribe/subscribe_emails', {\n method: 'POST',\n credentials: 'include',\n headers: { 'Content-Type': 'application/json', 'current-language': locale },\n body: JSON.stringify({\n email,\n register_source,\n brand,\n deals_type: copy.dealsType ?? 'vip_subscribe',\n }),\n })\n const result = await response.json()\n if (!result.errors) {\n setSuccessMessage(copy.successTips ?? 'Subscribed successfully!')\n setIsSubscribeSuccess(true)\n if (profile?.user_id) setTimeout(() => fetchCreditInfo(profile.user_id), 3000)\n gaTrack({\n event: 'ga4Event',\n event_name: 'subscribe',\n event_parameters: {\n page_group: copy.dealsType ?? '',\n position: 'sticky',\n info: '',\n },\n })\n setTimeout(() => {\n setSuccessMessage('')\n onClose()\n }, 3000)\n } else {\n setErrorMessage(result.errors ?? 'Error occurred')\n }\n } catch {\n setErrorMessage('Network error')\n } finally {\n setLoading(false)\n }\n }, [email, policy, locale, brand, copy, onClose, setIsSubscribeSuccess])\n\n return (\n <div className=\"flex flex-col gap-[12px]\">\n <div className=\"flex flex-col gap-[8px]\">\n {copy.title && <h2 className=\"text-[24px] font-[700] leading-[1.2] text-[#080a0f]\">{copy.title}</h2>}\n {copy.desc && <Text className=\"text-[16px] text-[#1e2024]\" html={copy.desc} />}\n </div>\n\n <div className=\"flex flex-col gap-[16px]\">\n <input\n className={cn(\n 'h-[46px] w-full border px-[14px] text-[16px] outline-none placeholder:text-[#999]',\n errorMessage ? 'border-[#f84d4f]' : 'border-[#d8d8d8]',\n rounded ? 'rounded-[4px]' : 'rounded-none'\n )}\n placeholder={copy.placeholder}\n value={email}\n onChange={e => {\n setErrorMessage('')\n setEmail(e.target.value.trim())\n }}\n />\n\n <div className=\"flex w-full items-start gap-[8px]\">\n <Checkbox checked={policy} onCheckedChange={() => setPolicy(v => !v)} className=\"mt-[2px] border-[#1d1d1f]\" />\n <label\n className=\"cursor-pointer text-left text-[14px] text-[#1e2024] [&_a]:underline\"\n onClick={() => setPolicy(v => !v)}\n dangerouslySetInnerHTML={{ __html: copy.policy ?? '' }}\n />\n </div>\n\n {(errorMessage || successMessage) && (\n <div\n className={cn(\n 'text-[14px] font-[700]',\n errorMessage && 'text-[#f84d4f]',\n successMessage && 'text-[#52c41a]'\n )}\n >\n <Text html={successMessage || errorMessage} />\n </div>\n )}\n\n <Button className=\"w-full\" loading={loading} onClick={handleSubmit}>\n {copy.buttonLabel ?? 'Subscribe'}\n </Button>\n </div>\n </div>\n )\n}\n"],
5
- "mappings": "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",
6
- "names": ["jsx", "jsxs", "useCallback", "useEffect", "useState", "Button", "Checkbox", "Text", "gaTrack", "cn", "useHeadlessContext", "Cookies", "parse", "emailValidate", "useMemberPopupContext", "ROUNDED_BRANDS", "getAdCookie", "search", "href", "query", "SubscribeEmailPanel", "copy", "initialEmail", "onClose", "alpcConfig", "setIsSubscribeSuccess", "fetchCreditInfo", "profile", "brand", "locale", "headlessBrand", "rounded", "policy", "setPolicy", "email", "setEmail", "errorMessage", "setErrorMessage", "successMessage", "setSuccessMessage", "loading", "setLoading", "handleSubmit", "register_source", "result", "e", "v"]
4
+ "sourcesContent": ["import { useCallback, useEffect, useState } from 'react'\nimport { Button, Checkbox, Text } from '@anker-in/headless-ui'\nimport { gaTrack, classNames as cn, useHeadlessContext } from '../../../../lib'\nimport Cookies from 'js-cookie'\nimport { parse } from 'query-string'\nimport { emailValidate } from '../../../credits/context/utils'\nimport { useMemberPopupContext } from '../../context/provider'\nimport type { SubscribeModalCopy } from '../../type'\nimport { ROUNDED_BRANDS } from '../../../../constants'\n\ntype Props = {\n copy: SubscribeModalCopy\n email?: string\n onClose: () => void\n}\n\nfunction getAdCookie() {\n if (typeof window === 'undefined') return { register_source: '' }\n const { search, href } = window.location\n const query = parse(search)\n return {\n fbuy_ref_code: Cookies.get('fbuy_ref_code'),\n ref: Cookies.get('ref_ads'),\n inviter_code: query.ic ?? query.inviter_code ?? Cookies.get('inviter_code'),\n register_source: query.redirect ?? Cookies.get('reg_source') ?? href,\n }\n}\n\nexport default function SubscribeEmailPanel({ copy, email: initialEmail, onClose }: Props) {\n const { alpcConfig, setIsSubscribeSuccess, fetchCreditInfo, profile } = useMemberPopupContext()\n const { brand, locale, apiBaseUrl } = alpcConfig\n const { brand: headlessBrand } = useHeadlessContext()\n const rounded = ROUNDED_BRANDS.includes(headlessBrand)\n const [policy, setPolicy] = useState(copy.policyDefaultChecked ?? false)\n const [email, setEmail] = useState(initialEmail ?? '')\n const [errorMessage, setErrorMessage] = useState('')\n const [successMessage, setSuccessMessage] = useState('')\n const [loading, setLoading] = useState(false)\n\n useEffect(() => {\n if (initialEmail) setEmail(initialEmail)\n }, [initialEmail])\n\n const handleSubmit = useCallback(async () => {\n setErrorMessage('')\n if (!email) return setErrorMessage('Please fill in your email')\n if (!emailValidate(email)) return setErrorMessage('Invalid email address')\n if (!policy) return setErrorMessage('Please agree to the policy')\n\n setLoading(true)\n const { register_source } = getAdCookie()\n try {\n const response = await fetch(`${apiBaseUrl || ''}/api/multipass/subscribe/subscribe_emails`, {\n method: 'POST',\n credentials: 'include',\n headers: { 'Content-Type': 'application/json', 'current-language': locale },\n body: JSON.stringify({\n email,\n register_source,\n brand,\n deals_type: copy.dealsType ?? 'vip_subscribe',\n }),\n })\n const result = await response.json()\n if (!result.errors) {\n setSuccessMessage(copy.successTips ?? 'Subscribed successfully!')\n setIsSubscribeSuccess(true)\n if (profile?.user_id) setTimeout(() => fetchCreditInfo(profile.user_id), 3000)\n gaTrack({\n event: 'ga4Event',\n event_name: 'subscribe',\n event_parameters: {\n page_group: copy.dealsType ?? '',\n position: 'sticky',\n info: '',\n },\n })\n setTimeout(() => {\n setSuccessMessage('')\n onClose()\n }, 3000)\n } else {\n setErrorMessage(result.errors ?? 'Error occurred')\n }\n } catch {\n setErrorMessage('Network error')\n } finally {\n setLoading(false)\n }\n }, [email, policy, locale, brand, copy, onClose, setIsSubscribeSuccess, apiBaseUrl])\n\n return (\n <div className=\"flex flex-col gap-[12px]\">\n <div className=\"flex flex-col gap-[8px]\">\n {copy.title && <h2 className=\"text-[24px] font-[700] leading-[1.2] text-[#080a0f]\">{copy.title}</h2>}\n {copy.desc && <Text className=\"text-[16px] text-[#1e2024]\" html={copy.desc} />}\n </div>\n\n <div className=\"flex flex-col gap-[16px]\">\n <input\n className={cn(\n 'h-[46px] w-full border px-[14px] text-[16px] outline-none placeholder:text-[#999]',\n errorMessage ? 'border-[#f84d4f]' : 'border-[#d8d8d8]',\n rounded ? 'rounded-[4px]' : 'rounded-none'\n )}\n placeholder={copy.placeholder}\n value={email}\n onChange={e => {\n setErrorMessage('')\n setEmail(e.target.value.trim())\n }}\n />\n\n <div className=\"flex w-full items-start gap-[8px]\">\n <Checkbox checked={policy} onCheckedChange={() => setPolicy(v => !v)} className=\"mt-[2px] border-[#1d1d1f]\" />\n <label\n className=\"cursor-pointer text-left text-[14px] text-[#1e2024] [&_a]:underline\"\n onClick={() => setPolicy(v => !v)}\n dangerouslySetInnerHTML={{ __html: copy.policy ?? '' }}\n />\n </div>\n\n {(errorMessage || successMessage) && (\n <div\n className={cn(\n 'text-[14px] font-[700]',\n errorMessage && 'text-[#f84d4f]',\n successMessage && 'text-[#52c41a]'\n )}\n >\n <Text html={successMessage || errorMessage} />\n </div>\n )}\n\n <Button className=\"w-full\" loading={loading} onClick={handleSubmit}>\n {copy.buttonLabel ?? 'Subscribe'}\n </Button>\n </div>\n </div>\n )\n}\n"],
5
+ "mappings": "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",
6
+ "names": ["jsx", "jsxs", "useCallback", "useEffect", "useState", "Button", "Checkbox", "Text", "gaTrack", "cn", "useHeadlessContext", "Cookies", "parse", "emailValidate", "useMemberPopupContext", "ROUNDED_BRANDS", "getAdCookie", "search", "href", "query", "SubscribeEmailPanel", "copy", "initialEmail", "onClose", "alpcConfig", "setIsSubscribeSuccess", "fetchCreditInfo", "profile", "brand", "locale", "apiBaseUrl", "headlessBrand", "rounded", "policy", "setPolicy", "email", "setEmail", "errorMessage", "setErrorMessage", "successMessage", "setSuccessMessage", "loading", "setLoading", "handleSubmit", "register_source", "result", "e", "v"]
7
7
  }
@@ -1,2 +1,2 @@
1
- import r from"swr/mutation";import{useHeadlessContext as i}from"../../context";import{fetcher as s}from"../../utils";const g=(t,o)=>{const{locale:a}=i();return r("emailValidation",(c,{arg:{token:e,code:n}})=>s({url:"/api/multipass/account/users/email_validation",baseUrl:o,method:"POST",body:{activation_code:e,verify_code:n},action:"account",needRecaptcha:!0,locale:a}),t)};export{g as useEmailValidation};
1
+ import i from"swr/mutation";import{useHeadlessContext as r}from"../../context";import{fetcher as s}from"../../utils";const g=(t,o)=>{const{locale:n}=r();return i("emailValidation",(c,{arg:{token:a,code:e}})=>s({url:`${o||""}/api/multipass/account/users/email_validation`,method:"POST",body:{activation_code:a,verify_code:e},action:"account",needRecaptcha:!0,locale:n}),t)};export{g as useEmailValidation};
2
2
  //# sourceMappingURL=useEmailValidation.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../../src/lib/registration/hooks/useEmailValidation.ts"],
4
- "sourcesContent": ["import useSWRMutation, { SWRMutationConfiguration } from 'swr/mutation'\nimport { useHeadlessContext } from '../../context'\nimport { fetcher } from '../../utils'\n\nexport const useEmailValidation = (\n config?: SWRMutationConfiguration<\n any,\n { type: 'responseError'; data: any; response: any },\n string,\n { token: string; code: string }\n >,\n apiBaseUrl?: string\n) => {\n const { locale } = useHeadlessContext()\n return useSWRMutation(\n 'emailValidation',\n (_, { arg: { token, code } }: { arg: { token: string; code: string } }) => {\n return fetcher({\n url: `/api/multipass/account/users/email_validation`,\n baseUrl: apiBaseUrl,\n method: 'POST',\n body: { activation_code: token, verify_code: code },\n action: 'account',\n needRecaptcha: true,\n locale,\n })\n },\n config\n )\n}\n"],
5
- "mappings": "AAAA,OAAOA,MAAkD,eACzD,OAAS,sBAAAC,MAA0B,gBACnC,OAAS,WAAAC,MAAe,cAEjB,MAAMC,EAAqB,CAChCC,EAMAC,IACG,CACH,KAAM,CAAE,OAAAC,CAAO,EAAIL,EAAmB,EACtC,OAAOD,EACL,kBACA,CAACO,EAAG,CAAE,IAAK,CAAE,MAAAC,EAAO,KAAAC,CAAK,CAAE,IAClBP,EAAQ,CACb,IAAK,gDACL,QAASG,EACT,OAAQ,OACR,KAAM,CAAE,gBAAiBG,EAAO,YAAaC,CAAK,EAClD,OAAQ,UACR,cAAe,GACf,OAAAH,CACF,CAAC,EAEHF,CACF,CACF",
4
+ "sourcesContent": ["import useSWRMutation, { SWRMutationConfiguration } from 'swr/mutation'\nimport { useHeadlessContext } from '../../context'\nimport { fetcher } from '../../utils'\n\nexport const useEmailValidation = (\n config?: SWRMutationConfiguration<\n any,\n { type: 'responseError'; data: any; response: any },\n string,\n { token: string; code: string }\n >,\n apiBaseUrl?: string\n) => {\n const { locale } = useHeadlessContext()\n return useSWRMutation(\n 'emailValidation',\n (_, { arg: { token, code } }: { arg: { token: string; code: string } }) => {\n return fetcher({\n url: `${apiBaseUrl || ''}/api/multipass/account/users/email_validation`,\n method: 'POST',\n body: { activation_code: token, verify_code: code },\n action: 'account',\n needRecaptcha: true,\n locale,\n })\n },\n config\n )\n}\n"],
5
+ "mappings": "AAAA,OAAOA,MAAkD,eACzD,OAAS,sBAAAC,MAA0B,gBACnC,OAAS,WAAAC,MAAe,cAEjB,MAAMC,EAAqB,CAChCC,EAMAC,IACG,CACH,KAAM,CAAE,OAAAC,CAAO,EAAIL,EAAmB,EACtC,OAAOD,EACL,kBACA,CAACO,EAAG,CAAE,IAAK,CAAE,MAAAC,EAAO,KAAAC,CAAK,CAAE,IAClBP,EAAQ,CACb,IAAK,GAAGG,GAAc,EAAE,gDACxB,OAAQ,OACR,KAAM,CAAE,gBAAiBG,EAAO,YAAaC,CAAK,EAClD,OAAQ,UACR,cAAe,GACf,OAAAH,CACF,CAAC,EAEHF,CACF,CACF",
6
6
  "names": ["useSWRMutation", "useHeadlessContext", "fetcher", "useEmailValidation", "config", "apiBaseUrl", "locale", "_", "token", "code"]
7
7
  }
@@ -1,2 +1,2 @@
1
- import o from"swr/mutation";import{useHeadlessContext as s}from"../../context";import{fetcher as r}from"../../utils";function c(a){const{appName:e,locale:t}=s();return o("send-email-validation",(p,{arg:{email:n,...i}})=>r({locale:t,url:"/api/multipass/account/users/send_validation_email",baseUrl:a,method:"POST",body:{email:n,app:e,...i},needRecaptcha:!0,action:"verifyAccount"}))}export{c as useSendEmailValidation};
1
+ import o from"swr/mutation";import{useHeadlessContext as s}from"../../context";import{fetcher as r}from"../../utils";function c(a){const{appName:e,locale:t}=s();return o("send-email-validation",(p,{arg:{email:n,...i}})=>r({locale:t,url:`${a||""}/api/multipass/account/users/send_validation_email`,method:"POST",body:{email:n,app:e,...i},needRecaptcha:!0,action:"verifyAccount"}))}export{c as useSendEmailValidation};
2
2
  //# sourceMappingURL=useSendEmailValidation.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../../src/lib/registration/hooks/useSendEmailValidation.ts"],
4
- "sourcesContent": ["import useSWRMutation, { type SWRMutationResponse } from 'swr/mutation'\nimport { useHeadlessContext } from '../../context'\nimport { fetcher } from '../../utils'\n\n// data \u53C2\u6570\u4F1A\u88AB stringify \u540E\u653E\u5165\u5230\u90AE\u4EF6\u94FE\u63A5\u53C2\u6570\u4E2D\nexport type RequestData = { email: string; data: any }\n\nexport function useSendEmailValidation(apiBaseUrl?: string): SWRMutationResponse<any, any, string, { email: string } & any> {\n const { appName, locale } = useHeadlessContext()\n\n return useSWRMutation('send-email-validation', (_, { arg: { email, ...rest } }: { arg: RequestData }) =>\n fetcher({\n locale,\n url: '/api/multipass/account/users/send_validation_email',\n baseUrl: apiBaseUrl,\n method: 'POST',\n body: { email: email, app: appName, ...rest },\n needRecaptcha: true,\n action: 'verifyAccount',\n })\n )\n}\n"],
5
- "mappings": "AAAA,OAAOA,MAAkD,eACzD,OAAS,sBAAAC,MAA0B,gBACnC,OAAS,WAAAC,MAAe,cAKjB,SAASC,EAAuBC,EAAqF,CAC1H,KAAM,CAAE,QAAAC,EAAS,OAAAC,CAAO,EAAIL,EAAmB,EAE/C,OAAOD,EAAe,wBAAyB,CAACO,EAAG,CAAE,IAAK,CAAE,MAAAC,EAAO,GAAGC,CAAK,CAAE,IAC3EP,EAAQ,CACN,OAAAI,EACA,IAAK,qDACL,QAASF,EACT,OAAQ,OACR,KAAM,CAAE,MAAOI,EAAO,IAAKH,EAAS,GAAGI,CAAK,EAC5C,cAAe,GACf,OAAQ,eACV,CAAC,CACH,CACF",
4
+ "sourcesContent": ["import useSWRMutation, { type SWRMutationResponse } from 'swr/mutation'\nimport { useHeadlessContext } from '../../context'\nimport { fetcher } from '../../utils'\n\n// data \u53C2\u6570\u4F1A\u88AB stringify \u540E\u653E\u5165\u5230\u90AE\u4EF6\u94FE\u63A5\u53C2\u6570\u4E2D\nexport type RequestData = { email: string; data: any }\n\nexport function useSendEmailValidation(apiBaseUrl?: string): SWRMutationResponse<any, any, string, { email: string } & any> {\n const { appName, locale } = useHeadlessContext()\n\n return useSWRMutation('send-email-validation', (_, { arg: { email, ...rest } }: { arg: RequestData }) =>\n fetcher({\n locale,\n url: `${apiBaseUrl || ''}/api/multipass/account/users/send_validation_email`,\n method: 'POST',\n body: { email: email, app: appName, ...rest },\n needRecaptcha: true,\n action: 'verifyAccount',\n })\n )\n}\n"],
5
+ "mappings": "AAAA,OAAOA,MAAkD,eACzD,OAAS,sBAAAC,MAA0B,gBACnC,OAAS,WAAAC,MAAe,cAKjB,SAASC,EAAuBC,EAAqF,CAC1H,KAAM,CAAE,QAAAC,EAAS,OAAAC,CAAO,EAAIL,EAAmB,EAE/C,OAAOD,EAAe,wBAAyB,CAACO,EAAG,CAAE,IAAK,CAAE,MAAAC,EAAO,GAAGC,CAAK,CAAE,IAC3EP,EAAQ,CACN,OAAAI,EACA,IAAK,GAAGF,GAAc,EAAE,qDACxB,OAAQ,OACR,KAAM,CAAE,MAAOI,EAAO,IAAKH,EAAS,GAAGI,CAAK,EAC5C,cAAe,GACf,OAAQ,eACV,CAAC,CACH,CACF",
6
6
  "names": ["useSWRMutation", "useHeadlessContext", "fetcher", "useSendEmailValidation", "apiBaseUrl", "appName", "locale", "_", "email", "rest"]
7
7
  }
@@ -1 +1 @@
1
- export declare const fetcher: ({ locale, url, baseUrl, method, headers, repeatKey, body, type, timeout, }: any) => Promise<any>;
1
+ export declare const fetcher: ({ locale, url, method, headers, repeatKey, body, type, timeout, }: any) => Promise<any>;
@@ -1,2 +1,2 @@
1
- import{handleFetchResponse as f}from"./fetchResponse";const h=async({locale:l="en",url:o,baseUrl:s,method:a="POST",headers:c={},repeatKey:g,body:e,type:i,timeout:n=9e4})=>{let r="";i==="uploadFile"?r=e:r=e?JSON.stringify(e):"";const t=new AbortController;n&&setTimeout(()=>t.abort(),n);const d=await fetch(`${s||""}${o}`,{method:a,mode:"cors",credentials:"include",headers:{"current-language":l,...c},...n&&{signal:t.signal},...a!=="GET"&&{body:r}});return f(d)};export{h as fetcher};
1
+ import{handleFetchResponse as d}from"./fetchResponse";const p=async({locale:l="en",url:o,method:a="POST",headers:s={},repeatKey:f,body:e,type:c,timeout:n=9e4})=>{let r="";c==="uploadFile"?r=e:r=e?JSON.stringify(e):"";const t=new AbortController;n&&setTimeout(()=>t.abort(),n);const i=await fetch(o,{method:a,mode:"cors",credentials:"include",headers:{"current-language":l,...s},...n&&{signal:t.signal},...a!=="GET"&&{body:r}});return d(i)};export{p as fetcher};
2
2
  //# sourceMappingURL=fetcher.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../../src/lib/utils/fetcher/fetcher.ts"],
4
- "sourcesContent": ["import { handleFetchResponse } from './fetchResponse'\n\nexport const fetcher = async ({\n locale = 'en',\n url,\n baseUrl,\n method = 'POST',\n headers = {},\n repeatKey,\n body,\n type,\n timeout = 90000,\n}: any) => {\n // \u6DFB\u52A0\u8C37\u6B4C\u9A8C\u8BC1\n let bodyData = ''\n if (type === 'uploadFile') {\n bodyData = body\n } else {\n bodyData = body ? JSON.stringify(body) : ''\n }\n\n const controller = new AbortController()\n if (timeout) {\n // \u8D85\u65F6\u62A5\u9519\n setTimeout(() => controller.abort(), timeout)\n }\n\n const data = await fetch(`${baseUrl || ''}${url}`, {\n method,\n mode: 'cors',\n credentials: 'include',\n headers: {\n 'current-language': locale,\n ...headers,\n },\n ...(timeout && { signal: controller.signal }),\n ...(method !== 'GET' && { body: bodyData }),\n })\n return handleFetchResponse(data)\n}\n"],
5
- "mappings": "AAAA,OAAS,uBAAAA,MAA2B,kBAE7B,MAAMC,EAAU,MAAO,CAC5B,OAAAC,EAAS,KACT,IAAAC,EACA,QAAAC,EACA,OAAAC,EAAS,OACT,QAAAC,EAAU,CAAC,EACX,UAAAC,EACA,KAAAC,EACA,KAAAC,EACA,QAAAC,EAAU,GACZ,IAAW,CAET,IAAIC,EAAW,GACXF,IAAS,aACXE,EAAWH,EAEXG,EAAWH,EAAO,KAAK,UAAUA,CAAI,EAAI,GAG3C,MAAMI,EAAa,IAAI,gBACnBF,GAEF,WAAW,IAAME,EAAW,MAAM,EAAGF,CAAO,EAG9C,MAAMG,EAAO,MAAM,MAAM,GAAGT,GAAW,EAAE,GAAGD,CAAG,GAAI,CACjD,OAAAE,EACA,KAAM,OACN,YAAa,UACb,QAAS,CACP,mBAAoBH,EACpB,GAAGI,CACL,EACA,GAAII,GAAW,CAAE,OAAQE,EAAW,MAAO,EAC3C,GAAIP,IAAW,OAAS,CAAE,KAAMM,CAAS,CAC3C,CAAC,EACD,OAAOX,EAAoBa,CAAI,CACjC",
6
- "names": ["handleFetchResponse", "fetcher", "locale", "url", "baseUrl", "method", "headers", "repeatKey", "body", "type", "timeout", "bodyData", "controller", "data"]
4
+ "sourcesContent": ["import { handleFetchResponse } from './fetchResponse'\n\nexport const fetcher = async ({\n locale = 'en',\n url,\n method = 'POST',\n headers = {},\n repeatKey,\n body,\n type,\n timeout = 90000,\n}: any) => {\n // \u6DFB\u52A0\u8C37\u6B4C\u9A8C\u8BC1\n let bodyData = ''\n if (type === 'uploadFile') {\n bodyData = body\n } else {\n bodyData = body ? JSON.stringify(body) : ''\n }\n\n const controller = new AbortController()\n if (timeout) {\n // \u8D85\u65F6\u62A5\u9519\n setTimeout(() => controller.abort(), timeout)\n }\n\n const data = await fetch(url, {\n method,\n mode: 'cors',\n credentials: 'include',\n headers: {\n 'current-language': locale,\n ...headers,\n },\n ...(timeout && { signal: controller.signal }),\n ...(method !== 'GET' && { body: bodyData }),\n })\n return handleFetchResponse(data)\n}\n"],
5
+ "mappings": "AAAA,OAAS,uBAAAA,MAA2B,kBAE7B,MAAMC,EAAU,MAAO,CAC5B,OAAAC,EAAS,KACT,IAAAC,EACA,OAAAC,EAAS,OACT,QAAAC,EAAU,CAAC,EACX,UAAAC,EACA,KAAAC,EACA,KAAAC,EACA,QAAAC,EAAU,GACZ,IAAW,CAET,IAAIC,EAAW,GACXF,IAAS,aACXE,EAAWH,EAEXG,EAAWH,EAAO,KAAK,UAAUA,CAAI,EAAI,GAG3C,MAAMI,EAAa,IAAI,gBACnBF,GAEF,WAAW,IAAME,EAAW,MAAM,EAAGF,CAAO,EAG9C,MAAMG,EAAO,MAAM,MAAMT,EAAK,CAC5B,OAAAC,EACA,KAAM,OACN,YAAa,UACb,QAAS,CACP,mBAAoBF,EACpB,GAAGG,CACL,EACA,GAAII,GAAW,CAAE,OAAQE,EAAW,MAAO,EAC3C,GAAIP,IAAW,OAAS,CAAE,KAAMM,CAAS,CAC3C,CAAC,EACD,OAAOV,EAAoBY,CAAI,CACjC",
6
+ "names": ["handleFetchResponse", "fetcher", "locale", "url", "method", "headers", "repeatKey", "body", "type", "timeout", "bodyData", "controller", "data"]
7
7
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@anker-in/campaign-ui",
3
- "version": "0.5.24",
3
+ "version": "0.5.26",
4
4
  "description": "Campaign UI components and utilities for Anker projects",
5
5
  "repository": {
6
6
  "type": "git",
@@ -2,7 +2,7 @@ import { useHeadlessContext, gaTrack } from '../../../lib'
2
2
 
3
3
  import { TaskType } from './type'
4
4
  import { useCreditsContext } from '../context/provider'
5
- import { useMemo } from 'react'
5
+ import { useEffect, useMemo, useState } from 'react'
6
6
  import useReceiptUploaded from '../context/hooks/useReceiptUploaded'
7
7
  import { useFirstPurchaseFinished } from '../context/hooks/useFirstPurchaseFinished'
8
8
  import { useSubscribed } from '../context/hooks/useSubscribed'
@@ -36,6 +36,28 @@ export const useActions = ({
36
36
  const uploadedReceipt = useReceiptUploaded()
37
37
  const { appName, passportUrl } = useHeadlessContext()
38
38
 
39
+ // window 在 SSR(Next.js 服务端渲染)下不存在,直接读 window.location.href 会导致
40
+ // 服务端报 "window is not defined",且服务端/客户端首帧结果不一致引发 hydration mismatch。
41
+ // 这里统一延迟到客户端挂载后再读取,保证两端首帧渲染结果一致。
42
+ const [clientUrl, setClientUrl] = useState('')
43
+
44
+ useEffect(() => {
45
+ setClientUrl(window.location.href)
46
+ }, [])
47
+
48
+ // passport 完成资料后回跳到当前页面,需整体 encode,否则 href 里的 ? / & / # 会污染 query
49
+ const completeProfileLink = useMemo(() => {
50
+ const query = new URLSearchParams()
51
+ if (appName) {
52
+ query.set('app', appName)
53
+ }
54
+ if (clientUrl) {
55
+ query.set('redirect', clientUrl)
56
+ }
57
+ const search = query.toString()
58
+ return `${passportUrl}/account/profile${search ? `?${search}` : ''}`
59
+ }, [passportUrl, appName, clientUrl])
60
+
39
61
  const profileCompleted = useMemo(() => {
40
62
  return (profile?.first_name || profile?.last_name) && profile?.phone_number && profile?.dob
41
63
  }, [profile])
@@ -121,7 +143,7 @@ export const useActions = ({
121
143
  },
122
144
  notFinished: {
123
145
  buttonLabel: copy?.completeProfile,
124
- link: `${passportUrl}/account/profile?app=${appName}&redirect=${window.location.href}`,
146
+ link: completeProfileLink,
125
147
  handleClick: () =>
126
148
  handleClickWithTrack({
127
149
  buttonName: copy?.completeProfile,
@@ -227,5 +249,6 @@ export const useActions = ({
227
249
  uploadedReceipt,
228
250
  gaParameters?.position,
229
251
  openSignUpPopup,
252
+ completeProfileLink,
230
253
  ])
231
254
  }
@@ -50,7 +50,7 @@ export function CreditsSubscribeModal({ copy, onSuccess, ...props }: CreditsSubs
50
50
  const [errorMessage, setErrorMessage] = useState('')
51
51
  const [successMessage, setSuccessMessage] = useState('')
52
52
  const [loading, setLoading] = useState(false)
53
- const { profile } = useCreditsContext()
53
+ const { profile, apiBaseUrl } = useCreditsContext()
54
54
 
55
55
  const handleEmailChange = useCallback((event: React.ChangeEvent<HTMLInputElement>) => {
56
56
  setErrorMessage('')
@@ -68,7 +68,7 @@ export function CreditsSubscribeModal({ copy, onSuccess, ...props }: CreditsSubs
68
68
  const result = await fetcher({
69
69
  locale,
70
70
  action: 'subscribe',
71
- url: '/api/multipass/subscribe/subscribe_emails',
71
+ url: `${apiBaseUrl || ''}/api/multipass/subscribe/subscribe_emails`,
72
72
  method: 'POST',
73
73
  body: {
74
74
  email,
@@ -111,7 +111,7 @@ export function CreditsSubscribeModal({ copy, onSuccess, ...props }: CreditsSubs
111
111
  setErrorMessage(result.errors || result.statusText)
112
112
  }
113
113
  },
114
- [email, locale, brand, copy.dealsType, copy.successTips, onSuccess]
114
+ [email, locale, brand, copy.dealsType, copy.successTips, onSuccess, apiBaseUrl]
115
115
  )
116
116
 
117
117
  useEffect(() => {
@@ -28,7 +28,7 @@ function getAdCookie() {
28
28
 
29
29
  export default function SubscribeEmailPanel({ copy, email: initialEmail, onClose }: Props) {
30
30
  const { alpcConfig, setIsSubscribeSuccess, fetchCreditInfo, profile } = useMemberPopupContext()
31
- const { brand, locale } = alpcConfig
31
+ const { brand, locale, apiBaseUrl } = alpcConfig
32
32
  const { brand: headlessBrand } = useHeadlessContext()
33
33
  const rounded = ROUNDED_BRANDS.includes(headlessBrand)
34
34
  const [policy, setPolicy] = useState(copy.policyDefaultChecked ?? false)
@@ -50,7 +50,7 @@ export default function SubscribeEmailPanel({ copy, email: initialEmail, onClose
50
50
  setLoading(true)
51
51
  const { register_source } = getAdCookie()
52
52
  try {
53
- const response = await fetch('/api/multipass/subscribe/subscribe_emails', {
53
+ const response = await fetch(`${apiBaseUrl || ''}/api/multipass/subscribe/subscribe_emails`, {
54
54
  method: 'POST',
55
55
  credentials: 'include',
56
56
  headers: { 'Content-Type': 'application/json', 'current-language': locale },
@@ -87,7 +87,7 @@ export default function SubscribeEmailPanel({ copy, email: initialEmail, onClose
87
87
  } finally {
88
88
  setLoading(false)
89
89
  }
90
- }, [email, policy, locale, brand, copy, onClose, setIsSubscribeSuccess])
90
+ }, [email, policy, locale, brand, copy, onClose, setIsSubscribeSuccess, apiBaseUrl])
91
91
 
92
92
  return (
93
93
  <div className="flex flex-col gap-[12px]">
@@ -16,8 +16,7 @@ export const useEmailValidation = (
16
16
  'emailValidation',
17
17
  (_, { arg: { token, code } }: { arg: { token: string; code: string } }) => {
18
18
  return fetcher({
19
- url: `/api/multipass/account/users/email_validation`,
20
- baseUrl: apiBaseUrl,
19
+ url: `${apiBaseUrl || ''}/api/multipass/account/users/email_validation`,
21
20
  method: 'POST',
22
21
  body: { activation_code: token, verify_code: code },
23
22
  action: 'account',
@@ -11,8 +11,7 @@ export function useSendEmailValidation(apiBaseUrl?: string): SWRMutationResponse
11
11
  return useSWRMutation('send-email-validation', (_, { arg: { email, ...rest } }: { arg: RequestData }) =>
12
12
  fetcher({
13
13
  locale,
14
- url: '/api/multipass/account/users/send_validation_email',
15
- baseUrl: apiBaseUrl,
14
+ url: `${apiBaseUrl || ''}/api/multipass/account/users/send_validation_email`,
16
15
  method: 'POST',
17
16
  body: { email: email, app: appName, ...rest },
18
17
  needRecaptcha: true,
@@ -3,7 +3,6 @@ import { handleFetchResponse } from './fetchResponse'
3
3
  export const fetcher = async ({
4
4
  locale = 'en',
5
5
  url,
6
- baseUrl,
7
6
  method = 'POST',
8
7
  headers = {},
9
8
  repeatKey,
@@ -25,7 +24,7 @@ export const fetcher = async ({
25
24
  setTimeout(() => controller.abort(), timeout)
26
25
  }
27
26
 
28
- const data = await fetch(`${baseUrl || ''}${url}`, {
27
+ const data = await fetch(url, {
29
28
  method,
30
29
  mode: 'cors',
31
30
  credentials: 'include',