@anker-in/campaign-ui 0.2.10-beta.6 → 0.2.10-beta.8
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/index.js +726 -1
- package/dist/cjs/index.js.map +4 -4
- package/dist/esm/components/chat/chatContext.js +2 -0
- package/dist/esm/components/chat/chatContext.js.map +7 -0
- package/dist/esm/components/credits/context/hooks/useActivities.js +1 -1
- package/dist/esm/components/credits/context/hooks/useActivities.js.map +2 -2
- package/dist/esm/components/credits/context/hooks/useAddressValidate.js +1 -1
- package/dist/esm/components/credits/context/hooks/useAddressValidate.js.map +3 -3
- package/dist/esm/components/credits/context/hooks/useAlpcFetch.js +1 -1
- package/dist/esm/components/credits/context/hooks/useAlpcFetch.js.map +3 -3
- 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/useMyRewards.js +1 -1
- package/dist/esm/components/credits/context/hooks/useMyRewards.js.map +2 -2
- package/dist/esm/components/credits/context/hooks/useRedeemAndBuy.js +1 -1
- package/dist/esm/components/credits/context/hooks/useRedeemAndBuy.js.map +2 -2
- package/dist/esm/components/credits/context/hooks/useRedeemCoupon.js +1 -1
- package/dist/esm/components/credits/context/hooks/useRedeemCoupon.js.map +2 -2
- package/dist/esm/components/credits/context/hooks/useRedeemProduct.js +1 -1
- package/dist/esm/components/credits/context/hooks/useRedeemProduct.js.map +2 -2
- package/dist/esm/components/credits/context/hooks/useRedeemableList.js +1 -1
- package/dist/esm/components/credits/context/hooks/useRedeemableList.js.map +2 -2
- package/dist/esm/components/credits/context/hooks/useSendEmailValidation.js +1 -1
- package/dist/esm/components/credits/context/hooks/useSendEmailValidation.js.map +2 -2
- package/dist/esm/components/credits/context/hooks/useSubscribed.js +1 -1
- package/dist/esm/components/credits/context/hooks/useSubscribed.js.map +2 -2
- package/dist/esm/components/credits/context/hooks/useSubscriptions.js +1 -1
- package/dist/esm/components/credits/context/hooks/useSubscriptions.js.map +3 -3
- package/dist/esm/components/credits/creditsBanner/index.js +2 -0
- package/dist/esm/components/credits/creditsBanner/index.js.map +7 -0
- package/dist/esm/components/credits/creditsBenefits/benefitItem.js +2 -0
- package/dist/esm/components/credits/creditsBenefits/benefitItem.js.map +7 -0
- package/dist/esm/components/credits/creditsBenefits/iconInfo.js +2 -0
- package/dist/esm/components/credits/creditsBenefits/iconInfo.js.map +7 -0
- package/dist/esm/components/credits/creditsBenefits/index.js +4 -0
- package/dist/esm/components/credits/creditsBenefits/index.js.map +7 -0
- package/dist/esm/components/credits/creditsCash/RedeemableItem.js +2 -0
- package/dist/esm/components/credits/creditsCash/RedeemableItem.js.map +7 -0
- package/dist/esm/components/credits/creditsCash/index.js +2 -0
- package/dist/esm/components/credits/creditsCash/index.js.map +7 -0
- package/dist/esm/components/credits/creditsCash/type.js +1 -0
- package/dist/esm/components/credits/creditsCash/type.js.map +7 -0
- package/dist/esm/components/credits/creditsFaq/faqItem/FaqItem.js +2 -0
- package/dist/esm/components/credits/creditsFaq/faqItem/FaqItem.js.map +7 -0
- package/dist/esm/components/credits/creditsFaq/index.js +2 -0
- package/dist/esm/components/credits/creditsFaq/index.js.map +7 -0
- package/dist/esm/components/credits/creditsInfoCard/index.js +2 -0
- package/dist/esm/components/credits/creditsInfoCard/index.js.map +7 -0
- package/dist/esm/components/credits/creditsRedeemList/AddressForm/CountrySelect.js +2 -0
- package/dist/esm/components/credits/creditsRedeemList/AddressForm/CountrySelect.js.map +7 -0
- package/dist/esm/components/credits/creditsRedeemList/AddressForm/FormItem.js +2 -0
- package/dist/esm/components/credits/creditsRedeemList/AddressForm/FormItem.js.map +7 -0
- package/dist/esm/components/credits/creditsRedeemList/AddressForm/Input.js +2 -0
- package/dist/esm/components/credits/creditsRedeemList/AddressForm/Input.js.map +7 -0
- package/dist/esm/components/credits/creditsRedeemList/AddressForm/StateSelect.js +2 -0
- package/dist/esm/components/credits/creditsRedeemList/AddressForm/StateSelect.js.map +7 -0
- package/dist/esm/components/credits/creditsRedeemList/AddressForm/index.js +2 -0
- package/dist/esm/components/credits/creditsRedeemList/AddressForm/index.js.map +7 -0
- package/dist/esm/components/credits/creditsRedeemList/AddressForm/type.js +1 -0
- package/dist/esm/components/credits/creditsRedeemList/AddressForm/type.js.map +7 -0
- package/dist/esm/components/credits/creditsRedeemList/RedeemCouponModal.js +2 -0
- package/dist/esm/components/credits/creditsRedeemList/RedeemCouponModal.js.map +7 -0
- package/dist/esm/components/credits/creditsRedeemList/RedeemProductModal/Address.js +2 -0
- package/dist/esm/components/credits/creditsRedeemList/RedeemProductModal/Address.js.map +7 -0
- package/dist/esm/components/credits/creditsRedeemList/RedeemProductModal/Error.js +2 -0
- package/dist/esm/components/credits/creditsRedeemList/RedeemProductModal/Error.js.map +7 -0
- package/dist/esm/components/credits/creditsRedeemList/RedeemProductModal/Init.js +2 -0
- package/dist/esm/components/credits/creditsRedeemList/RedeemProductModal/Init.js.map +7 -0
- package/dist/esm/components/credits/creditsRedeemList/RedeemProductModal/ProductInfo.js +2 -0
- package/dist/esm/components/credits/creditsRedeemList/RedeemProductModal/ProductInfo.js.map +7 -0
- package/dist/esm/components/credits/creditsRedeemList/RedeemProductModal/Success.js +2 -0
- package/dist/esm/components/credits/creditsRedeemList/RedeemProductModal/Success.js.map +7 -0
- package/dist/esm/components/credits/creditsRedeemList/RedeemProductModal/index.js +2 -0
- package/dist/esm/components/credits/creditsRedeemList/RedeemProductModal/index.js.map +7 -0
- package/dist/esm/components/credits/creditsRedeemList/RedeemableItem.js +2 -0
- package/dist/esm/components/credits/creditsRedeemList/RedeemableItem.js.map +7 -0
- package/dist/esm/components/credits/creditsRedeemList/index.js +2 -0
- package/dist/esm/components/credits/creditsRedeemList/index.js.map +7 -0
- package/dist/esm/components/credits/creditsRedeemList/type.js +1 -0
- package/dist/esm/components/credits/creditsRedeemList/type.js.map +7 -0
- package/dist/esm/components/credits/creditsWaysToGetCredits/index.js +2 -0
- package/dist/esm/components/credits/creditsWaysToGetCredits/index.js.map +7 -0
- package/dist/esm/components/credits/creditsWaysToGetCredits/type.js +2 -0
- package/dist/esm/components/credits/creditsWaysToGetCredits/type.js.map +7 -0
- package/dist/esm/components/credits/creditsWaysToGetCredits/useActions.js +2 -0
- package/dist/esm/components/credits/creditsWaysToGetCredits/useActions.js.map +7 -0
- package/dist/esm/components/credits/modal/loadingDots.js +1 -1
- package/dist/esm/components/credits/modal/loadingDots.js.map +2 -2
- package/dist/esm/debug-env.js +2 -0
- package/dist/esm/debug-env.js.map +7 -0
- package/dist/esm/stories/chat.stories.js +2 -0
- package/dist/esm/stories/chat.stories.js.map +7 -0
- package/package.json +3 -1
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import t from"react";const o=t.createContext(void 0);function a(){const e=t.useContext(o);if(e===void 0)throw new Error("Context not found. Did you forget to wrap your app in a <ChatContextProvider> component?");return e}export{o as ChatContext,a as useChatContext};
|
|
2
|
+
//# sourceMappingURL=chatContext.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../../src/components/chat/chatContext.tsx"],
|
|
4
|
+
"sourcesContent": ["import React from 'react'\n\n/**\n * Icons for CopilotChat component.\n */\nexport interface CopilotChatIcons {\n /**\n * The icon to use for the open chat button.\n * @default <OpenIcon />\n */\n openIcon?: React.ReactNode\n\n /**\n * The icon to use for the close chat button.\n * @default <CloseIcon />\n */\n closeIcon?: React.ReactNode\n\n /**\n * The icon to use for the close chat button in the header.\n * @default <HeaderCloseIcon />\n */\n headerCloseIcon?: React.ReactNode\n\n /**\n * The icon to use for the send button.\n * @default <SendIcon />\n */\n sendIcon?: React.ReactNode\n\n /**\n * The icon to use for the activity indicator.\n * @default <ActivityIcon />\n */\n activityIcon?: React.ReactNode\n\n /**\n * The icon to use for the spinner.\n * @default <SpinnerIcon />\n */\n spinnerIcon?: React.ReactNode\n\n /**\n * The icon to use for the stop button.\n * @default <StopIcon />\n */\n stopIcon?: React.ReactNode\n\n /**\n * The icon to use for the regenerate button.\n * @default <RegenerateIcon />\n */\n regenerateIcon?: React.ReactNode\n\n /**\n * The icons to use for push to talk.\n * @default <PushToTalkIcon />\n */\n\n pushToTalkIcon?: React.ReactNode\n}\n\n/**\n * Labels for CopilotChat component.\n */\nexport interface CopilotChatLabels {\n /**\n * The initial message(s) to display in the chat window.\n */\n initial?: string | string[]\n\n /**\n * The title to display in the header.\n * @default \"CopilotKit\"\n */\n title?: string\n\n /**\n * The placeholder to display in the input.\n * @default \"Type a message...\"\n */\n placeholder?: string\n\n /**\n * The message to display when an error occurs.\n * @default \"\u274C An error occurred. Please try again.\"\n */\n error?: string\n\n /**\n * The label to display on the stop button.\n * @default \"Stop generating\"\n */\n stopGenerating?: string\n\n /**\n * The label to display on the regenerate button.\n * @default \"Regenerate response\"\n */\n regenerateResponse?: string\n}\n\ninterface ChatContext {\n labels: Required<CopilotChatLabels>\n icons: Required<CopilotChatIcons>\n open: boolean\n setOpen: (_open: boolean) => void\n}\n\nexport const ChatContext = React.createContext<ChatContext | undefined>(undefined)\n\nexport function useChatContext(): ChatContext {\n const context = React.useContext(ChatContext)\n if (context === undefined) {\n throw new Error('Context not found. Did you forget to wrap your app in a <ChatContextProvider> component?')\n }\n return context\n}\n\nexport interface ChatContextProps {\n // temperature?: number;\n // instructions?: string;\n // maxFeedback?: number;\n labels?: CopilotChatLabels\n icons?: CopilotChatIcons\n children?: React.ReactNode\n open: boolean\n setOpen: (_open: boolean) => void\n}\n\n// export const ChatContextProvider = ({\n// // temperature,\n// // instructions,\n// // maxFeedback,\n// labels,\n// icons,\n// children,\n// open,\n// setOpen,\n// }: ChatContextProps) => {\n// const context = {\n// labels: {\n// ...{\n// initial: \"\",\n// title: \"CopilotKit\",\n// placeholder: \"Type a message...\",\n// error: \"\u274C An error occurred. Please try again.\",\n// stopGenerating: \"Stop generating\",\n// regenerateResponse: \"Regenerate response\",\n// },\n// ...labels,\n// },\n\n// icons: {\n// ...icons,\n// },\n// open,\n// setOpen,\n// };\n// return <ChatContext.Provider value={context}>{children}</ChatContext.Provider>;\n// };\n"],
|
|
5
|
+
"mappings": "AAAA,OAAOA,MAAW,QA6GX,MAAMC,EAAcD,EAAM,cAAuC,MAAS,EAE1E,SAASE,GAA8B,CAC5C,MAAMC,EAAUH,EAAM,WAAWC,CAAW,EAC5C,GAAIE,IAAY,OACd,MAAM,IAAI,MAAM,0FAA0F,EAE5G,OAAOA,CACT",
|
|
6
|
+
"names": ["React", "ChatContext", "useChatContext", "context"]
|
|
7
|
+
}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{useCallback as L,useEffect as v,useState as o}from"react";import{useAlpcMutation as _}from"./useAlpcFetch";import{useCreditsContext as x}from"../provider";import{useShopifyContext as y}from"@shopify
|
|
1
|
+
import{useCallback as L,useEffect as v,useState as o}from"react";import{useAlpcMutation as _}from"./useAlpcFetch";import{useCreditsContext as x}from"../provider";import{useShopifyContext as y}from"@anker-in/shopify";function A({page:t,pageSize:r,options:n={}}){const{profile:e,isLoadingProfile:a}=x(),{brand:f}=y(),[i,p]=o([]),[c,l]=o(0),[u,C]=o(0),{isMutating:s,trigger:d}=_({url:"/v1/credit/log",initData:{brand:f}}),g=L(async()=>{const b={page:t,page_size:r,user_id:e?.user_id,...n};d(b,{onSuccess(m){C(t),l(m?.data?.total),p(i.concat(m?.data?.creditLogs||[]))}})},[i,e,t,r,n,d]);return v(()=>{a||!e||s||t!==u&&t&&g()},[g,a,s,e,t,u]),{activities:i,isLoading:s,total:c,canNext:c>i.length&&!s}}var z=A;export{z as default};
|
|
2
2
|
//# sourceMappingURL=useActivities.js.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../../../../src/components/credits/context/hooks/useActivities.ts"],
|
|
4
|
-
"sourcesContent": ["import { useCallback, useEffect, useState } from 'react'\n\nimport { useAlpcMutation } from './useAlpcFetch'\nimport type { CreditLogResponse } from '../response'\nimport { useCreditsContext } from '../provider'\nimport { useShopifyContext } from '@shopify
|
|
5
|
-
"mappings": "AAAA,OAAS,eAAAA,EAAa,aAAAC,EAAW,YAAAC,MAAgB,QAEjD,OAAS,mBAAAC,MAAuB,iBAEhC,OAAS,qBAAAC,MAAyB,cAClC,OAAS,qBAAAC,MAAyB,
|
|
4
|
+
"sourcesContent": ["import { useCallback, useEffect, useState } from 'react'\n\nimport { useAlpcMutation } from './useAlpcFetch'\nimport type { CreditLogResponse } from '../response'\nimport { useCreditsContext } from '../provider'\nimport { useShopifyContext } from '@anker-in/shopify'\n\nfunction useActivities({ page, pageSize, options = {} }: { page: number; pageSize: number; options?: any }) {\n const { profile, isLoadingProfile } = useCreditsContext()\n const { brand } = useShopifyContext()\n const [activities, setActivities] = useState<CreditLogResponse[]>([])\n const [total, setTotal] = useState(0)\n\n const [currentPage, setCurrentPage] = useState(0)\n\n const { isMutating: isLoading, trigger } = useAlpcMutation<\n {\n data: {\n total: number\n creditLogs: CreditLogResponse[]\n }\n },\n {\n page: number\n page_size: number\n user_id: string\n }\n >({\n url: `/v1/credit/log`,\n initData: {\n brand,\n },\n })\n\n const getActivities = useCallback(async () => {\n const params = {\n page: page,\n page_size: pageSize,\n user_id: profile?.user_id,\n ...options,\n }\n\n trigger(params, {\n onSuccess(responseData) {\n setCurrentPage(page)\n setTotal(responseData?.data?.total)\n setActivities(activities.concat(responseData?.data?.creditLogs || []))\n },\n })\n }, [activities, profile, page, pageSize, options, trigger])\n\n useEffect(() => {\n if (isLoadingProfile || !profile || isLoading) {\n return\n }\n\n if (page !== currentPage && page) {\n getActivities()\n }\n }, [getActivities, isLoadingProfile, isLoading, profile, page, currentPage])\n\n return {\n activities,\n isLoading,\n total,\n canNext: total > activities.length && !isLoading,\n }\n}\n\nexport default useActivities\n"],
|
|
5
|
+
"mappings": "AAAA,OAAS,eAAAA,EAAa,aAAAC,EAAW,YAAAC,MAAgB,QAEjD,OAAS,mBAAAC,MAAuB,iBAEhC,OAAS,qBAAAC,MAAyB,cAClC,OAAS,qBAAAC,MAAyB,oBAElC,SAASC,EAAc,CAAE,KAAAC,EAAM,SAAAC,EAAU,QAAAC,EAAU,CAAC,CAAE,EAAsD,CAC1G,KAAM,CAAE,QAAAC,EAAS,iBAAAC,CAAiB,EAAIP,EAAkB,EAClD,CAAE,MAAAQ,CAAM,EAAIP,EAAkB,EAC9B,CAACQ,EAAYC,CAAa,EAAIZ,EAA8B,CAAC,CAAC,EAC9D,CAACa,EAAOC,CAAQ,EAAId,EAAS,CAAC,EAE9B,CAACe,EAAaC,CAAc,EAAIhB,EAAS,CAAC,EAE1C,CAAE,WAAYiB,EAAW,QAAAC,CAAQ,EAAIjB,EAYzC,CACA,IAAK,iBACL,SAAU,CACR,MAAAS,CACF,CACF,CAAC,EAEKS,EAAgBrB,EAAY,SAAY,CAC5C,MAAMsB,EAAS,CACb,KAAMf,EACN,UAAWC,EACX,QAASE,GAAS,QAClB,GAAGD,CACL,EAEAW,EAAQE,EAAQ,CACd,UAAUC,EAAc,CACtBL,EAAeX,CAAI,EACnBS,EAASO,GAAc,MAAM,KAAK,EAClCT,EAAcD,EAAW,OAAOU,GAAc,MAAM,YAAc,CAAC,CAAC,CAAC,CACvE,CACF,CAAC,CACH,EAAG,CAACV,EAAYH,EAASH,EAAMC,EAAUC,EAASW,CAAO,CAAC,EAE1D,OAAAnB,EAAU,IAAM,CACVU,GAAoB,CAACD,GAAWS,GAIhCZ,IAASU,GAAeV,GAC1Bc,EAAc,CAElB,EAAG,CAACA,EAAeV,EAAkBQ,EAAWT,EAASH,EAAMU,CAAW,CAAC,EAEpE,CACL,WAAAJ,EACA,UAAAM,EACA,MAAAJ,EACA,QAASA,EAAQF,EAAW,QAAU,CAACM,CACzC,CACF,CAEA,IAAOK,EAAQlB",
|
|
6
6
|
"names": ["useCallback", "useEffect", "useState", "useAlpcMutation", "useCreditsContext", "useShopifyContext", "useActivities", "page", "pageSize", "options", "profile", "isLoadingProfile", "brand", "activities", "setActivities", "total", "setTotal", "currentPage", "setCurrentPage", "isLoading", "trigger", "getActivities", "params", "responseData", "useActivities_default"]
|
|
7
7
|
}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{
|
|
1
|
+
import{useCallback as k,useMemo as U,useState as q}from"react";import{emailValidate as A}from"../utils";import{useShopifyContext as _}from"@anker-in/shopify";const b=/[&%*<>^#;-]/,I=/[&^*%<>;,?]/,O=/[^a-zA-Z0-9\s]/,D=/^\d+(\s+\d+)*$/,v=/(Packstation|Postfiliale)/gi,T=/(P(\.)?\s*?O(\.)?\s*?box|Post(al)?(\s*)?(Office(\s*))?Box)/gi,F={minLength:(e,d)=>e?.length>0&&e?.length<d?.length,maxLength:(e,d)=>e?.length>d?.length,isUSSpecialCharacters:e=>b.test(e),isEUSpecialCharacters:e=>I.test(e),isSC:e=>O.test(e),isPureDigital:e=>D.test(e),isPackstation:e=>v.test(e),isPobox:e=>T.test(e)},N={us:{nameRules:["isUSSpecialCharacters"],addressRules:{address1:["isPobox","isUSSpecialCharacters","minLength","maxLength","isPureDigital"],address2:["isPobox","isUSSpecialCharacters","maxLength","isPureDigital"]},addressLengths:{min:4,max:32}},"eu-en":{nameRules:["isEUSpecialCharacters"],addressRules:{address1:["isPobox","isEUSpecialCharacters","minLength","maxLength","isPureDigital","isPackstation"],address2:["isPobox","isEUSpecialCharacters","maxLength","isPackstation"]},addressLengths:{min:3,max:70}},uk:{nameRules:["isEUSpecialCharacters"],addressRules:{address1:["isPobox","isEUSpecialCharacters","minLength","maxLength","isPureDigital"],address2:["isPobox","isEUSpecialCharacters","maxLength"]},addressLengths:{min:3,max:35}},"eu-de":{nameRules:["isEUSpecialCharacters"],addressRules:{address1:["isPobox","isEUSpecialCharacters","minLength","maxLength","isPureDigital","isPackstation"],address2:["isPobox","isPackstation","isEUSpecialCharacters","maxLength"]},addressLengths:{min:3,max:35}},ca:{nameRules:["isUSSpecialCharacters"],addressRules:{address1:["isPobox","maxLength"],address2:["isPobox","maxLength"]},addressLengths:{max:35}}},V={uk:{rules:["isEUSpecialCharacters","minLength","maxLength"],lengths:{min:2,max:35}},"eu-en":{rules:["isEUSpecialCharacters","minLength","maxLength"],lengths:{min:2,max:35}},"eu-de":{rules:["isEUSpecialCharacters","minLength","maxLength"],lengths:{min:2,max:35}},ca:{rules:["minLength","maxLength"],lengths:{min:2,max:15}}},M=({address:e,validatorInfo:d,formData:R,errorLabel:r})=>{const{locale:S}=_(),[y,L]=q([]),P=U(()=>{const{city_rules:u={},name_rules:h={},address1_rules:g,address2_rules:l,POboxErr:p,packstationErr:E}=d||{},a=N[S],c=V[S],x=[...R.map(s=>({key:s.key,required:s.required,error:r.require||"This field is required"})),{key:"email",error:r.email||"Invalid email format",validator(s){return!A(s)}},{key:"first_name",required:!0,error:r.require||"First name is required"},{key:"last_name",required:!0,error:r.require||"Last name is required"},{key:"name",error:h.maxLengthErr||r.require||"Name is too long",validator:s=>s?.length>=31}],C=c?c.rules.map(s=>{const n={key:"city",rule:s,error:""};return s==="minLength"?(n.params={length:c.lengths.min},n.error=u.minLengthErr||r.require||"City is too short"):s==="maxLength"?(n.params={length:c.lengths.max},n.error=u.maxLengthErr||r.require||"City is too long"):s==="isEUSpecialCharacters"&&(n.error=u.characterErr||r.require||"Invalid characters in city"),n}):[],i=a?.nameRules.map(s=>({key:"first_name",rule:s,error:h.characterErr})).concat(a?.nameRules.map(s=>({key:"last_name",rule:s,error:h.characterErr}))||[])||[],m=a?Object.entries(a.addressRules).flatMap(([s,n])=>n.map(o=>{const t={key:s,rule:o,error:""},f=s==="address1"?g:l;return o==="isPobox"?t.error=p||r.require||"PO Box not allowed":o==="isPackstation"?t.error=E||r.require||"Packstation not allowed":o==="isUSSpecialCharacters"||o==="isEUSpecialCharacters"?t.error=f?.characterErr||r.require||"Invalid characters":o==="minLength"?(t.params={length:"min"in a.addressLengths?a.addressLengths.min:0},t.error=f?.minLengthErr||r.require||"Address is too short"):o==="maxLength"?(t.params={length:a.addressLengths.max},t.error=f?.maxLengthErr||r.require||"Address is too long"):o==="isPureDigital"&&(t.error=f?.pureDigitalErr||r.require||"Address cannot be only numbers"),t})):[];return[...x,...C,...i,...m]},[S,d,R,r]);return{validate:k(({force:u,ignoreKeys:h})=>{let g=[];return P.forEach(({key:l,rule:p,params:E,required:a,error:c,validator:x})=>{const C=p?F[p]:void 0;let i;const m=e[l];h?.includes(l)||m===void 0&&!u||g.find(s=>s.key==l)||(a&&!m?i=c:x?i=x(m,l,e):C&&(i=C(m,E)),i&&g.push({key:l,message:typeof i=="string"?i:c}))}),L(g),!!g.length},[e,P]),errors:y}};export{M as useAddressValidate};
|
|
2
2
|
//# sourceMappingURL=useAddressValidate.js.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../../../../src/components/credits/context/hooks/useAddressValidate.ts"],
|
|
4
|
-
"sourcesContent": ["import {
|
|
5
|
-
"mappings": "AAAA,OAAS,
|
|
6
|
-
"names": ["
|
|
4
|
+
"sourcesContent": ["import { useCallback, useMemo, useState } from 'react'\nimport { emailValidate } from '../utils'\nimport { useShopifyContext } from '@anker-in/shopify'\n\ntype ValidatorCallback = (value: string, params?: Record<string, any>) => boolean\n\nconst US_SPECIAL_CHARACTERS = /[&%*<>^#;-]/\nconst EU_SPECIAL_CHARACTERS = /[&^*%<>;,?]/\nconst SC_CHARACTERS = /[^a-zA-Z0-9\\s]/\nconst PURE_DIGITAL = /^\\d+(\\s+\\d+)*$/\nconst PACKSTATION = /(Packstation|Postfiliale)/gi\nconst POBOX = /(P(\\.)?\\s*?O(\\.)?\\s*?box|Post(al)?(\\s*)?(Office(\\s*))?Box)/gi\n\nconst ruleValidators: Record<string, ValidatorCallback> = {\n minLength: (value, params) => value?.length > 0 && value?.length < params?.length,\n maxLength: (value, params) => value?.length > params?.length,\n isUSSpecialCharacters: value => US_SPECIAL_CHARACTERS.test(value),\n isEUSpecialCharacters: value => EU_SPECIAL_CHARACTERS.test(value),\n isSC: value => SC_CHARACTERS.test(value),\n isPureDigital: value => PURE_DIGITAL.test(value),\n isPackstation: value => PACKSTATION.test(value),\n isPobox: value => POBOX.test(value),\n}\n\nexport interface Rule {\n key: string\n error: string\n rule?: string\n params?: Record<string, any>\n required?: boolean\n validator?: (value: string, key: string, address: Record<string, any>) => boolean | string\n}\n\nexport type FormData = {\n key: string\n label: string\n tips: string\n required: boolean\n placeholder: string\n type?: string\n}[]\n\n// \u56FD\u5BB6/\u5730\u533A\u914D\u7F6E\u6620\u5C04\nconst LOCALE_CONFIGS = {\n us: {\n nameRules: ['isUSSpecialCharacters'],\n addressRules: {\n address1: ['isPobox', 'isUSSpecialCharacters', 'minLength', 'maxLength', 'isPureDigital'],\n address2: ['isPobox', 'isUSSpecialCharacters', 'maxLength', 'isPureDigital'],\n },\n addressLengths: { min: 4, max: 32 },\n },\n 'eu-en': {\n nameRules: ['isEUSpecialCharacters'],\n addressRules: {\n address1: ['isPobox', 'isEUSpecialCharacters', 'minLength', 'maxLength', 'isPureDigital', 'isPackstation'],\n address2: ['isPobox', 'isEUSpecialCharacters', 'maxLength', 'isPackstation'],\n },\n addressLengths: { min: 3, max: 70 },\n },\n uk: {\n nameRules: ['isEUSpecialCharacters'],\n addressRules: {\n address1: ['isPobox', 'isEUSpecialCharacters', 'minLength', 'maxLength', 'isPureDigital'],\n address2: ['isPobox', 'isEUSpecialCharacters', 'maxLength'],\n },\n addressLengths: { min: 3, max: 35 },\n },\n 'eu-de': {\n nameRules: ['isEUSpecialCharacters'],\n addressRules: {\n address1: ['isPobox', 'isEUSpecialCharacters', 'minLength', 'maxLength', 'isPureDigital', 'isPackstation'],\n address2: ['isPobox', 'isPackstation', 'isEUSpecialCharacters', 'maxLength'],\n },\n addressLengths: { min: 3, max: 35 },\n },\n ca: {\n nameRules: ['isUSSpecialCharacters'],\n addressRules: {\n address1: ['isPobox', 'maxLength'],\n address2: ['isPobox', 'maxLength'],\n },\n addressLengths: { max: 35 },\n },\n}\n\n// \u57CE\u5E02\u89C4\u5219\u914D\u7F6E\nconst CITY_CONFIGS = {\n uk: { rules: ['isEUSpecialCharacters', 'minLength', 'maxLength'], lengths: { min: 2, max: 35 } },\n 'eu-en': { rules: ['isEUSpecialCharacters', 'minLength', 'maxLength'], lengths: { min: 2, max: 35 } },\n 'eu-de': { rules: ['isEUSpecialCharacters', 'minLength', 'maxLength'], lengths: { min: 2, max: 35 } },\n ca: { rules: ['minLength', 'maxLength'], lengths: { min: 2, max: 15 } },\n}\n\nexport const useAddressValidate = ({\n address,\n validatorInfo,\n formData,\n errorLabel,\n}: {\n address: Record<string, any>\n validatorInfo: any\n formData: any\n errorLabel: {\n require: string\n email: string\n }\n}) => {\n const { locale } = useShopifyContext()\n const [errors, setErrors] = useState<{ key: string; message: string }[]>([])\n\n const addressRules: Rule[] = useMemo(() => {\n const {\n city_rules = {},\n name_rules = {},\n address1_rules,\n address2_rules,\n POboxErr,\n packstationErr,\n } = validatorInfo || {}\n\n const localeConfig = LOCALE_CONFIGS[locale as keyof typeof LOCALE_CONFIGS]\n const cityConfig = CITY_CONFIGS[locale as keyof typeof CITY_CONFIGS]\n\n // \u57FA\u7840\u89C4\u5219\n const baseRules: Rule[] = [\n // \u8868\u5355\u5B57\u6BB5\u89C4\u5219\n ...formData.map((item: any) => ({\n key: item.key,\n required: item.required,\n error: errorLabel.require || 'This field is required',\n })),\n\n // \u90AE\u7BB1\u6821\u9A8C\n {\n key: 'email',\n error: errorLabel.email || 'Invalid email format',\n validator(value) {\n return !emailValidate(value)\n },\n },\n\n // \u59D3\u540D\u89C4\u5219\n {\n key: 'first_name',\n required: true,\n error: errorLabel.require || 'First name is required',\n },\n {\n key: 'last_name',\n required: true,\n error: errorLabel.require || 'Last name is required',\n },\n {\n key: 'name',\n error: name_rules.maxLengthErr || errorLabel.require || 'Name is too long',\n validator: value => value?.length >= 31,\n },\n ]\n\n // \u57CE\u5E02\u89C4\u5219\n const cityRules: Rule[] = cityConfig\n ? cityConfig.rules.map(rule => {\n const ruleConfig: Rule = { key: 'city', rule, error: '' }\n\n if (rule === 'minLength') {\n ruleConfig.params = { length: cityConfig.lengths.min }\n ruleConfig.error = city_rules.minLengthErr || errorLabel.require || 'City is too short'\n } else if (rule === 'maxLength') {\n ruleConfig.params = { length: cityConfig.lengths.max }\n ruleConfig.error = city_rules.maxLengthErr || errorLabel.require || 'City is too long'\n } else if (rule === 'isEUSpecialCharacters') {\n ruleConfig.error = city_rules.characterErr || errorLabel.require || 'Invalid characters in city'\n }\n\n return ruleConfig\n })\n : []\n\n // \u59D3\u540D\u7279\u6B8A\u5B57\u7B26\u89C4\u5219\n const nameRules: Rule[] =\n localeConfig?.nameRules\n .map(rule => ({\n key: 'first_name',\n rule,\n error: name_rules.characterErr,\n }))\n .concat(\n localeConfig?.nameRules.map(rule => ({\n key: 'last_name',\n rule,\n error: name_rules.characterErr,\n })) || []\n ) || []\n\n // \u5730\u5740\u89C4\u5219\n const addressRules: Rule[] = localeConfig\n ? Object.entries(localeConfig.addressRules).flatMap(([addressKey, rules]) =>\n rules.map(rule => {\n const ruleConfig: Rule = { key: addressKey, rule, error: '' }\n const rulesConfig = addressKey === 'address1' ? address1_rules : address2_rules\n\n if (rule === 'isPobox') {\n ruleConfig.error = POboxErr || errorLabel.require || 'PO Box not allowed'\n } else if (rule === 'isPackstation') {\n ruleConfig.error = packstationErr || errorLabel.require || 'Packstation not allowed'\n } else if (rule === 'isUSSpecialCharacters' || rule === 'isEUSpecialCharacters') {\n ruleConfig.error = rulesConfig?.characterErr || errorLabel.require || 'Invalid characters'\n } else if (rule === 'minLength') {\n ruleConfig.params = { length: 'min' in localeConfig.addressLengths ? localeConfig.addressLengths.min : 0 }\n ruleConfig.error = rulesConfig?.minLengthErr || errorLabel.require || 'Address is too short'\n } else if (rule === 'maxLength') {\n ruleConfig.params = { length: localeConfig.addressLengths.max }\n ruleConfig.error = rulesConfig?.maxLengthErr || errorLabel.require || 'Address is too long'\n } else if (rule === 'isPureDigital') {\n ruleConfig.error = rulesConfig?.pureDigitalErr || errorLabel.require || 'Address cannot be only numbers'\n }\n\n return ruleConfig\n })\n )\n : []\n\n return [...baseRules, ...cityRules, ...nameRules, ...addressRules]\n }, [locale, validatorInfo, formData, errorLabel])\n\n const validate = useCallback(\n ({ force, ignoreKeys }: { force?: boolean; ignoreKeys?: string[] }) => {\n let newErrors: { key: string; message: string }[] = []\n\n addressRules.forEach(({ key, rule, params, required, error, validator }) => {\n const defaultValidator = rule ? ruleValidators[rule] : undefined\n\n let result\n\n const value = address[key]\n\n if (ignoreKeys?.includes(key)) {\n return\n }\n\n if (value === undefined && !force) {\n return\n }\n\n if (newErrors.find(item => item.key == key)) {\n return\n }\n\n if (required && !value) {\n result = error\n } else if (validator) {\n result = validator(value, key, address)\n } else if (defaultValidator) {\n result = defaultValidator(value, params)\n }\n\n if (result) {\n newErrors.push({\n key,\n message: typeof result === 'string' ? result : error,\n })\n }\n })\n\n setErrors(newErrors)\n\n if (newErrors.length) {\n return true\n }\n\n return false\n },\n [address, addressRules]\n )\n\n return {\n validate,\n errors,\n }\n}\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": ["useCallback", "useMemo", "useState", "emailValidate", "useShopifyContext", "US_SPECIAL_CHARACTERS", "EU_SPECIAL_CHARACTERS", "SC_CHARACTERS", "PURE_DIGITAL", "PACKSTATION", "POBOX", "ruleValidators", "value", "params", "LOCALE_CONFIGS", "CITY_CONFIGS", "useAddressValidate", "address", "validatorInfo", "formData", "errorLabel", "locale", "errors", "setErrors", "addressRules", "city_rules", "name_rules", "address1_rules", "address2_rules", "POboxErr", "packstationErr", "localeConfig", "cityConfig", "baseRules", "item", "cityRules", "rule", "ruleConfig", "nameRules", "addressKey", "rules", "rulesConfig", "force", "ignoreKeys", "newErrors", "key", "required", "error", "validator", "defaultValidator", "result"]
|
|
7
7
|
}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import A from"js-cookie";import{
|
|
1
|
+
import A from"js-cookie";import{useCallback as w,useRef as p,useState as T}from"react";import C from"swr";import{useShopifyContext as U}from"@anker-in/shopify";import{getAlpcPath as m}from"../utils";import{useCreditsContext as S}from"../provider";let D;const x=t=>fetch(m(t.locale)+t.url,t.fetchOptions).then(async r=>{if(r.status<300)return(await r.json()).data;if(r.status===401&&t.onReAuth){D||(D=t.onReAuth());const n=await D;if(D=void 0,n)return fetch(m(t.locale)+t.url,t.fetchOptions).then(async e=>{if(e.status<300)return(await e.json()).data;if(e.status===401){t.onUnAuth&&t.onUnAuth();return}});t.onUnAuth&&t.onUnAuth();return}}),b=async(t,r)=>{let n=await fetch(`${m(t)}/cloud/login`,{method:"POST"}),e=await n.json();if(n.status<300&&!r&&e?.data?.code===27004){const o=A.get("alpcEU");if(Number(o)===1?A.set("alpcEU","0",{expires:30,domain:".soundcore.com"}):A.set("alpcEU","1",{expires:30,domain:".soundcore.com"}),n=await fetch(`${m(t)}/cloud/login`,{method:"POST"}),e=await n.json(),n.status>300)return!1}return!e?.data?.code},E=(t,r,n={})=>{const e=p(!1),[o,s]=T(),[i,a]=T(!1),u=p(t),f=p(r),d=p(n),l=w(async(h,g={})=>{if(e.current)return;e.current=!0,a(!0);const O={...d.current,...g},{onSuccess:R,onError:y}=O||{};try{const c=await f.current(u.current,{arg:h});return s(c),a(!1),e.current=!1,R&&R(c),c}catch(c){a(!1),e.current=!1,y&&y(c)}},[]);return{isMutating:i,trigger:l,data:o}},I=(t,r)=>{const[n,e]=T(!1),{removeProfile:o}=S(),{enable:s,...i}=r||{},{locale:a=""}=U(),{queryKey:u=[],body:f={},headers:d,...l}=t,h=s??!0,[g,O]=u;return C([g,O],h?([y,c])=>x({url:y,locale:a,fetchOptions:{method:"POST",headers:{"current-language":a,...d},body:JSON.stringify({...f,...c}),...l},onReAuth:async()=>await b(a,n)?(e(!0),!0):!1,onUnAuth(){o()}}):null,{revalidateOnFocus:!1,...i})},k=(t,r)=>{const[n,e]=T(!1),{removeProfile:o}=S(),{locale:s=""}=U(),{url:i,initData:a,headers:u,...f}=t;return E(i,(l,h)=>x({url:l,locale:s,fetchOptions:{method:"POST",headers:{"current-language":s,...u},...f,body:JSON.stringify({...a,...h.arg})},onReAuth:async()=>await b(s,n)?(e(!0),!0):!1,onUnAuth(){o()}}),r)};export{I as useAlpcFetch,k as useAlpcMutation};
|
|
2
2
|
//# sourceMappingURL=useAlpcFetch.js.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../../../../src/components/credits/context/hooks/useAlpcFetch.ts"],
|
|
4
|
-
"sourcesContent": ["import Cookies from 'js-cookie'\nimport {
|
|
5
|
-
"mappings": "AAAA,OAAOA,MAAa,YACpB,OAAS,
|
|
6
|
-
"names": ["Cookies", "
|
|
4
|
+
"sourcesContent": ["import Cookies from 'js-cookie'\nimport { useCallback, useRef, useState } from 'react'\nimport useSWR, { type SWRConfiguration } from 'swr'\nimport { useShopifyContext } from '@anker-in/shopify'\n\nimport { getAlpcPath } from '../utils'\nimport { useCreditsContext } from '../provider'\n\ninterface UseAlpcFetchOptionsSwrOptions<TData, Error> extends SWRConfiguration<TData, Error> {\n enable?: boolean\n}\n\ninterface FetchOptions extends RequestInit {\n queryKey: [string, Record<string, any>]\n data?: Record<string, any>\n}\n\ninterface MutationOptions extends RequestInit {\n url: string\n initData: Record<string, any>\n}\n\ninterface FetcherOptions {\n url: string\n locale: string\n fetchOptions: RequestInit\n onReAuth: () => Promise<boolean>\n onUnAuth: () => void\n}\n\nlet reAuthPromise: Promise<boolean> | undefined\n\ntype Fetcher<TData, TBody> = (url: string, data: { arg: TBody }) => Promise<TData>\n\nconst fetcher = (options: FetcherOptions) => {\n return fetch(getAlpcPath(options.locale) + options.url, options.fetchOptions).then(async response => {\n if (response.status < 300) {\n const responseData = await response.json()\n return responseData.data\n }\n\n // \u9519\u8BEF\u5904\u7406\n if (response.status === 401) {\n // \u91CD\u65B0\u767B\u5F55\u5C1D\u8BD5\n if (options.onReAuth) {\n if (!reAuthPromise) {\n reAuthPromise = options.onReAuth()\n }\n\n const result = await reAuthPromise\n\n reAuthPromise = undefined\n\n if (result) {\n // \u8DE8\u533A\u91CD\u65B0\u767B\u5F55\u540E\u9700\u8981\u66FF\u6362\u533A\u57DF\u6807\u5FD7\uFF0C\u6240\u4EE5\u4E0D\u80FD\u7528\u6700\u5F00\u59CB\u8BF7\u6C42\u7684\u90A3\u4E2A\u94FE\u63A5\n return fetch(getAlpcPath(options.locale) + options.url, options.fetchOptions).then(async response => {\n if (response.status < 300) {\n const responseData = await response.json()\n return responseData.data\n }\n\n if (response.status === 401) {\n if (options.onUnAuth) {\n options.onUnAuth()\n }\n return\n }\n })\n } else {\n if (options.onUnAuth) {\n options.onUnAuth()\n }\n return\n }\n }\n }\n })\n}\n\nconst reAuth = async (locale: string, retry: boolean) => {\n let reloginResponse = await fetch(`${getAlpcPath(locale)}/cloud/login`, {\n method: 'POST',\n })\n let reloginResponseData = await reloginResponse.json()\n\n if (reloginResponse!.status < 300 && !retry) {\n if (reloginResponseData?.data?.code === 27004) {\n // \u8DE8\u533A\u767B\u5F55\u9519\u8BEF\n const alpcEUCookie = Cookies.get('alpcEU')\n\n if (Number(alpcEUCookie) === 1) {\n Cookies.set('alpcEU', '0', {\n expires: 30,\n domain: '.soundcore.com',\n })\n } else {\n Cookies.set('alpcEU', '1', {\n expires: 30,\n domain: '.soundcore.com',\n })\n }\n\n // \u91CD\u65B0\u5C1D\u8BD5\u6362\u533A\u767B\u5F55\n reloginResponse = await fetch(`${getAlpcPath(locale)}/cloud/login`, {\n method: 'POST',\n })\n reloginResponseData = await reloginResponse.json()\n\n if (reloginResponse.status > 300) {\n return false\n }\n }\n }\n if (!reloginResponseData?.data?.code) {\n // \u91CD\u65B0\u767B\u5F55\u6210\u529F\n return true\n }\n\n return false\n}\n\nexport interface UseMutationConfig<TData> {\n onSuccess?: (response: TData) => any\n onError?: (error: Error) => any\n}\n\nconst useMutation = <TData, TBody>(\n url: string,\n fetcher: Fetcher<TData, TBody>,\n mutationConfig: UseMutationConfig<TData> = {}\n) => {\n const innerMutating = useRef<boolean>(false)\n\n const [data, setData] = useState<TData>()\n const [isMutating, setIsMutating] = useState(false)\n\n const urlRef = useRef(url)\n const fetcherRef = useRef(fetcher)\n const configRef = useRef(mutationConfig)\n\n const trigger = useCallback(\n async (fetchData: TBody, opts: UseMutationConfig<TData> = {}) => {\n if (innerMutating.current) {\n return\n }\n\n innerMutating.current = true\n setIsMutating(true)\n\n const config = {\n ...configRef.current,\n ...opts,\n }\n\n const { onSuccess, onError } = config || {}\n\n try {\n const fetchResult = await fetcherRef.current(urlRef.current, {\n arg: fetchData,\n })\n setData(fetchResult)\n\n setIsMutating(false)\n innerMutating.current = false\n\n if (onSuccess) {\n onSuccess(fetchResult)\n }\n return fetchResult\n } catch (err: any) {\n setIsMutating(false)\n innerMutating.current = false\n\n if (onError) {\n onError(err)\n }\n }\n },\n // eslint-disable-next-line react-hooks/exhaustive-deps\n []\n )\n\n return {\n isMutating,\n trigger,\n data,\n }\n}\n\nexport const useAlpcFetch = <TData>(\n options: FetchOptions,\n swrOptions?: UseAlpcFetchOptionsSwrOptions<TData, Error>\n) => {\n const [retry, setRetry] = useState(false)\n const { removeProfile } = useCreditsContext()\n\n const { enable, ...otherSwrOptions } = swrOptions || {}\n\n const { locale = '' } = useShopifyContext()\n\n const { queryKey = [], body: fetchBody = {}, headers, ...fetchOptions } = options\n const fetchEnable = enable ?? true\n\n const [url, requestBody] = queryKey\n\n const context = useSWR<TData>(\n [url, requestBody],\n !fetchEnable\n ? null\n : ([requestUrl, data]: [string, Record<string, any>]) =>\n fetcher({\n url: requestUrl,\n locale,\n fetchOptions: {\n method: 'POST',\n headers: {\n 'current-language': locale,\n ...headers,\n },\n body: JSON.stringify({\n ...fetchBody,\n ...data,\n }),\n ...fetchOptions,\n },\n onReAuth: async () => {\n const result = await reAuth(locale, retry)\n\n if (result) {\n setRetry(true)\n return true\n }\n\n return false\n },\n onUnAuth() {\n // \u5931\u8D25\u540E\u9000\u51FA\u767B\u5F55\n removeProfile()\n },\n }),\n {\n revalidateOnFocus: false,\n ...otherSwrOptions,\n }\n )\n\n return context\n}\n\nexport const useAlpcMutation = <TData, TBody>(options: MutationOptions, mutationOptions?: UseMutationConfig<TData>) => {\n const [retry, setRetry] = useState(false)\n const { removeProfile } = useCreditsContext()\n\n const { locale = '' } = useShopifyContext()\n\n const { url, initData, headers, ...fetchOptions } = options\n\n const context = useMutation<TData, TBody>(\n url,\n (requestUrl, data: { arg: TBody }) =>\n fetcher({\n url: requestUrl,\n locale,\n fetchOptions: {\n method: 'POST',\n headers: {\n 'current-language': locale,\n ...headers,\n },\n ...fetchOptions,\n body: JSON.stringify({\n ...initData,\n ...data.arg,\n }),\n },\n onReAuth: async () => {\n const result = await reAuth(locale, retry)\n\n if (result) {\n setRetry(true)\n return true\n }\n\n return false\n },\n onUnAuth() {\n // \u5931\u8D25\u540E\u9000\u51FA\u767B\u5F55\n removeProfile()\n },\n }),\n mutationOptions\n )\n\n return context\n}\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": ["Cookies", "useCallback", "useRef", "useState", "useSWR", "useShopifyContext", "getAlpcPath", "useCreditsContext", "reAuthPromise", "fetcher", "options", "response", "result", "reAuth", "locale", "retry", "reloginResponse", "reloginResponseData", "alpcEUCookie", "useMutation", "url", "mutationConfig", "innerMutating", "data", "setData", "isMutating", "setIsMutating", "urlRef", "fetcherRef", "configRef", "trigger", "fetchData", "opts", "config", "onSuccess", "onError", "fetchResult", "err", "useAlpcFetch", "swrOptions", "setRetry", "removeProfile", "enable", "otherSwrOptions", "queryKey", "fetchBody", "headers", "fetchOptions", "fetchEnable", "requestBody", "requestUrl", "useAlpcMutation", "mutationOptions", "initData"]
|
|
7
7
|
}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{
|
|
1
|
+
import{useEffect as l,useState as c}from"react";import{useShopifyContext as d}from"@anker-in/shopify";function y({shopifyStoreDomain:a}){const{locale:p=""}=d(),[u,s]=c(!1),[f,n]=c([]);return l(()=>{(async()=>{s(!0);try{const h=await(await fetch(`/api/multipass/rainbowbridge/uc/shop/shipping_zones?shop=${a}`)).json();let o=[];const r=new Set;h.data.data.forEach(t=>{t.countries.forEach(e=>{r.has(e.code)||(r.add(e.code),o.push(e))})}),o=o.sort((t,e)=>t.code.localeCompare(e.code)),console.log("fetch shipsToCountries",o),n(o)}catch(i){n([]),console.error(i)}finally{s(!1)}})()},[p]),{isLoading:u,countries:f}}var w=y;export{w as default};
|
|
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 {
|
|
5
|
-
"mappings": "AAAA,OAAS,aAAAA,
|
|
6
|
-
"names": ["
|
|
4
|
+
"sourcesContent": ["import { useEffect, useState } from 'react'\n\nimport { useShopifyContext } from '@anker-in/shopify'\nimport { type ShippingCountry, type ShippingZone } from '../../type'\n\nfunction useCountries({ shopifyStoreDomain }: { shopifyStoreDomain: string }) {\n const { locale = '' } = useShopifyContext()\n\n const [isLoading, setLoading] = useState(false)\n const [countries, setCountries] = useState<ShippingCountry[]>([])\n\n useEffect(() => {\n const fetchCountries = async () => {\n setLoading(true)\n try {\n const response = await fetch(`/api/multipass/rainbowbridge/uc/shop/shipping_zones?shop=${shopifyStoreDomain}`)\n const res: any = await response.json()\n\n // \u56FD\u5BB6\u8FC7\u6EE4\n let shipsToCountries: ShippingCountry[] = []\n const countrySet = new Set()\n res.data.data.forEach((shippingZoneItem: ShippingZone) => {\n shippingZoneItem.countries.forEach(shippingZoneCountryItem => {\n if (!countrySet.has(shippingZoneCountryItem.code)) {\n countrySet.add(shippingZoneCountryItem.code)\n shipsToCountries.push(shippingZoneCountryItem)\n }\n })\n })\n\n // \u5B57\u6BCD\u987A\u5E8F\u6392\u5E8F\n shipsToCountries = shipsToCountries.sort((a, b) => {\n return a.code.localeCompare(b.code)\n })\n\n console.log('fetch shipsToCountries', shipsToCountries)\n setCountries(shipsToCountries)\n } catch (e) {\n setCountries([])\n console.error(e)\n } finally {\n setLoading(false)\n }\n }\n\n fetchCountries()\n }, [locale])\n\n return {\n isLoading,\n countries,\n }\n}\n\nexport default useCountries\n"],
|
|
5
|
+
"mappings": "AAAA,OAAS,aAAAA,EAAW,YAAAC,MAAgB,QAEpC,OAAS,qBAAAC,MAAyB,oBAGlC,SAASC,EAAa,CAAE,mBAAAC,CAAmB,EAAmC,CAC5E,KAAM,CAAE,OAAAC,EAAS,EAAG,EAAIH,EAAkB,EAEpC,CAACI,EAAWC,CAAU,EAAIN,EAAS,EAAK,EACxC,CAACO,EAAWC,CAAY,EAAIR,EAA4B,CAAC,CAAC,EAEhE,OAAAD,EAAU,IAAM,EACS,SAAY,CACjCO,EAAW,EAAI,EACf,GAAI,CAEF,MAAMG,EAAW,MADA,MAAM,MAAM,4DAA4DN,CAAkB,EAAE,GAC7E,KAAK,EAGrC,IAAIO,EAAsC,CAAC,EAC3C,MAAMC,EAAa,IAAI,IACvBF,EAAI,KAAK,KAAK,QAASG,GAAmC,CACxDA,EAAiB,UAAU,QAAQC,GAA2B,CACvDF,EAAW,IAAIE,EAAwB,IAAI,IAC9CF,EAAW,IAAIE,EAAwB,IAAI,EAC3CH,EAAiB,KAAKG,CAAuB,EAEjD,CAAC,CACH,CAAC,EAGDH,EAAmBA,EAAiB,KAAK,CAACI,EAAGC,IACpCD,EAAE,KAAK,cAAcC,EAAE,IAAI,CACnC,EAED,QAAQ,IAAI,yBAA0BL,CAAgB,EACtDF,EAAaE,CAAgB,CAC/B,OAASM,EAAG,CACVR,EAAa,CAAC,CAAC,EACf,QAAQ,MAAMQ,CAAC,CACjB,QAAE,CACAV,EAAW,EAAK,CAClB,CACF,GAEe,CACjB,EAAG,CAACF,CAAM,CAAC,EAEJ,CACL,UAAAC,EACA,UAAAE,CACF,CACF,CAEA,IAAOU,EAAQf",
|
|
6
|
+
"names": ["useEffect", "useState", "useShopifyContext", "useCountries", "shopifyStoreDomain", "locale", "isLoading", "setLoading", "countries", "setCountries", "res", "shipsToCountries", "countrySet", "shippingZoneItem", "shippingZoneCountryItem", "a", "b", "e", "useCountries_default"]
|
|
7
7
|
}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{useCallback as L,useEffect as A,useState as m}from"react";import{ALPC_COUNTRY_MAP as M,AlpcConsumeType as _}from"../const";import{useAlpcMutation as w}from"./useAlpcFetch";import{useCreditsContext as P}from"../provider";import{useShopifyContext as x}from"@shopify
|
|
1
|
+
import{useCallback as L,useEffect as A,useState as m}from"react";import{ALPC_COUNTRY_MAP as M,AlpcConsumeType as _}from"../const";import{useAlpcMutation as w}from"./useAlpcFetch";import{useCreditsContext as P}from"../provider";import{useShopifyContext as x}from"@anker-in/shopify";function N({page:e,pageSize:s,consumeType:r}){const{isLoadingProfile:n,profile:t}=P(),{brand:f,locale:c,appName:g}=x(),y=!!t,[u,d]=m([]),[p,C]=m(0),[l,R]=m(0),{isMutating:o,trigger:a}=w({url:"/v1/credit/log/coupon",initData:{brand:f,country:M.get(c)||c,app_name:g}});A(()=>{n||!t||o||e!==l&&e&&a({consume_type:r||_.Coupon,page:e,page_size:s,user_id:t?.user_id},{onSuccess(i){R(e),C(i?.data?.total),d(u.concat(i?.data?.redeem_logs||[]))}})},[a,u,r,e,s,l,t,n,o]);const b=L(async()=>{n||!y||!t||o||await a({consume_type:r||_.Coupon,page:e,page_size:s,user_id:t?.user_id},{onSuccess(i){d(i?.data?.redeem_logs||[])}})},[r,o,n,e,s,t,a]);return{myRewards:u,isLoading:o,total:p,getMyRewards:b,canNext:p>u.length&&!o}}var z=N;export{z as default};
|
|
2
2
|
//# sourceMappingURL=useMyRewards.js.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../../../../src/components/credits/context/hooks/useMyRewards.ts"],
|
|
4
|
-
"sourcesContent": ["import { useCallback, useEffect, useState } from 'react'\n\nimport { ALPC_COUNTRY_MAP, AlpcConsumeType } from '../const'\nimport { useAlpcMutation } from './useAlpcFetch'\nimport type { RedeemLogResponse } from '../response'\nimport { useCreditsContext } from '../provider'\nimport { useShopifyContext } from '@shopify
|
|
5
|
-
"mappings": "AAAA,OAAS,eAAAA,EAAa,aAAAC,EAAW,YAAAC,MAAgB,QAEjD,OAAS,oBAAAC,EAAkB,mBAAAC,MAAuB,WAClD,OAAS,mBAAAC,MAAuB,iBAEhC,OAAS,qBAAAC,MAAyB,cAClC,OAAS,qBAAAC,MAAyB,
|
|
4
|
+
"sourcesContent": ["import { useCallback, useEffect, useState } from 'react'\n\nimport { ALPC_COUNTRY_MAP, AlpcConsumeType } from '../const'\nimport { useAlpcMutation } from './useAlpcFetch'\nimport type { RedeemLogResponse } from '../response'\nimport { useCreditsContext } from '../provider'\nimport { useShopifyContext } from '@anker-in/shopify'\n\nfunction useMyRewards({\n page,\n pageSize,\n consumeType,\n}: {\n page: number\n pageSize: number\n consumeType?: AlpcConsumeType\n}) {\n const { isLoadingProfile, profile } = useCreditsContext()\n const { brand, locale, appName } = useShopifyContext()\n const isLogin = !!profile\n\n const [myRewards, setMyRewards] = useState<RedeemLogResponse[]>([])\n const [total, setTotal] = useState(0)\n\n const [currentPage, setCurrentPage] = useState(0)\n\n const { isMutating: isLoading, trigger } = useAlpcMutation<\n { data: { redeem_logs: RedeemLogResponse[]; total: number } },\n {\n page: number\n page_size: number\n consume_type: AlpcConsumeType\n user_id: string\n }\n >({\n url: `/v1/credit/log/coupon`,\n initData: {\n brand: brand,\n country: ALPC_COUNTRY_MAP.get(locale) || locale,\n app_name: appName,\n },\n })\n\n useEffect(() => {\n if (isLoadingProfile || !profile || isLoading) {\n return\n }\n\n if (page !== currentPage && page) {\n trigger(\n {\n consume_type: consumeType || AlpcConsumeType.Coupon,\n page,\n page_size: pageSize,\n user_id: profile?.user_id,\n },\n {\n onSuccess(responseData) {\n setCurrentPage(page)\n setTotal(responseData?.data?.total)\n setMyRewards(myRewards.concat(responseData?.data?.redeem_logs || []))\n },\n }\n )\n }\n }, [trigger, myRewards, consumeType, page, pageSize, currentPage, profile, isLoadingProfile, isLoading])\n\n const getMyRewards = useCallback(async () => {\n if (isLoadingProfile || !isLogin || !profile || isLoading) {\n return\n }\n await trigger(\n {\n consume_type: consumeType || AlpcConsumeType.Coupon,\n page,\n page_size: pageSize,\n user_id: profile?.user_id,\n },\n {\n // \u4EC5\u652F\u63011\u9875\u7684\n onSuccess(responseData) {\n setMyRewards(responseData?.data?.redeem_logs || [])\n },\n }\n )\n }, [consumeType, isLoading, isLoadingProfile, page, pageSize, profile, trigger])\n\n return {\n myRewards,\n isLoading,\n total,\n getMyRewards,\n canNext: total > myRewards.length && !isLoading,\n }\n}\n\nexport default useMyRewards\n"],
|
|
5
|
+
"mappings": "AAAA,OAAS,eAAAA,EAAa,aAAAC,EAAW,YAAAC,MAAgB,QAEjD,OAAS,oBAAAC,EAAkB,mBAAAC,MAAuB,WAClD,OAAS,mBAAAC,MAAuB,iBAEhC,OAAS,qBAAAC,MAAyB,cAClC,OAAS,qBAAAC,MAAyB,oBAElC,SAASC,EAAa,CACpB,KAAAC,EACA,SAAAC,EACA,YAAAC,CACF,EAIG,CACD,KAAM,CAAE,iBAAAC,EAAkB,QAAAC,CAAQ,EAAIP,EAAkB,EAClD,CAAE,MAAAQ,EAAO,OAAAC,EAAQ,QAAAC,CAAQ,EAAIT,EAAkB,EAC/CU,EAAU,CAAC,CAACJ,EAEZ,CAACK,EAAWC,CAAY,EAAIjB,EAA8B,CAAC,CAAC,EAC5D,CAACkB,EAAOC,CAAQ,EAAInB,EAAS,CAAC,EAE9B,CAACoB,EAAaC,CAAc,EAAIrB,EAAS,CAAC,EAE1C,CAAE,WAAYsB,EAAW,QAAAC,CAAQ,EAAIpB,EAQzC,CACA,IAAK,wBACL,SAAU,CACR,MAAOS,EACP,QAASX,EAAiB,IAAIY,CAAM,GAAKA,EACzC,SAAUC,CACZ,CACF,CAAC,EAEDf,EAAU,IAAM,CACVW,GAAoB,CAACC,GAAWW,GAIhCf,IAASa,GAAeb,GAC1BgB,EACE,CACE,aAAcd,GAAeP,EAAgB,OAC7C,KAAAK,EACA,UAAWC,EACX,QAASG,GAAS,OACpB,EACA,CACE,UAAUa,EAAc,CACtBH,EAAed,CAAI,EACnBY,EAASK,GAAc,MAAM,KAAK,EAClCP,EAAaD,EAAU,OAAOQ,GAAc,MAAM,aAAe,CAAC,CAAC,CAAC,CACtE,CACF,CACF,CAEJ,EAAG,CAACD,EAASP,EAAWP,EAAaF,EAAMC,EAAUY,EAAaT,EAASD,EAAkBY,CAAS,CAAC,EAEvG,MAAMG,EAAe3B,EAAY,SAAY,CACvCY,GAAoB,CAACK,GAAW,CAACJ,GAAWW,GAGhD,MAAMC,EACJ,CACE,aAAcd,GAAeP,EAAgB,OAC7C,KAAAK,EACA,UAAWC,EACX,QAASG,GAAS,OACpB,EACA,CAEE,UAAUa,EAAc,CACtBP,EAAaO,GAAc,MAAM,aAAe,CAAC,CAAC,CACpD,CACF,CACF,CACF,EAAG,CAACf,EAAaa,EAAWZ,EAAkBH,EAAMC,EAAUG,EAASY,CAAO,CAAC,EAE/E,MAAO,CACL,UAAAP,EACA,UAAAM,EACA,MAAAJ,EACA,aAAAO,EACA,QAASP,EAAQF,EAAU,QAAU,CAACM,CACxC,CACF,CAEA,IAAOI,EAAQpB",
|
|
6
6
|
"names": ["useCallback", "useEffect", "useState", "ALPC_COUNTRY_MAP", "AlpcConsumeType", "useAlpcMutation", "useCreditsContext", "useShopifyContext", "useMyRewards", "page", "pageSize", "consumeType", "isLoadingProfile", "profile", "brand", "locale", "appName", "isLogin", "myRewards", "setMyRewards", "total", "setTotal", "currentPage", "setCurrentPage", "isLoading", "trigger", "responseData", "getMyRewards", "useMyRewards_default"]
|
|
7
7
|
}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import
|
|
1
|
+
import n from"swr/mutation";import{useRedeemCoupon as s}from"./useRedeemCoupon";import{useCreateCartMutation as a}from"@anker-in/shopify";import{useCreditsContext as d}from"../provider";const y=()=>{const{trigger:o}=s(),{profile:u}=d(),{trigger:i}=a();return n("redeemAndBuy",async(c,{arg:e})=>{const r=await o({user_id:u?.user_id,rule_id:e.redeemId});if(r&&r?.data?.coupon_code){const t=await i({discountCodes:[r.data.coupon_code],lines:[{merchandiseId:String(e.productVariant.id),quantity:e.quantity||1}]});return t?.url?{success:!0,url:t.url}:{success:!1,error:"Create cart failed"}}else return{success:!1,error:"Redeem failed"}})};export{y as useRedeemAndBuy};
|
|
2
2
|
//# sourceMappingURL=useRedeemAndBuy.js.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../../../../src/components/credits/context/hooks/useRedeemAndBuy.ts"],
|
|
4
|
-
"sourcesContent": ["import useSWRMutation from 'swr/mutation'\nimport { useRedeemCoupon } from './useRedeemCoupon'\nimport { useCreateCartMutation } from '@shopify
|
|
5
|
-
"mappings": "AAAA,OAAOA,MAAoB,eAC3B,OAAS,mBAAAC,MAAuB,oBAChC,OAAS,yBAAAC,MAA6B,
|
|
4
|
+
"sourcesContent": ["import useSWRMutation from 'swr/mutation'\nimport { useRedeemCoupon } from './useRedeemCoupon'\nimport { useCreateCartMutation } from '@anker-in/shopify'\nimport type { ProductVariant } from '@anker-in/shopify'\nimport { useCreditsContext } from '../provider'\n\nexport const useRedeemAndBuy = () => {\n const { trigger } = useRedeemCoupon()\n const { profile } = useCreditsContext()\n\n const { trigger: buyNow } = useCreateCartMutation()\n\n return useSWRMutation(\n 'redeemAndBuy',\n async (\n _,\n {\n arg,\n }: {\n arg: {\n productVariant: ProductVariant\n quantity?: number\n redeemId: number\n }\n }\n ) => {\n const res = await trigger({\n user_id: profile?.user_id,\n rule_id: arg.redeemId,\n })\n if (res && res?.data?.coupon_code) {\n const cart = await buyNow({\n discountCodes: [res.data.coupon_code],\n lines: [\n {\n merchandiseId: String(arg.productVariant.id),\n quantity: arg.quantity || 1,\n },\n ],\n })\n if (cart?.url) {\n return {\n success: true,\n url: cart.url,\n }\n } else {\n return {\n success: false,\n error: 'Create cart failed',\n }\n }\n } else {\n return {\n success: false,\n error: 'Redeem failed',\n }\n }\n }\n )\n}\n"],
|
|
5
|
+
"mappings": "AAAA,OAAOA,MAAoB,eAC3B,OAAS,mBAAAC,MAAuB,oBAChC,OAAS,yBAAAC,MAA6B,oBAEtC,OAAS,qBAAAC,MAAyB,cAE3B,MAAMC,EAAkB,IAAM,CACnC,KAAM,CAAE,QAAAC,CAAQ,EAAIJ,EAAgB,EAC9B,CAAE,QAAAK,CAAQ,EAAIH,EAAkB,EAEhC,CAAE,QAASI,CAAO,EAAIL,EAAsB,EAElD,OAAOF,EACL,eACA,MACEQ,EACA,CACE,IAAAC,CACF,IAOG,CACH,MAAMC,EAAM,MAAML,EAAQ,CACxB,QAASC,GAAS,QAClB,QAASG,EAAI,QACf,CAAC,EACD,GAAIC,GAAOA,GAAK,MAAM,YAAa,CACjC,MAAMC,EAAO,MAAMJ,EAAO,CACxB,cAAe,CAACG,EAAI,KAAK,WAAW,EACpC,MAAO,CACL,CACE,cAAe,OAAOD,EAAI,eAAe,EAAE,EAC3C,SAAUA,EAAI,UAAY,CAC5B,CACF,CACF,CAAC,EACD,OAAIE,GAAM,IACD,CACL,QAAS,GACT,IAAKA,EAAK,GACZ,EAEO,CACL,QAAS,GACT,MAAO,oBACT,CAEJ,KACE,OAAO,CACL,QAAS,GACT,MAAO,eACT,CAEJ,CACF,CACF",
|
|
6
6
|
"names": ["useSWRMutation", "useRedeemCoupon", "useCreateCartMutation", "useCreditsContext", "useRedeemAndBuy", "trigger", "profile", "buyNow", "_", "arg", "res", "cart"]
|
|
7
7
|
}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{ALPC_COUNTRY_MAP as p}from"../const";import{useAlpcMutation as r}from"./useAlpcFetch";import{useShopifyContext as u}from"@shopify
|
|
1
|
+
import{ALPC_COUNTRY_MAP as p}from"../const";import{useAlpcMutation as r}from"./useAlpcFetch";import{useShopifyContext as u}from"@anker-in/shopify";const a=(o={})=>{const{locale:e,appName:n,brand:t}=u();return r({url:"/v1/credit/redeem/coupon",initData:{brand:t,country:p.get(e)||e,app_name:n}},o)};export{a as useRedeemCoupon};
|
|
2
2
|
//# sourceMappingURL=useRedeemCoupon.js.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../../../../src/components/credits/context/hooks/useRedeemCoupon.ts"],
|
|
4
|
-
"sourcesContent": ["import { ALPC_COUNTRY_MAP } from '../const'\nimport { useAlpcMutation, type UseMutationConfig } from './useAlpcFetch'\nimport { useShopifyContext } from '@shopify
|
|
5
|
-
"mappings": "AAAA,OAAS,oBAAAA,MAAwB,WACjC,OAAS,mBAAAC,MAA+C,iBACxD,OAAS,qBAAAC,MAAyB,
|
|
4
|
+
"sourcesContent": ["import { ALPC_COUNTRY_MAP } from '../const'\nimport { useAlpcMutation, type UseMutationConfig } from './useAlpcFetch'\nimport { useShopifyContext } from '@anker-in/shopify'\n\ntype RedeemCouponResponse = {\n code: number\n data: {\n success: boolean\n coupon_code: string\n }\n}\n\nexport const useRedeemCoupon = (mutationOptions: UseMutationConfig<RedeemCouponResponse> = {}) => {\n const { locale, appName, brand } = useShopifyContext()\n\n return useAlpcMutation<\n RedeemCouponResponse,\n {\n user_id?: string\n rule_id: number\n }\n >(\n {\n url: `/v1/credit/redeem/coupon`,\n initData: {\n brand,\n country: ALPC_COUNTRY_MAP.get(locale) || locale,\n app_name: appName,\n },\n },\n mutationOptions\n )\n}\n"],
|
|
5
|
+
"mappings": "AAAA,OAAS,oBAAAA,MAAwB,WACjC,OAAS,mBAAAC,MAA+C,iBACxD,OAAS,qBAAAC,MAAyB,oBAU3B,MAAMC,EAAkB,CAACC,EAA2D,CAAC,IAAM,CAChG,KAAM,CAAE,OAAAC,EAAQ,QAAAC,EAAS,MAAAC,CAAM,EAAIL,EAAkB,EAErD,OAAOD,EAOL,CACE,IAAK,2BACL,SAAU,CACR,MAAAM,EACA,QAASP,EAAiB,IAAIK,CAAM,GAAKA,EACzC,SAAUC,CACZ,CACF,EACAF,CACF,CACF",
|
|
6
6
|
"names": ["ALPC_COUNTRY_MAP", "useAlpcMutation", "useShopifyContext", "useRedeemCoupon", "mutationOptions", "locale", "appName", "brand"]
|
|
7
7
|
}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{ALPC_COUNTRY_MAP as s}from"../const";import{useAlpcMutation as a}from"./useAlpcFetch";import{useShopifyContext as u}from"@shopify
|
|
1
|
+
import{ALPC_COUNTRY_MAP as s}from"../const";import{useAlpcMutation as a}from"./useAlpcFetch";import{useShopifyContext as u}from"@anker-in/shopify";const m=(o={})=>{const{storeDomain:t,locale:e,appName:n,brand:r}=u();return a({url:"/v1/credit/exchange/goods",initData:{quantity:1,brand:r,country:(s.get(e||"")||e)?.toUpperCase(),domain:t,app_name:n}},o)};export{m as useRedeemProduct};
|
|
2
2
|
//# sourceMappingURL=useRedeemProduct.js.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../../../../src/components/credits/context/hooks/useRedeemProduct.ts"],
|
|
4
|
-
"sourcesContent": ["import { ALPC_COUNTRY_MAP } from '../const'\nimport { useAlpcMutation, type UseMutationConfig } from './useAlpcFetch'\nimport { useShopifyContext } from '@shopify
|
|
5
|
-
"mappings": "AAAA,OAAS,oBAAAA,MAAwB,WACjC,OAAS,mBAAAC,MAA+C,iBACxD,OAAS,qBAAAC,MAAyB,
|
|
4
|
+
"sourcesContent": ["import { ALPC_COUNTRY_MAP } from '../const'\nimport { useAlpcMutation, type UseMutationConfig } from './useAlpcFetch'\nimport { useShopifyContext } from '@anker-in/shopify'\n\ntype RedeemProductResponse = {\n code: number\n data: {\n success: boolean\n }\n}\n\nexport const useRedeemProduct = (mutationOptions: UseMutationConfig<RedeemProductResponse> = {}) => {\n const { storeDomain, locale, appName, brand } = useShopifyContext()\n\n return useAlpcMutation<\n RedeemProductResponse,\n {\n rule_id: number\n address: string\n }\n >(\n {\n url: `/v1/credit/exchange/goods`,\n initData: {\n quantity: 1,\n brand,\n country: (ALPC_COUNTRY_MAP.get(locale || '') || locale)?.toUpperCase(),\n domain: storeDomain,\n app_name: appName,\n },\n },\n mutationOptions\n )\n}\n"],
|
|
5
|
+
"mappings": "AAAA,OAAS,oBAAAA,MAAwB,WACjC,OAAS,mBAAAC,MAA+C,iBACxD,OAAS,qBAAAC,MAAyB,oBAS3B,MAAMC,EAAmB,CAACC,EAA4D,CAAC,IAAM,CAClG,KAAM,CAAE,YAAAC,EAAa,OAAAC,EAAQ,QAAAC,EAAS,MAAAC,CAAM,EAAIN,EAAkB,EAElE,OAAOD,EAOL,CACE,IAAK,4BACL,SAAU,CACR,SAAU,EACV,MAAAO,EACA,SAAUR,EAAiB,IAAIM,GAAU,EAAE,GAAKA,IAAS,YAAY,EACrE,OAAQD,EACR,SAAUE,CACZ,CACF,EACAH,CACF,CACF",
|
|
6
6
|
"names": ["ALPC_COUNTRY_MAP", "useAlpcMutation", "useShopifyContext", "useRedeemProduct", "mutationOptions", "storeDomain", "locale", "appName", "brand"]
|
|
7
7
|
}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{useCallback as R,useEffect as S,useState as y}from"react";import{useAlpcMutation as b}from"./useAlpcFetch";import{ALPC_COUNTRY_MAP as h}from"../const";import{useCreditsContext as x}from"../provider";import{useShopifyContext as N}from"@shopify
|
|
1
|
+
import{useCallback as R,useEffect as S,useState as y}from"react";import{useAlpcMutation as b}from"./useAlpcFetch";import{ALPC_COUNTRY_MAP as h}from"../const";import{useCreditsContext as x}from"../provider";import{useShopifyContext as N}from"@anker-in/shopify";function A(){let e="";const{profile:n,isLoadingProfile:u}=x(),{locale:l,brand:g}=N();l==="pl"?e="eu":e=l;const[C,a]=y([]),{isMutating:L,trigger:m}=b({url:"/v1/credit/consume_credit_rules",initData:{brand:g,page:1,page_size:20,country:(h.get(e)||e)?.toUpperCase(),task_target:1}}),r=R(()=>{const d=`consume_credit_rules-${e}`,_=localStorage?.getItem(d);if(_){try{const s=JSON.parse(_);if(s.expire>Date.now()&&s.consume_credit_rules.length){a(s.consume_credit_rules);return}}catch{}localStorage?.removeItem(d)}m({user_id:n?.user_id},{onSuccess(s){let p=s.data.consume_credit_rules||[],o=p.filter(t=>t.consume_type==1)||[],c=p.filter(t=>t.consume_type==2)||[];o=o.sort((t,i)=>t.consume_credits-i.consume_credits),c=c.sort((t,i)=>t.consume_credits-i.consume_credits);const f=o.concat(c);a(f),localStorage?.setItem(`consume_credit_rules-${e}`,JSON.stringify({expire:Date.now()+10*60*1e3,consume_credit_rules:f}))}})},[n,m,e]);return S(()=>{u||r()},[r,u]),{listLoading:L,redeemableList:C,getRedeemableList:r}}var k=A;export{k as default};
|
|
2
2
|
//# sourceMappingURL=useRedeemableList.js.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../../../../src/components/credits/context/hooks/useRedeemableList.ts"],
|
|
4
|
-
"sourcesContent": ["import { useCallback, useEffect, useState } from 'react'\n\nimport { useAlpcMutation } from './useAlpcFetch'\nimport { ALPC_COUNTRY_MAP } from '../const'\nimport { useCreditsContext } from '../provider'\nimport type { ConsumeCreditRuleResponse } from '../response'\nimport { useShopifyContext } from '@shopify
|
|
5
|
-
"mappings": "AAAA,OAAS,eAAAA,EAAa,aAAAC,EAAW,YAAAC,MAAgB,QAEjD,OAAS,mBAAAC,MAAuB,iBAChC,OAAS,oBAAAC,MAAwB,WACjC,OAAS,qBAAAC,MAAyB,cAElC,OAAS,qBAAAC,MAAyB,
|
|
4
|
+
"sourcesContent": ["import { useCallback, useEffect, useState } from 'react'\n\nimport { useAlpcMutation } from './useAlpcFetch'\nimport { ALPC_COUNTRY_MAP } from '../const'\nimport { useCreditsContext } from '../provider'\nimport type { ConsumeCreditRuleResponse } from '../response'\nimport { useShopifyContext } from '@anker-in/shopify'\n\nfunction useRedeemableList() {\n let locale = '' as string\n const { profile, isLoadingProfile } = useCreditsContext()\n const { locale: contextLocale, brand } = useShopifyContext()\n\n if (contextLocale === 'pl') {\n locale = 'eu'\n } else {\n locale = contextLocale\n }\n\n const [redeemableList, setRedeemableList] = useState<ConsumeCreditRuleResponse[]>([])\n const { isMutating: listLoading, trigger } = useAlpcMutation<\n {\n data: { consume_credit_rules: ConsumeCreditRuleResponse[] }\n },\n { user_id?: string }\n >({\n url: `/v1/credit/consume_credit_rules`,\n initData: {\n brand,\n page: 1,\n page_size: 20,\n country: (ALPC_COUNTRY_MAP.get(locale) || locale)?.toUpperCase(),\n task_target: 1, // 1: 'app', 2: 'website'\n },\n })\n\n const getRedeemableList = useCallback(() => {\n const cacheName = `consume_credit_rules-${locale}`\n\n const cacheStr = localStorage?.getItem(cacheName)\n if (cacheStr) {\n try {\n const cache = JSON.parse(cacheStr)\n if (cache.expire > Date.now() && cache.consume_credit_rules.length) {\n // \u7F13\u5B58\u672A\u8FC7\u671F\n setRedeemableList(cache.consume_credit_rules)\n return\n }\n } catch (e) {}\n localStorage?.removeItem(cacheName)\n }\n trigger(\n {\n user_id: profile?.user_id,\n },\n {\n onSuccess(responseData) {\n let list = responseData.data.consume_credit_rules || []\n let cList = list.filter(i => i.consume_type == 1) || []\n let pList = list.filter(i => i.consume_type == 2) || []\n cList = cList.sort((prev, next) => prev.consume_credits - next.consume_credits)\n pList = pList.sort((prev, next) => prev.consume_credits - next.consume_credits)\n const resultList = cList.concat(pList)\n setRedeemableList(resultList)\n\n localStorage?.setItem(\n `consume_credit_rules-${locale}`,\n JSON.stringify({\n expire: Date.now() + 10 * 60 * 1000,\n consume_credit_rules: resultList,\n })\n )\n },\n }\n )\n }, [profile, trigger, locale])\n\n useEffect(() => {\n if (!isLoadingProfile) {\n getRedeemableList()\n }\n }, [getRedeemableList, isLoadingProfile])\n\n return {\n listLoading,\n redeemableList,\n getRedeemableList,\n }\n}\n\nexport default useRedeemableList\n"],
|
|
5
|
+
"mappings": "AAAA,OAAS,eAAAA,EAAa,aAAAC,EAAW,YAAAC,MAAgB,QAEjD,OAAS,mBAAAC,MAAuB,iBAChC,OAAS,oBAAAC,MAAwB,WACjC,OAAS,qBAAAC,MAAyB,cAElC,OAAS,qBAAAC,MAAyB,oBAElC,SAASC,GAAoB,CAC3B,IAAIC,EAAS,GACb,KAAM,CAAE,QAAAC,EAAS,iBAAAC,CAAiB,EAAIL,EAAkB,EAClD,CAAE,OAAQM,EAAe,MAAAC,CAAM,EAAIN,EAAkB,EAEvDK,IAAkB,KACpBH,EAAS,KAETA,EAASG,EAGX,KAAM,CAACE,EAAgBC,CAAiB,EAAIZ,EAAsC,CAAC,CAAC,EAC9E,CAAE,WAAYa,EAAa,QAAAC,CAAQ,EAAIb,EAK3C,CACA,IAAK,kCACL,SAAU,CACR,MAAAS,EACA,KAAM,EACN,UAAW,GACX,SAAUR,EAAiB,IAAII,CAAM,GAAKA,IAAS,YAAY,EAC/D,YAAa,CACf,CACF,CAAC,EAEKS,EAAoBjB,EAAY,IAAM,CAC1C,MAAMkB,EAAY,wBAAwBV,CAAM,GAE1CW,EAAW,cAAc,QAAQD,CAAS,EAChD,GAAIC,EAAU,CACZ,GAAI,CACF,MAAMC,EAAQ,KAAK,MAAMD,CAAQ,EACjC,GAAIC,EAAM,OAAS,KAAK,IAAI,GAAKA,EAAM,qBAAqB,OAAQ,CAElEN,EAAkBM,EAAM,oBAAoB,EAC5C,MACF,CACF,MAAY,CAAC,CACb,cAAc,WAAWF,CAAS,CACpC,CACAF,EACE,CACE,QAASP,GAAS,OACpB,EACA,CACE,UAAUY,EAAc,CACtB,IAAIC,EAAOD,EAAa,KAAK,sBAAwB,CAAC,EAClDE,EAAQD,EAAK,OAAOE,GAAKA,EAAE,cAAgB,CAAC,GAAK,CAAC,EAClDC,EAAQH,EAAK,OAAOE,GAAKA,EAAE,cAAgB,CAAC,GAAK,CAAC,EACtDD,EAAQA,EAAM,KAAK,CAACG,EAAMC,IAASD,EAAK,gBAAkBC,EAAK,eAAe,EAC9EF,EAAQA,EAAM,KAAK,CAACC,EAAMC,IAASD,EAAK,gBAAkBC,EAAK,eAAe,EAC9E,MAAMC,EAAaL,EAAM,OAAOE,CAAK,EACrCX,EAAkBc,CAAU,EAE5B,cAAc,QACZ,wBAAwBpB,CAAM,GAC9B,KAAK,UAAU,CACb,OAAQ,KAAK,IAAI,EAAI,GAAK,GAAK,IAC/B,qBAAsBoB,CACxB,CAAC,CACH,CACF,CACF,CACF,CACF,EAAG,CAACnB,EAASO,EAASR,CAAM,CAAC,EAE7B,OAAAP,EAAU,IAAM,CACTS,GACHO,EAAkB,CAEtB,EAAG,CAACA,EAAmBP,CAAgB,CAAC,EAEjC,CACL,YAAAK,EACA,eAAAF,EACA,kBAAAI,CACF,CACF,CAEA,IAAOY,EAAQtB",
|
|
6
6
|
"names": ["useCallback", "useEffect", "useState", "useAlpcMutation", "ALPC_COUNTRY_MAP", "useCreditsContext", "useShopifyContext", "useRedeemableList", "locale", "profile", "isLoadingProfile", "contextLocale", "brand", "redeemableList", "setRedeemableList", "listLoading", "trigger", "getRedeemableList", "cacheName", "cacheStr", "cache", "responseData", "list", "cList", "i", "pList", "prev", "next", "resultList", "useRedeemableList_default"]
|
|
7
7
|
}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import i from"../../../../helpers/fetcher";import a from"swr/mutation";import{useCreditsContext as n}from"../provider";import{useShopifyContext as r}from"@shopify
|
|
1
|
+
import i from"../../../../helpers/fetcher";import a from"swr/mutation";import{useCreditsContext as n}from"../provider";import{useShopifyContext as r}from"@anker-in/shopify";function u(){const{profile:e}=n(),{appName:t,locale:o}=r();return a("send-email-validation",()=>i({locale:o,url:"/api/multipass/account/users/send_validation_email",method:"POST",body:{email:e?.email,app:t},needRecaptcha:!0,action:"verifyAccount"}))}export{u as useSendEmailValidation};
|
|
2
2
|
//# sourceMappingURL=useSendEmailValidation.js.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../../../../src/components/credits/context/hooks/useSendEmailValidation.ts"],
|
|
4
|
-
"sourcesContent": ["import fetcher from '../../../../helpers/fetcher'\nimport useSWRMutation from 'swr/mutation'\nimport { useCreditsContext } from '../provider'\nimport { useShopifyContext } from '@shopify
|
|
5
|
-
"mappings": "AAAA,OAAOA,MAAa,8BACpB,OAAOC,MAAoB,eAC3B,OAAS,qBAAAC,MAAyB,cAClC,OAAS,qBAAAC,MAAyB,
|
|
4
|
+
"sourcesContent": ["import fetcher from '../../../../helpers/fetcher'\nimport useSWRMutation from 'swr/mutation'\nimport { useCreditsContext } from '../provider'\nimport { useShopifyContext } from '@anker-in/shopify'\n\nexport function useSendEmailValidation() {\n const { profile } = useCreditsContext()\n const { appName, locale } = useShopifyContext()\n\n return useSWRMutation('send-email-validation', () =>\n fetcher({\n locale,\n url: '/api/multipass/account/users/send_validation_email',\n method: 'POST',\n body: { email: profile?.email, app: appName },\n needRecaptcha: true,\n action: 'verifyAccount',\n })\n )\n}\n"],
|
|
5
|
+
"mappings": "AAAA,OAAOA,MAAa,8BACpB,OAAOC,MAAoB,eAC3B,OAAS,qBAAAC,MAAyB,cAClC,OAAS,qBAAAC,MAAyB,oBAE3B,SAASC,GAAyB,CACvC,KAAM,CAAE,QAAAC,CAAQ,EAAIH,EAAkB,EAChC,CAAE,QAAAI,EAAS,OAAAC,CAAO,EAAIJ,EAAkB,EAE9C,OAAOF,EAAe,wBAAyB,IAC7CD,EAAQ,CACN,OAAAO,EACA,IAAK,qDACL,OAAQ,OACR,KAAM,CAAE,MAAOF,GAAS,MAAO,IAAKC,CAAQ,EAC5C,cAAe,GACf,OAAQ,eACV,CAAC,CACH,CACF",
|
|
6
6
|
"names": ["fetcher", "useSWRMutation", "useCreditsContext", "useShopifyContext", "useSendEmailValidation", "profile", "appName", "locale"]
|
|
7
7
|
}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{useMemo as t}from"react";import{TaskSubType as n}from"../const";import c from"./useActivities";import b from"./useSubscriptions";import{useCreditsContext as p}from"../provider";import{useShopifyContext as m}from"@shopify
|
|
1
|
+
import{useMemo as t}from"react";import{TaskSubType as n}from"../const";import c from"./useActivities";import b from"./useSubscriptions";import{useCreditsContext as p}from"../provider";import{useShopifyContext as m}from"@anker-in/shopify";const C=()=>{const{profile:i}=p(),{brand:o}=m(),u=t(()=>({page:1,pageSize:50}),[]),{activities:s}=c(u),{subscriptionData:r}=b(i?.email);return t(()=>r?.preference?r.preference.some(e=>e.brand===o&&e.subscribe)?!0:s?.some(e=>e.task_sub_type===n.Subscription):!1,[r,s])};export{C as useSubscribed};
|
|
2
2
|
//# sourceMappingURL=useSubscribed.js.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../../../../src/components/credits/context/hooks/useSubscribed.ts"],
|
|
4
|
-
"sourcesContent": ["import { useMemo } from 'react'\n\nimport { TaskSubType } from '../const'\nimport useActivities from './useActivities'\nimport useSubscriptions from './useSubscriptions'\nimport { useCreditsContext } from '../provider'\nimport { useShopifyContext } from '@shopify
|
|
5
|
-
"mappings": "AAAA,OAAS,WAAAA,MAAe,QAExB,OAAS,eAAAC,MAAmB,WAC5B,OAAOC,MAAmB,kBAC1B,OAAOC,MAAsB,qBAC7B,OAAS,qBAAAC,MAAyB,cAClC,OAAS,qBAAAC,MAAyB,
|
|
4
|
+
"sourcesContent": ["import { useMemo } from 'react'\n\nimport { TaskSubType } from '../const'\nimport useActivities from './useActivities'\nimport useSubscriptions from './useSubscriptions'\nimport { useCreditsContext } from '../provider'\nimport { useShopifyContext } from '@anker-in/shopify'\n\nexport const useSubscribed = () => {\n const { profile } = useCreditsContext()\n const { brand } = useShopifyContext()\n\n const activitiesOptions = useMemo(() => ({ page: 1, pageSize: 50 }), [])\n\n const { activities } = useActivities(activitiesOptions)\n const { subscriptionData } = useSubscriptions(profile?.email)\n\n const isSubscribed = useMemo(() => {\n if (!subscriptionData?.preference) {\n return false\n }\n\n const subscribeResult = subscriptionData.preference.some(item => {\n return item.brand === brand && item.subscribe\n })\n\n if (subscribeResult) {\n return true\n }\n\n return activities?.some(item => {\n return item.task_sub_type === TaskSubType.Subscription\n })\n }, [subscriptionData, activities])\n\n return isSubscribed\n}\n"],
|
|
5
|
+
"mappings": "AAAA,OAAS,WAAAA,MAAe,QAExB,OAAS,eAAAC,MAAmB,WAC5B,OAAOC,MAAmB,kBAC1B,OAAOC,MAAsB,qBAC7B,OAAS,qBAAAC,MAAyB,cAClC,OAAS,qBAAAC,MAAyB,oBAE3B,MAAMC,EAAgB,IAAM,CACjC,KAAM,CAAE,QAAAC,CAAQ,EAAIH,EAAkB,EAChC,CAAE,MAAAI,CAAM,EAAIH,EAAkB,EAE9BI,EAAoBT,EAAQ,KAAO,CAAE,KAAM,EAAG,SAAU,EAAG,GAAI,CAAC,CAAC,EAEjE,CAAE,WAAAU,CAAW,EAAIR,EAAcO,CAAiB,EAChD,CAAE,iBAAAE,CAAiB,EAAIR,EAAiBI,GAAS,KAAK,EAoB5D,OAlBqBP,EAAQ,IACtBW,GAAkB,WAICA,EAAiB,WAAW,KAAKC,GAChDA,EAAK,QAAUJ,GAASI,EAAK,SACrC,EAGQ,GAGFF,GAAY,KAAKE,GACfA,EAAK,gBAAkBX,EAAY,YAC3C,EAbQ,GAcR,CAACU,EAAkBD,CAAU,CAAC,CAGnC",
|
|
6
6
|
"names": ["useMemo", "TaskSubType", "useActivities", "useSubscriptions", "useCreditsContext", "useShopifyContext", "useSubscribed", "profile", "brand", "activitiesOptions", "activities", "subscriptionData", "item"]
|
|
7
7
|
}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{
|
|
1
|
+
import{useCallback as c,useEffect as u,useRef as a,useState as p}from"react";import f from"../../../../helpers/fetcher";import{useShopifyContext as l}from"@anker-in/shopify";function b(o){const t=a(!1),[n,i]=p(),{locale:e}=l(),s=c(async()=>{if(o&&!t.current){t.current=!0;try{const r=await f({method:"GET",url:"/api/multipass/account/subscriptions",body:{email:o},action:"login",locale:e,headers:{},type:""});r&&i(r)}catch(r){console.error(r)}finally{t.current=!1}}},[o,e,t]);return u(()=>{s()},[s]),{subscriptionData:n}}var h=b;export{h as default};
|
|
2
2
|
//# sourceMappingURL=useSubscriptions.js.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../../../../src/components/credits/context/hooks/useSubscriptions.ts"],
|
|
4
|
-
"sourcesContent": ["import {
|
|
5
|
-
"mappings": "AAAA,OAAS,
|
|
6
|
-
"names": ["
|
|
4
|
+
"sourcesContent": ["import { useCallback, useEffect, useRef, useState } from 'react'\nimport type { Subscription } from '../../type'\nimport fetcher from '../../../../helpers/fetcher'\nimport { useShopifyContext } from '@anker-in/shopify'\n\nfunction useSubscriptions(email?: string) {\n const loading = useRef(false)\n const [subscriptionData, setSubscriptionData] = useState<Subscription>()\n const { locale } = useShopifyContext()\n\n const fetchSubscription = useCallback(async () => {\n if (!email) {\n return\n }\n\n if (loading.current) {\n return\n }\n\n loading.current = true\n\n try {\n const response = await fetcher({\n method: 'GET',\n url: '/api/multipass/account/subscriptions',\n body: {\n email,\n },\n action: 'login',\n locale,\n headers: {},\n type: '',\n })\n\n if (response) {\n setSubscriptionData(response)\n }\n } catch (error) {\n console.error(error)\n } finally {\n loading.current = false\n }\n }, [email, locale, loading])\n\n useEffect(() => {\n fetchSubscription()\n }, [fetchSubscription])\n\n return {\n subscriptionData,\n }\n}\n\nexport default useSubscriptions\n"],
|
|
5
|
+
"mappings": "AAAA,OAAS,eAAAA,EAAa,aAAAC,EAAW,UAAAC,EAAQ,YAAAC,MAAgB,QAEzD,OAAOC,MAAa,8BACpB,OAAS,qBAAAC,MAAyB,oBAElC,SAASC,EAAiBC,EAAgB,CACxC,MAAMC,EAAUN,EAAO,EAAK,EACtB,CAACO,EAAkBC,CAAmB,EAAIP,EAAuB,EACjE,CAAE,OAAAQ,CAAO,EAAIN,EAAkB,EAE/BO,EAAoBZ,EAAY,SAAY,CAChD,GAAKO,GAID,CAAAC,EAAQ,QAIZ,CAAAA,EAAQ,QAAU,GAElB,GAAI,CACF,MAAMK,EAAW,MAAMT,EAAQ,CAC7B,OAAQ,MACR,IAAK,uCACL,KAAM,CACJ,MAAAG,CACF,EACA,OAAQ,QACR,OAAAI,EACA,QAAS,CAAC,EACV,KAAM,EACR,CAAC,EAEGE,GACFH,EAAoBG,CAAQ,CAEhC,OAASC,EAAO,CACd,QAAQ,MAAMA,CAAK,CACrB,QAAE,CACAN,EAAQ,QAAU,EACpB,EACF,EAAG,CAACD,EAAOI,EAAQH,CAAO,CAAC,EAE3B,OAAAP,EAAU,IAAM,CACdW,EAAkB,CACpB,EAAG,CAACA,CAAiB,CAAC,EAEf,CACL,iBAAAH,CACF,CACF,CAEA,IAAOM,EAAQT",
|
|
6
|
+
"names": ["useCallback", "useEffect", "useRef", "useState", "fetcher", "useShopifyContext", "useSubscriptions", "email", "loading", "subscriptionData", "setSubscriptionData", "locale", "fetchSubscription", "response", "error", "useSubscriptions_default"]
|
|
7
7
|
}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{Fragment as I,jsx as i,jsxs as l}from"react/jsx-runtime";import{Button as s,Container as p,Heading as d,Picture as c,Text as u}from"@anker-in/headless-ui";import f from"classnames";import{useCreditsContext as x}from"../context/provider";function C({copy:t}){const{profile:e,openSignInPopup:r,openSignUpPopup:o}=x(),n=e?Object.keys(e).length!==0:!1,m=e?.first_name?e?.first_name+" "+e?.last_name:e?.email?.split("@")[0],a=g=>{g==="primary"?o():r()};return i(I,{children:l("div",{className:" relative w-full",children:[i(c,{className:"aspect-h-[804] aspect-w-[1920] md:aspect-h-[660] md:aspect-w-[390] md-l:aspect-h-[660] md-l:aspect-w-[768]",source:`${t.pcImg?.url}, ${t.laptopImg?.url} 1024, ${t.mobileImg?.url} 768`,alt:t.pcImg?.alt,loading:"eager"}),n&&i("div",{className:"absolute inset-0 ",style:{background:"linear-gradient(180deg, rgba(245, 245, 247, 0) 70.31%, #F5F5F7 100%)"}}),i(p,{className:"l:h-auto !absolute inset-0 mx-auto grid h-full",asChild:!0,children:i("div",{className:"grid grid-cols-12",children:l("div",{className:"l:col-span-12 l:justify-start l:pt-[64px] col-span-5 flex h-full flex-col justify-center text-[#1F2021]",children:[i(d,{as:"h1",size:"5",html:n?t.login.title?.replace("$name",m||""):t.unLogin.title}),i(u,{size:"3",className:"l:mt-[4px] l-xxl:text-[14px] mt-[16px]",html:n?t.login.description:t.unLogin.description}),!n&&l("div",{className:f("mt-[32px] grid w-fit grid-flow-col gap-[12px] l:mt-[24px]",n&&"hidden"),children:[i(s,{variant:"secondary",size:"lg",onClick:()=>{a("primary")},children:t.joinNow}),i(s,{variant:"primary",size:"lg",onClick:()=>{a("secondary")},children:t.loginIn})]})]})})})]})})}export{C as CreditsBanner};
|
|
2
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../../../src/components/credits/creditsBanner/index.tsx"],
|
|
4
|
+
"sourcesContent": ["import { Button, Container, Heading, Picture, Text } from '@anker-in/headless-ui'\nimport classNames from 'classnames'\nimport { useCreditsContext } from '../context/provider'\n\ntype Img = {\n url: string\n alt: string\n}\ntype BannerProps = {\n copy: {\n pcImg: Img\n laptopImg: Img\n mobileImg: Img\n joinNow: string\n loginIn: string\n login: {\n title: string\n description: string\n }\n unLogin: {\n title: string\n description: string\n }\n }\n}\n\nexport function CreditsBanner({ copy }: BannerProps) {\n const { profile, openSignInPopup, openSignUpPopup } = useCreditsContext()\n const isLogin = profile ? Object.keys(profile).length !== 0 : false\n\n const displayName = profile?.first_name\n ? profile?.first_name + ' ' + profile?.last_name\n : profile?.email?.split('@')[0]\n\n const handleButtonClick = (buttonType: 'primary' | 'secondary') => {\n buttonType === 'primary' ? openSignUpPopup() : openSignInPopup()\n }\n\n return (\n <>\n <div className=\" relative w-full\">\n <Picture\n className=\"aspect-h-[804] aspect-w-[1920] md:aspect-h-[660] md:aspect-w-[390] md-l:aspect-h-[660] md-l:aspect-w-[768]\"\n source={`${copy.pcImg?.url}, ${copy.laptopImg?.url} 1024, ${copy.mobileImg?.url} 768`}\n alt={copy.pcImg?.alt}\n loading=\"eager\"\n ></Picture>\n {isLogin && (\n <div\n className=\"absolute inset-0 \"\n style={{\n background: 'linear-gradient(180deg, rgba(245, 245, 247, 0) 70.31%, #F5F5F7 100%)',\n }}\n ></div>\n )}\n\n <Container className=\"l:h-auto !absolute inset-0 mx-auto grid h-full\" asChild>\n <div className=\"grid grid-cols-12\">\n <div className=\"l:col-span-12 l:justify-start l:pt-[64px] col-span-5 flex h-full flex-col justify-center text-[#1F2021]\">\n <Heading\n as=\"h1\"\n size=\"5\"\n html={isLogin ? copy.login.title?.replace('$name', displayName || '') : copy.unLogin.title}\n ></Heading>\n\n <Text\n size=\"3\"\n className=\"l:mt-[4px] l-xxl:text-[14px] mt-[16px]\"\n html={isLogin ? copy.login.description : copy.unLogin.description}\n ></Text>\n\n {!isLogin && (\n <div\n className={classNames(\n 'mt-[32px] grid w-fit grid-flow-col gap-[12px] l:mt-[24px]',\n isLogin && 'hidden'\n )}\n >\n <Button\n variant=\"secondary\"\n size=\"lg\"\n onClick={() => {\n handleButtonClick('primary')\n }}\n >\n {copy.joinNow}\n </Button>\n <Button\n variant=\"primary\"\n size=\"lg\"\n onClick={() => {\n handleButtonClick('secondary')\n }}\n >\n {copy.loginIn}\n </Button>\n </div>\n )}\n </div>\n </div>\n </Container>\n </div>\n </>\n )\n}\n"],
|
|
5
|
+
"mappings": "AAuCI,mBAAAA,EAEI,OAAAC,EA+BQ,QAAAC,MAjCZ,oBAvCJ,OAAS,UAAAC,EAAQ,aAAAC,EAAW,WAAAC,EAAS,WAAAC,EAAS,QAAAC,MAAY,wBAC1D,OAAOC,MAAgB,aACvB,OAAS,qBAAAC,MAAyB,sBAwB3B,SAASC,EAAc,CAAE,KAAAC,CAAK,EAAgB,CACnD,KAAM,CAAE,QAAAC,EAAS,gBAAAC,EAAiB,gBAAAC,CAAgB,EAAIL,EAAkB,EAClEM,EAAUH,EAAU,OAAO,KAAKA,CAAO,EAAE,SAAW,EAAI,GAExDI,EAAcJ,GAAS,WACzBA,GAAS,WAAa,IAAMA,GAAS,UACrCA,GAAS,OAAO,MAAM,GAAG,EAAE,CAAC,EAE1BK,EAAqBC,GAAwC,CACjEA,IAAe,UAAYJ,EAAgB,EAAID,EAAgB,CACjE,EAEA,OACEZ,EAAAD,EAAA,CACE,SAAAE,EAAC,OAAI,UAAU,mBACb,UAAAD,EAACK,EAAA,CACC,UAAU,6GACV,OAAQ,GAAGK,EAAK,OAAO,GAAG,KAAKA,EAAK,WAAW,GAAG,UAAUA,EAAK,WAAW,GAAG,OAC/E,IAAKA,EAAK,OAAO,IACjB,QAAQ,QACT,EACAI,GACCd,EAAC,OACC,UAAU,oBACV,MAAO,CACL,WAAY,sEACd,EACD,EAGHA,EAACG,EAAA,CAAU,UAAU,iDAAiD,QAAO,GAC3E,SAAAH,EAAC,OAAI,UAAU,oBACb,SAAAC,EAAC,OAAI,UAAU,0GACb,UAAAD,EAACI,EAAA,CACC,GAAG,KACH,KAAK,IACL,KAAMU,EAAUJ,EAAK,MAAM,OAAO,QAAQ,QAASK,GAAe,EAAE,EAAIL,EAAK,QAAQ,MACtF,EAEDV,EAACM,EAAA,CACC,KAAK,IACL,UAAU,yCACV,KAAMQ,EAAUJ,EAAK,MAAM,YAAcA,EAAK,QAAQ,YACvD,EAEA,CAACI,GACAb,EAAC,OACC,UAAWM,EACT,4DACAO,GAAW,QACb,EAEA,UAAAd,EAACE,EAAA,CACC,QAAQ,YACR,KAAK,KACL,QAAS,IAAM,CACbc,EAAkB,SAAS,CAC7B,EAEC,SAAAN,EAAK,QACR,EACAV,EAACE,EAAA,CACC,QAAQ,UACR,KAAK,KACL,QAAS,IAAM,CACbc,EAAkB,WAAW,CAC/B,EAEC,SAAAN,EAAK,QACR,GACF,GAEJ,EACF,EACF,GACF,EACF,CAEJ",
|
|
6
|
+
"names": ["Fragment", "jsx", "jsxs", "Button", "Container", "Heading", "Picture", "Text", "classNames", "useCreditsContext", "CreditsBanner", "copy", "profile", "openSignInPopup", "openSignUpPopup", "isLogin", "displayName", "handleButtonClick", "buttonType"]
|
|
7
|
+
}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{jsx as t,jsxs as i}from"react/jsx-runtime";import{Heading as r,Picture as s,Text as a}from"@anker-in/headless-ui";import{cn as p}from"../../../helpers/utils";import x from"./iconInfo";const m=({item:e,handleClick:l,isNoteActive:n,index:d})=>t("div",{className:"relative h-full rounded-[16px] border border-white px-[24px] pb-[26px] pt-[24px] md:min-h-[180px] md:p-[16px]",style:{background:"linear-gradient(119.61deg, #FAFAFA 38.58%, #FFFFFF 63.73%, #F9FCFF 89.37%)"},children:i("div",{className:"flex flex-col",children:[t(s,{className:"mb-[16px] size-[31px] md:absolute md:bottom-[16px] md:right-[16px] md:mb-0",alt:e.icon?.alt,source:e.icon?.url}),i("div",{className:"flex items-center",children:[t(r,{html:e.text,size:"2",className:"break-all"}),e.note&&i("div",{role:"button",tabIndex:0,onKeyDown:o=>{(o.key==="Enter"||o.key===" ")&&o.preventDefault()},className:"relative mb-1 ml-[4px]",onClick:()=>l({item:e,index:d}),children:[t(x,{}),t("div",{className:p("absolute -bottom-[12px] left-[32px] z-10 w-[356px] -translate-x-full translate-y-full md:w-[276px]",n?"block":"hidden"),children:i("div",{className:"relative rounded-[10px] bg-[#6D6D6F] p-[16px] text-[14px] font-medium text-white shadow",children:[t(a,{as:"p",size:"2",html:e.note,className:"desktop:text-[18px]"}),t("div",{className:"absolute -top-[10px] right-[9px] mb-2 size-[16px] origin-top-left rotate-45 transform rounded-[2px] bg-[#6D6D6F]"})]})})]})]}),e.tag&&t(a,{as:"div",html:e.tag,className:"mt-[2px] text-[16px] font-bold text-[#6D6D6F]"})]})});var u=m;export{u as default};
|
|
2
|
+
//# sourceMappingURL=benefitItem.js.map
|