@anker-in/campaign-ui 0.5.21 → 0.5.22-alpha.1789442674433
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/components/credits/context/hooks/useCountries.d.ts +2 -1
- package/dist/cjs/components/credits/context/hooks/useCountries.js +1 -1
- package/dist/cjs/components/credits/context/hooks/useCountries.js.map +3 -3
- package/dist/cjs/components/credits/context/hooks/useShippingCountries.d.ts +2 -1
- package/dist/cjs/components/credits/context/hooks/useShippingCountries.js +1 -1
- package/dist/cjs/components/credits/context/hooks/useShippingCountries.js.map +3 -3
- package/dist/cjs/components/credits/creditsRedeemList/RedeemProductModal/Address.js +1 -1
- package/dist/cjs/components/credits/creditsRedeemList/RedeemProductModal/Address.js.map +3 -3
- package/dist/cjs/components/credits/creditsRedeemList/RedeemProductModal/index.js +1 -1
- package/dist/cjs/components/credits/creditsRedeemList/RedeemProductModal/index.js.map +3 -3
- package/dist/cjs/components/credits/modal/SubscribeModal.d.ts +1 -0
- package/dist/cjs/components/credits/modal/SubscribeModal.js +1 -1
- package/dist/cjs/components/credits/modal/SubscribeModal.js.map +3 -3
- package/dist/cjs/components/memberPopup/context/provider.js +1 -1
- package/dist/cjs/components/memberPopup/context/provider.js.map +2 -2
- package/dist/cjs/components/memberPopup/panels/ActivitiesSubscribePanel.js +1 -1
- package/dist/cjs/components/memberPopup/panels/ActivitiesSubscribePanel.js.map +3 -3
- package/dist/cjs/components/memberPopup/panels/EarnCredits/ActivatePanel.js +1 -1
- package/dist/cjs/components/memberPopup/panels/EarnCredits/ActivatePanel.js.map +3 -3
- package/dist/cjs/components/memberPopup/panels/EarnCredits/CompleteProfilePanel.js +1 -1
- package/dist/cjs/components/memberPopup/panels/EarnCredits/CompleteProfilePanel.js.map +2 -2
- package/dist/cjs/components/memberPopup/panels/EarnCredits/hooks/useUpdateProfile.d.ts +2 -1
- package/dist/cjs/components/memberPopup/panels/EarnCredits/hooks/useUpdateProfile.js +1 -1
- package/dist/cjs/components/memberPopup/panels/EarnCredits/hooks/useUpdateProfile.js.map +3 -3
- package/dist/cjs/components/memberPopup/panels/Referral/hooks/useReferralOverview.js +1 -1
- package/dist/cjs/components/memberPopup/panels/Referral/hooks/useReferralOverview.js.map +2 -2
- package/dist/cjs/components/registration/authCodeActivate/index.js +1 -1
- package/dist/cjs/components/registration/authCodeActivate/index.js.map +3 -3
- package/dist/cjs/components/registration/context/provider.d.ts +3 -1
- package/dist/cjs/components/registration/context/provider.js +1 -1
- package/dist/cjs/components/registration/context/provider.js.map +3 -3
- package/dist/cjs/lib/registration/hooks/useEmailValidation.d.ts +1 -1
- package/dist/cjs/lib/registration/hooks/useEmailValidation.js +1 -1
- package/dist/cjs/lib/registration/hooks/useEmailValidation.js.map +3 -3
- package/dist/cjs/lib/registration/hooks/useSendEmailValidation.d.ts +1 -1
- package/dist/cjs/lib/registration/hooks/useSendEmailValidation.js +1 -1
- package/dist/cjs/lib/registration/hooks/useSendEmailValidation.js.map +3 -3
- package/dist/cjs/lib/utils/fetcher/fetcher.d.ts +1 -1
- package/dist/cjs/lib/utils/fetcher/fetcher.js +1 -1
- package/dist/cjs/lib/utils/fetcher/fetcher.js.map +3 -3
- package/dist/cjs/templates/Credits.js +1 -1
- package/dist/cjs/templates/Credits.js.map +2 -2
- package/dist/esm/components/credits/context/hooks/useCountries.d.ts +2 -1
- package/dist/esm/components/credits/context/hooks/useCountries.js +1 -1
- package/dist/esm/components/credits/context/hooks/useCountries.js.map +3 -3
- package/dist/esm/components/credits/context/hooks/useShippingCountries.d.ts +2 -1
- package/dist/esm/components/credits/context/hooks/useShippingCountries.js +1 -1
- package/dist/esm/components/credits/context/hooks/useShippingCountries.js.map +3 -3
- package/dist/esm/components/credits/creditsRedeemList/RedeemProductModal/Address.js +1 -1
- package/dist/esm/components/credits/creditsRedeemList/RedeemProductModal/Address.js.map +3 -3
- package/dist/esm/components/credits/creditsRedeemList/RedeemProductModal/index.js +1 -1
- package/dist/esm/components/credits/creditsRedeemList/RedeemProductModal/index.js.map +3 -3
- package/dist/esm/components/credits/modal/SubscribeModal.d.ts +1 -0
- package/dist/esm/components/credits/modal/SubscribeModal.js +1 -1
- package/dist/esm/components/credits/modal/SubscribeModal.js.map +3 -3
- package/dist/esm/components/memberPopup/context/provider.js +1 -1
- package/dist/esm/components/memberPopup/context/provider.js.map +2 -2
- package/dist/esm/components/memberPopup/panels/ActivitiesSubscribePanel.js +1 -1
- package/dist/esm/components/memberPopup/panels/ActivitiesSubscribePanel.js.map +3 -3
- package/dist/esm/components/memberPopup/panels/EarnCredits/ActivatePanel.js +1 -1
- package/dist/esm/components/memberPopup/panels/EarnCredits/ActivatePanel.js.map +3 -3
- package/dist/esm/components/memberPopup/panels/EarnCredits/CompleteProfilePanel.js +1 -1
- package/dist/esm/components/memberPopup/panels/EarnCredits/CompleteProfilePanel.js.map +2 -2
- package/dist/esm/components/memberPopup/panels/EarnCredits/hooks/useUpdateProfile.d.ts +2 -1
- package/dist/esm/components/memberPopup/panels/EarnCredits/hooks/useUpdateProfile.js +1 -1
- package/dist/esm/components/memberPopup/panels/EarnCredits/hooks/useUpdateProfile.js.map +3 -3
- package/dist/esm/components/memberPopup/panels/Referral/hooks/useReferralOverview.js +1 -1
- package/dist/esm/components/memberPopup/panels/Referral/hooks/useReferralOverview.js.map +2 -2
- package/dist/esm/components/registration/authCodeActivate/index.js +1 -1
- package/dist/esm/components/registration/authCodeActivate/index.js.map +3 -3
- package/dist/esm/components/registration/context/provider.d.ts +3 -1
- package/dist/esm/components/registration/context/provider.js +1 -1
- package/dist/esm/components/registration/context/provider.js.map +3 -3
- package/dist/esm/lib/registration/hooks/useEmailValidation.d.ts +1 -1
- package/dist/esm/lib/registration/hooks/useEmailValidation.js +1 -1
- package/dist/esm/lib/registration/hooks/useEmailValidation.js.map +3 -3
- package/dist/esm/lib/registration/hooks/useSendEmailValidation.d.ts +1 -1
- package/dist/esm/lib/registration/hooks/useSendEmailValidation.js +1 -1
- package/dist/esm/lib/registration/hooks/useSendEmailValidation.js.map +3 -3
- package/dist/esm/lib/utils/fetcher/fetcher.d.ts +1 -1
- package/dist/esm/lib/utils/fetcher/fetcher.js +1 -1
- package/dist/esm/lib/utils/fetcher/fetcher.js.map +3 -3
- package/dist/esm/templates/Credits.js +1 -1
- package/dist/esm/templates/Credits.js.map +2 -2
- package/package.json +1 -1
- package/src/components/credits/context/hooks/useCountries.ts +3 -3
- package/src/components/credits/context/hooks/useShippingCountries.ts +17 -8
- package/src/components/credits/creditsRedeemList/RedeemProductModal/Address.tsx +3 -1
- package/src/components/credits/creditsRedeemList/RedeemProductModal/index.tsx +2 -2
- package/src/components/credits/modal/SubscribeModal.tsx +75 -63
- package/src/components/memberPopup/context/provider.tsx +1 -0
- package/src/components/memberPopup/panels/ActivitiesSubscribePanel.tsx +3 -3
- package/src/components/memberPopup/panels/EarnCredits/ActivatePanel.tsx +3 -3
- package/src/components/memberPopup/panels/EarnCredits/CompleteProfilePanel.tsx +2 -2
- package/src/components/memberPopup/panels/EarnCredits/hooks/useUpdateProfile.ts +4 -3
- package/src/components/memberPopup/panels/Referral/hooks/useReferralOverview.ts +1 -1
- package/src/components/registration/authCodeActivate/index.tsx +3 -3
- package/src/components/registration/context/provider.tsx +8 -1
- package/src/lib/registration/hooks/useEmailValidation.ts +3 -1
- package/src/lib/registration/hooks/useSendEmailValidation.ts +2 -1
- package/src/lib/utils/fetcher/fetcher.ts +2 -1
- package/src/templates/Credits.tsx +5 -1
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { type ShippingCountry } from '../../type';
|
|
2
|
-
declare function useCountries({ shopifyStoreDomain }: {
|
|
2
|
+
declare function useCountries({ shopifyStoreDomain, apiBaseUrl }: {
|
|
3
3
|
shopifyStoreDomain: string;
|
|
4
|
+
apiBaseUrl?: string;
|
|
4
5
|
}): {
|
|
5
6
|
isLoading: boolean;
|
|
6
7
|
countries: ShippingCountry[];
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";var a=Object.defineProperty;var
|
|
1
|
+
"use strict";var a=Object.defineProperty;var m=Object.getOwnPropertyDescriptor;var C=Object.getOwnPropertyNames;var g=Object.prototype.hasOwnProperty;var y=(t,e)=>{for(var s in e)a(t,s,{get:e[s],enumerable:!0})},d=(t,e,s,r)=>{if(e&&typeof e=="object"||typeof e=="function")for(let o of C(e))!g.call(t,o)&&o!==s&&a(t,o,{get:()=>e[o],enumerable:!(r=m(e,o))||r.enumerable});return t};var S=t=>d(a({},"__esModule",{value:!0}),t);var D={};y(D,{default:()=>x});module.exports=S(D);var n=require("react"),p=require("../../../../lib");function w({shopifyStoreDomain:t,apiBaseUrl:e}){const{locale:s=""}=(0,p.useHeadlessContext)(),[r,o]=(0,n.useState)(!1),[l,c]=(0,n.useState)([]);return(0,n.useEffect)(()=>{(async()=>{o(!0);try{let i=(await(await fetch(`${e||""}/api/multipass/account/countries`,{credentials:"include",headers:{"current-language":s}})).json())?.data?.data||[];i=i.sort((f,h)=>f.name.localeCompare(h.name)),console.log("fetch shipsToCountries",i),c(i)}catch(u){c([]),console.error(u)}finally{o(!1)}})()},[s,e]),{isLoading:r,countries:l}}var x=w;
|
|
2
2
|
//# sourceMappingURL=useCountries.js.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../../../../src/components/credits/context/hooks/useCountries.ts"],
|
|
4
|
-
"sourcesContent": ["import { useEffect, useState } from 'react'\n\nimport { useHeadlessContext } from '../../../../lib'\nimport { type ShippingCountry } from '../../type'\n\nfunction useCountries({ shopifyStoreDomain }: { shopifyStoreDomain: string }) {\n const { locale = '' } = useHeadlessContext()\n\n const [isLoading, setLoading] = useState(false)\n const [countries, setCountries] = useState<ShippingCountry[]>([])\n\n useEffect(() => {\n const fetchCountries = async () => {\n setLoading(true)\n try {\n const response = await fetch('/api/multipass/account/countries
|
|
5
|
-
"mappings": "yaAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,aAAAE,IAAA,eAAAC,EAAAH,GAAA,IAAAI,EAAoC,iBAEpCC,EAAmC,2BAGnC,SAASC,EAAa,CAAE,mBAAAC,
|
|
6
|
-
"names": ["useCountries_exports", "__export", "useCountries_default", "__toCommonJS", "import_react", "import_lib", "useCountries", "shopifyStoreDomain", "locale", "isLoading", "setLoading", "countries", "setCountries", "shipsToCountries", "a", "b", "e"]
|
|
4
|
+
"sourcesContent": ["import { useEffect, useState } from 'react'\n\nimport { useHeadlessContext } from '../../../../lib'\nimport { type ShippingCountry } from '../../type'\n\nfunction useCountries({ shopifyStoreDomain, apiBaseUrl }: { shopifyStoreDomain: string; apiBaseUrl?: string }) {\n const { locale = '' } = useHeadlessContext()\n\n const [isLoading, setLoading] = useState(false)\n const [countries, setCountries] = useState<ShippingCountry[]>([])\n\n useEffect(() => {\n const fetchCountries = async () => {\n setLoading(true)\n try {\n const response = await fetch(`${apiBaseUrl || ''}/api/multipass/account/countries`, {\n credentials: 'include',\n headers: {\n 'current-language': locale,\n },\n })\n const res: any = await response.json()\n\n let shipsToCountries: ShippingCountry[] = res?.data?.data || []\n\n // \u5B57\u6BCD\u987A\u5E8F\u6392\u5E8F\n shipsToCountries = shipsToCountries.sort((a, b) => {\n return a.name.localeCompare(b.name)\n })\n\n console.log('fetch shipsToCountries', shipsToCountries)\n setCountries(shipsToCountries)\n } catch (e) {\n setCountries([])\n console.error(e)\n } finally {\n setLoading(false)\n }\n }\n\n fetchCountries()\n }, [locale, apiBaseUrl])\n\n return {\n isLoading,\n countries,\n }\n}\n\nexport default useCountries\n"],
|
|
5
|
+
"mappings": "yaAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,aAAAE,IAAA,eAAAC,EAAAH,GAAA,IAAAI,EAAoC,iBAEpCC,EAAmC,2BAGnC,SAASC,EAAa,CAAE,mBAAAC,EAAoB,WAAAC,CAAW,EAAwD,CAC7G,KAAM,CAAE,OAAAC,EAAS,EAAG,KAAI,sBAAmB,EAErC,CAACC,EAAWC,CAAU,KAAI,YAAS,EAAK,EACxC,CAACC,EAAWC,CAAY,KAAI,YAA4B,CAAC,CAAC,EAEhE,sBAAU,IAAM,EACS,SAAY,CACjCF,EAAW,EAAI,EACf,GAAI,CASF,IAAIG,GAFa,MANA,MAAM,MAAM,GAAGN,GAAc,EAAE,mCAAoC,CAClF,YAAa,UACb,QAAS,CACP,mBAAoBC,CACtB,CACF,CAAC,GAC+B,KAAK,IAEU,MAAM,MAAQ,CAAC,EAG9DK,EAAmBA,EAAiB,KAAK,CAACC,EAAGC,IACpCD,EAAE,KAAK,cAAcC,EAAE,IAAI,CACnC,EAED,QAAQ,IAAI,yBAA0BF,CAAgB,EACtDD,EAAaC,CAAgB,CAC/B,OAASG,EAAG,CACVJ,EAAa,CAAC,CAAC,EACf,QAAQ,MAAMI,CAAC,CACjB,QAAE,CACAN,EAAW,EAAK,CAClB,CACF,GAEe,CACjB,EAAG,CAACF,EAAQD,CAAU,CAAC,EAEhB,CACL,UAAAE,EACA,UAAAE,CACF,CACF,CAEA,IAAOV,EAAQI",
|
|
6
|
+
"names": ["useCountries_exports", "__export", "useCountries_default", "__toCommonJS", "import_react", "import_lib", "useCountries", "shopifyStoreDomain", "apiBaseUrl", "locale", "isLoading", "setLoading", "countries", "setCountries", "shipsToCountries", "a", "b", "e"]
|
|
7
7
|
}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { type ShippingCountry } from '../../type';
|
|
2
|
-
declare function useShippingCountries({ shopifyStoreDomain }: {
|
|
2
|
+
declare function useShippingCountries({ shopifyStoreDomain, apiBaseUrl, }: {
|
|
3
3
|
shopifyStoreDomain: string;
|
|
4
|
+
apiBaseUrl?: string;
|
|
4
5
|
}): {
|
|
5
6
|
isLoading: boolean;
|
|
6
7
|
countries: ShippingCountry[];
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";var p=Object.defineProperty;var
|
|
1
|
+
"use strict";var p=Object.defineProperty;var C=Object.getOwnPropertyDescriptor;var S=Object.getOwnPropertyNames;var y=Object.prototype.hasOwnProperty;var m=(o,e)=>{for(var t in e)p(o,t,{get:e[t],enumerable:!0})},w=(o,e,t,a)=>{if(e&&typeof e=="object"||typeof e=="function")for(let s of S(e))!y.call(o,s)&&s!==t&&p(o,s,{get:()=>e[s],enumerable:!(a=C(e,s))||a.enumerable});return o};var E=o=>w(p({},"__esModule",{value:!0}),o);var L={};m(L,{default:()=>x});module.exports=E(L);var r=require("react"),f=require("../../../../lib");function b({shopifyStoreDomain:o,apiBaseUrl:e}){const{locale:t=""}=(0,f.useHeadlessContext)(),[a,s]=(0,r.useState)(!1),[g,u]=(0,r.useState)([]);return(0,r.useEffect)(()=>{(async()=>{s(!0);try{const l=await(await fetch(`${e||""}/api/multipass/rainbowbridge/uc/shop/shipping_zones?shop=${o}`,{credentials:"include",headers:{"current-language":t}})).json();let n=[];const d=new Set;(l?.data?.data||l?.data||[]).forEach(c=>{c.countries.forEach(i=>{d.has(i.code)||(d.add(i.code),n.push(i))})}),n=n.sort((c,i)=>c.code.localeCompare(i.code)),console.log("fetch shipsToCountries",n),u(n)}catch(h){u([]),console.error(h)}finally{s(!1)}})()},[t,e,o]),{isLoading:a,countries:g}}var x=b;
|
|
2
2
|
//# sourceMappingURL=useShippingCountries.js.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../../../../src/components/credits/context/hooks/useShippingCountries.ts"],
|
|
4
|
-
"sourcesContent": ["import { useEffect, useState } from 'react'\n\nimport { useHeadlessContext } from '../../../../lib'\nimport { type ShippingCountry, type ShippingZone } from '../../type'\n\nfunction useShippingCountries({
|
|
5
|
-
"mappings": "yaAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,aAAAE,IAAA,eAAAC,EAAAH,GAAA,IAAAI,EAAoC,iBAEpCC,EAAmC,2BAGnC,SAASC,EAAqB,
|
|
6
|
-
"names": ["useShippingCountries_exports", "__export", "useShippingCountries_default", "__toCommonJS", "import_react", "import_lib", "useShippingCountries", "shopifyStoreDomain", "locale", "isLoading", "setLoading", "countries", "setCountries", "res", "shipsToCountries", "countrySet", "shippingZoneItem", "shippingZoneCountryItem", "a", "b", "e"]
|
|
4
|
+
"sourcesContent": ["import { useEffect, useState } from 'react'\n\nimport { useHeadlessContext } from '../../../../lib'\nimport { type ShippingCountry, type ShippingZone } from '../../type'\n\nfunction useShippingCountries({\n shopifyStoreDomain,\n apiBaseUrl,\n}: {\n shopifyStoreDomain: string\n apiBaseUrl?: string\n}) {\n const { locale = '' } = useHeadlessContext()\n\n const [isLoading, setLoading] = useState(false)\n const [countries, setCountries] = useState<ShippingCountry[]>([])\n\n useEffect(() => {\n const fetchCountries = async () => {\n setLoading(true)\n try {\n const response = await fetch(\n `${apiBaseUrl || ''}/api/multipass/rainbowbridge/uc/shop/shipping_zones?shop=${shopifyStoreDomain}`,\n {\n credentials: 'include',\n headers: {\n 'current-language': locale,\n },\n }\n )\n const res: any = await response.json()\n\n // \u56FD\u5BB6\u8FC7\u6EE4\n let shipsToCountries: ShippingCountry[] = []\n const countrySet = new Set()\n const shippingZones = res?.data?.data || res?.data || []\n shippingZones.forEach((shippingZoneItem: ShippingZone) => {\n shippingZoneItem.countries.forEach(shippingZoneCountryItem => {\n if (!countrySet.has(shippingZoneCountryItem.code)) {\n countrySet.add(shippingZoneCountryItem.code)\n shipsToCountries.push(shippingZoneCountryItem)\n }\n })\n })\n\n // \u5B57\u6BCD\u987A\u5E8F\u6392\u5E8F\n shipsToCountries = shipsToCountries.sort((a, b) => {\n return a.code.localeCompare(b.code)\n })\n\n console.log('fetch shipsToCountries', shipsToCountries)\n setCountries(shipsToCountries)\n } catch (e) {\n setCountries([])\n console.error(e)\n } finally {\n setLoading(false)\n }\n }\n\n fetchCountries()\n }, [locale, apiBaseUrl, shopifyStoreDomain])\n\n return {\n isLoading,\n countries,\n }\n}\n\nexport default useShippingCountries\n"],
|
|
5
|
+
"mappings": "yaAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,aAAAE,IAAA,eAAAC,EAAAH,GAAA,IAAAI,EAAoC,iBAEpCC,EAAmC,2BAGnC,SAASC,EAAqB,CAC5B,mBAAAC,EACA,WAAAC,CACF,EAGG,CACD,KAAM,CAAE,OAAAC,EAAS,EAAG,KAAI,sBAAmB,EAErC,CAACC,EAAWC,CAAU,KAAI,YAAS,EAAK,EACxC,CAACC,EAAWC,CAAY,KAAI,YAA4B,CAAC,CAAC,EAEhE,sBAAU,IAAM,EACS,SAAY,CACjCF,EAAW,EAAI,EACf,GAAI,CAUF,MAAMG,EAAW,MATA,MAAM,MACrB,GAAGN,GAAc,EAAE,4DAA4DD,CAAkB,GACjG,CACE,YAAa,UACb,QAAS,CACP,mBAAoBE,CACtB,CACF,CACF,GACgC,KAAK,EAGrC,IAAIM,EAAsC,CAAC,EAC3C,MAAMC,EAAa,IAAI,KACDF,GAAK,MAAM,MAAQA,GAAK,MAAQ,CAAC,GACzC,QAASG,GAAmC,CACxDA,EAAiB,UAAU,QAAQC,GAA2B,CACvDF,EAAW,IAAIE,EAAwB,IAAI,IAC9CF,EAAW,IAAIE,EAAwB,IAAI,EAC3CH,EAAiB,KAAKG,CAAuB,EAEjD,CAAC,CACH,CAAC,EAGDH,EAAmBA,EAAiB,KAAK,CAACI,EAAGC,IACpCD,EAAE,KAAK,cAAcC,EAAE,IAAI,CACnC,EAED,QAAQ,IAAI,yBAA0BL,CAAgB,EACtDF,EAAaE,CAAgB,CAC/B,OAASM,EAAG,CACVR,EAAa,CAAC,CAAC,EACf,QAAQ,MAAMQ,CAAC,CACjB,QAAE,CACAV,EAAW,EAAK,CAClB,CACF,GAEe,CACjB,EAAG,CAACF,EAAQD,EAAYD,CAAkB,CAAC,EAEpC,CACL,UAAAG,EACA,UAAAE,CACF,CACF,CAEA,IAAOV,EAAQI",
|
|
6
|
+
"names": ["useShippingCountries_exports", "__export", "useShippingCountries_default", "__toCommonJS", "import_react", "import_lib", "useShippingCountries", "shopifyStoreDomain", "apiBaseUrl", "locale", "isLoading", "setLoading", "countries", "setCountries", "res", "shipsToCountries", "countrySet", "shippingZoneItem", "shippingZoneCountryItem", "a", "b", "e"]
|
|
7
7
|
}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";var
|
|
1
|
+
"use strict";var T=Object.create;var a=Object.defineProperty;var I=Object.getOwnPropertyDescriptor;var P=Object.getOwnPropertyNames;var k=Object.getPrototypeOf,L=Object.prototype.hasOwnProperty;var S=(e,o)=>{for(var s in o)a(e,s,{get:o[s],enumerable:!0})},p=(e,o,s,m)=>{if(o&&typeof o=="object"||typeof o=="function")for(let d of P(o))!L.call(e,d)&&d!==s&&a(e,d,{get:()=>o[d],enumerable:!(m=I(o,d))||m.enumerable});return e};var l=(e,o,s)=>(s=e!=null?T(k(e)):{},p(o||!e||!e.__esModule?a(s,"default",{value:e,enumerable:!0}):s,e)),E=e=>p(a({},"__esModule",{value:!0}),e);var U={};S(U,{Address:()=>M});module.exports=E(U);var t=require("react/jsx-runtime"),r=require("@anker-in/headless-ui"),i=l(require("classnames")),x=require("../../context/provider"),c=require("../AddressForm"),u=require("../../../../lib"),f=require("./ProductInfo"),v=l(require("../../context/hooks/useShippingCountries")),b=require("../../../../constants");const M=({copy:e,shippingAddress:o,setAddress:s,validateAddress:m,validateErrors:d,shippingProduct:n,loading:g,address:y,disabled:N,handlePayment:R,item:h})=>{const{storeDomain:A,brand:C}=(0,u.useHeadlessContext)(),{apiBaseUrl:F}=(0,x.useCreditsContext)(),w=b.ROUNDED_BRANDS.includes(C),{countries:B=[],isLoading:D}=(0,v.default)({shopifyStoreDomain:A,apiBaseUrl:F});return(0,t.jsxs)("div",{className:"relative",children:[(0,t.jsx)("div",{className:(0,i.default)("max-h-[500px] overflow-y-auto px-[48px] pb-[24px] md:max-h-[400px] md:px-[16px]"),children:(0,t.jsxs)("div",{children:[o&&(0,t.jsx)(r.Text,{className:"mb-5 text-[16px] font-bold",html:o}),e?.product?.addressForm&&(0,t.jsx)(c.AddressForm,{onChange:s,validate:m,errors:d,form:e.product.addressForm,countries:B,countriesLoading:D})]})}),(0,t.jsxs)("div",{className:"sticky bottom-0 flex flex-col items-center justify-center bg-white px-[48px] py-[24px] l:px-[16px]",children:[(0,t.jsxs)("div",{className:(0,i.default)("flex w-full items-center bg-[#F5F5F7] p-[16px]",!w&&"rounded-none"),children:[n&&(0,t.jsx)(r.Text,{className:"mb-5 text-[16px] font-bold",html:n}),(0,t.jsx)(f.ProductInfo,{item:h,copy:e})]}),(0,t.jsx)(r.Button,{loading:g||!y,variant:"primary",className:"mx-auto mt-[16px] w-[444px] md:mt-[12px] md:w-full",onClick:R,disabled:N,children:e.product.paymentButton})]})]})};
|
|
2
2
|
//# sourceMappingURL=Address.js.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../../../../src/components/credits/creditsRedeemList/RedeemProductModal/Address.tsx"],
|
|
4
|
-
"sourcesContent": ["import { Button, Text } from '@anker-in/headless-ui'\nimport classNames from 'classnames'\nimport { AddressForm } from '../AddressForm'\nimport { useHeadlessContext } from '../../../../lib'\nimport type { RedeemableItem as RedeemableItemType, RedeemModalCommon } from '../../type'\nimport { ProductInfo } from './ProductInfo'\nimport useShippingCountries from '../../context/hooks/useShippingCountries'\nimport { ROUNDED_BRANDS } from '../../../../constants'\n\ntype AddressProps = {\n copy: RedeemModalCommon\n shippingAddress: string\n setAddress: (address: Record<string, any>) => void\n validateAddress: (address: Record<string, any>) => boolean\n validateErrors: { key: string; message: string }[]\n item: RedeemableItemType\n loading: boolean\n address: Record<string, any> | undefined\n disabled: boolean\n handlePayment: () => void\n shippingProduct: string\n}\n\nexport const Address = ({\n copy,\n shippingAddress,\n setAddress,\n validateAddress,\n validateErrors,\n shippingProduct,\n loading,\n address,\n disabled,\n handlePayment,\n item,\n}: AddressProps) => {\n const { storeDomain, brand } = useHeadlessContext()\n const rounded = ROUNDED_BRANDS.includes(brand)\n const { countries = [], isLoading: countriesLoading } = useShippingCountries({ shopifyStoreDomain: storeDomain })\n\n return (\n <div className=\"relative\">\n <div className={classNames('max-h-[500px] overflow-y-auto px-[48px] pb-[24px] md:max-h-[400px] md:px-[16px]')}>\n <div>\n {shippingAddress && <Text className=\"mb-5 text-[16px] font-bold\" html={shippingAddress}></Text>}\n {copy?.product?.addressForm && (\n <AddressForm\n onChange={setAddress}\n validate={validateAddress}\n errors={validateErrors}\n form={copy.product.addressForm}\n countries={countries}\n countriesLoading={countriesLoading}\n ></AddressForm>\n )}\n </div>\n </div>\n <div className=\"sticky bottom-0 flex flex-col items-center justify-center bg-white px-[48px] py-[24px] l:px-[16px]\">\n <div className={classNames('flex w-full items-center bg-[#F5F5F7] p-[16px]', !rounded && 'rounded-none')}>\n {shippingProduct && <Text className=\"mb-5 text-[16px] font-bold\" html={shippingProduct}></Text>}\n <ProductInfo item={item} copy={copy} />\n </div>\n <Button\n loading={loading || !address}\n variant=\"primary\"\n className=\"mx-auto mt-[16px] w-[444px] md:mt-[12px] md:w-full\"\n onClick={handlePayment}\n disabled={disabled}\n >\n {copy.product.paymentButton}\n </Button>\n </div>\n </div>\n )\n}\n"],
|
|
5
|
-
"mappings": "0jBAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,aAAAE,IAAA,eAAAC,EAAAH,
|
|
6
|
-
"names": ["Address_exports", "__export", "Address", "__toCommonJS", "import_jsx_runtime", "import_headless_ui", "import_classnames", "import_AddressForm", "import_lib", "import_ProductInfo", "import_useShippingCountries", "import_constants", "copy", "shippingAddress", "setAddress", "validateAddress", "validateErrors", "shippingProduct", "loading", "address", "disabled", "handlePayment", "item", "storeDomain", "brand", "rounded", "countries", "countriesLoading", "useShippingCountries", "classNames"]
|
|
4
|
+
"sourcesContent": ["import { Button, Text } from '@anker-in/headless-ui'\nimport classNames from 'classnames'\nimport { useCreditsContext } from '../../context/provider'\nimport { AddressForm } from '../AddressForm'\nimport { useHeadlessContext } from '../../../../lib'\nimport type { RedeemableItem as RedeemableItemType, RedeemModalCommon } from '../../type'\nimport { ProductInfo } from './ProductInfo'\nimport useShippingCountries from '../../context/hooks/useShippingCountries'\nimport { ROUNDED_BRANDS } from '../../../../constants'\n\ntype AddressProps = {\n copy: RedeemModalCommon\n shippingAddress: string\n setAddress: (address: Record<string, any>) => void\n validateAddress: (address: Record<string, any>) => boolean\n validateErrors: { key: string; message: string }[]\n item: RedeemableItemType\n loading: boolean\n address: Record<string, any> | undefined\n disabled: boolean\n handlePayment: () => void\n shippingProduct: string\n}\n\nexport const Address = ({\n copy,\n shippingAddress,\n setAddress,\n validateAddress,\n validateErrors,\n shippingProduct,\n loading,\n address,\n disabled,\n handlePayment,\n item,\n}: AddressProps) => {\n const { storeDomain, brand } = useHeadlessContext()\n const { apiBaseUrl } = useCreditsContext()\n const rounded = ROUNDED_BRANDS.includes(brand)\n const { countries = [], isLoading: countriesLoading } = useShippingCountries({ shopifyStoreDomain: storeDomain, apiBaseUrl })\n\n return (\n <div className=\"relative\">\n <div className={classNames('max-h-[500px] overflow-y-auto px-[48px] pb-[24px] md:max-h-[400px] md:px-[16px]')}>\n <div>\n {shippingAddress && <Text className=\"mb-5 text-[16px] font-bold\" html={shippingAddress}></Text>}\n {copy?.product?.addressForm && (\n <AddressForm\n onChange={setAddress}\n validate={validateAddress}\n errors={validateErrors}\n form={copy.product.addressForm}\n countries={countries}\n countriesLoading={countriesLoading}\n ></AddressForm>\n )}\n </div>\n </div>\n <div className=\"sticky bottom-0 flex flex-col items-center justify-center bg-white px-[48px] py-[24px] l:px-[16px]\">\n <div className={classNames('flex w-full items-center bg-[#F5F5F7] p-[16px]', !rounded && 'rounded-none')}>\n {shippingProduct && <Text className=\"mb-5 text-[16px] font-bold\" html={shippingProduct}></Text>}\n <ProductInfo item={item} copy={copy} />\n </div>\n <Button\n loading={loading || !address}\n variant=\"primary\"\n className=\"mx-auto mt-[16px] w-[444px] md:mt-[12px] md:w-full\"\n onClick={handlePayment}\n disabled={disabled}\n >\n {copy.product.paymentButton}\n </Button>\n </div>\n </div>\n )\n}\n"],
|
|
5
|
+
"mappings": "0jBAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,aAAAE,IAAA,eAAAC,EAAAH,GA6CQ,IAAAI,EAAA,6BA7CRC,EAA6B,iCAC7BC,EAAuB,yBACvBC,EAAkC,kCAClCC,EAA4B,0BAC5BC,EAAmC,2BAEnCC,EAA4B,yBAC5BC,EAAiC,uDACjCC,EAA+B,iCAgBxB,MAAMV,EAAU,CAAC,CACtB,KAAAW,EACA,gBAAAC,EACA,WAAAC,EACA,gBAAAC,EACA,eAAAC,EACA,gBAAAC,EACA,QAAAC,EACA,QAAAC,EACA,SAAAC,EACA,cAAAC,EACA,KAAAC,CACF,IAAoB,CAClB,KAAM,CAAE,YAAAC,EAAa,MAAAC,CAAM,KAAI,sBAAmB,EAC5C,CAAE,WAAAC,CAAW,KAAI,qBAAkB,EACnCC,EAAU,iBAAe,SAASF,CAAK,EACvC,CAAE,UAAAG,EAAY,CAAC,EAAG,UAAWC,CAAiB,KAAI,EAAAC,SAAqB,CAAE,mBAAoBN,EAAa,WAAAE,CAAW,CAAC,EAE5H,SACE,QAAC,OAAI,UAAU,WACb,oBAAC,OAAI,aAAW,EAAAK,SAAW,iFAAiF,EAC1G,oBAAC,OACE,UAAAjB,MAAmB,OAAC,QAAK,UAAU,6BAA6B,KAAMA,EAAiB,EACvFD,GAAM,SAAS,gBACd,OAAC,eACC,SAAUE,EACV,SAAUC,EACV,OAAQC,EACR,KAAMJ,EAAK,QAAQ,YACnB,UAAWe,EACX,iBAAkBC,EACnB,GAEL,EACF,KACA,QAAC,OAAI,UAAU,qGACb,qBAAC,OAAI,aAAW,EAAAE,SAAW,iDAAkD,CAACJ,GAAW,cAAc,EACpG,UAAAT,MAAmB,OAAC,QAAK,UAAU,6BAA6B,KAAMA,EAAiB,KACxF,OAAC,eAAY,KAAMK,EAAM,KAAMV,EAAM,GACvC,KACA,OAAC,UACC,QAASM,GAAW,CAACC,EACrB,QAAQ,UACR,UAAU,qDACV,QAASE,EACT,SAAUD,EAET,SAAAR,EAAK,QAAQ,cAChB,GACF,GACF,CAEJ",
|
|
6
|
+
"names": ["Address_exports", "__export", "Address", "__toCommonJS", "import_jsx_runtime", "import_headless_ui", "import_classnames", "import_provider", "import_AddressForm", "import_lib", "import_ProductInfo", "import_useShippingCountries", "import_constants", "copy", "shippingAddress", "setAddress", "validateAddress", "validateErrors", "shippingProduct", "loading", "address", "disabled", "handlePayment", "item", "storeDomain", "brand", "apiBaseUrl", "rounded", "countries", "countriesLoading", "useShippingCountries", "classNames"]
|
|
7
7
|
}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";var
|
|
1
|
+
"use strict";var W=Object.create;var g=Object.defineProperty;var X=Object.getOwnPropertyDescriptor;var Y=Object.getOwnPropertyNames;var Z=Object.getPrototypeOf,$=Object.prototype.hasOwnProperty;var j=(r,e)=>{for(var s in e)g(r,s,{get:e[s],enumerable:!0})},S=(r,e,s,u)=>{if(e&&typeof e=="object"||typeof e=="function")for(let i of Y(e))!$.call(r,i)&&i!==s&&g(r,i,{get:()=>e[i],enumerable:!(u=X(e,i))||u.enumerable});return r};var U=(r,e,s)=>(s=r!=null?W(Z(r)):{},S(e||!r||!r.__esModule?g(s,"default",{value:r,enumerable:!0}):s,r)),D=r=>S(g({},"__esModule",{value:!0}),r);var oe={};j(oe,{default:()=>re});module.exports=D(oe);var a=require("react/jsx-runtime"),b=U(require("classnames")),d=require("react"),x=require("../../context/provider"),y=U(require("../../context/hooks/useShippingCountries")),f=require("../../context/const"),L=require("../../context/hooks/useAddressValidate"),O=require("../../context/hooks/useRedeemProduct"),q=require("../../modal/ModalContainer"),w=require("../../../../lib"),F=require("./Error"),K=require("./Success"),_=require("./Address"),k=require("./Init");function ee({item:r,copy:e,onError:s,...u}){const{fetchCreditInfo:i,profile:M,pageCommon:B,apiBaseUrl:T}=(0,x.useCreditsContext)(),{storeDomain:G}=(0,w.useHeadlessContext)(),{shippingAddress:H,shippingProduct:P}=e.product,[n,m]=(0,d.useState)("init"),[l,R]=(0,d.useState)(),[J,p]=(0,d.useState)({code:0,message:"",imageUrl:""}),[C,c]=(0,d.useState)(!1),{countries:A=[],isLoading:te}=(0,y.default)({shopifyStoreDomain:G,apiBaseUrl:T}),{isMutating:h,trigger:N}=(0,O.useRedeemProduct)({onSuccess(o){if(!o){m("error"),p({code:0,imageUrl:e.errorImageUrl||"",message:e.commonError||""});return}if(o?.code===0)i(M?.user_id),m("success");else{let t,v;o.code===f.AlpcErrorCode.CodeLpcShopifyCouponRuleRedeemLimit?(t=e.redeemLimitError,c(!0)):o.code===f.AlpcErrorCode.CodeLpcRuleInventoryNotEnough?(t=e.inventoryNotEnough,c(!0),v=e.inventoryNotEnough):o.code===f.AlpcErrorCode.CodeLpcNotEnoughCredits?(t=e.creditsNotEnough,c(!0),i(M?.user_id)):o.code===f.AlpcErrorCode.CodeCrossSiteError&&(t=e.crossSiteError,c(!0)),m("error"),p({code:o.code,imageUrl:v||e.errorImageUrl||"",message:t||e.commonError||""}),s&&s(o.code)}},onError(o){m("error"),p({code:0,imageUrl:e.errorImageUrl||"",message:e.commonError||""})}}),E=(0,d.useMemo)(()=>e?.product.form?.flat().find(t=>t.type==="state")?.key,[e?.product.form]),{validate:I,errors:V}=(0,L.useAddressValidate)({address:l,validatorInfo:B?.validatorInfo,formData:e?.product.form?.flat()||[],errorLabel:{require:e.product.required,email:e.product.invalidEmail}}),z=(0,d.useCallback)(async()=>{const o=[];if(E&&((A.find(Q=>Q.code===l.country)?.provinces||[]).length||o.push(E)),I({force:!0,ignoreKeys:o}))return;let t={...l};t.name&&delete t.name,t.country==="UK"&&(t.country="GB"),N({address:btoa(JSON.stringify(t)),rule_id:Number(r.alpc?.id)})},[r,N,E,I,l,A]);return(0,d.useEffect)(()=>()=>{c(!1),p({code:0,message:"",imageUrl:""}),m("init"),R(void 0)},[]),(0,a.jsxs)(q.CreditsModalContainer,{...u,isOpen:!!r,className:(0,b.default)("w-[540px] md:h-auto min-md:max-h-[calc(100vh-40px)]",n!=="init"&&"w-[740px] md:w-full"),scrollClassName:"mb-0 min-l:px-0 md:mb-0 px-0",titleClassName:(0,b.default)("h-[56px]",n==="init"&&"bg-[#F5F5F7]"),title:n==="address"?"Order Confirmation":"",children:[n==="error"&&(0,a.jsx)(F.Error,{errorInfo:J}),n==="success"&&(0,a.jsx)(K.Success,{copy:e,shippingProduct:P,loading:h,address:l,disabled:C,onClose:u.onClose,item:r}),n==="address"&&(0,a.jsx)(_.Address,{copy:e,shippingAddress:H,setAddress:R,validateAddress:I,validateErrors:V,shippingProduct:P,loading:h,address:l,disabled:C,handlePayment:z,item:r}),n==="init"&&(0,a.jsx)(k.Init,{item:r,copy:e,loading:h,disabled:C,setStatus:m})]})}var re=ee;
|
|
2
2
|
//# sourceMappingURL=index.js.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../../../../src/components/credits/creditsRedeemList/RedeemProductModal/index.tsx"],
|
|
4
|
-
"sourcesContent": ["import classNames from 'classnames'\nimport { useCallback, useEffect, useMemo, useState } from 'react'\nimport { useCreditsContext } from '../../context/provider'\nimport useShippingCountries from '../../context/hooks/useShippingCountries'\nimport { AlpcErrorCode } from '../../context/const'\nimport { useAddressValidate } from '../../context/hooks/useAddressValidate'\nimport { useRedeemProduct } from '../../context/hooks/useRedeemProduct'\nimport type { ModalContainerProps } from '../../modal/ModalContainer'\nimport { CreditsModalContainer } from '../../modal/ModalContainer'\nimport type { RedeemableItem as RedeemableItemType, RedeemModalCommon } from '../../type'\nimport { useHeadlessContext } from '../../../../lib'\nimport { Error } from './Error'\nimport { Success } from './Success'\nimport { Address } from './Address'\nimport { Init } from './Init'\n\ntype RedeemProductModalProps = Omit<ModalContainerProps, 'isOpen'> & {\n item: RedeemableItemType\n copy: RedeemModalCommon\n onError: (code: AlpcErrorCode) => void\n}\n\nfunction RedeemProductModal({ item, copy, onError, ...props }: RedeemProductModalProps) {\n const { fetchCreditInfo, profile, pageCommon } = useCreditsContext()\n const { storeDomain } = useHeadlessContext()\n\n const { shippingAddress, shippingProduct } = copy.product\n\n const [status, setStatus] = useState<'init' | 'address' | 'success' | 'error'>('init')\n const [address, setAddress] = useState<any>()\n const [errorInfo, setErrorInfo] = useState({\n code: 0,\n message: '',\n imageUrl: '',\n })\n const [disabled, setDisabled] = useState(false)\n\n const { countries = [], isLoading: countriesLoading } = useShippingCountries({ shopifyStoreDomain: storeDomain })\n\n const { isMutating: loading, trigger } = useRedeemProduct({\n onSuccess(responseData) {\n if (!responseData) {\n setStatus('error')\n setErrorInfo({\n code: 0,\n imageUrl: copy.errorImageUrl || '',\n message: copy.commonError || '',\n })\n return\n }\n\n if (responseData?.code === 0) {\n fetchCreditInfo(profile?.user_id)\n setStatus('success')\n } else {\n let errorMsg\n let errorImage\n if (responseData.code === AlpcErrorCode.CodeLpcShopifyCouponRuleRedeemLimit) {\n errorMsg = copy.redeemLimitError\n setDisabled(true)\n } else if (responseData.code === AlpcErrorCode.CodeLpcRuleInventoryNotEnough) {\n errorMsg = copy.inventoryNotEnough\n setDisabled(true)\n errorImage = copy.inventoryNotEnough\n } else if (responseData.code === AlpcErrorCode.CodeLpcNotEnoughCredits) {\n errorMsg = copy.creditsNotEnough\n setDisabled(true)\n fetchCreditInfo(profile?.user_id)\n } else if (responseData.code === AlpcErrorCode.CodeCrossSiteError) {\n errorMsg = copy.crossSiteError\n setDisabled(true)\n }\n\n setStatus('error')\n setErrorInfo({\n code: responseData.code,\n imageUrl: errorImage || copy.errorImageUrl || '',\n message: errorMsg || copy.commonError || '',\n })\n onError && onError(responseData.code)\n }\n },\n onError(error) {\n setStatus('error')\n setErrorInfo({\n code: 0,\n imageUrl: copy.errorImageUrl || '',\n message: copy.commonError || '',\n })\n },\n })\n\n const stateInputKey = useMemo(() => {\n const stateInput = copy?.product.form?.flat().find(item => item.type === 'state')\n return stateInput?.key\n }, [copy?.product.form])\n\n const { validate: validateAddress, errors: validateErrors } = useAddressValidate({\n address: address,\n validatorInfo: pageCommon?.validatorInfo,\n formData: copy?.product.form?.flat() || [],\n errorLabel: {\n require: copy.product.required,\n email: copy.product.invalidEmail,\n },\n })\n\n const handlePayment = useCallback(async () => {\n const ignoreKeys: string[] = []\n\n if (stateInputKey) {\n const provinces = countries.find(item => item.code === address.country)?.provinces || []\n\n if (!provinces.length) {\n ignoreKeys.push(stateInputKey as never)\n }\n }\n\n if (\n validateAddress({\n force: true,\n ignoreKeys,\n })\n ) {\n // \u5730\u5740\u6821\u9A8C\u9519\u8BEF\n return\n }\n let requestAddress = { ...address }\n if (requestAddress.name) {\n delete requestAddress.name\n }\n if (requestAddress.country === 'UK') {\n requestAddress.country = 'GB'\n }\n trigger({\n address: btoa(JSON.stringify(requestAddress)),\n rule_id: Number(item.alpc?.id),\n })\n }, [item, trigger, stateInputKey, validateAddress, address, countries])\n\n useEffect(() => {\n return () => {\n setDisabled(false)\n setErrorInfo({ code: 0, message: '', imageUrl: '' })\n setStatus('init')\n setAddress(undefined)\n }\n }, [])\n\n return (\n <CreditsModalContainer\n {...props}\n isOpen={!!item}\n className={classNames(\n 'w-[540px] md:h-auto min-md:max-h-[calc(100vh-40px)]',\n status !== 'init' && 'w-[740px] md:w-full'\n )}\n scrollClassName=\"mb-0 min-l:px-0 md:mb-0 px-0\"\n titleClassName={classNames('h-[56px]', status === 'init' && 'bg-[#F5F5F7]')}\n title={status === 'address' ? 'Order Confirmation' : ''}\n >\n {status === 'error' && <Error errorInfo={errorInfo} />}\n {status === 'success' && (\n <Success\n copy={copy}\n shippingProduct={shippingProduct}\n loading={loading}\n address={address}\n disabled={disabled}\n onClose={props.onClose}\n item={item}\n />\n )}\n {status === 'address' && (\n <Address\n copy={copy}\n shippingAddress={shippingAddress}\n setAddress={setAddress}\n validateAddress={validateAddress}\n validateErrors={validateErrors}\n shippingProduct={shippingProduct}\n loading={loading}\n address={address}\n disabled={disabled}\n handlePayment={handlePayment}\n item={item}\n />\n )}\n {status === 'init' && (\n <Init item={item} copy={copy} loading={loading} disabled={disabled} setStatus={setStatus} />\n )}\n </CreditsModalContainer>\n )\n}\n\nexport default RedeemProductModal\n"],
|
|
5
|
-
"mappings": "0jBAAA,IAAAA,GAAA,GAAAC,EAAAD,GAAA,aAAAE,KAAA,eAAAC,EAAAH,IAsJI,IAAAI,EAAA,6BAtJJC,EAAuB,yBACvBC,EAA0D,iBAC1DC,EAAkC,kCAClCC,EAAiC,uDACjCC,EAA8B,+BAC9BC,EAAmC,kDACnCC,EAAiC,gDAEjCC,EAAsC,sCAEtCC,EAAmC,2BACnCC,EAAsB,mBACtBC,EAAwB,qBACxBC,EAAwB,qBACxBC,EAAqB,kBAQrB,SAASC,
|
|
6
|
-
"names": ["RedeemProductModal_exports", "__export", "RedeemProductModal_default", "__toCommonJS", "import_jsx_runtime", "import_classnames", "import_react", "import_provider", "import_useShippingCountries", "import_const", "import_useAddressValidate", "import_useRedeemProduct", "import_ModalContainer", "import_lib", "import_Error", "import_Success", "import_Address", "import_Init", "RedeemProductModal", "item", "copy", "onError", "props", "fetchCreditInfo", "profile", "pageCommon", "storeDomain", "shippingAddress", "shippingProduct", "status", "setStatus", "address", "setAddress", "errorInfo", "setErrorInfo", "disabled", "setDisabled", "countries", "countriesLoading", "useShippingCountries", "loading", "trigger", "responseData", "errorMsg", "errorImage", "error", "stateInputKey", "validateAddress", "validateErrors", "handlePayment", "ignoreKeys", "requestAddress", "classNames"]
|
|
4
|
+
"sourcesContent": ["import classNames from 'classnames'\nimport { useCallback, useEffect, useMemo, useState } from 'react'\nimport { useCreditsContext } from '../../context/provider'\nimport useShippingCountries from '../../context/hooks/useShippingCountries'\nimport { AlpcErrorCode } from '../../context/const'\nimport { useAddressValidate } from '../../context/hooks/useAddressValidate'\nimport { useRedeemProduct } from '../../context/hooks/useRedeemProduct'\nimport type { ModalContainerProps } from '../../modal/ModalContainer'\nimport { CreditsModalContainer } from '../../modal/ModalContainer'\nimport type { RedeemableItem as RedeemableItemType, RedeemModalCommon } from '../../type'\nimport { useHeadlessContext } from '../../../../lib'\nimport { Error } from './Error'\nimport { Success } from './Success'\nimport { Address } from './Address'\nimport { Init } from './Init'\n\ntype RedeemProductModalProps = Omit<ModalContainerProps, 'isOpen'> & {\n item: RedeemableItemType\n copy: RedeemModalCommon\n onError: (code: AlpcErrorCode) => void\n}\n\nfunction RedeemProductModal({ item, copy, onError, ...props }: RedeemProductModalProps) {\n const { fetchCreditInfo, profile, pageCommon, apiBaseUrl } = useCreditsContext()\n const { storeDomain } = useHeadlessContext()\n\n const { shippingAddress, shippingProduct } = copy.product\n\n const [status, setStatus] = useState<'init' | 'address' | 'success' | 'error'>('init')\n const [address, setAddress] = useState<any>()\n const [errorInfo, setErrorInfo] = useState({\n code: 0,\n message: '',\n imageUrl: '',\n })\n const [disabled, setDisabled] = useState(false)\n\n const { countries = [], isLoading: countriesLoading } = useShippingCountries({ shopifyStoreDomain: storeDomain, apiBaseUrl })\n\n const { isMutating: loading, trigger } = useRedeemProduct({\n onSuccess(responseData) {\n if (!responseData) {\n setStatus('error')\n setErrorInfo({\n code: 0,\n imageUrl: copy.errorImageUrl || '',\n message: copy.commonError || '',\n })\n return\n }\n\n if (responseData?.code === 0) {\n fetchCreditInfo(profile?.user_id)\n setStatus('success')\n } else {\n let errorMsg\n let errorImage\n if (responseData.code === AlpcErrorCode.CodeLpcShopifyCouponRuleRedeemLimit) {\n errorMsg = copy.redeemLimitError\n setDisabled(true)\n } else if (responseData.code === AlpcErrorCode.CodeLpcRuleInventoryNotEnough) {\n errorMsg = copy.inventoryNotEnough\n setDisabled(true)\n errorImage = copy.inventoryNotEnough\n } else if (responseData.code === AlpcErrorCode.CodeLpcNotEnoughCredits) {\n errorMsg = copy.creditsNotEnough\n setDisabled(true)\n fetchCreditInfo(profile?.user_id)\n } else if (responseData.code === AlpcErrorCode.CodeCrossSiteError) {\n errorMsg = copy.crossSiteError\n setDisabled(true)\n }\n\n setStatus('error')\n setErrorInfo({\n code: responseData.code,\n imageUrl: errorImage || copy.errorImageUrl || '',\n message: errorMsg || copy.commonError || '',\n })\n onError && onError(responseData.code)\n }\n },\n onError(error) {\n setStatus('error')\n setErrorInfo({\n code: 0,\n imageUrl: copy.errorImageUrl || '',\n message: copy.commonError || '',\n })\n },\n })\n\n const stateInputKey = useMemo(() => {\n const stateInput = copy?.product.form?.flat().find(item => item.type === 'state')\n return stateInput?.key\n }, [copy?.product.form])\n\n const { validate: validateAddress, errors: validateErrors } = useAddressValidate({\n address: address,\n validatorInfo: pageCommon?.validatorInfo,\n formData: copy?.product.form?.flat() || [],\n errorLabel: {\n require: copy.product.required,\n email: copy.product.invalidEmail,\n },\n })\n\n const handlePayment = useCallback(async () => {\n const ignoreKeys: string[] = []\n\n if (stateInputKey) {\n const provinces = countries.find(item => item.code === address.country)?.provinces || []\n\n if (!provinces.length) {\n ignoreKeys.push(stateInputKey as never)\n }\n }\n\n if (\n validateAddress({\n force: true,\n ignoreKeys,\n })\n ) {\n // \u5730\u5740\u6821\u9A8C\u9519\u8BEF\n return\n }\n let requestAddress = { ...address }\n if (requestAddress.name) {\n delete requestAddress.name\n }\n if (requestAddress.country === 'UK') {\n requestAddress.country = 'GB'\n }\n trigger({\n address: btoa(JSON.stringify(requestAddress)),\n rule_id: Number(item.alpc?.id),\n })\n }, [item, trigger, stateInputKey, validateAddress, address, countries])\n\n useEffect(() => {\n return () => {\n setDisabled(false)\n setErrorInfo({ code: 0, message: '', imageUrl: '' })\n setStatus('init')\n setAddress(undefined)\n }\n }, [])\n\n return (\n <CreditsModalContainer\n {...props}\n isOpen={!!item}\n className={classNames(\n 'w-[540px] md:h-auto min-md:max-h-[calc(100vh-40px)]',\n status !== 'init' && 'w-[740px] md:w-full'\n )}\n scrollClassName=\"mb-0 min-l:px-0 md:mb-0 px-0\"\n titleClassName={classNames('h-[56px]', status === 'init' && 'bg-[#F5F5F7]')}\n title={status === 'address' ? 'Order Confirmation' : ''}\n >\n {status === 'error' && <Error errorInfo={errorInfo} />}\n {status === 'success' && (\n <Success\n copy={copy}\n shippingProduct={shippingProduct}\n loading={loading}\n address={address}\n disabled={disabled}\n onClose={props.onClose}\n item={item}\n />\n )}\n {status === 'address' && (\n <Address\n copy={copy}\n shippingAddress={shippingAddress}\n setAddress={setAddress}\n validateAddress={validateAddress}\n validateErrors={validateErrors}\n shippingProduct={shippingProduct}\n loading={loading}\n address={address}\n disabled={disabled}\n handlePayment={handlePayment}\n item={item}\n />\n )}\n {status === 'init' && (\n <Init item={item} copy={copy} loading={loading} disabled={disabled} setStatus={setStatus} />\n )}\n </CreditsModalContainer>\n )\n}\n\nexport default RedeemProductModal\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": ["RedeemProductModal_exports", "__export", "RedeemProductModal_default", "__toCommonJS", "import_jsx_runtime", "import_classnames", "import_react", "import_provider", "import_useShippingCountries", "import_const", "import_useAddressValidate", "import_useRedeemProduct", "import_ModalContainer", "import_lib", "import_Error", "import_Success", "import_Address", "import_Init", "RedeemProductModal", "item", "copy", "onError", "props", "fetchCreditInfo", "profile", "pageCommon", "apiBaseUrl", "storeDomain", "shippingAddress", "shippingProduct", "status", "setStatus", "address", "setAddress", "errorInfo", "setErrorInfo", "disabled", "setDisabled", "countries", "countriesLoading", "useShippingCountries", "loading", "trigger", "responseData", "errorMsg", "errorImage", "error", "stateInputKey", "validateAddress", "validateErrors", "handlePayment", "ignoreKeys", "requestAddress", "classNames"]
|
|
7
7
|
}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";var
|
|
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||_||""})})]})})}
|
|
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 {
|
|
5
|
-
"mappings": "0jBAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,2BAAAE,IAAA,eAAAC,EAAAH,
|
|
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", "
|
|
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"]
|
|
7
7
|
}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";var n=Object.defineProperty;var m=Object.getOwnPropertyDescriptor;var b=Object.getOwnPropertyNames;var S=Object.prototype.hasOwnProperty;var v=(e,o)=>{for(var
|
|
1
|
+
"use strict";var n=Object.defineProperty;var m=Object.getOwnPropertyDescriptor;var b=Object.getOwnPropertyNames;var S=Object.prototype.hasOwnProperty;var v=(e,o)=>{for(var t in o)n(e,t,{get:o[t],enumerable:!0})},M=(e,o,t,i)=>{if(o&&typeof o=="object"||typeof o=="function")for(let r of b(o))!S.call(e,r)&&r!==t&&n(e,r,{get:()=>o[r],enumerable:!(i=m(o,r))||i.enumerable});return e};var g=e=>M(n({},"__esModule",{value:!0}),e);var x={};v(x,{MemberPopupContext:()=>a,MemberPopupProvider:()=>I,useMemberPopupContext:()=>h});module.exports=g(x);var p=require("react/jsx-runtime"),s=require("react"),c=require("../../../lib"),u=require("../../registration");const a=(0,s.createContext)({profile:null,isLoadingProfile:!1,creditInfo:void 0,fetchCreditInfo:()=>{},openSignUpPopup:()=>{},openSignInPopup:()=>{},taskIdToTypeMapping:{},alpcConfig:{brand:"",locale:"",appName:""},isSubscribeSuccess:!1,setIsSubscribeSuccess:()=>{},isActivateSuccess:!1,setIsActivateSuccess:()=>{},isProfileCompleteSuccess:!1,setIsProfileCompleteSuccess:()=>{}});function I({children:e,headlessConfig:o,earnCreditsCopy:t,...i}){const[r,l]=(0,s.useState)(!1),[P,d]=(0,s.useState)(!1),[f,C]=(0,s.useState)(!1);return(0,p.jsx)(c.HeadlessProvider,{headlessConfig:o,children:(0,p.jsx)(u.RegistrationProvider,{email:i.profile?.email,copy:{authCodeActivate:t?.authCodeActivate},apiBaseUrl:i.alpcConfig?.apiBaseUrl,children:(0,p.jsx)(a.Provider,{value:{...i,isSubscribeSuccess:r,setIsSubscribeSuccess:l,isActivateSuccess:P,setIsActivateSuccess:d,isProfileCompleteSuccess:f,setIsProfileCompleteSuccess:C},children:e})})})}function h(){const e=(0,s.useContext)(a);if(!e)throw new Error("useMemberPopupContext must be used within a MemberPopupProvider");return e}
|
|
2
2
|
//# sourceMappingURL=provider.js.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../../../src/components/memberPopup/context/provider.tsx"],
|
|
4
|
-
"sourcesContent": ["import { createContext, PropsWithChildren, useContext, useState } from 'react'\nimport { HeadlessProvider, type HeadlessConfig } from '../../../lib'\nimport { RegistrationProvider } from '../../registration'\nimport type { EarnCreditsCopy, MemberPopupContextValue, MemberPopupInternalContextValue } from '../type'\n\nexport const MemberPopupContext = createContext<MemberPopupInternalContextValue>({\n profile: null,\n isLoadingProfile: false,\n creditInfo: undefined,\n fetchCreditInfo: () => {},\n openSignUpPopup: () => {},\n openSignInPopup: () => {},\n taskIdToTypeMapping: {},\n alpcConfig: {\n brand: '',\n locale: '',\n appName: '',\n },\n isSubscribeSuccess: false,\n setIsSubscribeSuccess: () => {},\n isActivateSuccess: false,\n setIsActivateSuccess: () => {},\n isProfileCompleteSuccess: false,\n setIsProfileCompleteSuccess: () => {},\n})\n\ntype MemberPopupProviderProps = MemberPopupContextValue & {\n headlessConfig: HeadlessConfig\n earnCreditsCopy?: EarnCreditsCopy\n}\n\nexport function MemberPopupProvider({\n children,\n headlessConfig,\n earnCreditsCopy,\n ...contextValue\n}: PropsWithChildren<MemberPopupProviderProps>) {\n const [isSubscribeSuccess, setIsSubscribeSuccess] = useState(false)\n const [isActivateSuccess, setIsActivateSuccess] = useState(false)\n const [isProfileCompleteSuccess, setIsProfileCompleteSuccess] = useState(false)\n\n return (\n <HeadlessProvider headlessConfig={headlessConfig}>\n <RegistrationProvider\n email={contextValue.profile?.email}\n copy={{ authCodeActivate: earnCreditsCopy?.authCodeActivate }}\n >\n <MemberPopupContext.Provider\n value={{\n ...contextValue,\n isSubscribeSuccess,\n setIsSubscribeSuccess,\n isActivateSuccess,\n setIsActivateSuccess,\n isProfileCompleteSuccess,\n setIsProfileCompleteSuccess,\n }}\n >\n {children}\n </MemberPopupContext.Provider>\n </RegistrationProvider>\n </HeadlessProvider>\n )\n}\n\nexport function useMemberPopupContext() {\n const context = useContext(MemberPopupContext)\n if (!context) {\n throw new Error('useMemberPopupContext must be used within a MemberPopupProvider')\n }\n return context\n}\n"],
|
|
5
|
-
"mappings": "yaAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,wBAAAE,EAAA,wBAAAC,EAAA,0BAAAC,IAAA,eAAAC,EAAAL,
|
|
4
|
+
"sourcesContent": ["import { createContext, PropsWithChildren, useContext, useState } from 'react'\nimport { HeadlessProvider, type HeadlessConfig } from '../../../lib'\nimport { RegistrationProvider } from '../../registration'\nimport type { EarnCreditsCopy, MemberPopupContextValue, MemberPopupInternalContextValue } from '../type'\n\nexport const MemberPopupContext = createContext<MemberPopupInternalContextValue>({\n profile: null,\n isLoadingProfile: false,\n creditInfo: undefined,\n fetchCreditInfo: () => {},\n openSignUpPopup: () => {},\n openSignInPopup: () => {},\n taskIdToTypeMapping: {},\n alpcConfig: {\n brand: '',\n locale: '',\n appName: '',\n },\n isSubscribeSuccess: false,\n setIsSubscribeSuccess: () => {},\n isActivateSuccess: false,\n setIsActivateSuccess: () => {},\n isProfileCompleteSuccess: false,\n setIsProfileCompleteSuccess: () => {},\n})\n\ntype MemberPopupProviderProps = MemberPopupContextValue & {\n headlessConfig: HeadlessConfig\n earnCreditsCopy?: EarnCreditsCopy\n}\n\nexport function MemberPopupProvider({\n children,\n headlessConfig,\n earnCreditsCopy,\n ...contextValue\n}: PropsWithChildren<MemberPopupProviderProps>) {\n const [isSubscribeSuccess, setIsSubscribeSuccess] = useState(false)\n const [isActivateSuccess, setIsActivateSuccess] = useState(false)\n const [isProfileCompleteSuccess, setIsProfileCompleteSuccess] = useState(false)\n\n return (\n <HeadlessProvider headlessConfig={headlessConfig}>\n <RegistrationProvider\n email={contextValue.profile?.email}\n copy={{ authCodeActivate: earnCreditsCopy?.authCodeActivate }}\n apiBaseUrl={contextValue.alpcConfig?.apiBaseUrl}\n >\n <MemberPopupContext.Provider\n value={{\n ...contextValue,\n isSubscribeSuccess,\n setIsSubscribeSuccess,\n isActivateSuccess,\n setIsActivateSuccess,\n isProfileCompleteSuccess,\n setIsProfileCompleteSuccess,\n }}\n >\n {children}\n </MemberPopupContext.Provider>\n </RegistrationProvider>\n </HeadlessProvider>\n )\n}\n\nexport function useMemberPopupContext() {\n const context = useContext(MemberPopupContext)\n if (!context) {\n throw new Error('useMemberPopupContext must be used within a MemberPopupProvider')\n }\n return context\n}\n"],
|
|
5
|
+
"mappings": "yaAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,wBAAAE,EAAA,wBAAAC,EAAA,0BAAAC,IAAA,eAAAC,EAAAL,GAgDQ,IAAAM,EAAA,6BAhDRC,EAAuE,iBACvEC,EAAsD,wBACtDC,EAAqC,8BAG9B,MAAMP,KAAqB,iBAA+C,CAC/E,QAAS,KACT,iBAAkB,GAClB,WAAY,OACZ,gBAAiB,IAAM,CAAC,EACxB,gBAAiB,IAAM,CAAC,EACxB,gBAAiB,IAAM,CAAC,EACxB,oBAAqB,CAAC,EACtB,WAAY,CACV,MAAO,GACP,OAAQ,GACR,QAAS,EACX,EACA,mBAAoB,GACpB,sBAAuB,IAAM,CAAC,EAC9B,kBAAmB,GACnB,qBAAsB,IAAM,CAAC,EAC7B,yBAA0B,GAC1B,4BAA6B,IAAM,CAAC,CACtC,CAAC,EAOM,SAASC,EAAoB,CAClC,SAAAO,EACA,eAAAC,EACA,gBAAAC,EACA,GAAGC,CACL,EAAgD,CAC9C,KAAM,CAACC,EAAoBC,CAAqB,KAAI,YAAS,EAAK,EAC5D,CAACC,EAAmBC,CAAoB,KAAI,YAAS,EAAK,EAC1D,CAACC,EAA0BC,CAA2B,KAAI,YAAS,EAAK,EAE9E,SACE,OAAC,oBAAiB,eAAgBR,EAChC,mBAAC,wBACC,MAAOE,EAAa,SAAS,MAC7B,KAAM,CAAE,iBAAkBD,GAAiB,gBAAiB,EAC5D,WAAYC,EAAa,YAAY,WAErC,mBAACX,EAAmB,SAAnB,CACC,MAAO,CACL,GAAGW,EACH,mBAAAC,EACA,sBAAAC,EACA,kBAAAC,EACA,qBAAAC,EACA,yBAAAC,EACA,4BAAAC,CACF,EAEC,SAAAT,EACH,EACF,EACF,CAEJ,CAEO,SAASN,GAAwB,CACtC,MAAMgB,KAAU,cAAWlB,CAAkB,EAC7C,GAAI,CAACkB,EACH,MAAM,IAAI,MAAM,iEAAiE,EAEnF,OAAOA,CACT",
|
|
6
6
|
"names": ["provider_exports", "__export", "MemberPopupContext", "MemberPopupProvider", "useMemberPopupContext", "__toCommonJS", "import_jsx_runtime", "import_react", "import_lib", "import_registration", "children", "headlessConfig", "earnCreditsCopy", "contextValue", "isSubscribeSuccess", "setIsSubscribeSuccess", "isActivateSuccess", "setIsActivateSuccess", "isProfileCompleteSuccess", "setIsProfileCompleteSuccess", "context"]
|
|
7
7
|
}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";var
|
|
1
|
+
"use strict";var F=Object.create;var f=Object.defineProperty;var H=Object.getOwnPropertyDescriptor;var I=Object.getOwnPropertyNames;var O=Object.getPrototypeOf,j=Object.prototype.hasOwnProperty;var $=(e,r)=>{for(var s in r)f(e,s,{get:r[s],enumerable:!0})},M=(e,r,s,d)=>{if(r&&typeof r=="object"||typeof r=="function")for(let n of I(r))!j.call(e,n)&&n!==s&&f(e,n,{get:()=>r[n],enumerable:!(d=H(r,n))||d.enumerable});return e};var q=(e,r,s)=>(s=e!=null?F(O(e)):{},M(r||!e||!e.__esModule?f(s,"default",{value:e,enumerable:!0}):s,e)),z=e=>M(f({},"__esModule",{value:!0}),e);var W={};$(W,{default:()=>P});module.exports=z(W);var t=require("react/jsx-runtime"),o=require("react"),a=require("@anker-in/headless-ui"),c=require("../../../lib"),m=q(require("js-cookie")),S=require("query-string"),k=require("../../credits/context/utils"),L=require("../context/provider"),T=require("../../../constants");function J(){if(typeof window>"u")return{register_source:""};const{search:e,href:r}=window.location,s=(0,S.parse)(e);return{fbuy_ref_code:m.default.get("fbuy_ref_code"),ref:m.default.get("ref_ads"),inviter_code:s.ic??s.inviter_code??m.default.get("inviter_code"),register_source:s.redirect??m.default.get("reg_source")??r}}async function V(e){if(typeof window>"u"||!window?.grecaptcha?.execute||!e)return"";try{return await window.grecaptcha.execute(e,{action:"activity"})}catch{return""}}function P({copy:e,email:r}){const{alpcConfig:s,setIsSubscribeSuccess:d,pageHandle:n}=(0,L.useMemberPopupContext)(),{locale:x,apiBaseUrl:g}=s,{brand:y,storeDomain:h,recaptchaSitekey:U}=(0,c.useHeadlessContext)(),_=T.ROUNDED_BRANDS.includes(y),[p,A]=(0,o.useState)(e.policyDefaultChecked??!1),[u,v]=(0,o.useState)(r??""),[w,i]=(0,o.useState)(""),[B,C]=(0,o.useState)(""),[D,N]=(0,o.useState)(!1);(0,o.useEffect)(()=>{r&&v(r)},[r]);const R=(0,o.useCallback)(async()=>{if(i(""),!u)return i("Please fill in your email");if(!(0,k.emailValidate)(u))return i("Invalid email address");if(!p)return i("Please agree to the policy");N(!0);const{register_source:l}=J(),E=await V(U||"");try{const b=await(await fetch(`${g||""}/api/multipass/rainbowbridge/activities`,{method:"POST",credentials:"include",headers:{"Content-Type":"application/json","current-language":x,"X-Recaptcha-Token":E},body:JSON.stringify({email:u,register_source:l,shopify_domain:h,single_brand_subscribe:e.single_brand_subscribe??!0,genre:e.genre??e.dealsType??"",sub_brand_type:e.sub_brand_type??""})})).json();b?.data?.is_new_subscribe?b?.data?.errors?i(b?.data?.errors??"Error occurred"):(C(e.successTips??"Subscribed successfully!"),d(!0),(0,c.gaTrack)({event:"ga4Event",event_name:"subscribe",event_parameters:{page_group:e.dealsType??e.genre??"",position:"sticky",info:"Member Floating Window"}})):C(e.subscribedLabel??"You've already subscribed!")}catch{i("Network error")}finally{N(!1)}},[u,p,x,h,e,d,g]);return(0,t.jsxs)("div",{className:"flex flex-col",children:[(0,t.jsx)(a.Text,{className:"text-[22px] font-bold leading-[1.2]",html:e.title}),e.desc&&(0,t.jsx)(a.Text,{className:"text-[16px] mt-[16px] font-bold text-[#1E2024]",html:e.desc}),(0,t.jsx)("input",{className:(0,c.classNames)("h-[46px] w-full border mt-[8px] px-[14px] text-[16px] outline-none placeholder:text-[#999]",_?"rounded-[4px]":"rounded-none"),placeholder:e.placeholder,value:u,onChange:l=>{i(""),v(l.target.value.trim())}}),(0,t.jsxs)("div",{className:"flex w-full mt-[8px] items-start gap-[8px]",children:[(0,t.jsx)(a.Checkbox,{checked:p,onCheckedChange:()=>A(l=>!l),className:"border-[#1d1d1f] mt-[2px]"}),(0,t.jsx)("label",{className:"text-left text-[14px] font-bold text-[#4A4C56] [&_a]:underline",dangerouslySetInnerHTML:{__html:e.policy??""}})]}),(0,t.jsx)(a.Button,{className:"w-full mt-[16px]",size:"base",loading:D,onClick:R,children:e.buttonLabel??"Subscribe"}),w&&(0,t.jsx)("div",{className:"text-left mt-[4px] text-[16px] font-semibold text-[#f84d4f]",children:(0,t.jsx)(a.Text,{html:w})}),(0,t.jsx)("div",{className:"text-left mt-[4px] text-[16px] font-semibold text-[#52c41a]",children:(0,t.jsx)(a.Text,{html:B})}),e.promo&&(0,t.jsxs)("div",{className:"flex mt-[32px] flex-col text-left",children:[(0,t.jsxs)("div",{className:"flex flex-col",children:[e.promo?.title&&(0,t.jsx)(a.Text,{className:"text-[18px] font-bold leading-[1.2]",html:e.promo.title}),e.promo.description&&(0,t.jsx)(a.Text,{className:"text-[14px] text-[#080A0F] mt-[8px] font-bold",html:e.promo.description}),e.promo.learnMoreLabel&&e.promo.learnMoreUrl&&(0,t.jsxs)("a",{href:(()=>{try{if(!n)return e.promo.learnMoreUrl;const l=new URL(e.promo.learnMoreUrl,window.location.href);return l.searchParams.set("ref",`${n}_subscribe`),l.toString()}catch{return e.promo.learnMoreUrl}})(),target:"_blank",rel:"noopener noreferrer",className:"flex mt-[8px] items-center gap-[4px] text-[14px] font-bold",children:[e.promo.learnMoreLabel,(0,t.jsx)("svg",{width:"16",height:"16",viewBox:"0 0 16 16",fill:"none",children:(0,t.jsx)("path",{d:"M5.52827 3.52876C5.78862 3.26841 6.21063 3.26841 6.47098 3.52876L10.471 7.52876C10.7313 7.78911 10.7313 8.21112 10.471 8.47147L6.47098 12.4715C6.21063 12.7318 5.78862 12.7318 5.52827 12.4715C5.26792 12.2111 5.26792 11.7891 5.52827 11.5288L9.05692 8.00011L5.52827 4.47147C5.26792 4.21112 5.26792 3.78911 5.52827 3.52876Z",fill:"#080A0F"})})]})]}),e.promo.image?.url&&(0,t.jsx)(a.Picture,{source:e.promo.image.url,alt:e.promo.image.alt??"",className:(0,c.classNames)("h-[100px] mt-[8px] w-full object-cover",_?"rounded-[8px]":"rounded-none")})]})]})}
|
|
2
2
|
//# sourceMappingURL=ActivitiesSubscribePanel.js.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../../../src/components/memberPopup/panels/ActivitiesSubscribePanel.tsx"],
|
|
4
|
-
"sourcesContent": ["import { useCallback, useEffect, useState } from 'react'\nimport { Button, Checkbox, Picture, 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}\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\nasync function getRecaptchaToken(sitekey: string): Promise<string> {\n if (typeof window === 'undefined' || !window?.grecaptcha?.execute) return ''\n if (!sitekey) return ''\n try {\n return await window.grecaptcha.execute(sitekey, { action: 'activity' })\n } catch {\n return ''\n }\n}\n\nexport default function ActivitiesSubscribeModal({ copy, email: initialEmail }: Props) {\n const { alpcConfig, setIsSubscribeSuccess, pageHandle } = useMemberPopupContext()\n const { locale } = alpcConfig\n const { brand: headlessBrand, storeDomain, recaptchaSitekey } = 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 const recaptchaToken = await getRecaptchaToken(recaptchaSitekey || '')\n try {\n const response = await fetch('/api/multipass/rainbowbridge/activities
|
|
5
|
-
"mappings": "0jBAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,aAAAE,IAAA,eAAAC,EAAAH,GA0GM,IAAAI,EAAA,6BA1GNC,EAAiD,iBACjDC,EAAgD,iCAChDC,EAA8D,wBAC9DC,EAAoB,wBACpBC,EAAsB,wBACtBC,EAA8B,uCAC9BC,EAAsC,+BAEtCC,EAA+B,8BAO/B,SAASC,GAAc,CACrB,GAAI,OAAO,OAAW,IAAa,MAAO,CAAE,gBAAiB,EAAG,EAChE,KAAM,CAAE,OAAAC,EAAQ,KAAAC,CAAK,EAAI,OAAO,SAC1BC,KAAQ,SAAMF,CAAM,EAC1B,MAAO,CACL,cAAe,EAAAG,QAAQ,IAAI,eAAe,EAC1C,IAAK,EAAAA,QAAQ,IAAI,SAAS,EAC1B,aAAcD,EAAM,IAAMA,EAAM,cAAgB,EAAAC,QAAQ,IAAI,cAAc,EAC1E,gBAAiBD,EAAM,UAAY,EAAAC,QAAQ,IAAI,YAAY,GAAKF,CAClE,CACF,CAEA,eAAeG,EAAkBC,EAAkC,CAEjE,GADI,OAAO,OAAW,KAAe,CAAC,QAAQ,YAAY,SACtD,CAACA,EAAS,MAAO,GACrB,GAAI,CACF,OAAO,MAAM,OAAO,WAAW,QAAQA,EAAS,CAAE,OAAQ,UAAW,CAAC,CACxE,MAAQ,CACN,MAAO,EACT,CACF,CAEe,SAARjB,EAA0C,CAAE,KAAAkB,EAAM,MAAOC,CAAa,EAAU,CACrF,KAAM,CAAE,WAAAC,EAAY,sBAAAC,EAAuB,WAAAC,CAAW,KAAI,yBAAsB,EAC1E,CAAE,OAAAC,
|
|
6
|
-
"names": ["ActivitiesSubscribePanel_exports", "__export", "ActivitiesSubscribeModal", "__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", "getRecaptchaToken", "sitekey", "copy", "initialEmail", "alpcConfig", "setIsSubscribeSuccess", "pageHandle", "locale", "headlessBrand", "storeDomain", "recaptchaSitekey", "rounded", "policy", "setPolicy", "email", "setEmail", "errorMessage", "setErrorMessage", "successMessage", "setSuccessMessage", "loading", "setLoading", "handleSubmit", "register_source", "recaptchaToken", "result", "cn", "e", "v", "url"]
|
|
4
|
+
"sourcesContent": ["import { useCallback, useEffect, useState } from 'react'\nimport { Button, Checkbox, Picture, 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}\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\nasync function getRecaptchaToken(sitekey: string): Promise<string> {\n if (typeof window === 'undefined' || !window?.grecaptcha?.execute) return ''\n if (!sitekey) return ''\n try {\n return await window.grecaptcha.execute(sitekey, { action: 'activity' })\n } catch {\n return ''\n }\n}\n\nexport default function ActivitiesSubscribeModal({ copy, email: initialEmail }: Props) {\n const { alpcConfig, setIsSubscribeSuccess, pageHandle } = useMemberPopupContext()\n const { locale, apiBaseUrl } = alpcConfig\n const { brand: headlessBrand, storeDomain, recaptchaSitekey } = 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 const recaptchaToken = await getRecaptchaToken(recaptchaSitekey || '')\n try {\n const response = await fetch(`${apiBaseUrl || ''}/api/multipass/rainbowbridge/activities`, {\n method: 'POST',\n credentials: 'include',\n headers: {\n 'Content-Type': 'application/json',\n 'current-language': locale,\n 'X-Recaptcha-Token': recaptchaToken,\n },\n body: JSON.stringify({\n email,\n register_source,\n shopify_domain: storeDomain,\n single_brand_subscribe: copy.single_brand_subscribe ?? true,\n genre: copy.genre ?? copy.dealsType ?? '',\n sub_brand_type: copy.sub_brand_type ?? '',\n }),\n })\n const result = await response.json()\n if (!result?.data?.is_new_subscribe) {\n setSuccessMessage(copy.subscribedLabel ?? \"You've already subscribed!\")\n } else if (!result?.data?.errors) {\n setSuccessMessage(copy.successTips ?? 'Subscribed successfully!')\n setIsSubscribeSuccess(true)\n gaTrack({\n event: 'ga4Event',\n event_name: 'subscribe',\n event_parameters: {\n page_group: copy.dealsType ?? copy.genre ?? '',\n position: 'sticky',\n info: 'Member Floating Window',\n },\n })\n } else {\n setErrorMessage(result?.data?.errors ?? 'Error occurred')\n }\n } catch {\n setErrorMessage('Network error')\n } finally {\n setLoading(false)\n }\n }, [email, policy, locale, storeDomain, copy, setIsSubscribeSuccess, apiBaseUrl])\n\n return (\n <div className=\"flex flex-col\">\n <Text className=\"text-[22px] font-bold leading-[1.2]\" html={copy.title} />\n {copy.desc && <Text className=\"text-[16px] mt-[16px] font-bold text-[#1E2024]\" html={copy.desc} />}\n\n <input\n className={cn(\n 'h-[46px] w-full border mt-[8px] px-[14px] text-[16px] outline-none placeholder:text-[#999]',\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 mt-[8px] items-start gap-[8px]\">\n <Checkbox checked={policy} onCheckedChange={() => setPolicy(v => !v)} className=\"border-[#1d1d1f] mt-[2px]\" />\n <label\n className=\"text-left text-[14px] font-bold text-[#4A4C56] [&_a]:underline\"\n dangerouslySetInnerHTML={{ __html: copy.policy ?? '' }}\n />\n </div>\n\n <Button className=\"w-full mt-[16px]\" size=\"base\" loading={loading} onClick={handleSubmit}>\n {copy.buttonLabel ?? 'Subscribe'}\n </Button>\n\n {errorMessage && (\n <div className=\"text-left mt-[4px] text-[16px] font-semibold text-[#f84d4f]\">\n <Text html={errorMessage} />\n </div>\n )}\n <div className=\"text-left mt-[4px] text-[16px] font-semibold text-[#52c41a]\">\n <Text html={successMessage} />\n </div>\n\n {copy.promo && (\n <div className=\"flex mt-[32px] flex-col text-left\">\n <div className=\"flex flex-col\">\n {copy.promo?.title && <Text className=\"text-[18px] font-bold leading-[1.2]\" html={copy.promo.title} />}\n {copy.promo.description && (\n <Text className=\"text-[14px] text-[#080A0F] mt-[8px] font-bold\" html={copy.promo.description} />\n )}\n {copy.promo.learnMoreLabel && copy.promo.learnMoreUrl && (\n <a\n href={(() => {\n try {\n if (!pageHandle) return copy.promo!.learnMoreUrl!\n const url = new URL(copy.promo!.learnMoreUrl!, window.location.href)\n url.searchParams.set('ref', `${pageHandle}_subscribe`)\n return url.toString()\n } catch {\n return copy.promo!.learnMoreUrl!\n }\n })()}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n className=\"flex mt-[8px] items-center gap-[4px] text-[14px] font-bold\"\n >\n {copy.promo.learnMoreLabel}\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\">\n <path\n d=\"M5.52827 3.52876C5.78862 3.26841 6.21063 3.26841 6.47098 3.52876L10.471 7.52876C10.7313 7.78911 10.7313 8.21112 10.471 8.47147L6.47098 12.4715C6.21063 12.7318 5.78862 12.7318 5.52827 12.4715C5.26792 12.2111 5.26792 11.7891 5.52827 11.5288L9.05692 8.00011L5.52827 4.47147C5.26792 4.21112 5.26792 3.78911 5.52827 3.52876Z\"\n fill=\"#080A0F\"\n />\n </svg>\n </a>\n )}\n </div>\n {copy.promo.image?.url && (\n <Picture\n source={copy.promo.image.url}\n alt={copy.promo.image.alt ?? ''}\n className={cn('h-[100px] mt-[8px] w-full object-cover', rounded ? 'rounded-[8px]' : 'rounded-none')}\n />\n )}\n </div>\n )}\n </div>\n )\n}\n"],
|
|
5
|
+
"mappings": "0jBAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,aAAAE,IAAA,eAAAC,EAAAH,GA0GM,IAAAI,EAAA,6BA1GNC,EAAiD,iBACjDC,EAAgD,iCAChDC,EAA8D,wBAC9DC,EAAoB,wBACpBC,EAAsB,wBACtBC,EAA8B,uCAC9BC,EAAsC,+BAEtCC,EAA+B,8BAO/B,SAASC,GAAc,CACrB,GAAI,OAAO,OAAW,IAAa,MAAO,CAAE,gBAAiB,EAAG,EAChE,KAAM,CAAE,OAAAC,EAAQ,KAAAC,CAAK,EAAI,OAAO,SAC1BC,KAAQ,SAAMF,CAAM,EAC1B,MAAO,CACL,cAAe,EAAAG,QAAQ,IAAI,eAAe,EAC1C,IAAK,EAAAA,QAAQ,IAAI,SAAS,EAC1B,aAAcD,EAAM,IAAMA,EAAM,cAAgB,EAAAC,QAAQ,IAAI,cAAc,EAC1E,gBAAiBD,EAAM,UAAY,EAAAC,QAAQ,IAAI,YAAY,GAAKF,CAClE,CACF,CAEA,eAAeG,EAAkBC,EAAkC,CAEjE,GADI,OAAO,OAAW,KAAe,CAAC,QAAQ,YAAY,SACtD,CAACA,EAAS,MAAO,GACrB,GAAI,CACF,OAAO,MAAM,OAAO,WAAW,QAAQA,EAAS,CAAE,OAAQ,UAAW,CAAC,CACxE,MAAQ,CACN,MAAO,EACT,CACF,CAEe,SAARjB,EAA0C,CAAE,KAAAkB,EAAM,MAAOC,CAAa,EAAU,CACrF,KAAM,CAAE,WAAAC,EAAY,sBAAAC,EAAuB,WAAAC,CAAW,KAAI,yBAAsB,EAC1E,CAAE,OAAAC,EAAQ,WAAAC,CAAW,EAAIJ,EACzB,CAAE,MAAOK,EAAe,YAAAC,EAAa,iBAAAC,CAAiB,KAAI,sBAAmB,EAC7EC,EAAU,iBAAe,SAASH,CAAa,EAC/C,CAACI,EAAQC,CAAS,KAAI,YAASZ,EAAK,sBAAwB,EAAK,EACjE,CAACa,EAAOC,CAAQ,KAAI,YAASb,GAAgB,EAAE,EAC/C,CAACc,EAAcC,CAAe,KAAI,YAAS,EAAE,EAC7C,CAACC,EAAgBC,CAAiB,KAAI,YAAS,EAAE,EACjD,CAACC,EAASC,CAAU,KAAI,YAAS,EAAK,KAE5C,aAAU,IAAM,CACVnB,GAAca,EAASb,CAAY,CACzC,EAAG,CAACA,CAAY,CAAC,EAEjB,MAAMoB,KAAe,eAAY,SAAY,CAE3C,GADAL,EAAgB,EAAE,EACd,CAACH,EAAO,OAAOG,EAAgB,2BAA2B,EAC9D,GAAI,IAAC,iBAAcH,CAAK,EAAG,OAAOG,EAAgB,uBAAuB,EACzE,GAAI,CAACL,EAAQ,OAAOK,EAAgB,4BAA4B,EAEhEI,EAAW,EAAI,EACf,KAAM,CAAE,gBAAAE,CAAgB,EAAI7B,EAAY,EAClC8B,EAAiB,MAAMzB,EAAkBW,GAAoB,EAAE,EACrE,GAAI,CAkBF,MAAMe,EAAS,MAjBE,MAAM,MAAM,GAAGlB,GAAc,EAAE,0CAA2C,CACzF,OAAQ,OACR,YAAa,UACb,QAAS,CACP,eAAgB,mBAChB,mBAAoBD,EACpB,oBAAqBkB,CACvB,EACA,KAAM,KAAK,UAAU,CACnB,MAAAV,EACA,gBAAAS,EACA,eAAgBd,EAChB,uBAAwBR,EAAK,wBAA0B,GACvD,MAAOA,EAAK,OAASA,EAAK,WAAa,GACvC,eAAgBA,EAAK,gBAAkB,EACzC,CAAC,CACH,CAAC,GAC6B,KAAK,EAC9BwB,GAAQ,MAAM,iBAEPA,GAAQ,MAAM,OAaxBR,EAAgBQ,GAAQ,MAAM,QAAU,gBAAgB,GAZxDN,EAAkBlB,EAAK,aAAe,0BAA0B,EAChEG,EAAsB,EAAI,KAC1B,WAAQ,CACN,MAAO,WACP,WAAY,YACZ,iBAAkB,CAChB,WAAYH,EAAK,WAAaA,EAAK,OAAS,GAC5C,SAAU,SACV,KAAM,wBACR,CACF,CAAC,GAZDkB,EAAkBlB,EAAK,iBAAmB,4BAA4B,CAgB1E,MAAQ,CACNgB,EAAgB,eAAe,CACjC,QAAE,CACAI,EAAW,EAAK,CAClB,CACF,EAAG,CAACP,EAAOF,EAAQN,EAAQG,EAAaR,EAAMG,EAAuBG,CAAU,CAAC,EAEhF,SACE,QAAC,OAAI,UAAU,gBACb,oBAAC,QAAK,UAAU,sCAAsC,KAAMN,EAAK,MAAO,EACvEA,EAAK,SAAQ,OAAC,QAAK,UAAU,iDAAiD,KAAMA,EAAK,KAAM,KAEhG,OAAC,SACC,aAAW,EAAAyB,YACT,6FACAf,EAAU,gBAAkB,cAC9B,EACA,YAAaV,EAAK,YAClB,MAAOa,EACP,SAAUa,GAAK,CACbV,EAAgB,EAAE,EAClBF,EAASY,EAAE,OAAO,MAAM,KAAK,CAAC,CAChC,EACF,KAEA,QAAC,OAAI,UAAU,6CACb,oBAAC,YAAS,QAASf,EAAQ,gBAAiB,IAAMC,EAAUe,GAAK,CAACA,CAAC,EAAG,UAAU,4BAA4B,KAC5G,OAAC,SACC,UAAU,iEACV,wBAAyB,CAAE,OAAQ3B,EAAK,QAAU,EAAG,EACvD,GACF,KAEA,OAAC,UAAO,UAAU,mBAAmB,KAAK,OAAO,QAASmB,EAAS,QAASE,EACzE,SAAArB,EAAK,aAAe,YACvB,EAECe,MACC,OAAC,OAAI,UAAU,8DACb,mBAAC,QAAK,KAAMA,EAAc,EAC5B,KAEF,OAAC,OAAI,UAAU,8DACb,mBAAC,QAAK,KAAME,EAAgB,EAC9B,EAECjB,EAAK,UACJ,QAAC,OAAI,UAAU,oCACb,qBAAC,OAAI,UAAU,gBACZ,UAAAA,EAAK,OAAO,UAAS,OAAC,QAAK,UAAU,sCAAsC,KAAMA,EAAK,MAAM,MAAO,EACnGA,EAAK,MAAM,gBACV,OAAC,QAAK,UAAU,gDAAgD,KAAMA,EAAK,MAAM,YAAa,EAE/FA,EAAK,MAAM,gBAAkBA,EAAK,MAAM,iBACvC,QAAC,KACC,MAAO,IAAM,CACX,GAAI,CACF,GAAI,CAACI,EAAY,OAAOJ,EAAK,MAAO,aACpC,MAAM4B,EAAM,IAAI,IAAI5B,EAAK,MAAO,aAAe,OAAO,SAAS,IAAI,EACnE,OAAA4B,EAAI,aAAa,IAAI,MAAO,GAAGxB,CAAU,YAAY,EAC9CwB,EAAI,SAAS,CACtB,MAAQ,CACN,OAAO5B,EAAK,MAAO,YACrB,CACF,GAAG,EACH,OAAO,SACP,IAAI,sBACJ,UAAU,6DAET,UAAAA,EAAK,MAAM,kBACZ,OAAC,OAAI,MAAM,KAAK,OAAO,KAAK,QAAQ,YAAY,KAAK,OACnD,mBAAC,QACC,EAAE,kUACF,KAAK,UACP,EACF,GACF,GAEJ,EACCA,EAAK,MAAM,OAAO,QACjB,OAAC,WACC,OAAQA,EAAK,MAAM,MAAM,IACzB,IAAKA,EAAK,MAAM,MAAM,KAAO,GAC7B,aAAW,EAAAyB,YAAG,yCAA0Cf,EAAU,gBAAkB,cAAc,EACpG,GAEJ,GAEJ,CAEJ",
|
|
6
|
+
"names": ["ActivitiesSubscribePanel_exports", "__export", "ActivitiesSubscribeModal", "__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", "getRecaptchaToken", "sitekey", "copy", "initialEmail", "alpcConfig", "setIsSubscribeSuccess", "pageHandle", "locale", "apiBaseUrl", "headlessBrand", "storeDomain", "recaptchaSitekey", "rounded", "policy", "setPolicy", "email", "setEmail", "errorMessage", "setErrorMessage", "successMessage", "setSuccessMessage", "loading", "setLoading", "handleSubmit", "register_source", "recaptchaToken", "result", "cn", "e", "v", "url"]
|
|
7
7
|
}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";var S=Object.defineProperty;var
|
|
1
|
+
"use strict";var S=Object.defineProperty;var J=Object.getOwnPropertyDescriptor;var Q=Object.getOwnPropertyNames;var X=Object.prototype.hasOwnProperty;var Y=(e,i)=>{for(var c in i)S(e,c,{get:i[c],enumerable:!0})},Z=(e,i,c,g)=>{if(i&&typeof i=="object"||typeof i=="function")for(let r of Q(i))!X.call(e,r)&&r!==c&&S(e,r,{get:()=>i[r],enumerable:!(g=J(i,r))||g.enumerable});return e};var ee=e=>Z(S({},"__esModule",{value:!0}),e);var te={};Y(te,{default:()=>V});module.exports=ee(te);var n=require("react/jsx-runtime"),o=require("react"),u=require("@anker-in/headless-ui"),s=require("../../../../lib"),R=require("../../../registration/authCodeActivate/Message"),H=require("../../../registration"),L=require("../../context/provider"),P=require("../../../../constants");function V({copy:e,onClose:i}){const{setIsActivateSuccess:c,fetchCreditInfo:g,profile:r,alpcConfig:k}=(0,L.useMemberPopupContext)(),{locale:F,brand:$}=(0,s.useHeadlessContext)(),{email:d}=(0,H.useRegistration)(),z=P.ROUNDED_BRANDS.includes($),{isMutating:U,trigger:x,data:E}=(0,s.useSendEmailValidation)(k.apiBaseUrl),{isMutating:y,trigger:A}=(0,s.useEmailValidation)(void 0,k.apiBaseUrl),[W,f]=(0,o.useState)(""),[j,p]=(0,o.useState)(""),{startCountDown:D,startAction:I,countDown:K}=(0,s.useCountDown)(60),[B,b]=(0,o.useState)(""),[N,_]=(0,o.useState)(0),[m,w]=(0,o.useState)(new Array(6).fill("")),T=(0,o.useRef)([]),C=m.join("");(0,o.useEffect)(()=>{T.current[N]&&T.current[N].focus()},[N]),(0,o.useEffect)(()=>{d&&x({email:d,data:{redirect_url:`${window?.location?.origin}${window?.location?.pathname}`}},{onSuccess:()=>{p("success"),f(e?.sendEmailSuccessMessage||""),I(),setTimeout(()=>{p(""),f("")},5e3)}})},[d]);const O=(0,o.useCallback)(async()=>{d&&(await x({email:d,data:{redirect_url:`${window?.location?.origin}${window?.location?.pathname}`}},{onSuccess:()=>{p("success"),f(e?.sendEmailSuccessMessage||""),I(),setTimeout(()=>{p(""),f("")},5e3)}}),(0,s.gaTrack)({event:"ga4Event",event_name:"lp_button",event_parameters:{page_group:"reg_sub_pop",position:"auth_code",button_name:"sent_again"}}))},[d,x]),q=(v,a)=>{const{value:t}=v.target;if(b(""),Number.isNaN(Number(t)))return;if(t.length>1){a<m.length-1&&(m[a+1]||(_(a+1),w(h=>{const M=[...h];return M[a]=t[0],t.length>1&&(M[a+1]=t[1]),M})));return}const l=[...m];l[a]=t,w(l),t?a<m.length-1&&!m[a+1]&&_(a+1):a>0&&_(a-1)},G=(0,o.useCallback)(async()=>{if(!C?.length){b(e?.codeEmptyError||"");return}if(C.length<6){b(e?.incorrectCodeError||"");return}const v=E?.data?.data?.active_token??E?.data?.active_token;v&&await A({token:v,code:C},{onSuccess:t=>{if(t.status>=200&&t.status<300)p("success"),f(e?.authSuccessMessage||""),c(!0),r?.user_id&&setTimeout(()=>g(r.user_id),3e3),(0,s.gaTrack)({event:"ga4Event",event_name:"lp_button",event_parameters:{page_group:"reg_sub_pop",position:"auth_code",button_name:"check_and_active",info:"Member Floating Window"}}),setTimeout(()=>{i()},3e3);else{const l=t?.data?.error_code??t?.error_code;l==="104"?(c(!0),r?.user_id&&setTimeout(()=>g(r.user_id),3e3),(0,s.gaTrack)({event:"ga4Event",event_name:"lp_button",event_parameters:{page_group:"reg_sub_pop",position:"auth_code",button_name:"check_and_active",info:"Member Floating Window"}}),setTimeout(()=>{i()},3e3)):b(l==="142"?e?.incorrectCodeError||"Invalid verification code.":l==="154"?e?.expiredCodeMessage||"":e?.sendEmailErrorMessage||"")}}});let a=setTimeout(()=>{p(""),f(""),clearTimeout(a)},5e3)},[C,e?.codeEmptyError,e?.authSuccessMessage,e?.incorrectCodeError,e?.expiredCodeMessage,e?.sendEmailErrorMessage,F,E,A,i,c,g,r]);return(0,n.jsxs)("div",{className:"relative",children:[(0,n.jsxs)("div",{children:[(0,n.jsx)(u.Text,{className:"text-[22px] font-extrabold leading-[120%] text-[#333] min-l:text-[24px] [&_abbr]:text-[#005d8e]",html:e?.authCodeTitle}),(0,n.jsx)(u.Text,{as:"p",className:"mt-3 text-[14px] font-semibold leading-[140%] text-[rgba(51,51,51,0.75)] min-l:text-base [&_abbr]:text-[#333]",html:e?.authCodeDesc?.replace("%email%",d||"")})]}),(0,n.jsxs)("div",{className:"mt-6",children:[(0,n.jsx)(u.Text,{className:"mt-4 text-[14px] !font-bold font-semibold leading-[140%] text-[#333] min-l:mt-6",html:e?.enterActiveCodeText}),(0,n.jsx)("div",{className:"my-3 grid grid-cols-6 gap-2",children:m.map((v,a)=>(0,n.jsx)("div",{className:"col-span-1 aspect-1 text-[#555]",children:(0,n.jsx)("input",{ref:t=>{t&&(T.current[a]=t)},type:"tel",className:(0,s.classNames)("flex size-full items-center justify-center border border-[#333333]/20 bg-[#EEEEEE] text-center text-[24px] font-medium focus:border-[#333]/50 [&::-webkit-inner-spin-button]:appearance-none [&::-webkit-outer-spin-button]:appearance-none [&:focus-visible]:outline-none",z&&"rounded-[12px]"),value:v,autoComplete:"false",autoCorrect:"false",spellCheck:"false",autoCapitalize:"false",onChange:t=>q(t,a),onFocus:()=>{_(a)},onPaste:t=>{const l=t.clipboardData.getData("text");if(!Number.isNaN(Number(l))){const h=l.split("").slice(0,6);w(h.concat(Array(6-h.length).fill(""))),h.length<=m.length&&_(h.length-1)}},onKeyDown:t=>{const{value:l}=t.target;t.key==="Backspace"&&!l&&a>0&&_(a-1)}},a)},a))}),B&&(0,n.jsx)(u.Text,{className:"mb-3 text-[14px] font-semibold leading-[120%] text-[#f84d4f]",html:B}),e?.authCodeContent&&(0,n.jsx)("ul",{className:'flex flex-col gap-1 [&_li]:flex [&_li]:gap-2 [&_li]:text-[14px] [&_li]:font-semibold [&_li]:leading-[120%] [&_li]:text-[rgba(51,51,51,0.55)] [&_li]:before:content-["\u2022"]',dangerouslySetInnerHTML:{__html:e?.authCodeContent}})]}),(0,n.jsxs)("div",{className:"mt-4 min-l:mt-6",children:[(0,n.jsx)(u.Text,{className:"text-base font-semibold leading-[100%] text-[#333]",html:e?.authCodeReceiveText})," ",D?(0,n.jsx)(u.Text,{html:e?.retrieveText?.replace("%countdownTime%",K.toString()),className:"cursor-pointer text-base font-semibold leading-[100%] !text-brand text-[#005d8e] text-[#333] underline"}):(0,n.jsx)(u.Text,{onClick:O,className:(0,s.classNames)("cursor-pointer text-base font-semibold leading-[100%] !text-brand text-[#005d8e] text-[#333] underline",{"pointer-events-none":D||U}),html:e?.sendAgainText}),(0,n.jsx)(u.Button,{type:"submit",loading:y,className:"mt-6 w-full min-l:mt-8",size:"base",onClick:G,children:e.buttonText})]}),(0,n.jsx)(R.Message,{status:j,message:W})]})}
|
|
2
2
|
//# sourceMappingURL=ActivatePanel.js.map
|