@anker-in/lib 1.1.2-beta.1 → 1.1.2-beta.2
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/.turbo/turbo-build.log +8 -8
- package/.turbo/turbo-test.log +1 -1
- package/dist/cart/context/index.d.ts +3 -1
- package/dist/cart/context/index.d.ts.map +1 -1
- package/dist/cart/hooks/basic/useAddToCart.d.ts +1 -1
- package/dist/cart/hooks/basic/useAddToCart.d.ts.map +1 -1
- package/dist/cart/hooks/feature/useCalcAutoFreeGift.d.ts.map +1 -1
- package/dist/cart/hooks/feature/usePriceDiscount.d.ts +26 -0
- package/dist/cart/hooks/feature/usePriceDiscount.d.ts.map +1 -0
- package/dist/cart/hooks/feature/useScriptAutoFreeGift.d.ts.map +1 -1
- package/dist/cart/hooks/feature/useSyncCartFreeGift.d.ts +17 -0
- package/dist/cart/hooks/feature/useSyncCartFreeGift.d.ts.map +1 -0
- package/dist/cart/hooks/feature/useUpdateLineCodeAmountAttributes.d.ts.map +1 -1
- package/dist/cart/utils/autoFreeGift.d.ts.map +1 -1
- package/dist/cart/utils/index.d.ts +1 -0
- package/dist/cart/utils/index.d.ts.map +1 -1
- package/dist/cjs/cart/hooks/feature/usePriceDiscount.js +2 -0
- package/dist/cjs/cart/hooks/feature/usePriceDiscount.js.map +7 -0
- package/dist/cjs/cart/hooks/feature/useSyncCartFreeGift.js +2 -0
- package/dist/cjs/cart/hooks/feature/useSyncCartFreeGift.js.map +7 -0
- package/dist/cjs/registration/context/index.js +2 -0
- package/dist/cjs/registration/context/index.js.map +7 -0
- package/dist/cjs/shopify/fetchers/get-products-by-handles.d.ts.map +1 -1
- package/dist/cjs/shopify/fetchers/get-products-by-handles.js +1 -1
- package/dist/cjs/shopify/fetchers/get-products-by-handles.js.map +3 -3
- package/dist/cjs/shopify/hooks/useProductsByHandles.d.ts.map +1 -1
- package/dist/cjs/shopify/hooks/useProductsByHandles.js +1 -1
- package/dist/cjs/shopify/hooks/useProductsByHandles.js.map +2 -2
- package/dist/esm/cart/hooks/feature/usePriceDiscount.js +2 -0
- package/dist/esm/cart/hooks/feature/usePriceDiscount.js.map +7 -0
- package/dist/esm/cart/hooks/feature/useSyncCartFreeGift.js +2 -0
- package/dist/esm/cart/hooks/feature/useSyncCartFreeGift.js.map +7 -0
- package/dist/esm/registration/context/index.js +2 -0
- package/dist/esm/registration/context/index.js.map +7 -0
- package/dist/esm/shopify/fetchers/get-products-by-handles.d.ts.map +1 -1
- package/dist/esm/shopify/fetchers/get-products-by-handles.js +1 -1
- package/dist/esm/shopify/fetchers/get-products-by-handles.js.map +3 -3
- package/dist/esm/shopify/hooks/useProductsByHandles.d.ts.map +1 -1
- package/dist/esm/shopify/hooks/useProductsByHandles.js +1 -1
- package/dist/esm/shopify/hooks/useProductsByHandles.js.map +2 -2
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/registration/context/index.d.ts +18 -0
- package/dist/registration/context/index.d.ts.map +1 -0
- package/dist/registration/hooks/useSendEmailValidation.d.ts +2 -7
- package/dist/registration/hooks/useSendEmailValidation.d.ts.map +1 -1
- package/dist/shopify/fetchers/index.d.ts +2 -0
- package/dist/shopify/fetchers/index.d.ts.map +1 -1
- package/dist/utils/classnames.d.ts +1 -1
- package/dist/utils/classnames.d.ts.map +1 -1
- package/dist/utils/index.d.ts +0 -2
- package/dist/utils/index.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/shopify/fetchers/get-products-by-handles.ts +6 -2
- package/src/shopify/hooks/useProductsByHandles.ts +1 -1
- package/dist/cart/track/gtm.d.ts +0 -26
- package/dist/cart/track/gtm.d.ts.map +0 -1
- package/dist/registration/hooks/index.d.ts +0 -4
- package/dist/registration/hooks/index.d.ts.map +0 -1
- package/dist/registration/hooks/useEmailValidation.d.ts +0 -17
- package/dist/registration/hooks/useEmailValidation.d.ts.map +0 -1
- package/dist/registration/hooks/useSubscriptions.d.ts +0 -15
- package/dist/registration/hooks/useSubscriptions.d.ts.map +0 -1
- package/dist/registration/index.d.ts +0 -2
- package/dist/registration/index.d.ts.map +0 -1
- package/dist/utils/track.d.ts +0 -16
- package/dist/utils/track.d.ts.map +0 -1
- package/dist/utils/useCountDown.d.ts +0 -6
- package/dist/utils/useCountDown.d.ts.map +0 -1
package/.turbo/turbo-build.log
CHANGED
|
@@ -1,20 +1,20 @@
|
|
|
1
1
|
|
|
2
|
-
> @anker-in/lib@1.1.1 build /Users/anker/
|
|
2
|
+
> @anker-in/lib@1.1.1 build /Users/anker/Desktop/git/headless-ui/packages/lib
|
|
3
3
|
> pnpm run build:js:esm & pnpm run build:js:cjs & pnpm run build:types:esm & pnpm run build:types:cjs
|
|
4
4
|
|
|
5
5
|
|
|
6
|
-
> @anker-in/lib@1.1.1 build:js:
|
|
7
|
-
> node esbuild-
|
|
6
|
+
> @anker-in/lib@1.1.1 build:js:esm /Users/anker/Desktop/git/headless-ui/packages/lib
|
|
7
|
+
> node esbuild-esm.mjs
|
|
8
8
|
|
|
9
9
|
|
|
10
|
-
> @anker-in/lib@1.1.1 build:types:esm /Users/anker/
|
|
10
|
+
> @anker-in/lib@1.1.1 build:types:esm /Users/anker/Desktop/git/headless-ui/packages/lib
|
|
11
11
|
> tsc --outdir dist/esm
|
|
12
12
|
|
|
13
13
|
|
|
14
|
-
> @anker-in/lib@1.1.1 build:
|
|
15
|
-
>
|
|
14
|
+
> @anker-in/lib@1.1.1 build:types:cjs /Users/anker/Desktop/git/headless-ui/packages/lib
|
|
15
|
+
> tsc --outdir dist/cjs
|
|
16
16
|
|
|
17
17
|
|
|
18
|
-
> @anker-in/lib@1.1.1 build:
|
|
19
|
-
>
|
|
18
|
+
> @anker-in/lib@1.1.1 build:js:cjs /Users/anker/Desktop/git/headless-ui/packages/lib
|
|
19
|
+
> node esbuild-cjs.mjs
|
|
20
20
|
|
package/.turbo/turbo-test.log
CHANGED
|
@@ -20,6 +20,7 @@ type CartContextType = {
|
|
|
20
20
|
key: string;
|
|
21
21
|
}[]) => void;
|
|
22
22
|
setCustomAttributes: (attributes: AttributeInput[]) => void;
|
|
23
|
+
locale: string;
|
|
23
24
|
isCodeChanging: boolean;
|
|
24
25
|
setIsCodeChanging: (isCodeChanging: boolean) => void;
|
|
25
26
|
autoFreeGiftConfig?: AutoFreeGiftConfig;
|
|
@@ -40,8 +41,9 @@ type CartProviderProps = {
|
|
|
40
41
|
gradientGiftsConfig: any;
|
|
41
42
|
profile: any;
|
|
42
43
|
customer: any;
|
|
44
|
+
locale: string;
|
|
43
45
|
};
|
|
44
|
-
export declare const CartProvider: ({ children, autoFreeGiftConfig, gradientGiftsConfig, profile, customer, }: CartProviderProps) => import("react/jsx-runtime").JSX.Element;
|
|
46
|
+
export declare const CartProvider: ({ children, autoFreeGiftConfig, gradientGiftsConfig, profile, customer, locale, }: CartProviderProps) => import("react/jsx-runtime").JSX.Element;
|
|
45
47
|
export declare const useCartContext: () => CartContextType;
|
|
46
48
|
export {};
|
|
47
49
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/cart/context/index.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA+E,MAAM,OAAO,CAAA;AACnG,OAAO,EAAE,IAAI,EAAE,MAAM,0BAA0B,CAAA;AAE/C,OAAO,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAA;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/cart/context/index.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA+E,MAAM,OAAO,CAAA;AACnG,OAAO,EAAE,IAAI,EAAE,MAAM,0BAA0B,CAAA;AAE/C,OAAO,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAA;AAQhG,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAA;AAGlD,OAA8B,EAAE,2BAA2B,EAAE,MAAM,wCAAwC,CAAA;AAQ3G,MAAM,MAAM,YAAY,GAAG;IACzB,uBAAuB,EAAE,OAAO,CAAA;IAChC,yBAAyB,EAAE,OAAO,CAAA;IAClC,uBAAuB,EAAE,OAAO,CAAA;IAChC,gBAAgB,EAAE,OAAO,CAAA;CAC1B,CAAA;AAED,KAAK,eAAe,GAAG;IACrB,IAAI,EAAE,IAAI,GAAG,SAAS,CAAA;IACtB,aAAa,EAAE,OAAO,CAAA;IACtB,UAAU,EAAE,CAAC,IAAI,EAAE,IAAI,GAAG,SAAS,KAAK,IAAI,CAAA;IAC5C,YAAY,EAAE,MAAM,IAAI,CAAA;IACxB,sBAAsB,CAAC,EAAE,kBAAkB,GAAG,SAAS,CAAA;IACvD,mBAAmB,EAAE,CAAC,UAAU,EAAE,cAAc,EAAE,KAAK,IAAI,CAAA;IAC3D,sBAAsB,EAAE,CAAC,UAAU,EAAE;QAAE,GAAG,EAAE,MAAM,CAAA;KAAE,EAAE,KAAK,IAAI,CAAA;IAC/D,mBAAmB,EAAE,CAAC,UAAU,EAAE,cAAc,EAAE,KAAK,IAAI,CAAA;IAC3D,MAAM,EAAE,MAAM,CAAA;IACd,cAAc,EAAE,OAAO,CAAA;IACvB,iBAAiB,EAAE,CAAC,cAAc,EAAE,OAAO,KAAK,IAAI,CAAA;IACpD,kBAAkB,CAAC,EAAE,kBAAkB,CAAA;IACvC,eAAe,EAAE,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,cAAc,CAAC,YAAY,CAAC,CAAC,CAAA;IACnE,YAAY,EAAE,YAAY,CAAA;IAC1B,wBAAwB,CAAC,EAAE,2BAA2B,CAAA;IACtD,kBAAkB,CAAC,EAAE,gBAAgB,CAAA;IACrC,0BAA0B,CAAC,EAAE,kBAAkB,CAAA;IAC/C,oBAAoB,CAAC,EAAE,gBAAgB,CAAA;IACvC,uBAAuB,EAAE,CAAC,oBAAoB,EAAE,gBAAgB,KAAK,IAAI,CAAA;IACzE,qBAAqB,EAAE,CAAC,kBAAkB,EAAE,gBAAgB,KAAK,IAAI,CAAA;IACrE,sBAAsB,EAAE,gBAAgB,CAAA;CACzC,CAAA;AA8BD,eAAO,MAAM,WAAW,gCAA+C,CAAA;AAEvE,KAAK,iBAAiB,GAAG;IACvB,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAA;IACzB,kBAAkB,CAAC,EAAE,kBAAkB,CAAA;IACvC,mBAAmB,EAAE,GAAG,CAAA;IACxB,OAAO,EAAE,GAAG,CAAA;IACZ,QAAQ,EAAE,GAAG,CAAA;IACb,MAAM,EAAE,MAAM,CAAA;CACf,CAAA;AAED,eAAO,MAAM,YAAY,GAAI,mFAO1B,iBAAiB,4CAsNnB,CAAA;AAED,eAAO,MAAM,cAAc,uBAAgC,CAAA"}
|
|
@@ -16,7 +16,7 @@ export type AddToCartArgs = {
|
|
|
16
16
|
discountCodes?: string[];
|
|
17
17
|
customAttributes?: Attributes;
|
|
18
18
|
buyerIdentity?: CartBuyerIdentityInput;
|
|
19
|
-
gtmParams?:
|
|
19
|
+
gtmParams?: GtmParams;
|
|
20
20
|
needCreateCart?: boolean;
|
|
21
21
|
onCodesInvalid?: (updatedCart: Cart, invalidCodes: string[]) => Promise<Cart | undefined>;
|
|
22
22
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useAddToCart.d.ts","sourceRoot":"","sources":["../../../../src/cart/hooks/basic/useAddToCart.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAA;AACnD,OAAO,EAAE,sBAAsB,EAAE,MAAM,sBAAsB,CAAA;AAE7D,OAAuB,EAAE,wBAAwB,EAAE,MAAM,cAAc,CAAA;AACvE,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA;
|
|
1
|
+
{"version":3,"file":"useAddToCart.d.ts","sourceRoot":"","sources":["../../../../src/cart/hooks/basic/useAddToCart.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAA;AACnD,OAAO,EAAE,sBAAsB,EAAE,MAAM,sBAAsB,CAAA;AAE7D,OAAuB,EAAE,wBAAwB,EAAE,MAAM,cAAc,CAAA;AACvE,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA;AAMvC,KAAK,iBAAiB,GAAG;IACvB,OAAO,CAAC,EAAE;QAAE,EAAE,EAAE,MAAM,CAAA;KAAE,CAAA;IACxB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,UAAU,CAAC,EAAE,UAAU,CAAA;CACxB,CAAA;AAED,MAAM,MAAM,aAAa,GAAG;IAC1B,SAAS,EAAE,iBAAiB,EAAE,CAAA;IAC9B,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,aAAa,CAAC,EAAE,MAAM,EAAE,CAAA;IACxB,gBAAgB,CAAC,EAAE,UAAU,CAAA;IAC7B,aAAa,CAAC,EAAE,sBAAsB,CAAA;IACtC,SAAS,CAAC,EAAE,SAAS,CAAA;IACrB,cAAc,CAAC,EAAE,OAAO,CAAA;IACxB,cAAc,CAAC,EAAE,CAAC,WAAW,EAAE,IAAI,EAAE,YAAY,EAAE,MAAM,EAAE,KAAK,OAAO,CAAC,IAAI,GAAG,SAAS,CAAC,CAAA;CAC1F,CAAA;AAED,KAAK,iBAAiB,GAAG;IACvB,SAAS,CAAC,EAAE,OAAO,CAAA;CACpB,CAAA;AAED,eAAO,MAAM,YAAY,GACvB,gBAAsB,iBAAsB,EAC5C,aAAY,wBAAwB,CAAC,IAAI,GAAG,SAAS,EAAE,KAAK,EAAE,MAAM,EAAE,aAAa,CAAC,GAAG;IACrF,YAAY,CAAC,EAAE,OAAO,CAAA;CACW,sGA0HpC,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useCalcAutoFreeGift.d.ts","sourceRoot":"","sources":["../../../../src/cart/hooks/feature/useCalcAutoFreeGift.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,kBAAkB,EAAgC,kBAAkB,EAAE,MAAM,0BAA0B,CAAA;
|
|
1
|
+
{"version":3,"file":"useCalcAutoFreeGift.d.ts","sourceRoot":"","sources":["../../../../src/cart/hooks/feature/useCalcAutoFreeGift.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,kBAAkB,EAAgC,kBAAkB,EAAE,MAAM,0BAA0B,CAAA;AAQ/G;;;;;;GAMG;AACH,eAAO,MAAM,mBAAmB,GAC9B,MAAM,GAAG,EACT,oBAAoB,kBAAkB,EACtC,UAAU,GAAG,KACZ,kBA4JF,CAAA"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { Product, ProductVariant } from '../../../shopify/types';
|
|
2
|
+
/**
|
|
3
|
+
* [纯计算型 Hook]
|
|
4
|
+
* 计算单个商品在直降活动下的最终价格,不产生任何副作用
|
|
5
|
+
* @param product - 商品对象
|
|
6
|
+
* @param variant - 选中的商品变体
|
|
7
|
+
*/
|
|
8
|
+
export declare const useCalcPriceDiscount: ({ product, variant, functionPriceConfigs, }: {
|
|
9
|
+
product?: Product;
|
|
10
|
+
variant?: ProductVariant;
|
|
11
|
+
functionPriceConfigs: any[];
|
|
12
|
+
}) => {
|
|
13
|
+
price: string;
|
|
14
|
+
priceWithCurrency: string;
|
|
15
|
+
discount: string;
|
|
16
|
+
discountWithCurrency: string;
|
|
17
|
+
appliedConfig: any;
|
|
18
|
+
} | null;
|
|
19
|
+
/**
|
|
20
|
+
* [配置提供型 Hook]
|
|
21
|
+
* 提供一个优化的函数,用于根据商品信息快速查找其对应的价格活动配置。
|
|
22
|
+
*/
|
|
23
|
+
export declare const usePriceConfig: (functionPriceConfigs: any) => {
|
|
24
|
+
getConfigForProduct: (handle: string, sku: string) => any | undefined;
|
|
25
|
+
};
|
|
26
|
+
//# sourceMappingURL=usePriceDiscount.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"usePriceDiscount.d.ts","sourceRoot":"","sources":["../../../../src/cart/hooks/feature/usePriceDiscount.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAA;AAkBhE;;;;;GAKG;AACH,eAAO,MAAM,oBAAoB,GAAI,6CAIlC;IACD,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,OAAO,CAAC,EAAE,cAAc,CAAA;IACxB,oBAAoB,EAAE,GAAG,EAAE,CAAA;CAC5B;;;;;;QA6EA,CAAA;AAED;;;GAGG;AACH,eAAO,MAAM,cAAc,GAAI,sBAAsB,GAAG;kCA6B3C,MAAM,OAAO,MAAM,KAAG,GAAG,GAAG,SAAS;CAajD,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useScriptAutoFreeGift.d.ts","sourceRoot":"","sources":["../../../../src/cart/hooks/feature/useScriptAutoFreeGift.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"useScriptAutoFreeGift.d.ts","sourceRoot":"","sources":["../../../../src/cart/hooks/feature/useScriptAutoFreeGift.tsx"],"names":[],"mappings":"AAKA,OAAO,OAAO,MAAM,YAAY,CAAA;AAGhC,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,6BAA6B,CAAA;AAI5D,OAAO,EAAE,OAAO,EAAE,MAAM,wBAAwB,CAAA;AAchD,UAAU,eAAe;IACvB,MAAM,EAAE,MAAM,CAAA;IACd,GAAG,EAAE,MAAM,CAAA;CACZ;AAED,UAAU,UAAU;IAClB,UAAU,EAAE,MAAM,CAAA;IAClB,gBAAgB,EAAE,eAAe,EAAE,CAAA;CACpC;AAED,UAAU,QAAQ;IAChB,sBAAsB,CAAC,EAAE,MAAM,CAAA;IAC/B,gBAAgB,CAAC,EAAE,MAAM,CAAA;IACzB,WAAW,CAAC,EAAE,KAAK,CAAC;QAClB,UAAU,EAAE,MAAM,CAAA;QAClB,gBAAgB,EAAE,eAAe,EAAE,CAAA;KACpC,CAAC,CAAA;IACF,WAAW,CAAC,EAAE,MAAM,EAAE,CAAA;IACtB,cAAc,CAAC,EAAE,OAAO,CAAA;CACzB;AAOD,MAAM,WAAW,2BAA2B;IAC1C,aAAa,EAAE,QAAQ,EAAE,CAAA;IACzB,OAAO,EAAE,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,QAAQ,KAAK,MAAM,CAAA;IAC7C,iBAAiB,EAAE,OAAO,CAAA;IAC1B,iBAAiB,EAAE,UAAU,GAAG,IAAI,CAAA;IACpC,aAAa,EAAE,UAAU,GAAG,IAAI,CAAA;IAChC,gBAAgB,EAAE,OAAO,CAAA;IACzB,kBAAkB,CAAC,EAAE,OAAO,EAAE,CAAA;CAC/B;AAGD,QAAA,MAAM,qBAAqB,GAAI,gCAI5B;IACD,QAAQ,EAAE,QAAQ,GAAG,IAAI,CAAA;IACzB,SAAS,EAAE,MAAM,CAAA;IACjB,IAAI,EAAE,IAAI,GAAG,SAAS,CAAA;CACvB,KAAG,2BA+UH,CAAA;AAED,eAAe,qBAAqB,CAAA"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { AutoFreeGiftConfig } from '../../types/autoFreeGift';
|
|
2
|
+
import { Cart } from '../../../shopify/types/cart';
|
|
3
|
+
import { LoadingState } from '../../context';
|
|
4
|
+
/**
|
|
5
|
+
* [副作用型 Hook]
|
|
6
|
+
* 负责同步购物车,确保购物车中的赠品与计算结果一致。
|
|
7
|
+
* 自动添加应得的赠品,移除不符的赠品,并更新主商品属性。
|
|
8
|
+
* 这个hook本身不返回任何东西,它的职责是"同步"
|
|
9
|
+
*/
|
|
10
|
+
export declare const useSyncCartFreeGift: ({ cart, autoFreeGiftConfig, isCartLoading, setCart, loadingState, }: {
|
|
11
|
+
cart: Cart | undefined;
|
|
12
|
+
autoFreeGiftConfig: AutoFreeGiftConfig;
|
|
13
|
+
isCartLoading: boolean;
|
|
14
|
+
setCart: (cart: Cart) => void;
|
|
15
|
+
loadingState: LoadingState;
|
|
16
|
+
}) => void;
|
|
17
|
+
//# sourceMappingURL=useSyncCartFreeGift.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useSyncCartFreeGift.d.ts","sourceRoot":"","sources":["../../../../src/cart/hooks/feature/useSyncCartFreeGift.tsx"],"names":[],"mappings":"AAOA,OAAO,EACL,kBAAkB,EAEnB,MAAM,0BAA0B,CAAA;AAEjC,OAAO,EAAE,IAAI,EAAY,MAAM,6BAA6B,CAAA;AAE5D,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAA;AAE5C;;;;;GAKG;AACH,eAAO,MAAM,mBAAmB,GAAI,qEAMjC;IACD,IAAI,EAAE,IAAI,GAAG,SAAS,CAAA;IACtB,kBAAkB,EAAE,kBAAkB,CAAA;IACtC,aAAa,EAAE,OAAO,CAAA;IACtB,OAAO,EAAE,CAAC,IAAI,EAAE,IAAI,KAAK,IAAI,CAAA;IAC7B,YAAY,EAAE,YAAY,CAAA;CAC3B,SA+RA,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useUpdateLineCodeAmountAttributes.d.ts","sourceRoot":"","sources":["../../../../src/cart/hooks/feature/useUpdateLineCodeAmountAttributes.tsx"],"names":[],"mappings":"AAQA,OAAO,EAAE,IAAI,EAAE,MAAM,6BAA6B,CAAA;
|
|
1
|
+
{"version":3,"file":"useUpdateLineCodeAmountAttributes.d.ts","sourceRoot":"","sources":["../../../../src/cart/hooks/feature/useUpdateLineCodeAmountAttributes.tsx"],"names":[],"mappings":"AAQA,OAAO,EAAE,IAAI,EAAE,MAAM,6BAA6B,CAAA;AAGlD,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAA;AAK5C,eAAO,MAAM,iCAAiC,GAAI,uDAK/C;IACD,IAAI,CAAC,EAAE,IAAI,CAAA;IACX,UAAU,EAAE,CAAC,IAAI,EAAE,IAAI,KAAK,IAAI,CAAA;IAChC,aAAa,EAAE,OAAO,CAAA;IACtB,eAAe,EAAE,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,cAAc,CAAC,YAAY,CAAC,CAAC,CAAA;CACpE,SA+JA,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"autoFreeGift.d.ts","sourceRoot":"","sources":["../../../src/cart/utils/autoFreeGift.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,uBAAuB,EAAkB,aAAa,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAA;AAG7G,OAAO,EAAE,2BAA2B,EAAE,MAAM,wCAAwC,CAAA;AAGpF,OAAO,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAA;
|
|
1
|
+
{"version":3,"file":"autoFreeGift.d.ts","sourceRoot":"","sources":["../../../src/cart/utils/autoFreeGift.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,uBAAuB,EAAkB,aAAa,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAA;AAG7G,OAAO,EAAE,2BAA2B,EAAE,MAAM,wCAAwC,CAAA;AAGpF,OAAO,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAA;AAa7C,eAAO,MAAM,6BAA6B,GACxC,UAAU,GAAG,EACb,cAAc,uBAAuB,CAAC,iBAAiB,CAAC,EACxD,cAAc,uBAAuB,QAsBtC,CAAA;AAED,eAAO,MAAM,4BAA4B,GAEvC,aAAY;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,EAAO,QAMlD,CAAA;AAED,eAAO,MAAM,aAAa,GAAI,KAAK,MAAM,QAMxC,CAAA;AAgCD,wBAAgB,QAAQ,CAAC,eAAe,EAAE,aAAa,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,iBAAiB,EAAE,MAAM,EAAE,GAAG,OAAO,CAoBnH;AAQD,eAAO,MAAM,wBAAwB,GAAI,uDAItC;IACD,wBAAwB,EAAE,2BAA2B,CAAA;IACrD,cAAc,EAAE,GAAG,CAAA;IACnB,MAAM,EAAE,MAAM,CAAA;CACf,UAgGA,CAAA;AAQD,eAAO,MAAM,0BAA0B,GAAI,iDAIxC;IACD,MAAM,EAAE,MAAM,CAAA;IACd,cAAc,CAAC,EAAE,aAAa,GAAG,IAAI,CAAA;IACrC,kBAAkB,CAAC,EAAE,OAAO,EAAE,GAAG,EAAE,CAAA;CACpC,UAgEA,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/cart/utils/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAA;AAE1C,eAAO,MAAM,iBAAiB,GAAI,eAAe,UAAU,EAAE,eAAe,UAAU,YAmBrF,CAAA"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/cart/utils/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAA;AAE1C,eAAO,MAAM,iBAAiB,GAAI,eAAe,UAAU,EAAE,eAAe,UAAU,YAmBrF,CAAA;AAED,eAAO,MAAM,QAAQ,QAAO,MAAM,CAAC,MAAM,EAAE,MAAM,CAWhD,CAAA"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";var g=Object.defineProperty;var m=Object.getOwnPropertyDescriptor;var E=Object.getOwnPropertyNames;var I=Object.prototype.hasOwnProperty;var M=(n,e)=>{for(var c in e)g(n,c,{get:e[c],enumerable:!0})},T=(n,e,c,t)=>{if(e&&typeof e=="object"||typeof e=="function")for(let r of E(e))!I.call(n,r)&&r!==c&&g(n,r,{get:()=>e[r],enumerable:!(t=m(e,r))||t.enumerable});return n};var h=n=>T(g({},"__esModule",{value:!0}),n);var D={};M(D,{useCalcPriceDiscount:()=>N,usePriceConfig:()=>P});module.exports=h(D);var l=require("react"),y=require("next/router"),o=require("../../types/priceDiscount");const C=({amount:n,currencyCode:e,locale:c})=>new Intl.NumberFormat(c,{style:"currency",currency:e}).format(n),N=({product:n,variant:e,functionPriceConfigs:c})=>{const{getConfigForProduct:t}=P(c),{locale:r=""}=(0,y.useRouter)();return(0,l.useMemo)(()=>{if(!n?.handle||!e?.sku)return null;const i=t(n.handle,e.sku);if(!i)return null;const{price_conf:u}=i.result_detail||{},{discount_type:d,discount_base:f,discount_amount:p,price_ending_conf:F}=u||{},a=e?.price||n?.price?.value||0;let s=0;f===o.BasePriceType.MIN_DISCOUNTED_PRICE&&d===o.DiscountType.PERCENTAGE?s=a*(1-(p||0)/100):f===o.BasePriceType.MIN_DISCOUNTED_PRICE&&d===o.DiscountType.FIXED_AMOUNT?s=a-p:f===o.BasePriceType.MIN_TOTAL_PRICE&&d===o.DiscountType.PERCENTAGE?s=a*(1-(p||0)/100):f===o.BasePriceType.MIN_TOTAL_PRICE&&d===o.DiscountType.FIXED_AMOUNT&&(s=a-p);const _=a-s;return{price:s.toFixed(2),priceWithCurrency:C({locale:r,amount:s||0,currencyCode:"USD"}),discount:_.toFixed(2),discountWithCurrency:C({locale:r,amount:_||0,currencyCode:"USD"}),appliedConfig:i}},[n,e,t,r])},P=n=>{const e=(0,l.useMemo)(()=>{const t=new Map;return n.forEach(r=>{const{main_product:i}=r.result_detail||{};i?.all_store_variant&&(t.has("*")||t.set("*",new Map),t.get("*")?.set("*",r)),i?.variant_list?.forEach(u=>{t.has(u.handle)||t.set(u.handle,new Map),t.get(u.handle)?.set(u.sku,r)})}),t},[n]);return{getConfigForProduct:(0,l.useCallback)((t,r)=>{const i=e.get(t)?.get(r);return i||e.get("*")?.get("*")},[e])}};
|
|
2
|
+
//# sourceMappingURL=usePriceDiscount.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../../../src/cart/hooks/feature/usePriceDiscount.tsx"],
|
|
4
|
+
"sourcesContent": ["import { useMemo, useCallback } from 'react'\nimport { useRouter } from 'next/router'\nimport { Product, ProductVariant } from '../../../shopify/types'\n// import variantGetCoupon from '@components/variantGetCoupon'\n// import getCouponInfo from '@components/product/ProductView/getCouponInfo';\n// import { formatPrice } from '@commerce/product/use-price'\nimport { BasePriceType, DiscountType } from '../../types/priceDiscount'\n\n// Temporary formatPrice function - replace with actual implementation\nconst formatPrice = ({ amount, currencyCode, locale }: { amount: number; currencyCode: string; locale: string }) => {\n return new Intl.NumberFormat(locale, {\n style: 'currency',\n currency: currencyCode,\n }).format(amount)\n}\n\n// todo\uFF1A\u8FD8\u6CA1\u505A\u5B8C,\u53EA\u6709\u5927\u81F4\u7684\u529F\u80FD\u6CA1\u6709\u9A8C\u8BC1\u3002\n// \u8FD8\u9700\u8981\u5728\u76F4\u964D\u7684\u65F6\u5019\u7ED9\u5546\u54C1\u6253discount_code\uFF0C\u7528\u4E8E\u5B9E\u73B0\u76F4\u964D\u6548\u679C\u3002\n// \u770B\u662F\u5728listing\u6216\u6D3B\u52A8\u9875\u9762\u6253\u8FD8\u662F\u5728\u8D2D\u7269\u8F66\u8BA1\u7B97\u6253\u4E0A\u3002\n\n/**\n * [\u7EAF\u8BA1\u7B97\u578B Hook]\n * \u8BA1\u7B97\u5355\u4E2A\u5546\u54C1\u5728\u76F4\u964D\u6D3B\u52A8\u4E0B\u7684\u6700\u7EC8\u4EF7\u683C\uFF0C\u4E0D\u4EA7\u751F\u4EFB\u4F55\u526F\u4F5C\u7528\n * @param product - \u5546\u54C1\u5BF9\u8C61\n * @param variant - \u9009\u4E2D\u7684\u5546\u54C1\u53D8\u4F53\n */\nexport const useCalcPriceDiscount = ({\n product,\n variant,\n functionPriceConfigs,\n}: {\n product?: Product\n variant?: ProductVariant\n functionPriceConfigs: any[]\n}) => {\n const { getConfigForProduct } = usePriceConfig(functionPriceConfigs)\n const { locale = '' } = useRouter()\n\n return useMemo(() => {\n if (!product?.handle || !variant?.sku) return null\n\n const config = getConfigForProduct(product.handle, variant.sku)\n if (!config) return null\n\n // const coupon = variantGetCoupon({\n // coupons: product?.coupons,\n // variant,\n // product,\n // handle: product?.handle,\n // channel: 'web',\n // });\n // console.log('coupon', coupon)\n // const { discountPriceWithOutSymbol } = getCouponInfo({\n // product, coupon, variant, isDigits: false, locale,\n // });\n\n const { price_conf } = config.result_detail || {}\n const { discount_type, discount_base, discount_amount, price_ending_conf } =\n price_conf || {}\n\n // ... \u6B64\u5904\u662F\u539F `funcPrice` \u5185\u90E8\u7684\u6240\u6709\u4EF7\u683C\u8BA1\u7B97\u903B\u8F91\uFF0C\u5B8C\u5168\u4FDD\u6301\u4E0D\u53D8 ...\n // let price = 0; ...\n // ...\n const originPrice = variant?.price || (product?.price as any)?.value || 0\n // ... \u5B8C\u6574\u7684 switch-case \u903B\u8F91 ...\n\n let price = 0\n // ... (\u6B64\u5904\u7701\u7565\u4E86\u60A8\u63D0\u4F9B\u7684\u5B8C\u6574\u4EF7\u683C\u8BA1\u7B97\u903B\u8F91\uFF0C\u76F4\u63A5\u590D\u5236\u7C98\u8D34\u5373\u53EF)\n // \u793A\u4F8B\uFF1A\n if (\n discount_base === BasePriceType.MIN_DISCOUNTED_PRICE &&\n discount_type === DiscountType.PERCENTAGE\n ) {\n price = originPrice * (1 - (discount_amount || 0) / 100)\n } else if (\n discount_base === BasePriceType.MIN_DISCOUNTED_PRICE &&\n discount_type === DiscountType.FIXED_AMOUNT\n ) {\n price = originPrice - discount_amount\n } else if (\n discount_base === BasePriceType.MIN_TOTAL_PRICE &&\n discount_type === DiscountType.PERCENTAGE\n ) {\n price = originPrice * (1 - (discount_amount || 0) / 100)\n } else if (\n discount_base === BasePriceType.MIN_TOTAL_PRICE &&\n discount_type === DiscountType.FIXED_AMOUNT\n ) {\n price = originPrice - discount_amount\n }\n\n // ... \u6B64\u5904\u662F\u4EF7\u683C\u5C3E\u6570\u5904\u7406\u548C\u56DB\u820D\u4E94\u5165\u7684\u903B\u8F91 ...\n\n const discount = originPrice - price\n\n return {\n price: price.toFixed(2),\n priceWithCurrency: formatPrice({\n locale,\n amount: price || 0,\n currencyCode: 'USD',\n }),\n discount: discount.toFixed(2),\n discountWithCurrency: formatPrice({\n locale,\n amount: discount || 0,\n currencyCode: 'USD',\n }),\n appliedConfig: config, // (\u53EF\u9009) \u8FD4\u56DE\u5E94\u7528\u7684\u914D\u7F6E\uFF0C\u65B9\u4FBF\u8C03\u8BD5\n }\n }, [product, variant, getConfigForProduct, locale])\n}\n\n/**\n * [\u914D\u7F6E\u63D0\u4F9B\u578B Hook]\n * \u63D0\u4F9B\u4E00\u4E2A\u4F18\u5316\u7684\u51FD\u6570\uFF0C\u7528\u4E8E\u6839\u636E\u5546\u54C1\u4FE1\u606F\u5FEB\u901F\u67E5\u627E\u5176\u5BF9\u5E94\u7684\u4EF7\u683C\u6D3B\u52A8\u914D\u7F6E\u3002\n */\nexport const usePriceConfig = (functionPriceConfigs: any) => {\n const configMap = useMemo(() => {\n const map = new Map<string, Map<string, any>>()\n\n functionPriceConfigs.forEach((config: any) => {\n const { main_product } = config.result_detail || {}\n\n // \u5904\u7406 all_store_variant \u7684\u60C5\u51B5\uFF0C\u53EF\u4EE5\u8BBE\u7F6E\u4E00\u4E2A\u7279\u6B8A key\n if (main_product?.all_store_variant) {\n if (!map.has('*')) map.set('*', new Map())\n map.get('*')?.set('*', config)\n }\n\n main_product?.variant_list?.forEach((item: any) => {\n if (!map.has(item.handle)) {\n map.set(item.handle, new Map())\n }\n map.get(item.handle)?.set(item.sku, config)\n })\n })\n\n return map\n }, [functionPriceConfigs])\n\n /**\n * \u6839\u636E handle \u548C sku \u83B7\u53D6\u914D\u7F6E\u3002\n * O(1) \u7EA7\u522B\u7684\u67E5\u627E\uFF0C\u6027\u80FD\u6781\u9AD8\u3002\n */\n const getConfigForProduct = useCallback(\n (handle: string, sku: string): any | undefined => {\n // \u4F18\u5148\u5339\u914D\u7CBE\u786E\u7684 handle \u548C sku\n const specificConfig = configMap.get(handle)?.get(sku)\n if (specificConfig) {\n return specificConfig\n }\n // \u5982\u679C\u6CA1\u6709\u7CBE\u786E\u5339\u914D\uFF0C\u5219\u67E5\u627E\u9002\u7528\u4E8E\u5168\u5E97\u7684\u914D\u7F6E\n return configMap.get('*')?.get('*')\n },\n [configMap]\n )\n\n return { getConfigForProduct }\n}\n"],
|
|
5
|
+
"mappings": "yaAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,0BAAAE,EAAA,mBAAAC,IAAA,eAAAC,EAAAJ,GAAA,IAAAK,EAAqC,iBACrCC,EAA0B,uBAK1BC,EAA4C,qCAG5C,MAAMC,EAAc,CAAC,CAAE,OAAAC,EAAQ,aAAAC,EAAc,OAAAC,CAAO,IAC3C,IAAI,KAAK,aAAaA,EAAQ,CACnC,MAAO,WACP,SAAUD,CACZ,CAAC,EAAE,OAAOD,CAAM,EAaLP,EAAuB,CAAC,CACnC,QAAAU,EACA,QAAAC,EACA,qBAAAC,CACF,IAIM,CACJ,KAAM,CAAE,oBAAAC,CAAoB,EAAIZ,EAAeW,CAAoB,EAC7D,CAAE,OAAAH,EAAS,EAAG,KAAI,aAAU,EAElC,SAAO,WAAQ,IAAM,CACnB,GAAI,CAACC,GAAS,QAAU,CAACC,GAAS,IAAK,OAAO,KAE9C,MAAMG,EAASD,EAAoBH,EAAQ,OAAQC,EAAQ,GAAG,EAC9D,GAAI,CAACG,EAAQ,OAAO,KAcpB,KAAM,CAAE,WAAAC,CAAW,EAAID,EAAO,eAAiB,CAAC,EAC1C,CAAE,cAAAE,EAAe,cAAAC,EAAe,gBAAAC,EAAiB,kBAAAC,CAAkB,EACvEJ,GAAc,CAAC,EAKXK,EAAcT,GAAS,OAAUD,GAAS,OAAe,OAAS,EAGxE,IAAIW,EAAQ,EAIVJ,IAAkB,gBAAc,sBAChCD,IAAkB,eAAa,WAE/BK,EAAQD,GAAe,GAAKF,GAAmB,GAAK,KAEpDD,IAAkB,gBAAc,sBAChCD,IAAkB,eAAa,aAE/BK,EAAQD,EAAcF,EAEtBD,IAAkB,gBAAc,iBAChCD,IAAkB,eAAa,WAE/BK,EAAQD,GAAe,GAAKF,GAAmB,GAAK,KAEpDD,IAAkB,gBAAc,iBAChCD,IAAkB,eAAa,eAE/BK,EAAQD,EAAcF,GAKxB,MAAMI,EAAWF,EAAcC,EAE/B,MAAO,CACL,MAAOA,EAAM,QAAQ,CAAC,EACtB,kBAAmBf,EAAY,CAC7B,OAAAG,EACA,OAAQY,GAAS,EACjB,aAAc,KAChB,CAAC,EACD,SAAUC,EAAS,QAAQ,CAAC,EAC5B,qBAAsBhB,EAAY,CAChC,OAAAG,EACA,OAAQa,GAAY,EACpB,aAAc,KAChB,CAAC,EACD,cAAeR,CACjB,CACF,EAAG,CAACJ,EAASC,EAASE,EAAqBJ,CAAM,CAAC,CACpD,EAMaR,EAAkBW,GAA8B,CAC3D,MAAMW,KAAY,WAAQ,IAAM,CAC9B,MAAMC,EAAM,IAAI,IAEhB,OAAAZ,EAAqB,QAASE,GAAgB,CAC5C,KAAM,CAAE,aAAAW,CAAa,EAAIX,EAAO,eAAiB,CAAC,EAG9CW,GAAc,oBACXD,EAAI,IAAI,GAAG,GAAGA,EAAI,IAAI,IAAK,IAAI,GAAK,EACzCA,EAAI,IAAI,GAAG,GAAG,IAAI,IAAKV,CAAM,GAG/BW,GAAc,cAAc,QAASC,GAAc,CAC5CF,EAAI,IAAIE,EAAK,MAAM,GACtBF,EAAI,IAAIE,EAAK,OAAQ,IAAI,GAAK,EAEhCF,EAAI,IAAIE,EAAK,MAAM,GAAG,IAAIA,EAAK,IAAKZ,CAAM,CAC5C,CAAC,CACH,CAAC,EAEMU,CACT,EAAG,CAACZ,CAAoB,CAAC,EAmBzB,MAAO,CAAE,uBAbmB,eAC1B,CAACe,EAAgBC,IAAiC,CAEhD,MAAMC,EAAiBN,EAAU,IAAII,CAAM,GAAG,IAAIC,CAAG,EACrD,OAAIC,GAIGN,EAAU,IAAI,GAAG,GAAG,IAAI,GAAG,CACpC,EACA,CAACA,CAAS,CACZ,CAE6B,CAC/B",
|
|
6
|
+
"names": ["usePriceDiscount_exports", "__export", "useCalcPriceDiscount", "usePriceConfig", "__toCommonJS", "import_react", "import_router", "import_priceDiscount", "formatPrice", "amount", "currencyCode", "locale", "product", "variant", "functionPriceConfigs", "getConfigForProduct", "config", "price_conf", "discount_type", "discount_base", "discount_amount", "price_ending_conf", "originPrice", "price", "discount", "configMap", "map", "main_product", "item", "handle", "sku", "specificConfig"]
|
|
7
|
+
}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";var v=Object.defineProperty;var x=Object.getOwnPropertyDescriptor;var J=Object.getOwnPropertyNames;var K=Object.prototype.hasOwnProperty;var Q=(e,o)=>{for(var l in o)v(e,l,{get:o[l],enumerable:!0})},Y=(e,o,l,f)=>{if(o&&typeof o=="object"||typeof o=="function")for(let u of J(o))!K.call(e,u)&&u!==l&&v(e,u,{get:()=>o[u],enumerable:!(f=x(o,u))||f.enumerable});return e};var j=e=>Y(v({},"__esModule",{value:!0}),e);var H={};Q(H,{useSyncCartFreeGift:()=>z});module.exports=j(H);var b=require("react"),w=require("../basic/useAddToCart"),E=require("../basic/useRemoveCartLines"),P=require("../basic/useUpdateCartLines"),F=require("./useCalcAutoFreeGift"),m=require("../../utils/autoFreeGift"),S=require("../../../shopify/utils/const"),V=require("../../../shopify/utils/helper"),D=require("ahooks");const z=({cart:e,autoFreeGiftConfig:o,isCartLoading:l,setCart:f,loadingState:u})=>{const h=e&&e.id&&e.lineItems,{qualifyingGift:d,activeCampaign:p,isLoading:G}=(0,F.useCalcAutoFreeGift)(e,o,void 0),{trigger:T,isMutating:L}=(0,w.useAddToCart)(),{trigger:A,isMutating:R}=(0,E.useRemoveCartLines)(),{trigger:M,isMutating:U}=(0,P.useUpdateCartLines)(),y=(0,b.useRef)({qualifyingGiftId:"",subtotal:-1,cartId:""}),k=(0,b.useCallback)(async(s,_)=>{try{console.log("updateMainProductAttributes time",s);const a=new Map;s.lineItems.forEach(t=>{const{is_gift:i}=(0,m.getDiscountEnvAttributeValue)(t.customAttributes),r=i?0:Number(t.totalAmount),c=a.get(t.variant?.sku)??0;a.set(t.variant?.sku,c+r)});const I=s.lineItems.filter(t=>{const i=(0,m.getDiscountEnvAttributeValue)(t?.customAttributes);return!i.is_gift&&_.variant_list.some(c=>c.variant_id===(0,V.atobID)(t.variantId))&&i.discounted_amount!==a.get(t.variant?.sku)}).map(t=>{const i=(0,m.getDiscountEnvAttributeValue)(t?.customAttributes);return{id:t.id,attributes:[...t.customAttributes.filter(r=>r.key!==S.CUSTOMER_ATTRIBUTE_KEY),{key:S.CUSTOMER_ATTRIBUTE_KEY,value:JSON.stringify({...i,discounted_amount:a.get(t.variant?.sku)})}]}});return I.length===0?s:(console.log("Syncing main product attributes:",I),await M({cartId:s.id,lines:I})||s)}catch(a){return console.error("Failed to update main product attributes:",a),s}},[M]);(0,D.useDebounceEffect)(()=>{const s=L||R||U;if(!p&&e?.lineItems&&e.lineItems.length>0&&e.lineItems.every(i=>{const{is_gift:r}=(0,m.getDiscountEnvAttributeValue)(i.customAttributes);return r})){console.log("Removing all gifts due to no active campaign"),A({cartId:e.id,lineIds:e.lineItems.map(i=>i.id)}).then(i=>{i&&(f(i),y.current={qualifyingGiftId:"none",subtotal:0,cartId:i.id})});return}if(!h||l||G||s||!p||u.editLineQuantityLoading||u.editLineCodeAmountLoading)return;const _=d?.tier.spend_sum_money.toString()??"none",a=e.subtotalPrice,I=e.id;if(y.current.qualifyingGiftId===_&&Math.abs(y.current.subtotal-a)<.01&&y.current.cartId===I)return;y.current={qualifyingGiftId:_,subtotal:a,cartId:I},(async()=>{let t={...e||{}};try{console.log("Starting cart sync transaction...");let i=!1;const r=t.lineItems.filter(n=>{const{is_gift:g,rule_id:C}=(0,m.getDiscountEnvAttributeValue)(n.customAttributes);return g&&C===p.rule_id}),c=r.filter(n=>{const{spend_sum_money:g}=(0,m.getDiscountEnvAttributeValue)(n.customAttributes);return g!==d?.tier.spend_sum_money});if(console.log("giftsToRemove",r,c),c.length>0){console.log("Step A: Removing incorrect gifts",c);const n=await A({cartId:e.id,lineIds:c.map(g=>g.id)});n&&(t=n,i=!0)}const q=p.rule_result?.spend_get_reward?.main_product;if(q?.variant_list?.length){console.log("Step B: Checking for main product attribute updates...");const n=await k(t,q);n!==t&&(t=n,i=!0)}const B=t.lineItems.some(n=>{const{is_gift:g,rule_id:C,spend_sum_money:O}=(0,m.getDiscountEnvAttributeValue)(n.customAttributes);return g&&C===p.rule_id&&O===d?.tier.spend_sum_money});if(d&&!B&&d.itemsToAdd.length>0){console.log("Step C: Adding qualifying gifts",d.itemsToAdd);const n=await T({lineItems:d.itemsToAdd});n&&(t=n,i=!0)}i?(console.log("Sync transaction complete. Updating final cart state."),f(t)):console.log("Sync transaction complete. No state changes detected.")}catch(i){console.error("Cart sync transaction failed:",i)}y.current={qualifyingGiftId:"none",subtotal:0,cartId:t.id}})()},[h,e,d,p,l,G,L,R,U,f,A,T,k],{wait:1e3,trailing:!0})};
|
|
2
|
+
//# sourceMappingURL=useSyncCartFreeGift.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../../../src/cart/hooks/feature/useSyncCartFreeGift.tsx"],
|
|
4
|
+
"sourcesContent": ["import { useEffect, useRef, useCallback } from 'react'\nimport { useAddToCart } from '../basic/useAddToCart'\nimport { useRemoveCartLines } from '../basic/useRemoveCartLines'\nimport { useUpdateCartLines } from '../basic/useUpdateCartLines'\nimport { useCalcAutoFreeGift } from './useCalcAutoFreeGift' // \u5F15\u5165\u8BA1\u7B97\u578Bhook\nimport { getDiscountEnvAttributeValue } from '../../utils/autoFreeGift'\nimport { CUSTOMER_ATTRIBUTE_KEY } from '../../../shopify/utils/const'\nimport {\n AutoFreeGiftConfig,\n MainProductInfo,\n} from '../../types/autoFreeGift'\nimport { atobID } from '../../../shopify/utils/helper'\nimport { Cart, LineItem } from '../../../shopify/types/cart'\nimport { useDebounceEffect } from 'ahooks'\nimport { LoadingState } from '../../context'\n\n/**\n * [\u526F\u4F5C\u7528\u578B Hook]\n * \u8D1F\u8D23\u540C\u6B65\u8D2D\u7269\u8F66\uFF0C\u786E\u4FDD\u8D2D\u7269\u8F66\u4E2D\u7684\u8D60\u54C1\u4E0E\u8BA1\u7B97\u7ED3\u679C\u4E00\u81F4\u3002\n * \u81EA\u52A8\u6DFB\u52A0\u5E94\u5F97\u7684\u8D60\u54C1\uFF0C\u79FB\u9664\u4E0D\u7B26\u7684\u8D60\u54C1\uFF0C\u5E76\u66F4\u65B0\u4E3B\u5546\u54C1\u5C5E\u6027\u3002\n * \u8FD9\u4E2Ahook\u672C\u8EAB\u4E0D\u8FD4\u56DE\u4EFB\u4F55\u4E1C\u897F\uFF0C\u5B83\u7684\u804C\u8D23\u662F\"\u540C\u6B65\"\n */\nexport const useSyncCartFreeGift = ({\n cart,\n autoFreeGiftConfig,\n isCartLoading,\n setCart,\n loadingState,\n}: {\n cart: Cart | undefined\n autoFreeGiftConfig: AutoFreeGiftConfig\n isCartLoading: boolean\n setCart: (cart: Cart) => void\n loadingState: LoadingState\n}) => {\n // \u9632\u5FA1\u6027\u68C0\u67E5\uFF1A\u786E\u4FDDcart\u5B58\u5728\u4E14\u6709\u6548\n const isValidCart = cart && cart.id && cart.lineItems\n\n // 1. \u8BA1\u7B97\u671F\u671B\u72B6\u6001\n const {\n qualifyingGift,\n activeCampaign,\n isLoading: isCalcLoading,\n } = useCalcAutoFreeGift(cart, autoFreeGiftConfig, undefined)\n\n // 2. \u5F15\u5165\u5FC5\u8981\u7684 API hooks\n const { trigger: triggerAddToCart, isMutating: isAdding } = useAddToCart()\n const { trigger: triggerRemove, isMutating: isRemoving } =\n useRemoveCartLines()\n const { trigger: triggerUpdate, isMutating: isUpdating } =\n useUpdateCartLines()\n\n // \u4F7F\u7528 ref \u9632\u6B62\u5728\u8BA1\u7B97\u7ED3\u679C\u672A\u53D8\u5316\u65F6\u91CD\u590D\u6267\u884C\u540C\u6B65\u903B\u8F91\n const lastSyncState = useRef({\n qualifyingGiftId: '',\n subtotal: -1,\n cartId: '',\n })\n\n // 3. \u5C06 \"\u66F4\u65B0\u4E3B\u5546\u54C1\u5C5E\u6027\" \u62BD\u79BB\u6210\u4E00\u4E2A\u7EAF\u7CB9\u7684\u3001\u53EF\u590D\u7528\u7684\u5F02\u6B65\u51FD\u6570\n const updateMainProductAttributes = useCallback(\n async (\n currentCart: Cart,\n mainProduct: MainProductInfo\n ): Promise<Cart> => {\n try {\n // a. \u8BA1\u7B97\u6BCF\u4E2ASKU\u7684\u91D1\u989D\n console.log('updateMainProductAttributes time', currentCart)\n const productAmountMap = new Map<string, number>()\n currentCart.lineItems.forEach((line) => {\n const { is_gift } = getDiscountEnvAttributeValue(\n line.customAttributes as any\n )\n const amount = is_gift ? 0 : Number(line.totalAmount)\n const currentAmount = productAmountMap.get(line.variant?.sku) ?? 0\n productAmountMap.set(line.variant?.sku, currentAmount + amount)\n })\n\n // b. \u627E\u51FA\u9700\u8981\u66F4\u65B0\u7684\u884C\u9879\u76EE\n const linesToUpdate = currentCart.lineItems\n .filter((line: LineItem) => {\n const discountValue = getDiscountEnvAttributeValue(\n line?.customAttributes as any\n )\n // \u5C5E\u4E8E\u6EE1\u8D60\u89C4\u5219\u7684\u4EA7\u54C1\u5E76\u4E14attribute\u6298\u6263\u91D1\u989D\u4E0D\u4E00\u81F4\n const shouldUpdate =\n !discountValue.is_gift &&\n mainProduct.variant_list.some(\n (item) => item.variant_id === atobID(line.variantId)\n ) &&\n discountValue.discounted_amount !==\n productAmountMap.get(line.variant?.sku)\n return shouldUpdate\n })\n .map((line: LineItem) => {\n const discountValue = getDiscountEnvAttributeValue(\n line?.customAttributes as any\n )\n return {\n id: line.id,\n attributes: [\n ...(line.customAttributes as any).filter(\n (attr: any) => attr.key !== CUSTOMER_ATTRIBUTE_KEY\n ),\n {\n key: CUSTOMER_ATTRIBUTE_KEY,\n value: JSON.stringify({\n ...discountValue,\n discounted_amount: productAmountMap.get(line.variant?.sku),\n }),\n },\n ],\n }\n })\n\n if (linesToUpdate.length === 0) {\n return currentCart\n }\n\n console.log('Syncing main product attributes:', linesToUpdate)\n // c. \u6267\u884C\u66F4\u65B0\u5E76\u8FD4\u56DE\u4ECEAPI\u83B7\u53D6\u7684\u3010\u65B0\u3011\u8D2D\u7269\u8F66\u72B6\u6001\u5BF9\u8C61\n const updatedCart = await triggerUpdate({\n cartId: currentCart.id,\n lines: linesToUpdate,\n })\n return updatedCart || currentCart\n } catch (error) {\n console.error('Failed to update main product attributes:', error)\n return currentCart\n }\n },\n [triggerUpdate]\n )\n\n // 4. \u6838\u5FC3\u540C\u6B65\u903B\u8F91: \u5355\u4E00\u5165\u53E3\uFF0C\u7EDF\u4E00\u8C03\u5EA6\n useDebounceEffect(\n () => {\n const isMutating = isAdding || isRemoving || isUpdating\n\n // \u8D2D\u7269\u8F66\u53EA\u6709\u8D60\u54C1\u4E14\u6CA1\u6709\u6D3B\u52A8\u65F6\uFF0C\u5220\u9664\u8D60\u54C1\u5E76return\n if (!activeCampaign && cart?.lineItems && cart.lineItems.length > 0) {\n const onlyGifts = cart.lineItems.every((line) => {\n const { is_gift } = getDiscountEnvAttributeValue(\n line.customAttributes as any\n )\n return is_gift\n })\n if (onlyGifts) {\n console.log('Removing all gifts due to no active campaign')\n triggerRemove({\n cartId: cart.id,\n lineIds: cart.lineItems.map((item) => item.id),\n }).then((res: Cart | undefined) => {\n if (res) {\n setCart(res as Cart)\n lastSyncState.current = {\n qualifyingGiftId: 'none',\n subtotal: 0,\n cartId: res.id,\n }\n }\n })\n return\n }\n }\n // \u9632\u5FA1\uFF1A\u521D\u59CB\u6570\u636E\u672A\u52A0\u8F7D\u3001\u6B63\u5728\u64CD\u4F5C\u6216\u8BA1\u7B97\u7ED3\u679C\u672A\u53D8\u5316\u65F6\uFF0C\u4E0D\u6267\u884C\n if (\n !isValidCart ||\n isCartLoading ||\n isCalcLoading ||\n isMutating ||\n !activeCampaign ||\n loadingState.editLineQuantityLoading ||\n loadingState.editLineCodeAmountLoading\n ) {\n return\n }\n\n const qualifyingGiftId =\n qualifyingGift?.tier.spend_sum_money.toString() ?? 'none'\n const currentSubtotal = cart!.subtotalPrice\n const currentCartId = cart!.id\n\n // \u4F18\u5316\uFF1A\u53EA\u6709\u5728\u8BA1\u7B97\u7ED3\u679C\uFF08\u5E94\u5F97\u8D60\u54C1\u6216\u603B\u4EF7\uFF09\u5B9E\u9645\u53D8\u5316\u65F6\u624D\u89E6\u53D1\u540C\u6B65\n if (\n lastSyncState.current.qualifyingGiftId === qualifyingGiftId &&\n Math.abs(lastSyncState.current.subtotal - currentSubtotal) < 0.01 &&\n lastSyncState.current.cartId === currentCartId\n ) {\n return\n }\n\n // \u8BB0\u5F55\u5F53\u524D\u72B6\u6001\uFF0C\u9632\u6B62\u91CD\u5165\n lastSyncState.current = {\n qualifyingGiftId,\n subtotal: currentSubtotal,\n cartId: currentCartId,\n }\n\n // \u5B9A\u4E49\u6838\u5FC3\u5F02\u6B65\u4E8B\u52A1\n const syncCartStateTransaction = async () => {\n let tempCartState = { ...(cart || {}) } // \u521B\u5EFA\u4E00\u4E2A\u4E34\u65F6\u7684\u3001\u53EF\u53D8\u7684\u8D2D\u7269\u8F66\u72B6\u6001\u526F\u672C\n try {\n console.log('Starting cart sync transaction...')\n let hasStateChanged = false // \u6807\u8BB0\u662F\u5426\u6709API\u8C03\u7528\u5BFC\u81F4\u72B6\u6001\u53D8\u5316\n\n // --- \u6B65\u9AA4 A: \u79FB\u9664\u4E0D\u6B63\u786E\u7684\u8D60\u54C1 ---\n const giftsInCart = tempCartState.lineItems.filter((line) => {\n const { is_gift, rule_id } = getDiscountEnvAttributeValue(\n line.customAttributes as any\n )\n return is_gift && rule_id === activeCampaign.rule_id\n })\n\n const giftsToRemove = giftsInCart.filter((line) => {\n const { spend_sum_money } = getDiscountEnvAttributeValue(\n line.customAttributes as any\n )\n return spend_sum_money !== qualifyingGift?.tier.spend_sum_money\n })\n console.log('giftsToRemove', giftsInCart, giftsToRemove)\n\n if (giftsToRemove.length > 0) {\n console.log('Step A: Removing incorrect gifts', giftsToRemove)\n const removedResult = await triggerRemove({\n cartId: cart.id,\n lineIds: giftsToRemove.map((item) => item.id),\n })\n if (removedResult) {\n tempCartState = removedResult\n hasStateChanged = true\n }\n }\n\n // --- \u6B65\u9AA4 B: \u66F4\u65B0\u4E3B\u5546\u54C1\u5C5E\u6027 ---\n const mainProduct =\n activeCampaign.rule_result?.spend_get_reward?.main_product\n if (mainProduct?.variant_list?.length) {\n console.log(\n 'Step B: Checking for main product attribute updates...'\n )\n const updatedResult = await updateMainProductAttributes(\n tempCartState,\n mainProduct\n )\n\n if (updatedResult !== tempCartState) {\n tempCartState = updatedResult\n hasStateChanged = true\n }\n }\n\n // --- \u6B65\u9AA4 C: \u6DFB\u52A0\u6B63\u786E\u7684\u8D60\u54C1 ---\n const hasCorrectGift = tempCartState.lineItems.some((line) => {\n const { is_gift, rule_id, spend_sum_money } =\n getDiscountEnvAttributeValue(line.customAttributes as any)\n return (\n is_gift &&\n rule_id === activeCampaign.rule_id &&\n spend_sum_money === qualifyingGift?.tier.spend_sum_money\n )\n })\n\n if (\n qualifyingGift &&\n !hasCorrectGift &&\n qualifyingGift.itemsToAdd.length > 0\n ) {\n console.log(\n 'Step C: Adding qualifying gifts',\n qualifyingGift.itemsToAdd\n )\n const addedResult = await triggerAddToCart({\n lineItems: qualifyingGift.itemsToAdd as any,\n })\n if (addedResult) {\n tempCartState = addedResult\n hasStateChanged = true\n }\n }\n\n // --- \u6700\u7EC8\u6B65\u9AA4: \u63D0\u4EA4\u72B6\u6001 ---\n if (hasStateChanged) {\n console.log('Sync transaction complete. Updating final cart state.')\n setCart(tempCartState)\n } else {\n console.log('Sync transaction complete. No state changes detected.')\n }\n } catch (error) {\n console.error('Cart sync transaction failed:', error)\n }\n\n lastSyncState.current = {\n qualifyingGiftId: 'none',\n subtotal: 0,\n cartId: tempCartState.id,\n }\n }\n\n syncCartStateTransaction()\n },\n [\n isValidCart,\n cart,\n qualifyingGift,\n activeCampaign,\n isCartLoading,\n isCalcLoading,\n isAdding,\n isRemoving,\n isUpdating,\n setCart,\n triggerRemove,\n triggerAddToCart,\n updateMainProductAttributes,\n ],\n {\n wait: 1000,\n trailing: true,\n }\n )\n}\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": ["useSyncCartFreeGift_exports", "__export", "useSyncCartFreeGift", "__toCommonJS", "import_react", "import_useAddToCart", "import_useRemoveCartLines", "import_useUpdateCartLines", "import_useCalcAutoFreeGift", "import_autoFreeGift", "import_const", "import_helper", "import_ahooks", "cart", "autoFreeGiftConfig", "isCartLoading", "setCart", "loadingState", "isValidCart", "qualifyingGift", "activeCampaign", "isCalcLoading", "triggerAddToCart", "isAdding", "triggerRemove", "isRemoving", "triggerUpdate", "isUpdating", "lastSyncState", "updateMainProductAttributes", "currentCart", "mainProduct", "productAmountMap", "line", "is_gift", "amount", "currentAmount", "linesToUpdate", "discountValue", "item", "attr", "error", "isMutating", "res", "qualifyingGiftId", "currentSubtotal", "currentCartId", "tempCartState", "hasStateChanged", "giftsInCart", "rule_id", "giftsToRemove", "spend_sum_money", "removedResult", "updatedResult", "hasCorrectGift", "addedResult"]
|
|
7
|
+
}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";var c=Object.defineProperty;var C=Object.getOwnPropertyDescriptor;var h=Object.getOwnPropertyNames;var m=Object.prototype.hasOwnProperty;var x=(s,t)=>{for(var i in t)c(s,i,{get:t[i],enumerable:!0})},A=(s,t,i,o)=>{if(t&&typeof t=="object"||typeof t=="function")for(let n of h(t))!m.call(s,n)&&n!==i&&c(s,n,{get:()=>t[n],enumerable:!(o=C(t,n))||o.enumerable});return s};var O=s=>A(c({},"__esModule",{value:!0}),s);var R={};x(R,{RegistrationContext:()=>r,RegistrationProvider:()=>P,useRegistration:()=>E});module.exports=O(R);var p=require("react/jsx-runtime"),e=require("react"),d=require("../hooks/useSendEmailValidation");const r=(0,e.createContext)({authCode:{isOpen:!1,open:()=>{},close:()=>{},isSuccess:!1,setOnSuccess:()=>{},isSendingActivateEmail:!1}}),E=()=>(0,e.useContext)(r),P=({children:s,email:t})=>{const[i,o]=(0,e.useState)(!1),[n,f]=(0,e.useState)(void 0),[v,b]=(0,e.useState)(!1),[k,S]=(0,e.useState)(null),{trigger:u,isMutating:g}=(0,d.useSendEmailValidation)({email:t}),l=(0,e.useCallback)(async()=>{await u(void 0,{onSuccess:a=>{S(a.data?.active_token)}})},[u]);return(0,e.useEffect)(()=>{i&&l()},[i,l]),(0,p.jsx)(r.Provider,{value:{authCode:{isOpen:i,open:()=>o(!0),close:()=>o(!1),isSuccess:v,setOnSuccess:a=>f(()=>a),isSendingActivateEmail:g}},children:s})};
|
|
2
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../../src/registration/context/index.tsx"],
|
|
4
|
+
"sourcesContent": ["import { createContext, PropsWithChildren, useCallback, useContext, useEffect, useState } from 'react'\nimport { useSendEmailValidation } from '../hooks/useSendEmailValidation'\n\ninterface RegistrationContextType {\n authCode: {\n isOpen: boolean\n open: () => void\n close: () => void\n isSuccess: boolean\n setOnSuccess: (callback: () => void) => void\n isSendingActivateEmail: boolean\n }\n}\n\nexport const RegistrationContext = createContext<RegistrationContextType>({\n authCode: {\n isOpen: false,\n open: () => {},\n close: () => {},\n isSuccess: false,\n setOnSuccess: () => {},\n isSendingActivateEmail: false,\n },\n})\n\nexport const useRegistration = () => {\n return useContext(RegistrationContext)\n}\n\nexport const RegistrationProvider = ({ children, email }: PropsWithChildren<{ email: string }>) => {\n const [popAuthCode, setPopAuthCode] = useState(false)\n const [onAuthSuccess, setOnAuthSuccess] = useState<(() => void) | undefined>(undefined)\n const [isSuccess, setIsSuccess] = useState(false)\n const [activeToken, setActiveToken] = useState<string | null>(null)\n const { trigger, isMutating: isSendingActivateEmail } = useSendEmailValidation({ email })\n\n const fetchSendValidationEmail = useCallback(async () => {\n await trigger(undefined, {\n onSuccess: res => {\n setActiveToken(res.data?.active_token)\n },\n })\n }, [trigger])\n\n useEffect(() => {\n if (popAuthCode) {\n fetchSendValidationEmail()\n }\n }, [popAuthCode, fetchSendValidationEmail])\n\n return (\n <RegistrationContext.Provider\n value={{\n authCode: {\n isOpen: popAuthCode,\n open: () => setPopAuthCode(true),\n close: () => setPopAuthCode(false),\n isSuccess,\n setOnSuccess: (callback: () => void) => setOnAuthSuccess(() => callback),\n isSendingActivateEmail,\n },\n }}\n >\n {children}\n </RegistrationContext.Provider>\n )\n}\n"],
|
|
5
|
+
"mappings": "yaAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,yBAAAE,EAAA,yBAAAC,EAAA,oBAAAC,IAAA,eAAAC,EAAAL,GAmDI,IAAAM,EAAA,6BAnDJC,EAA+F,iBAC/FC,EAAuC,2CAahC,MAAMN,KAAsB,iBAAuC,CACxE,SAAU,CACR,OAAQ,GACR,KAAM,IAAM,CAAC,EACb,MAAO,IAAM,CAAC,EACd,UAAW,GACX,aAAc,IAAM,CAAC,EACrB,uBAAwB,EAC1B,CACF,CAAC,EAEYE,EAAkB,OACtB,cAAWF,CAAmB,EAG1BC,EAAuB,CAAC,CAAE,SAAAM,EAAU,MAAAC,CAAM,IAA4C,CACjG,KAAM,CAACC,EAAaC,CAAc,KAAI,YAAS,EAAK,EAC9C,CAACC,EAAeC,CAAgB,KAAI,YAAmC,MAAS,EAChF,CAACC,EAAWC,CAAY,KAAI,YAAS,EAAK,EAC1C,CAACC,EAAaC,CAAc,KAAI,YAAwB,IAAI,EAC5D,CAAE,QAAAC,EAAS,WAAYC,CAAuB,KAAI,0BAAuB,CAAE,MAAAV,CAAM,CAAC,EAElFW,KAA2B,eAAY,SAAY,CACvD,MAAMF,EAAQ,OAAW,CACvB,UAAWG,GAAO,CAChBJ,EAAeI,EAAI,MAAM,YAAY,CACvC,CACF,CAAC,CACH,EAAG,CAACH,CAAO,CAAC,EAEZ,sBAAU,IAAM,CACVR,GACFU,EAAyB,CAE7B,EAAG,CAACV,EAAaU,CAAwB,CAAC,KAGxC,OAACnB,EAAoB,SAApB,CACC,MAAO,CACL,SAAU,CACR,OAAQS,EACR,KAAM,IAAMC,EAAe,EAAI,EAC/B,MAAO,IAAMA,EAAe,EAAK,EACjC,UAAAG,EACA,aAAeQ,GAAyBT,EAAiB,IAAMS,CAAQ,EACvE,uBAAAH,CACF,CACF,EAEC,SAAAX,EACH,CAEJ",
|
|
6
|
+
"names": ["context_exports", "__export", "RegistrationContext", "RegistrationProvider", "useRegistration", "__toCommonJS", "import_jsx_runtime", "import_react", "import_useSendEmailValidation", "children", "email", "popAuthCode", "setPopAuthCode", "onAuthSuccess", "setOnAuthSuccess", "isSuccess", "setIsSuccess", "activeToken", "setActiveToken", "trigger", "isSendingActivateEmail", "fetchSendValidationEmail", "res", "callback"]
|
|
7
|
+
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"get-products-by-handles.d.ts","sourceRoot":"","sources":["../../../../src/shopify/fetchers/get-products-by-handles.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,qBAAqB,EAAE,cAAc,EAA2B,MAAM,kBAAkB,CAAA;AACjG,OAAO,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAA;AAE1C,MAAM,MAAM,6BAA6B,GAAG,qBAAqB,CAAC,OAAO,GAAG,qBAAqB,CAAC,OAAO,CAAA;AAEzG,MAAM,MAAM,uBAAuB,GAAG;IACpC,OAAO,EAAE,MAAM,EAAE,CAAA;CAClB,CAAA;AAED;;;;;;GAMG;AACH,eAAO,MAAM,oBAAoB,EAAE,cAAc,CAC/C,OAAO,EAAE,EACT,uBAAuB,EACvB,6BAA6B,
|
|
1
|
+
{"version":3,"file":"get-products-by-handles.d.ts","sourceRoot":"","sources":["../../../../src/shopify/fetchers/get-products-by-handles.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,qBAAqB,EAAE,cAAc,EAA2B,MAAM,kBAAkB,CAAA;AACjG,OAAO,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAA;AAE1C,MAAM,MAAM,6BAA6B,GAAG,qBAAqB,CAAC,OAAO,GAAG,qBAAqB,CAAC,OAAO,CAAA;AAEzG,MAAM,MAAM,uBAAuB,GAAG;IACpC,OAAO,EAAE,MAAM,EAAE,CAAA;CAClB,CAAA;AAED;;;;;;GAMG;AACH,eAAO,MAAM,oBAAoB,EAAE,cAAc,CAC/C,OAAO,EAAE,EACT,uBAAuB,EACvB,6BAA6B,CA2B9B,CAAA"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";var
|
|
1
|
+
"use strict";var d=Object.defineProperty;var p=Object.getOwnPropertyDescriptor;var y=Object.getOwnPropertyNames;var m=Object.prototype.hasOwnProperty;var P=(t,e)=>{for(var r in e)d(t,r,{get:e[r],enumerable:!0})},h=(t,e,r,a)=>{if(e&&typeof e=="object"||typeof e=="function")for(let o of y(e))!m.call(t,o)&&o!==r&&d(t,o,{get:()=>e[o],enumerable:!(a=p(e,o))||a.enumerable});return t};var M=t=>h(d({},"__esModule",{value:!0}),t);var H={};P(H,{getProductsByHandles:()=>R});module.exports=M(H);var f=require("../queries/get-product-by-handles"),c=require("../utils/fetch-graphql-api"),u=require("../utils/helper"),l=require("../utils/normalize/product");const R=async({options:t,config:e})=>{const{handles:r,metafieldIdentifiers:a={},comboMetafieldsNamespace:o}=t;if(!r?.length)throw new Error("Handles are required");const s=(0,u.constructMetafieldIdentifiersQueryParams)(a,o),n=await(0,c.fetchGraphqlApi)({query:(0,f.getProductsByHandlesQuery)(r),variables:{handles:r,productMetafieldIdentifiers:s.productMetafieldIdentifiers||[],variantMetafieldIdentifiers:s.variantMetafieldIdentifiers||[]},config:e});return Object.values(n.data).filter(i=>!!i).map(i=>(0,l.normalizeProduct)(i,""))};
|
|
2
2
|
//# sourceMappingURL=get-products-by-handles.js.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../../src/shopify/fetchers/get-products-by-handles.ts"],
|
|
4
|
-
"sourcesContent": ["import { getProductsByHandlesQuery } from '../queries/get-product-by-handles'\nimport { fetchGraphqlApi } from '../utils/fetch-graphql-api'\nimport { constructMetafieldIdentifiersQueryParams } from '../utils/helper'\nimport { normalizeProduct } from '../utils/normalize/product'\nimport { Product as ShopifyProduct } from '../gql'\nimport { HasMetafieldQueryRoot, ShopifyFetcher, ShopifyFetcherVariables } from '../types/fetcher'\nimport { Product } from '../types/product'\n\nexport type GetProductsMetafieldQueryRoot = HasMetafieldQueryRoot.Product | HasMetafieldQueryRoot.Variant\n\nexport type GetProductsByHandlesReq = {\n handles: string[]\n}\n\n/**\n * Gets products by their handles.\n *\n * @param options - The options for getting products.\n * @param config - The store configuration.\n * @returns An array of products.\n */\nexport const getProductsByHandles: ShopifyFetcher<\n Product[],\n GetProductsByHandlesReq,\n GetProductsMetafieldQueryRoot\n> = async ({ options, config }) => {\n const { handles, metafieldIdentifiers, comboMetafieldsNamespace } = options\n\n if (!handles?.length) {\n throw new Error('Handles are required')\n }\n\n const products = await fetchGraphqlApi<\n Record<string, ShopifyProduct>,\n ShopifyFetcherVariables<GetProductsByHandlesReq, GetProductsMetafieldQueryRoot>\n >({\n query: getProductsByHandlesQuery(handles),\n variables: {\n handles,\n
|
|
5
|
-
"mappings": "yaAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,0BAAAE,IAAA,eAAAC,EAAAH,GAAA,IAAAI,EAA0C,6CAC1CC,EAAgC,sCAChCC,EAAyD,2BACzDC,EAAiC,sCAkB1B,MAAML,EAIT,MAAO,CAAE,QAAAM,EAAS,OAAAC,CAAO,IAAM,CACjC,KAAM,CAAE,QAAAC,EAAS,qBAAAC,
|
|
6
|
-
"names": ["get_products_by_handles_exports", "__export", "getProductsByHandles", "__toCommonJS", "import_get_product_by_handles", "import_fetch_graphql_api", "import_helper", "import_product", "options", "config", "handles", "metafieldIdentifiers", "comboMetafieldsNamespace", "products", "item", "product"]
|
|
4
|
+
"sourcesContent": ["import { getProductsByHandlesQuery } from '../queries/get-product-by-handles'\nimport { fetchGraphqlApi } from '../utils/fetch-graphql-api'\nimport { constructMetafieldIdentifiersQueryParams } from '../utils/helper'\nimport { normalizeProduct } from '../utils/normalize/product'\nimport { Product as ShopifyProduct } from '../gql'\nimport { HasMetafieldQueryRoot, ShopifyFetcher, ShopifyFetcherVariables } from '../types/fetcher'\nimport { Product } from '../types/product'\n\nexport type GetProductsMetafieldQueryRoot = HasMetafieldQueryRoot.Product | HasMetafieldQueryRoot.Variant\n\nexport type GetProductsByHandlesReq = {\n handles: string[]\n}\n\n/**\n * Gets products by their handles.\n *\n * @param options - The options for getting products.\n * @param config - The store configuration.\n * @returns An array of products.\n */\nexport const getProductsByHandles: ShopifyFetcher<\n Product[],\n GetProductsByHandlesReq,\n GetProductsMetafieldQueryRoot\n> = async ({ options, config }) => {\n const { handles, metafieldIdentifiers = {}, comboMetafieldsNamespace } = options\n\n if (!handles?.length) {\n throw new Error('Handles are required')\n }\n\n // \u6784\u5EFA metafield identifiers\uFF0C\u786E\u4FDD\u9ED8\u8BA4\u503C\u4E3A\u7A7A\u6570\u7EC4\n const metafieldParams = constructMetafieldIdentifiersQueryParams(metafieldIdentifiers, comboMetafieldsNamespace)\n\n const products = await fetchGraphqlApi<\n Record<string, ShopifyProduct>,\n ShopifyFetcherVariables<GetProductsByHandlesReq, GetProductsMetafieldQueryRoot>\n >({\n query: getProductsByHandlesQuery(handles),\n variables: {\n handles,\n productMetafieldIdentifiers: metafieldParams.productMetafieldIdentifiers || [],\n variantMetafieldIdentifiers: metafieldParams.variantMetafieldIdentifiers || [],\n },\n config,\n })\n\n return Object.values(products.data)\n .filter(item => !!item)\n .map(product => normalizeProduct(product, '')) as Product[]\n}\n"],
|
|
5
|
+
"mappings": "yaAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,0BAAAE,IAAA,eAAAC,EAAAH,GAAA,IAAAI,EAA0C,6CAC1CC,EAAgC,sCAChCC,EAAyD,2BACzDC,EAAiC,sCAkB1B,MAAML,EAIT,MAAO,CAAE,QAAAM,EAAS,OAAAC,CAAO,IAAM,CACjC,KAAM,CAAE,QAAAC,EAAS,qBAAAC,EAAuB,CAAC,EAAG,yBAAAC,CAAyB,EAAIJ,EAEzE,GAAI,CAACE,GAAS,OACZ,MAAM,IAAI,MAAM,sBAAsB,EAIxC,MAAMG,KAAkB,4CAAyCF,EAAsBC,CAAwB,EAEzGE,EAAW,QAAM,mBAGrB,CACA,SAAO,6BAA0BJ,CAAO,EACxC,UAAW,CACT,QAAAA,EACA,4BAA6BG,EAAgB,6BAA+B,CAAC,EAC7E,4BAA6BA,EAAgB,6BAA+B,CAAC,CAC/E,EACA,OAAAJ,CACF,CAAC,EAED,OAAO,OAAO,OAAOK,EAAS,IAAI,EAC/B,OAAOC,GAAQ,CAAC,CAACA,CAAI,EACrB,IAAIC,MAAW,oBAAiBA,EAAS,EAAE,CAAC,CACjD",
|
|
6
|
+
"names": ["get_products_by_handles_exports", "__export", "getProductsByHandles", "__toCommonJS", "import_get_product_by_handles", "import_fetch_graphql_api", "import_helper", "import_product", "options", "config", "handles", "metafieldIdentifiers", "comboMetafieldsNamespace", "metafieldParams", "products", "item", "product"]
|
|
7
7
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useProductsByHandles.d.ts","sourceRoot":"","sources":["../../../../src/shopify/hooks/useProductsByHandles.ts"],"names":[],"mappings":"AAGA,OAAO,EAAwB,6BAA6B,EAAE,MAAM,qCAAqC,CAAA;AACzG,OAAO,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAA;AACrD,OAAO,EAAE,uBAAuB,EAAE,MAAM,qCAAqC,CAAA;AAE7E,wBAAgB,oBAAoB,CAAC,EACnC,OAAO,EACP,
|
|
1
|
+
{"version":3,"file":"useProductsByHandles.d.ts","sourceRoot":"","sources":["../../../../src/shopify/hooks/useProductsByHandles.ts"],"names":[],"mappings":"AAGA,OAAO,EAAwB,6BAA6B,EAAE,MAAM,qCAAqC,CAAA;AACzG,OAAO,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAA;AACrD,OAAO,EAAE,uBAAuB,EAAE,MAAM,qCAAqC,CAAA;AAE7E,wBAAgB,oBAAoB,CAAC,EACnC,OAAO,EACP,oBAAyB,GAC1B,EAAE,kBAAkB,CAAC,uBAAuB,EAAE,6BAA6B,CAAC,+DAa5E"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";var m=Object.create;var n=Object.defineProperty;var c=Object.getOwnPropertyDescriptor;var p=Object.getOwnPropertyNames;var a=Object.getPrototypeOf,y=Object.prototype.hasOwnProperty;var l=(o,e)=>{for(var t in e)n(o,t,{get:e[t],enumerable:!0})},i=(o,e,t,s)=>{if(e&&typeof e=="object"||typeof e=="function")for(let r of p(e))!y.call(o,r)&&r!==t&&n(o,r,{get:()=>e[r],enumerable:!(s=c(e,r))||s.enumerable});return o};var H=(o,e,t)=>(t=o!=null?m(a(o)):{},i(e||!o||!o.__esModule?n(t,"default",{value:o,enumerable:!0}):t,o)),P=o=>i(n({},"__esModule",{value:!0}),o);var B={};l(B,{useProductsByHandles:()=>R});module.exports=P(B);var d=H(require("swr")),u=require("../../context"),f=require("../fetchers/get-products-by-handles");function R({handles:o,metafieldIdentifiers:e}){const{storefrontToken:t,storeDomain:s,comboMetafieldsNamespace:r}=(0,u.useHeadlessContext)();return(0,d.default)(o?.length?{handles:o,metafieldIdentifiers:e}:void 0,async()=>(0,f.getProductsByHandles)({options:{handles:o,metafieldIdentifiers:e,comboMetafieldsNamespace:r},config:{storefrontToken:t,storeDomain:s}}))}
|
|
1
|
+
"use strict";var m=Object.create;var n=Object.defineProperty;var c=Object.getOwnPropertyDescriptor;var p=Object.getOwnPropertyNames;var a=Object.getPrototypeOf,y=Object.prototype.hasOwnProperty;var l=(o,e)=>{for(var t in e)n(o,t,{get:e[t],enumerable:!0})},i=(o,e,t,s)=>{if(e&&typeof e=="object"||typeof e=="function")for(let r of p(e))!y.call(o,r)&&r!==t&&n(o,r,{get:()=>e[r],enumerable:!(s=c(e,r))||s.enumerable});return o};var H=(o,e,t)=>(t=o!=null?m(a(o)):{},i(e||!o||!o.__esModule?n(t,"default",{value:o,enumerable:!0}):t,o)),P=o=>i(n({},"__esModule",{value:!0}),o);var B={};l(B,{useProductsByHandles:()=>R});module.exports=P(B);var d=H(require("swr")),u=require("../../context"),f=require("../fetchers/get-products-by-handles");function R({handles:o,metafieldIdentifiers:e={}}){const{storefrontToken:t,storeDomain:s,comboMetafieldsNamespace:r}=(0,u.useHeadlessContext)();return(0,d.default)(o?.length?{handles:o,metafieldIdentifiers:e}:void 0,async()=>(0,f.getProductsByHandles)({options:{handles:o,metafieldIdentifiers:e,comboMetafieldsNamespace:r},config:{storefrontToken:t,storeDomain:s}}))}
|
|
2
2
|
//# sourceMappingURL=useProductsByHandles.js.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../../src/shopify/hooks/useProductsByHandles.ts"],
|
|
4
|
-
"sourcesContent": ["import useSWR from 'swr'\nimport { useHeadlessContext } from '../../context'\n\nimport { getProductsByHandles, GetProductsMetafieldQueryRoot } from '../fetchers/get-products-by-handles'\nimport { ShopifyHookOptions } from '../types/fetcher'\nimport { GetProductsByHandlesReq } from '../fetchers/get-products-by-handles'\n\nexport function useProductsByHandles({\n handles,\n metafieldIdentifiers,\n}: ShopifyHookOptions<GetProductsByHandlesReq, GetProductsMetafieldQueryRoot>) {\n const { storefrontToken, storeDomain, comboMetafieldsNamespace } = useHeadlessContext()\n\n return useSWR(handles?.length ? { handles, metafieldIdentifiers } : undefined, async () => {\n return getProductsByHandles({\n options: {\n handles: handles,\n metafieldIdentifiers: metafieldIdentifiers,\n comboMetafieldsNamespace,\n },\n config: { storefrontToken, storeDomain },\n })\n })\n}\n"],
|
|
5
|
-
"mappings": "0jBAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,0BAAAE,IAAA,eAAAC,EAAAH,GAAA,IAAAI,EAAmB,kBACnBC,EAAmC,yBAEnCC,EAAoE,+CAI7D,SAASJ,EAAqB,CACnC,QAAAK,EACA,qBAAAC,
|
|
4
|
+
"sourcesContent": ["import useSWR from 'swr'\nimport { useHeadlessContext } from '../../context'\n\nimport { getProductsByHandles, GetProductsMetafieldQueryRoot } from '../fetchers/get-products-by-handles'\nimport { ShopifyHookOptions } from '../types/fetcher'\nimport { GetProductsByHandlesReq } from '../fetchers/get-products-by-handles'\n\nexport function useProductsByHandles({\n handles,\n metafieldIdentifiers = {},\n}: ShopifyHookOptions<GetProductsByHandlesReq, GetProductsMetafieldQueryRoot>) {\n const { storefrontToken, storeDomain, comboMetafieldsNamespace } = useHeadlessContext()\n\n return useSWR(handles?.length ? { handles, metafieldIdentifiers } : undefined, async () => {\n return getProductsByHandles({\n options: {\n handles: handles,\n metafieldIdentifiers: metafieldIdentifiers,\n comboMetafieldsNamespace,\n },\n config: { storefrontToken, storeDomain },\n })\n })\n}\n"],
|
|
5
|
+
"mappings": "0jBAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,0BAAAE,IAAA,eAAAC,EAAAH,GAAA,IAAAI,EAAmB,kBACnBC,EAAmC,yBAEnCC,EAAoE,+CAI7D,SAASJ,EAAqB,CACnC,QAAAK,EACA,qBAAAC,EAAuB,CAAC,CAC1B,EAA+E,CAC7E,KAAM,CAAE,gBAAAC,EAAiB,YAAAC,EAAa,yBAAAC,CAAyB,KAAI,sBAAmB,EAEtF,SAAO,EAAAC,SAAOL,GAAS,OAAS,CAAE,QAAAA,EAAS,qBAAAC,CAAqB,EAAI,OAAW,YACtE,wBAAqB,CAC1B,QAAS,CACP,QAASD,EACT,qBAAsBC,EACtB,yBAAAG,CACF,EACA,OAAQ,CAAE,gBAAAF,EAAiB,YAAAC,CAAY,CACzC,CAAC,CACF,CACH",
|
|
6
6
|
"names": ["useProductsByHandles_exports", "__export", "useProductsByHandles", "__toCommonJS", "import_swr", "import_context", "import_get_products_by_handles", "handles", "metafieldIdentifiers", "storefrontToken", "storeDomain", "comboMetafieldsNamespace", "useSWR"]
|
|
7
7
|
}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{useMemo as _,useCallback as y}from"react";import{useRouter as P}from"next/router";import{BasePriceType as f,DiscountType as p}from"../../types/priceDiscount";const C=({amount:t,currencyCode:n,locale:u})=>new Intl.NumberFormat(u,{style:"currency",currency:n}).format(t),F=({product:t,variant:n,functionPriceConfigs:u})=>{const{getConfigForProduct:e}=m(u),{locale:r=""}=P();return _(()=>{if(!t?.handle||!n?.sku)return null;const o=e(t.handle,n.sku);if(!o)return null;const{price_conf:i}=o.result_detail||{},{discount_type:a,discount_base:l,discount_amount:d,price_ending_conf:E}=i||{},s=n?.price||t?.price?.value||0;let c=0;l===f.MIN_DISCOUNTED_PRICE&&a===p.PERCENTAGE?c=s*(1-(d||0)/100):l===f.MIN_DISCOUNTED_PRICE&&a===p.FIXED_AMOUNT?c=s-d:l===f.MIN_TOTAL_PRICE&&a===p.PERCENTAGE?c=s*(1-(d||0)/100):l===f.MIN_TOTAL_PRICE&&a===p.FIXED_AMOUNT&&(c=s-d);const g=s-c;return{price:c.toFixed(2),priceWithCurrency:C({locale:r,amount:c||0,currencyCode:"USD"}),discount:g.toFixed(2),discountWithCurrency:C({locale:r,amount:g||0,currencyCode:"USD"}),appliedConfig:o}},[t,n,e,r])},m=t=>{const n=_(()=>{const e=new Map;return t.forEach(r=>{const{main_product:o}=r.result_detail||{};o?.all_store_variant&&(e.has("*")||e.set("*",new Map),e.get("*")?.set("*",r)),o?.variant_list?.forEach(i=>{e.has(i.handle)||e.set(i.handle,new Map),e.get(i.handle)?.set(i.sku,r)})}),e},[t]);return{getConfigForProduct:y((e,r)=>{const o=n.get(e)?.get(r);return o||n.get("*")?.get("*")},[n])}};export{F as useCalcPriceDiscount,m as usePriceConfig};
|
|
2
|
+
//# sourceMappingURL=usePriceDiscount.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../../../src/cart/hooks/feature/usePriceDiscount.tsx"],
|
|
4
|
+
"sourcesContent": ["import { useMemo, useCallback } from 'react'\nimport { useRouter } from 'next/router'\nimport { Product, ProductVariant } from '../../../shopify/types'\n// import variantGetCoupon from '@components/variantGetCoupon'\n// import getCouponInfo from '@components/product/ProductView/getCouponInfo';\n// import { formatPrice } from '@commerce/product/use-price'\nimport { BasePriceType, DiscountType } from '../../types/priceDiscount'\n\n// Temporary formatPrice function - replace with actual implementation\nconst formatPrice = ({ amount, currencyCode, locale }: { amount: number; currencyCode: string; locale: string }) => {\n return new Intl.NumberFormat(locale, {\n style: 'currency',\n currency: currencyCode,\n }).format(amount)\n}\n\n// todo\uFF1A\u8FD8\u6CA1\u505A\u5B8C,\u53EA\u6709\u5927\u81F4\u7684\u529F\u80FD\u6CA1\u6709\u9A8C\u8BC1\u3002\n// \u8FD8\u9700\u8981\u5728\u76F4\u964D\u7684\u65F6\u5019\u7ED9\u5546\u54C1\u6253discount_code\uFF0C\u7528\u4E8E\u5B9E\u73B0\u76F4\u964D\u6548\u679C\u3002\n// \u770B\u662F\u5728listing\u6216\u6D3B\u52A8\u9875\u9762\u6253\u8FD8\u662F\u5728\u8D2D\u7269\u8F66\u8BA1\u7B97\u6253\u4E0A\u3002\n\n/**\n * [\u7EAF\u8BA1\u7B97\u578B Hook]\n * \u8BA1\u7B97\u5355\u4E2A\u5546\u54C1\u5728\u76F4\u964D\u6D3B\u52A8\u4E0B\u7684\u6700\u7EC8\u4EF7\u683C\uFF0C\u4E0D\u4EA7\u751F\u4EFB\u4F55\u526F\u4F5C\u7528\n * @param product - \u5546\u54C1\u5BF9\u8C61\n * @param variant - \u9009\u4E2D\u7684\u5546\u54C1\u53D8\u4F53\n */\nexport const useCalcPriceDiscount = ({\n product,\n variant,\n functionPriceConfigs,\n}: {\n product?: Product\n variant?: ProductVariant\n functionPriceConfigs: any[]\n}) => {\n const { getConfigForProduct } = usePriceConfig(functionPriceConfigs)\n const { locale = '' } = useRouter()\n\n return useMemo(() => {\n if (!product?.handle || !variant?.sku) return null\n\n const config = getConfigForProduct(product.handle, variant.sku)\n if (!config) return null\n\n // const coupon = variantGetCoupon({\n // coupons: product?.coupons,\n // variant,\n // product,\n // handle: product?.handle,\n // channel: 'web',\n // });\n // console.log('coupon', coupon)\n // const { discountPriceWithOutSymbol } = getCouponInfo({\n // product, coupon, variant, isDigits: false, locale,\n // });\n\n const { price_conf } = config.result_detail || {}\n const { discount_type, discount_base, discount_amount, price_ending_conf } =\n price_conf || {}\n\n // ... \u6B64\u5904\u662F\u539F `funcPrice` \u5185\u90E8\u7684\u6240\u6709\u4EF7\u683C\u8BA1\u7B97\u903B\u8F91\uFF0C\u5B8C\u5168\u4FDD\u6301\u4E0D\u53D8 ...\n // let price = 0; ...\n // ...\n const originPrice = variant?.price || (product?.price as any)?.value || 0\n // ... \u5B8C\u6574\u7684 switch-case \u903B\u8F91 ...\n\n let price = 0\n // ... (\u6B64\u5904\u7701\u7565\u4E86\u60A8\u63D0\u4F9B\u7684\u5B8C\u6574\u4EF7\u683C\u8BA1\u7B97\u903B\u8F91\uFF0C\u76F4\u63A5\u590D\u5236\u7C98\u8D34\u5373\u53EF)\n // \u793A\u4F8B\uFF1A\n if (\n discount_base === BasePriceType.MIN_DISCOUNTED_PRICE &&\n discount_type === DiscountType.PERCENTAGE\n ) {\n price = originPrice * (1 - (discount_amount || 0) / 100)\n } else if (\n discount_base === BasePriceType.MIN_DISCOUNTED_PRICE &&\n discount_type === DiscountType.FIXED_AMOUNT\n ) {\n price = originPrice - discount_amount\n } else if (\n discount_base === BasePriceType.MIN_TOTAL_PRICE &&\n discount_type === DiscountType.PERCENTAGE\n ) {\n price = originPrice * (1 - (discount_amount || 0) / 100)\n } else if (\n discount_base === BasePriceType.MIN_TOTAL_PRICE &&\n discount_type === DiscountType.FIXED_AMOUNT\n ) {\n price = originPrice - discount_amount\n }\n\n // ... \u6B64\u5904\u662F\u4EF7\u683C\u5C3E\u6570\u5904\u7406\u548C\u56DB\u820D\u4E94\u5165\u7684\u903B\u8F91 ...\n\n const discount = originPrice - price\n\n return {\n price: price.toFixed(2),\n priceWithCurrency: formatPrice({\n locale,\n amount: price || 0,\n currencyCode: 'USD',\n }),\n discount: discount.toFixed(2),\n discountWithCurrency: formatPrice({\n locale,\n amount: discount || 0,\n currencyCode: 'USD',\n }),\n appliedConfig: config, // (\u53EF\u9009) \u8FD4\u56DE\u5E94\u7528\u7684\u914D\u7F6E\uFF0C\u65B9\u4FBF\u8C03\u8BD5\n }\n }, [product, variant, getConfigForProduct, locale])\n}\n\n/**\n * [\u914D\u7F6E\u63D0\u4F9B\u578B Hook]\n * \u63D0\u4F9B\u4E00\u4E2A\u4F18\u5316\u7684\u51FD\u6570\uFF0C\u7528\u4E8E\u6839\u636E\u5546\u54C1\u4FE1\u606F\u5FEB\u901F\u67E5\u627E\u5176\u5BF9\u5E94\u7684\u4EF7\u683C\u6D3B\u52A8\u914D\u7F6E\u3002\n */\nexport const usePriceConfig = (functionPriceConfigs: any) => {\n const configMap = useMemo(() => {\n const map = new Map<string, Map<string, any>>()\n\n functionPriceConfigs.forEach((config: any) => {\n const { main_product } = config.result_detail || {}\n\n // \u5904\u7406 all_store_variant \u7684\u60C5\u51B5\uFF0C\u53EF\u4EE5\u8BBE\u7F6E\u4E00\u4E2A\u7279\u6B8A key\n if (main_product?.all_store_variant) {\n if (!map.has('*')) map.set('*', new Map())\n map.get('*')?.set('*', config)\n }\n\n main_product?.variant_list?.forEach((item: any) => {\n if (!map.has(item.handle)) {\n map.set(item.handle, new Map())\n }\n map.get(item.handle)?.set(item.sku, config)\n })\n })\n\n return map\n }, [functionPriceConfigs])\n\n /**\n * \u6839\u636E handle \u548C sku \u83B7\u53D6\u914D\u7F6E\u3002\n * O(1) \u7EA7\u522B\u7684\u67E5\u627E\uFF0C\u6027\u80FD\u6781\u9AD8\u3002\n */\n const getConfigForProduct = useCallback(\n (handle: string, sku: string): any | undefined => {\n // \u4F18\u5148\u5339\u914D\u7CBE\u786E\u7684 handle \u548C sku\n const specificConfig = configMap.get(handle)?.get(sku)\n if (specificConfig) {\n return specificConfig\n }\n // \u5982\u679C\u6CA1\u6709\u7CBE\u786E\u5339\u914D\uFF0C\u5219\u67E5\u627E\u9002\u7528\u4E8E\u5168\u5E97\u7684\u914D\u7F6E\n return configMap.get('*')?.get('*')\n },\n [configMap]\n )\n\n return { getConfigForProduct }\n}\n"],
|
|
5
|
+
"mappings": "AAAA,OAAS,WAAAA,EAAS,eAAAC,MAAmB,QACrC,OAAS,aAAAC,MAAiB,cAK1B,OAAS,iBAAAC,EAAe,gBAAAC,MAAoB,4BAG5C,MAAMC,EAAc,CAAC,CAAE,OAAAC,EAAQ,aAAAC,EAAc,OAAAC,CAAO,IAC3C,IAAI,KAAK,aAAaA,EAAQ,CACnC,MAAO,WACP,SAAUD,CACZ,CAAC,EAAE,OAAOD,CAAM,EAaLG,EAAuB,CAAC,CACnC,QAAAC,EACA,QAAAC,EACA,qBAAAC,CACF,IAIM,CACJ,KAAM,CAAE,oBAAAC,CAAoB,EAAIC,EAAeF,CAAoB,EAC7D,CAAE,OAAAJ,EAAS,EAAG,EAAIN,EAAU,EAElC,OAAOF,EAAQ,IAAM,CACnB,GAAI,CAACU,GAAS,QAAU,CAACC,GAAS,IAAK,OAAO,KAE9C,MAAMI,EAASF,EAAoBH,EAAQ,OAAQC,EAAQ,GAAG,EAC9D,GAAI,CAACI,EAAQ,OAAO,KAcpB,KAAM,CAAE,WAAAC,CAAW,EAAID,EAAO,eAAiB,CAAC,EAC1C,CAAE,cAAAE,EAAe,cAAAC,EAAe,gBAAAC,EAAiB,kBAAAC,CAAkB,EACvEJ,GAAc,CAAC,EAKXK,EAAcV,GAAS,OAAUD,GAAS,OAAe,OAAS,EAGxE,IAAIY,EAAQ,EAIVJ,IAAkBf,EAAc,sBAChCc,IAAkBb,EAAa,WAE/BkB,EAAQD,GAAe,GAAKF,GAAmB,GAAK,KAEpDD,IAAkBf,EAAc,sBAChCc,IAAkBb,EAAa,aAE/BkB,EAAQD,EAAcF,EAEtBD,IAAkBf,EAAc,iBAChCc,IAAkBb,EAAa,WAE/BkB,EAAQD,GAAe,GAAKF,GAAmB,GAAK,KAEpDD,IAAkBf,EAAc,iBAChCc,IAAkBb,EAAa,eAE/BkB,EAAQD,EAAcF,GAKxB,MAAMI,EAAWF,EAAcC,EAE/B,MAAO,CACL,MAAOA,EAAM,QAAQ,CAAC,EACtB,kBAAmBjB,EAAY,CAC7B,OAAAG,EACA,OAAQc,GAAS,EACjB,aAAc,KAChB,CAAC,EACD,SAAUC,EAAS,QAAQ,CAAC,EAC5B,qBAAsBlB,EAAY,CAChC,OAAAG,EACA,OAAQe,GAAY,EACpB,aAAc,KAChB,CAAC,EACD,cAAeR,CACjB,CACF,EAAG,CAACL,EAASC,EAASE,EAAqBL,CAAM,CAAC,CACpD,EAMaM,EAAkBF,GAA8B,CAC3D,MAAMY,EAAYxB,EAAQ,IAAM,CAC9B,MAAMyB,EAAM,IAAI,IAEhB,OAAAb,EAAqB,QAASG,GAAgB,CAC5C,KAAM,CAAE,aAAAW,CAAa,EAAIX,EAAO,eAAiB,CAAC,EAG9CW,GAAc,oBACXD,EAAI,IAAI,GAAG,GAAGA,EAAI,IAAI,IAAK,IAAI,GAAK,EACzCA,EAAI,IAAI,GAAG,GAAG,IAAI,IAAKV,CAAM,GAG/BW,GAAc,cAAc,QAASC,GAAc,CAC5CF,EAAI,IAAIE,EAAK,MAAM,GACtBF,EAAI,IAAIE,EAAK,OAAQ,IAAI,GAAK,EAEhCF,EAAI,IAAIE,EAAK,MAAM,GAAG,IAAIA,EAAK,IAAKZ,CAAM,CAC5C,CAAC,CACH,CAAC,EAEMU,CACT,EAAG,CAACb,CAAoB,CAAC,EAmBzB,MAAO,CAAE,oBAbmBX,EAC1B,CAAC2B,EAAgBC,IAAiC,CAEhD,MAAMC,EAAiBN,EAAU,IAAII,CAAM,GAAG,IAAIC,CAAG,EACrD,OAAIC,GAIGN,EAAU,IAAI,GAAG,GAAG,IAAI,GAAG,CACpC,EACA,CAACA,CAAS,CACZ,CAE6B,CAC/B",
|
|
6
|
+
"names": ["useMemo", "useCallback", "useRouter", "BasePriceType", "DiscountType", "formatPrice", "amount", "currencyCode", "locale", "useCalcPriceDiscount", "product", "variant", "functionPriceConfigs", "getConfigForProduct", "usePriceConfig", "config", "price_conf", "discount_type", "discount_base", "discount_amount", "price_ending_conf", "originPrice", "price", "discount", "configMap", "map", "main_product", "item", "handle", "sku", "specificConfig"]
|
|
7
|
+
}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{useRef as E,useCallback as P}from"react";import{useAddToCart as F}from"../basic/useAddToCart";import{useRemoveCartLines as V}from"../basic/useRemoveCartLines";import{useUpdateCartLines as D}from"../basic/useUpdateCartLines";import{useCalcAutoFreeGift as N}from"./useCalcAutoFreeGift";import{getDiscountEnvAttributeValue as c}from"../../utils/autoFreeGift";import{CUSTOMER_ATTRIBUTE_KEY as M}from"../../../shopify/utils/const";import{atobID as B}from"../../../shopify/utils/helper";import{useDebounceEffect as O}from"ahooks";const at=({cart:i,autoFreeGiftConfig:U,isCartLoading:_,setCart:p,loadingState:b})=>{const A=i&&i.id&&i.lineItems,{qualifyingGift:r,activeCampaign:m,isLoading:C}=N(i,U,void 0),{trigger:v,isMutating:S}=F(),{trigger:y,isMutating:h}=V(),{trigger:G,isMutating:T}=D(),l=E({qualifyingGiftId:"",subtotal:-1,cartId:""}),L=P(async(o,f)=>{try{console.log("updateMainProductAttributes time",o);const s=new Map;o.lineItems.forEach(t=>{const{is_gift:e}=c(t.customAttributes),a=e?0:Number(t.totalAmount),u=s.get(t.variant?.sku)??0;s.set(t.variant?.sku,u+a)});const g=o.lineItems.filter(t=>{const e=c(t?.customAttributes);return!e.is_gift&&f.variant_list.some(u=>u.variant_id===B(t.variantId))&&e.discounted_amount!==s.get(t.variant?.sku)}).map(t=>{const e=c(t?.customAttributes);return{id:t.id,attributes:[...t.customAttributes.filter(a=>a.key!==M),{key:M,value:JSON.stringify({...e,discounted_amount:s.get(t.variant?.sku)})}]}});return g.length===0?o:(console.log("Syncing main product attributes:",g),await G({cartId:o.id,lines:g})||o)}catch(s){return console.error("Failed to update main product attributes:",s),o}},[G]);O(()=>{const o=S||h||T;if(!m&&i?.lineItems&&i.lineItems.length>0&&i.lineItems.every(e=>{const{is_gift:a}=c(e.customAttributes);return a})){console.log("Removing all gifts due to no active campaign"),y({cartId:i.id,lineIds:i.lineItems.map(e=>e.id)}).then(e=>{e&&(p(e),l.current={qualifyingGiftId:"none",subtotal:0,cartId:e.id})});return}if(!A||_||C||o||!m||b.editLineQuantityLoading||b.editLineCodeAmountLoading)return;const f=r?.tier.spend_sum_money.toString()??"none",s=i.subtotalPrice,g=i.id;if(l.current.qualifyingGiftId===f&&Math.abs(l.current.subtotal-s)<.01&&l.current.cartId===g)return;l.current={qualifyingGiftId:f,subtotal:s,cartId:g},(async()=>{let t={...i||{}};try{console.log("Starting cart sync transaction...");let e=!1;const a=t.lineItems.filter(n=>{const{is_gift:d,rule_id:I}=c(n.customAttributes);return d&&I===m.rule_id}),u=a.filter(n=>{const{spend_sum_money:d}=c(n.customAttributes);return d!==r?.tier.spend_sum_money});if(console.log("giftsToRemove",a,u),u.length>0){console.log("Step A: Removing incorrect gifts",u);const n=await y({cartId:i.id,lineIds:u.map(d=>d.id)});n&&(t=n,e=!0)}const R=m.rule_result?.spend_get_reward?.main_product;if(R?.variant_list?.length){console.log("Step B: Checking for main product attribute updates...");const n=await L(t,R);n!==t&&(t=n,e=!0)}const q=t.lineItems.some(n=>{const{is_gift:d,rule_id:I,spend_sum_money:w}=c(n.customAttributes);return d&&I===m.rule_id&&w===r?.tier.spend_sum_money});if(r&&!q&&r.itemsToAdd.length>0){console.log("Step C: Adding qualifying gifts",r.itemsToAdd);const n=await v({lineItems:r.itemsToAdd});n&&(t=n,e=!0)}e?(console.log("Sync transaction complete. Updating final cart state."),p(t)):console.log("Sync transaction complete. No state changes detected.")}catch(e){console.error("Cart sync transaction failed:",e)}l.current={qualifyingGiftId:"none",subtotal:0,cartId:t.id}})()},[A,i,r,m,_,C,S,h,T,p,y,v,L],{wait:1e3,trailing:!0})};export{at as useSyncCartFreeGift};
|
|
2
|
+
//# sourceMappingURL=useSyncCartFreeGift.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../../../src/cart/hooks/feature/useSyncCartFreeGift.tsx"],
|
|
4
|
+
"sourcesContent": ["import { useEffect, useRef, useCallback } from 'react'\nimport { useAddToCart } from '../basic/useAddToCart'\nimport { useRemoveCartLines } from '../basic/useRemoveCartLines'\nimport { useUpdateCartLines } from '../basic/useUpdateCartLines'\nimport { useCalcAutoFreeGift } from './useCalcAutoFreeGift' // \u5F15\u5165\u8BA1\u7B97\u578Bhook\nimport { getDiscountEnvAttributeValue } from '../../utils/autoFreeGift'\nimport { CUSTOMER_ATTRIBUTE_KEY } from '../../../shopify/utils/const'\nimport {\n AutoFreeGiftConfig,\n MainProductInfo,\n} from '../../types/autoFreeGift'\nimport { atobID } from '../../../shopify/utils/helper'\nimport { Cart, LineItem } from '../../../shopify/types/cart'\nimport { useDebounceEffect } from 'ahooks'\nimport { LoadingState } from '../../context'\n\n/**\n * [\u526F\u4F5C\u7528\u578B Hook]\n * \u8D1F\u8D23\u540C\u6B65\u8D2D\u7269\u8F66\uFF0C\u786E\u4FDD\u8D2D\u7269\u8F66\u4E2D\u7684\u8D60\u54C1\u4E0E\u8BA1\u7B97\u7ED3\u679C\u4E00\u81F4\u3002\n * \u81EA\u52A8\u6DFB\u52A0\u5E94\u5F97\u7684\u8D60\u54C1\uFF0C\u79FB\u9664\u4E0D\u7B26\u7684\u8D60\u54C1\uFF0C\u5E76\u66F4\u65B0\u4E3B\u5546\u54C1\u5C5E\u6027\u3002\n * \u8FD9\u4E2Ahook\u672C\u8EAB\u4E0D\u8FD4\u56DE\u4EFB\u4F55\u4E1C\u897F\uFF0C\u5B83\u7684\u804C\u8D23\u662F\"\u540C\u6B65\"\n */\nexport const useSyncCartFreeGift = ({\n cart,\n autoFreeGiftConfig,\n isCartLoading,\n setCart,\n loadingState,\n}: {\n cart: Cart | undefined\n autoFreeGiftConfig: AutoFreeGiftConfig\n isCartLoading: boolean\n setCart: (cart: Cart) => void\n loadingState: LoadingState\n}) => {\n // \u9632\u5FA1\u6027\u68C0\u67E5\uFF1A\u786E\u4FDDcart\u5B58\u5728\u4E14\u6709\u6548\n const isValidCart = cart && cart.id && cart.lineItems\n\n // 1. \u8BA1\u7B97\u671F\u671B\u72B6\u6001\n const {\n qualifyingGift,\n activeCampaign,\n isLoading: isCalcLoading,\n } = useCalcAutoFreeGift(cart, autoFreeGiftConfig, undefined)\n\n // 2. \u5F15\u5165\u5FC5\u8981\u7684 API hooks\n const { trigger: triggerAddToCart, isMutating: isAdding } = useAddToCart()\n const { trigger: triggerRemove, isMutating: isRemoving } =\n useRemoveCartLines()\n const { trigger: triggerUpdate, isMutating: isUpdating } =\n useUpdateCartLines()\n\n // \u4F7F\u7528 ref \u9632\u6B62\u5728\u8BA1\u7B97\u7ED3\u679C\u672A\u53D8\u5316\u65F6\u91CD\u590D\u6267\u884C\u540C\u6B65\u903B\u8F91\n const lastSyncState = useRef({\n qualifyingGiftId: '',\n subtotal: -1,\n cartId: '',\n })\n\n // 3. \u5C06 \"\u66F4\u65B0\u4E3B\u5546\u54C1\u5C5E\u6027\" \u62BD\u79BB\u6210\u4E00\u4E2A\u7EAF\u7CB9\u7684\u3001\u53EF\u590D\u7528\u7684\u5F02\u6B65\u51FD\u6570\n const updateMainProductAttributes = useCallback(\n async (\n currentCart: Cart,\n mainProduct: MainProductInfo\n ): Promise<Cart> => {\n try {\n // a. \u8BA1\u7B97\u6BCF\u4E2ASKU\u7684\u91D1\u989D\n console.log('updateMainProductAttributes time', currentCart)\n const productAmountMap = new Map<string, number>()\n currentCart.lineItems.forEach((line) => {\n const { is_gift } = getDiscountEnvAttributeValue(\n line.customAttributes as any\n )\n const amount = is_gift ? 0 : Number(line.totalAmount)\n const currentAmount = productAmountMap.get(line.variant?.sku) ?? 0\n productAmountMap.set(line.variant?.sku, currentAmount + amount)\n })\n\n // b. \u627E\u51FA\u9700\u8981\u66F4\u65B0\u7684\u884C\u9879\u76EE\n const linesToUpdate = currentCart.lineItems\n .filter((line: LineItem) => {\n const discountValue = getDiscountEnvAttributeValue(\n line?.customAttributes as any\n )\n // \u5C5E\u4E8E\u6EE1\u8D60\u89C4\u5219\u7684\u4EA7\u54C1\u5E76\u4E14attribute\u6298\u6263\u91D1\u989D\u4E0D\u4E00\u81F4\n const shouldUpdate =\n !discountValue.is_gift &&\n mainProduct.variant_list.some(\n (item) => item.variant_id === atobID(line.variantId)\n ) &&\n discountValue.discounted_amount !==\n productAmountMap.get(line.variant?.sku)\n return shouldUpdate\n })\n .map((line: LineItem) => {\n const discountValue = getDiscountEnvAttributeValue(\n line?.customAttributes as any\n )\n return {\n id: line.id,\n attributes: [\n ...(line.customAttributes as any).filter(\n (attr: any) => attr.key !== CUSTOMER_ATTRIBUTE_KEY\n ),\n {\n key: CUSTOMER_ATTRIBUTE_KEY,\n value: JSON.stringify({\n ...discountValue,\n discounted_amount: productAmountMap.get(line.variant?.sku),\n }),\n },\n ],\n }\n })\n\n if (linesToUpdate.length === 0) {\n return currentCart\n }\n\n console.log('Syncing main product attributes:', linesToUpdate)\n // c. \u6267\u884C\u66F4\u65B0\u5E76\u8FD4\u56DE\u4ECEAPI\u83B7\u53D6\u7684\u3010\u65B0\u3011\u8D2D\u7269\u8F66\u72B6\u6001\u5BF9\u8C61\n const updatedCart = await triggerUpdate({\n cartId: currentCart.id,\n lines: linesToUpdate,\n })\n return updatedCart || currentCart\n } catch (error) {\n console.error('Failed to update main product attributes:', error)\n return currentCart\n }\n },\n [triggerUpdate]\n )\n\n // 4. \u6838\u5FC3\u540C\u6B65\u903B\u8F91: \u5355\u4E00\u5165\u53E3\uFF0C\u7EDF\u4E00\u8C03\u5EA6\n useDebounceEffect(\n () => {\n const isMutating = isAdding || isRemoving || isUpdating\n\n // \u8D2D\u7269\u8F66\u53EA\u6709\u8D60\u54C1\u4E14\u6CA1\u6709\u6D3B\u52A8\u65F6\uFF0C\u5220\u9664\u8D60\u54C1\u5E76return\n if (!activeCampaign && cart?.lineItems && cart.lineItems.length > 0) {\n const onlyGifts = cart.lineItems.every((line) => {\n const { is_gift } = getDiscountEnvAttributeValue(\n line.customAttributes as any\n )\n return is_gift\n })\n if (onlyGifts) {\n console.log('Removing all gifts due to no active campaign')\n triggerRemove({\n cartId: cart.id,\n lineIds: cart.lineItems.map((item) => item.id),\n }).then((res: Cart | undefined) => {\n if (res) {\n setCart(res as Cart)\n lastSyncState.current = {\n qualifyingGiftId: 'none',\n subtotal: 0,\n cartId: res.id,\n }\n }\n })\n return\n }\n }\n // \u9632\u5FA1\uFF1A\u521D\u59CB\u6570\u636E\u672A\u52A0\u8F7D\u3001\u6B63\u5728\u64CD\u4F5C\u6216\u8BA1\u7B97\u7ED3\u679C\u672A\u53D8\u5316\u65F6\uFF0C\u4E0D\u6267\u884C\n if (\n !isValidCart ||\n isCartLoading ||\n isCalcLoading ||\n isMutating ||\n !activeCampaign ||\n loadingState.editLineQuantityLoading ||\n loadingState.editLineCodeAmountLoading\n ) {\n return\n }\n\n const qualifyingGiftId =\n qualifyingGift?.tier.spend_sum_money.toString() ?? 'none'\n const currentSubtotal = cart!.subtotalPrice\n const currentCartId = cart!.id\n\n // \u4F18\u5316\uFF1A\u53EA\u6709\u5728\u8BA1\u7B97\u7ED3\u679C\uFF08\u5E94\u5F97\u8D60\u54C1\u6216\u603B\u4EF7\uFF09\u5B9E\u9645\u53D8\u5316\u65F6\u624D\u89E6\u53D1\u540C\u6B65\n if (\n lastSyncState.current.qualifyingGiftId === qualifyingGiftId &&\n Math.abs(lastSyncState.current.subtotal - currentSubtotal) < 0.01 &&\n lastSyncState.current.cartId === currentCartId\n ) {\n return\n }\n\n // \u8BB0\u5F55\u5F53\u524D\u72B6\u6001\uFF0C\u9632\u6B62\u91CD\u5165\n lastSyncState.current = {\n qualifyingGiftId,\n subtotal: currentSubtotal,\n cartId: currentCartId,\n }\n\n // \u5B9A\u4E49\u6838\u5FC3\u5F02\u6B65\u4E8B\u52A1\n const syncCartStateTransaction = async () => {\n let tempCartState = { ...(cart || {}) } // \u521B\u5EFA\u4E00\u4E2A\u4E34\u65F6\u7684\u3001\u53EF\u53D8\u7684\u8D2D\u7269\u8F66\u72B6\u6001\u526F\u672C\n try {\n console.log('Starting cart sync transaction...')\n let hasStateChanged = false // \u6807\u8BB0\u662F\u5426\u6709API\u8C03\u7528\u5BFC\u81F4\u72B6\u6001\u53D8\u5316\n\n // --- \u6B65\u9AA4 A: \u79FB\u9664\u4E0D\u6B63\u786E\u7684\u8D60\u54C1 ---\n const giftsInCart = tempCartState.lineItems.filter((line) => {\n const { is_gift, rule_id } = getDiscountEnvAttributeValue(\n line.customAttributes as any\n )\n return is_gift && rule_id === activeCampaign.rule_id\n })\n\n const giftsToRemove = giftsInCart.filter((line) => {\n const { spend_sum_money } = getDiscountEnvAttributeValue(\n line.customAttributes as any\n )\n return spend_sum_money !== qualifyingGift?.tier.spend_sum_money\n })\n console.log('giftsToRemove', giftsInCart, giftsToRemove)\n\n if (giftsToRemove.length > 0) {\n console.log('Step A: Removing incorrect gifts', giftsToRemove)\n const removedResult = await triggerRemove({\n cartId: cart.id,\n lineIds: giftsToRemove.map((item) => item.id),\n })\n if (removedResult) {\n tempCartState = removedResult\n hasStateChanged = true\n }\n }\n\n // --- \u6B65\u9AA4 B: \u66F4\u65B0\u4E3B\u5546\u54C1\u5C5E\u6027 ---\n const mainProduct =\n activeCampaign.rule_result?.spend_get_reward?.main_product\n if (mainProduct?.variant_list?.length) {\n console.log(\n 'Step B: Checking for main product attribute updates...'\n )\n const updatedResult = await updateMainProductAttributes(\n tempCartState,\n mainProduct\n )\n\n if (updatedResult !== tempCartState) {\n tempCartState = updatedResult\n hasStateChanged = true\n }\n }\n\n // --- \u6B65\u9AA4 C: \u6DFB\u52A0\u6B63\u786E\u7684\u8D60\u54C1 ---\n const hasCorrectGift = tempCartState.lineItems.some((line) => {\n const { is_gift, rule_id, spend_sum_money } =\n getDiscountEnvAttributeValue(line.customAttributes as any)\n return (\n is_gift &&\n rule_id === activeCampaign.rule_id &&\n spend_sum_money === qualifyingGift?.tier.spend_sum_money\n )\n })\n\n if (\n qualifyingGift &&\n !hasCorrectGift &&\n qualifyingGift.itemsToAdd.length > 0\n ) {\n console.log(\n 'Step C: Adding qualifying gifts',\n qualifyingGift.itemsToAdd\n )\n const addedResult = await triggerAddToCart({\n lineItems: qualifyingGift.itemsToAdd as any,\n })\n if (addedResult) {\n tempCartState = addedResult\n hasStateChanged = true\n }\n }\n\n // --- \u6700\u7EC8\u6B65\u9AA4: \u63D0\u4EA4\u72B6\u6001 ---\n if (hasStateChanged) {\n console.log('Sync transaction complete. Updating final cart state.')\n setCart(tempCartState)\n } else {\n console.log('Sync transaction complete. No state changes detected.')\n }\n } catch (error) {\n console.error('Cart sync transaction failed:', error)\n }\n\n lastSyncState.current = {\n qualifyingGiftId: 'none',\n subtotal: 0,\n cartId: tempCartState.id,\n }\n }\n\n syncCartStateTransaction()\n },\n [\n isValidCart,\n cart,\n qualifyingGift,\n activeCampaign,\n isCartLoading,\n isCalcLoading,\n isAdding,\n isRemoving,\n isUpdating,\n setCart,\n triggerRemove,\n triggerAddToCart,\n updateMainProductAttributes,\n ],\n {\n wait: 1000,\n trailing: true,\n }\n )\n}\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": ["useRef", "useCallback", "useAddToCart", "useRemoveCartLines", "useUpdateCartLines", "useCalcAutoFreeGift", "getDiscountEnvAttributeValue", "CUSTOMER_ATTRIBUTE_KEY", "atobID", "useDebounceEffect", "useSyncCartFreeGift", "cart", "autoFreeGiftConfig", "isCartLoading", "setCart", "loadingState", "isValidCart", "qualifyingGift", "activeCampaign", "isCalcLoading", "triggerAddToCart", "isAdding", "triggerRemove", "isRemoving", "triggerUpdate", "isUpdating", "lastSyncState", "updateMainProductAttributes", "currentCart", "mainProduct", "productAmountMap", "line", "is_gift", "amount", "currentAmount", "linesToUpdate", "discountValue", "item", "attr", "error", "isMutating", "res", "qualifyingGiftId", "currentSubtotal", "currentCartId", "tempCartState", "hasStateChanged", "giftsInCart", "rule_id", "giftsToRemove", "spend_sum_money", "removedResult", "updatedResult", "hasCorrectGift", "addedResult"]
|
|
7
|
+
}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{jsx as h}from"react/jsx-runtime";import{createContext as f,useCallback as v,useContext as S,useEffect as g,useState as e}from"react";import{useSendEmailValidation as C}from"../hooks/useSendEmailValidation";const a=f({authCode:{isOpen:!1,open:()=>{},close:()=>{},isSuccess:!1,setOnSuccess:()=>{},isSendingActivateEmail:!1}}),R=()=>S(a),b=({children:c,email:r})=>{const[t,i]=e(!1),[m,u]=e(void 0),[l,x]=e(!1),[A,d]=e(null),{trigger:n,isMutating:p}=C({email:r}),o=v(async()=>{await n(void 0,{onSuccess:s=>{d(s.data?.active_token)}})},[n]);return g(()=>{t&&o()},[t,o]),h(a.Provider,{value:{authCode:{isOpen:t,open:()=>i(!0),close:()=>i(!1),isSuccess:l,setOnSuccess:s=>u(()=>s),isSendingActivateEmail:p}},children:c})};export{a as RegistrationContext,b as RegistrationProvider,R as useRegistration};
|
|
2
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../../src/registration/context/index.tsx"],
|
|
4
|
+
"sourcesContent": ["import { createContext, PropsWithChildren, useCallback, useContext, useEffect, useState } from 'react'\nimport { useSendEmailValidation } from '../hooks/useSendEmailValidation'\n\ninterface RegistrationContextType {\n authCode: {\n isOpen: boolean\n open: () => void\n close: () => void\n isSuccess: boolean\n setOnSuccess: (callback: () => void) => void\n isSendingActivateEmail: boolean\n }\n}\n\nexport const RegistrationContext = createContext<RegistrationContextType>({\n authCode: {\n isOpen: false,\n open: () => {},\n close: () => {},\n isSuccess: false,\n setOnSuccess: () => {},\n isSendingActivateEmail: false,\n },\n})\n\nexport const useRegistration = () => {\n return useContext(RegistrationContext)\n}\n\nexport const RegistrationProvider = ({ children, email }: PropsWithChildren<{ email: string }>) => {\n const [popAuthCode, setPopAuthCode] = useState(false)\n const [onAuthSuccess, setOnAuthSuccess] = useState<(() => void) | undefined>(undefined)\n const [isSuccess, setIsSuccess] = useState(false)\n const [activeToken, setActiveToken] = useState<string | null>(null)\n const { trigger, isMutating: isSendingActivateEmail } = useSendEmailValidation({ email })\n\n const fetchSendValidationEmail = useCallback(async () => {\n await trigger(undefined, {\n onSuccess: res => {\n setActiveToken(res.data?.active_token)\n },\n })\n }, [trigger])\n\n useEffect(() => {\n if (popAuthCode) {\n fetchSendValidationEmail()\n }\n }, [popAuthCode, fetchSendValidationEmail])\n\n return (\n <RegistrationContext.Provider\n value={{\n authCode: {\n isOpen: popAuthCode,\n open: () => setPopAuthCode(true),\n close: () => setPopAuthCode(false),\n isSuccess,\n setOnSuccess: (callback: () => void) => setOnAuthSuccess(() => callback),\n isSendingActivateEmail,\n },\n }}\n >\n {children}\n </RegistrationContext.Provider>\n )\n}\n"],
|
|
5
|
+
"mappings": "AAmDI,cAAAA,MAAA,oBAnDJ,OAAS,iBAAAC,EAAkC,eAAAC,EAAa,cAAAC,EAAY,aAAAC,EAAW,YAAAC,MAAgB,QAC/F,OAAS,0BAAAC,MAA8B,kCAahC,MAAMC,EAAsBN,EAAuC,CACxE,SAAU,CACR,OAAQ,GACR,KAAM,IAAM,CAAC,EACb,MAAO,IAAM,CAAC,EACd,UAAW,GACX,aAAc,IAAM,CAAC,EACrB,uBAAwB,EAC1B,CACF,CAAC,EAEYO,EAAkB,IACtBL,EAAWI,CAAmB,EAG1BE,EAAuB,CAAC,CAAE,SAAAC,EAAU,MAAAC,CAAM,IAA4C,CACjG,KAAM,CAACC,EAAaC,CAAc,EAAIR,EAAS,EAAK,EAC9C,CAACS,EAAeC,CAAgB,EAAIV,EAAmC,MAAS,EAChF,CAACW,EAAWC,CAAY,EAAIZ,EAAS,EAAK,EAC1C,CAACa,EAAaC,CAAc,EAAId,EAAwB,IAAI,EAC5D,CAAE,QAAAe,EAAS,WAAYC,CAAuB,EAAIf,EAAuB,CAAE,MAAAK,CAAM,CAAC,EAElFW,EAA2BpB,EAAY,SAAY,CACvD,MAAMkB,EAAQ,OAAW,CACvB,UAAWG,GAAO,CAChBJ,EAAeI,EAAI,MAAM,YAAY,CACvC,CACF,CAAC,CACH,EAAG,CAACH,CAAO,CAAC,EAEZ,OAAAhB,EAAU,IAAM,CACVQ,GACFU,EAAyB,CAE7B,EAAG,CAACV,EAAaU,CAAwB,CAAC,EAGxCtB,EAACO,EAAoB,SAApB,CACC,MAAO,CACL,SAAU,CACR,OAAQK,EACR,KAAM,IAAMC,EAAe,EAAI,EAC/B,MAAO,IAAMA,EAAe,EAAK,EACjC,UAAAG,EACA,aAAeQ,GAAyBT,EAAiB,IAAMS,CAAQ,EACvE,uBAAAH,CACF,CACF,EAEC,SAAAX,EACH,CAEJ",
|
|
6
|
+
"names": ["jsx", "createContext", "useCallback", "useContext", "useEffect", "useState", "useSendEmailValidation", "RegistrationContext", "useRegistration", "RegistrationProvider", "children", "email", "popAuthCode", "setPopAuthCode", "onAuthSuccess", "setOnAuthSuccess", "isSuccess", "setIsSuccess", "activeToken", "setActiveToken", "trigger", "isSendingActivateEmail", "fetchSendValidationEmail", "res", "callback"]
|
|
7
|
+
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"get-products-by-handles.d.ts","sourceRoot":"","sources":["../../../../src/shopify/fetchers/get-products-by-handles.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,qBAAqB,EAAE,cAAc,EAA2B,MAAM,kBAAkB,CAAA;AACjG,OAAO,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAA;AAE1C,MAAM,MAAM,6BAA6B,GAAG,qBAAqB,CAAC,OAAO,GAAG,qBAAqB,CAAC,OAAO,CAAA;AAEzG,MAAM,MAAM,uBAAuB,GAAG;IACpC,OAAO,EAAE,MAAM,EAAE,CAAA;CAClB,CAAA;AAED;;;;;;GAMG;AACH,eAAO,MAAM,oBAAoB,EAAE,cAAc,CAC/C,OAAO,EAAE,EACT,uBAAuB,EACvB,6BAA6B,
|
|
1
|
+
{"version":3,"file":"get-products-by-handles.d.ts","sourceRoot":"","sources":["../../../../src/shopify/fetchers/get-products-by-handles.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,qBAAqB,EAAE,cAAc,EAA2B,MAAM,kBAAkB,CAAA;AACjG,OAAO,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAA;AAE1C,MAAM,MAAM,6BAA6B,GAAG,qBAAqB,CAAC,OAAO,GAAG,qBAAqB,CAAC,OAAO,CAAA;AAEzG,MAAM,MAAM,uBAAuB,GAAG;IACpC,OAAO,EAAE,MAAM,EAAE,CAAA;CAClB,CAAA;AAED;;;;;;GAMG;AACH,eAAO,MAAM,oBAAoB,EAAE,cAAc,CAC/C,OAAO,EAAE,EACT,uBAAuB,EACvB,6BAA6B,CA2B9B,CAAA"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{getProductsByHandlesQuery as
|
|
1
|
+
import{getProductsByHandlesQuery as f}from"../queries/get-product-by-handles";import{fetchGraphqlApi as c}from"../utils/fetch-graphql-api";import{constructMetafieldIdentifiersQueryParams as u}from"../utils/helper";import{normalizeProduct as l}from"../utils/normalize/product";const I=async({options:o,config:a})=>{const{handles:e,metafieldIdentifiers:i={},comboMetafieldsNamespace:d}=o;if(!e?.length)throw new Error("Handles are required");const r=u(i,d),s=await c({query:f(e),variables:{handles:e,productMetafieldIdentifiers:r.productMetafieldIdentifiers||[],variantMetafieldIdentifiers:r.variantMetafieldIdentifiers||[]},config:a});return Object.values(s.data).filter(t=>!!t).map(t=>l(t,""))};export{I as getProductsByHandles};
|
|
2
2
|
//# sourceMappingURL=get-products-by-handles.js.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../../src/shopify/fetchers/get-products-by-handles.ts"],
|
|
4
|
-
"sourcesContent": ["import { getProductsByHandlesQuery } from '../queries/get-product-by-handles'\nimport { fetchGraphqlApi } from '../utils/fetch-graphql-api'\nimport { constructMetafieldIdentifiersQueryParams } from '../utils/helper'\nimport { normalizeProduct } from '../utils/normalize/product'\nimport { Product as ShopifyProduct } from '../gql'\nimport { HasMetafieldQueryRoot, ShopifyFetcher, ShopifyFetcherVariables } from '../types/fetcher'\nimport { Product } from '../types/product'\n\nexport type GetProductsMetafieldQueryRoot = HasMetafieldQueryRoot.Product | HasMetafieldQueryRoot.Variant\n\nexport type GetProductsByHandlesReq = {\n handles: string[]\n}\n\n/**\n * Gets products by their handles.\n *\n * @param options - The options for getting products.\n * @param config - The store configuration.\n * @returns An array of products.\n */\nexport const getProductsByHandles: ShopifyFetcher<\n Product[],\n GetProductsByHandlesReq,\n GetProductsMetafieldQueryRoot\n> = async ({ options, config }) => {\n const { handles, metafieldIdentifiers, comboMetafieldsNamespace } = options\n\n if (!handles?.length) {\n throw new Error('Handles are required')\n }\n\n const products = await fetchGraphqlApi<\n Record<string, ShopifyProduct>,\n ShopifyFetcherVariables<GetProductsByHandlesReq, GetProductsMetafieldQueryRoot>\n >({\n query: getProductsByHandlesQuery(handles),\n variables: {\n handles,\n
|
|
5
|
-
"mappings": "AAAA,OAAS,6BAAAA,MAAiC,oCAC1C,OAAS,mBAAAC,MAAuB,6BAChC,OAAS,4CAAAC,MAAgD,kBACzD,OAAS,oBAAAC,MAAwB,6BAkB1B,MAAMC,EAIT,MAAO,CAAE,QAAAC,EAAS,OAAAC,CAAO,IAAM,CACjC,KAAM,CAAE,QAAAC,EAAS,qBAAAC,
|
|
6
|
-
"names": ["getProductsByHandlesQuery", "fetchGraphqlApi", "constructMetafieldIdentifiersQueryParams", "normalizeProduct", "getProductsByHandles", "options", "config", "handles", "metafieldIdentifiers", "comboMetafieldsNamespace", "products", "item", "product"]
|
|
4
|
+
"sourcesContent": ["import { getProductsByHandlesQuery } from '../queries/get-product-by-handles'\nimport { fetchGraphqlApi } from '../utils/fetch-graphql-api'\nimport { constructMetafieldIdentifiersQueryParams } from '../utils/helper'\nimport { normalizeProduct } from '../utils/normalize/product'\nimport { Product as ShopifyProduct } from '../gql'\nimport { HasMetafieldQueryRoot, ShopifyFetcher, ShopifyFetcherVariables } from '../types/fetcher'\nimport { Product } from '../types/product'\n\nexport type GetProductsMetafieldQueryRoot = HasMetafieldQueryRoot.Product | HasMetafieldQueryRoot.Variant\n\nexport type GetProductsByHandlesReq = {\n handles: string[]\n}\n\n/**\n * Gets products by their handles.\n *\n * @param options - The options for getting products.\n * @param config - The store configuration.\n * @returns An array of products.\n */\nexport const getProductsByHandles: ShopifyFetcher<\n Product[],\n GetProductsByHandlesReq,\n GetProductsMetafieldQueryRoot\n> = async ({ options, config }) => {\n const { handles, metafieldIdentifiers = {}, comboMetafieldsNamespace } = options\n\n if (!handles?.length) {\n throw new Error('Handles are required')\n }\n\n // \u6784\u5EFA metafield identifiers\uFF0C\u786E\u4FDD\u9ED8\u8BA4\u503C\u4E3A\u7A7A\u6570\u7EC4\n const metafieldParams = constructMetafieldIdentifiersQueryParams(metafieldIdentifiers, comboMetafieldsNamespace)\n\n const products = await fetchGraphqlApi<\n Record<string, ShopifyProduct>,\n ShopifyFetcherVariables<GetProductsByHandlesReq, GetProductsMetafieldQueryRoot>\n >({\n query: getProductsByHandlesQuery(handles),\n variables: {\n handles,\n productMetafieldIdentifiers: metafieldParams.productMetafieldIdentifiers || [],\n variantMetafieldIdentifiers: metafieldParams.variantMetafieldIdentifiers || [],\n },\n config,\n })\n\n return Object.values(products.data)\n .filter(item => !!item)\n .map(product => normalizeProduct(product, '')) as Product[]\n}\n"],
|
|
5
|
+
"mappings": "AAAA,OAAS,6BAAAA,MAAiC,oCAC1C,OAAS,mBAAAC,MAAuB,6BAChC,OAAS,4CAAAC,MAAgD,kBACzD,OAAS,oBAAAC,MAAwB,6BAkB1B,MAAMC,EAIT,MAAO,CAAE,QAAAC,EAAS,OAAAC,CAAO,IAAM,CACjC,KAAM,CAAE,QAAAC,EAAS,qBAAAC,EAAuB,CAAC,EAAG,yBAAAC,CAAyB,EAAIJ,EAEzE,GAAI,CAACE,GAAS,OACZ,MAAM,IAAI,MAAM,sBAAsB,EAIxC,MAAMG,EAAkBR,EAAyCM,EAAsBC,CAAwB,EAEzGE,EAAW,MAAMV,EAGrB,CACA,MAAOD,EAA0BO,CAAO,EACxC,UAAW,CACT,QAAAA,EACA,4BAA6BG,EAAgB,6BAA+B,CAAC,EAC7E,4BAA6BA,EAAgB,6BAA+B,CAAC,CAC/E,EACA,OAAAJ,CACF,CAAC,EAED,OAAO,OAAO,OAAOK,EAAS,IAAI,EAC/B,OAAOC,GAAQ,CAAC,CAACA,CAAI,EACrB,IAAIC,GAAWV,EAAiBU,EAAS,EAAE,CAAC,CACjD",
|
|
6
|
+
"names": ["getProductsByHandlesQuery", "fetchGraphqlApi", "constructMetafieldIdentifiersQueryParams", "normalizeProduct", "getProductsByHandles", "options", "config", "handles", "metafieldIdentifiers", "comboMetafieldsNamespace", "metafieldParams", "products", "item", "product"]
|
|
7
7
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useProductsByHandles.d.ts","sourceRoot":"","sources":["../../../../src/shopify/hooks/useProductsByHandles.ts"],"names":[],"mappings":"AAGA,OAAO,EAAwB,6BAA6B,EAAE,MAAM,qCAAqC,CAAA;AACzG,OAAO,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAA;AACrD,OAAO,EAAE,uBAAuB,EAAE,MAAM,qCAAqC,CAAA;AAE7E,wBAAgB,oBAAoB,CAAC,EACnC,OAAO,EACP,
|
|
1
|
+
{"version":3,"file":"useProductsByHandles.d.ts","sourceRoot":"","sources":["../../../../src/shopify/hooks/useProductsByHandles.ts"],"names":[],"mappings":"AAGA,OAAO,EAAwB,6BAA6B,EAAE,MAAM,qCAAqC,CAAA;AACzG,OAAO,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAA;AACrD,OAAO,EAAE,uBAAuB,EAAE,MAAM,qCAAqC,CAAA;AAE7E,wBAAgB,oBAAoB,CAAC,EACnC,OAAO,EACP,oBAAyB,GAC1B,EAAE,kBAAkB,CAAC,uBAAuB,EAAE,6BAA6B,CAAC,+DAa5E"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import n from"swr";import{useHeadlessContext as i}from"../../context";import{getProductsByHandles as d}from"../fetchers/get-products-by-handles";function H({handles:o,metafieldIdentifiers:e}){const{storefrontToken:t,storeDomain:r,comboMetafieldsNamespace:s}=i();return n(o?.length?{handles:o,metafieldIdentifiers:e}:void 0,async()=>d({options:{handles:o,metafieldIdentifiers:e,comboMetafieldsNamespace:s},config:{storefrontToken:t,storeDomain:r}}))}export{H as useProductsByHandles};
|
|
1
|
+
import n from"swr";import{useHeadlessContext as i}from"../../context";import{getProductsByHandles as d}from"../fetchers/get-products-by-handles";function H({handles:o,metafieldIdentifiers:e={}}){const{storefrontToken:t,storeDomain:r,comboMetafieldsNamespace:s}=i();return n(o?.length?{handles:o,metafieldIdentifiers:e}:void 0,async()=>d({options:{handles:o,metafieldIdentifiers:e,comboMetafieldsNamespace:s},config:{storefrontToken:t,storeDomain:r}}))}export{H as useProductsByHandles};
|
|
2
2
|
//# sourceMappingURL=useProductsByHandles.js.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../../src/shopify/hooks/useProductsByHandles.ts"],
|
|
4
|
-
"sourcesContent": ["import useSWR from 'swr'\nimport { useHeadlessContext } from '../../context'\n\nimport { getProductsByHandles, GetProductsMetafieldQueryRoot } from '../fetchers/get-products-by-handles'\nimport { ShopifyHookOptions } from '../types/fetcher'\nimport { GetProductsByHandlesReq } from '../fetchers/get-products-by-handles'\n\nexport function useProductsByHandles({\n handles,\n metafieldIdentifiers,\n}: ShopifyHookOptions<GetProductsByHandlesReq, GetProductsMetafieldQueryRoot>) {\n const { storefrontToken, storeDomain, comboMetafieldsNamespace } = useHeadlessContext()\n\n return useSWR(handles?.length ? { handles, metafieldIdentifiers } : undefined, async () => {\n return getProductsByHandles({\n options: {\n handles: handles,\n metafieldIdentifiers: metafieldIdentifiers,\n comboMetafieldsNamespace,\n },\n config: { storefrontToken, storeDomain },\n })\n })\n}\n"],
|
|
5
|
-
"mappings": "AAAA,OAAOA,MAAY,MACnB,OAAS,sBAAAC,MAA0B,gBAEnC,OAAS,wBAAAC,MAA2D,sCAI7D,SAASC,EAAqB,CACnC,QAAAC,EACA,qBAAAC,
|
|
4
|
+
"sourcesContent": ["import useSWR from 'swr'\nimport { useHeadlessContext } from '../../context'\n\nimport { getProductsByHandles, GetProductsMetafieldQueryRoot } from '../fetchers/get-products-by-handles'\nimport { ShopifyHookOptions } from '../types/fetcher'\nimport { GetProductsByHandlesReq } from '../fetchers/get-products-by-handles'\n\nexport function useProductsByHandles({\n handles,\n metafieldIdentifiers = {},\n}: ShopifyHookOptions<GetProductsByHandlesReq, GetProductsMetafieldQueryRoot>) {\n const { storefrontToken, storeDomain, comboMetafieldsNamespace } = useHeadlessContext()\n\n return useSWR(handles?.length ? { handles, metafieldIdentifiers } : undefined, async () => {\n return getProductsByHandles({\n options: {\n handles: handles,\n metafieldIdentifiers: metafieldIdentifiers,\n comboMetafieldsNamespace,\n },\n config: { storefrontToken, storeDomain },\n })\n })\n}\n"],
|
|
5
|
+
"mappings": "AAAA,OAAOA,MAAY,MACnB,OAAS,sBAAAC,MAA0B,gBAEnC,OAAS,wBAAAC,MAA2D,sCAI7D,SAASC,EAAqB,CACnC,QAAAC,EACA,qBAAAC,EAAuB,CAAC,CAC1B,EAA+E,CAC7E,KAAM,CAAE,gBAAAC,EAAiB,YAAAC,EAAa,yBAAAC,CAAyB,EAAIP,EAAmB,EAEtF,OAAOD,EAAOI,GAAS,OAAS,CAAE,QAAAA,EAAS,qBAAAC,CAAqB,EAAI,OAAW,SACtEH,EAAqB,CAC1B,QAAS,CACP,QAASE,EACT,qBAAsBC,EACtB,yBAAAG,CACF,EACA,OAAQ,CAAE,gBAAAF,EAAiB,YAAAC,CAAY,CACzC,CAAC,CACF,CACH",
|
|
6
6
|
"names": ["useSWR", "useHeadlessContext", "getProductsByHandles", "useProductsByHandles", "handles", "metafieldIdentifiers", "storefrontToken", "storeDomain", "comboMetafieldsNamespace"]
|
|
7
7
|
}
|
package/dist/index.d.ts
CHANGED
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,WAAW,CAAA;AAEzB,cAAc,WAAW,CAAA;AAEzB,cAAc,QAAQ,CAAA"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,WAAW,CAAA;AAEzB,cAAc,WAAW,CAAA;AAEzB,cAAc,QAAQ,CAAA;AAEtB,cAAc,SAAS,CAAA"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { PropsWithChildren } from 'react';
|
|
2
|
+
interface RegistrationContextType {
|
|
3
|
+
authCode: {
|
|
4
|
+
isOpen: boolean;
|
|
5
|
+
open: () => void;
|
|
6
|
+
close: () => void;
|
|
7
|
+
isSuccess: boolean;
|
|
8
|
+
setOnSuccess: (callback: () => void) => void;
|
|
9
|
+
isSendingActivateEmail: boolean;
|
|
10
|
+
};
|
|
11
|
+
}
|
|
12
|
+
export declare const RegistrationContext: import("react").Context<RegistrationContextType>;
|
|
13
|
+
export declare const useRegistration: () => RegistrationContextType;
|
|
14
|
+
export declare const RegistrationProvider: ({ children, email }: PropsWithChildren<{
|
|
15
|
+
email: string;
|
|
16
|
+
}>) => import("react/jsx-runtime").JSX.Element;
|
|
17
|
+
export {};
|
|
18
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/registration/context/index.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAiB,iBAAiB,EAAgD,MAAM,OAAO,CAAA;AAGtG,UAAU,uBAAuB;IAC/B,QAAQ,EAAE;QACR,MAAM,EAAE,OAAO,CAAA;QACf,IAAI,EAAE,MAAM,IAAI,CAAA;QAChB,KAAK,EAAE,MAAM,IAAI,CAAA;QACjB,SAAS,EAAE,OAAO,CAAA;QAClB,YAAY,EAAE,CAAC,QAAQ,EAAE,MAAM,IAAI,KAAK,IAAI,CAAA;QAC5C,sBAAsB,EAAE,OAAO,CAAA;KAChC,CAAA;CACF;AAED,eAAO,MAAM,mBAAmB,kDAS9B,CAAA;AAEF,eAAO,MAAM,eAAe,+BAE3B,CAAA;AAED,eAAO,MAAM,oBAAoB,GAAI,qBAAqB,iBAAiB,CAAC;IAAE,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC,4CAqC7F,CAAA"}
|
|
@@ -1,9 +1,4 @@
|
|
|
1
|
-
|
|
2
|
-
export type RequestData = {
|
|
1
|
+
export declare function useSendEmailValidation({ email }: {
|
|
3
2
|
email: string;
|
|
4
|
-
|
|
5
|
-
};
|
|
6
|
-
export declare function useSendEmailValidation(): SWRMutationResponse<any, any, string, {
|
|
7
|
-
email: string;
|
|
8
|
-
} & any>;
|
|
3
|
+
}): import("swr/mutation").SWRMutationResponse<any, any, "send-email-validation", never>;
|
|
9
4
|
//# sourceMappingURL=useSendEmailValidation.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useSendEmailValidation.d.ts","sourceRoot":"","sources":["../../../src/registration/hooks/useSendEmailValidation.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"useSendEmailValidation.d.ts","sourceRoot":"","sources":["../../../src/registration/hooks/useSendEmailValidation.ts"],"names":[],"mappings":"AAGA,wBAAgB,sBAAsB,CAAC,EAAE,KAAK,EAAE,EAAE;IAAE,KAAK,EAAE,MAAM,CAAA;CAAE,wFAalE"}
|
|
@@ -3,7 +3,9 @@ export { addCartLines } from './add-cart-lines';
|
|
|
3
3
|
export { createCart } from './create-cart';
|
|
4
4
|
export { removeCartLines } from './remove-cart-lines';
|
|
5
5
|
export { updateCartAttributes } from './update-cart-attributes';
|
|
6
|
+
export { updateCartBuyerIdentity } from './update-cart-buyer-identity';
|
|
6
7
|
export { updateCartLines } from './update-cart-lines';
|
|
8
|
+
export { updateCartCodes } from './update-cart-codes';
|
|
7
9
|
export { getCart } from './get-cart';
|
|
8
10
|
export type { GetProductsByHandlesReq, GetProductsMetafieldQueryRoot } from './get-products-by-handles';
|
|
9
11
|
export type { GetCartReq, GetCartMetafieldQueryRoot } from './get-cart';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/shopify/fetchers/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAA;AAChE,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAA;AAC/C,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAA;AAC1C,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAA;AACrD,OAAO,EAAE,oBAAoB,EAAE,MAAM,0BAA0B,CAAA;AAC/D,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAA;AACrD,OAAO,EAAE,OAAO,EAAE,MAAM,YAAY,CAAA;AAEpC,YAAY,EAAE,uBAAuB,EAAE,6BAA6B,EAAE,MAAM,2BAA2B,CAAA;AACvG,YAAY,EAAE,UAAU,EAAE,yBAAyB,EAAE,MAAM,YAAY,CAAA"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/shopify/fetchers/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAA;AAChE,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAA;AAC/C,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAA;AAC1C,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAA;AACrD,OAAO,EAAE,oBAAoB,EAAE,MAAM,0BAA0B,CAAA;AAC/D,OAAO,EAAE,uBAAuB,EAAE,MAAM,8BAA8B,CAAA;AACtE,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAA;AACrD,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAA;AACrD,OAAO,EAAE,OAAO,EAAE,MAAM,YAAY,CAAA;AAEpC,YAAY,EAAE,uBAAuB,EAAE,6BAA6B,EAAE,MAAM,2BAA2B,CAAA;AACvG,YAAY,EAAE,UAAU,EAAE,yBAAyB,EAAE,MAAM,YAAY,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"classnames.d.ts","sourceRoot":"","sources":["../../src/utils/classnames.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,UAAU,EAAQ,MAAM,MAAM,CAAA;AAG5C,
|
|
1
|
+
{"version":3,"file":"classnames.d.ts","sourceRoot":"","sources":["../../src/utils/classnames.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,UAAU,EAAQ,MAAM,MAAM,CAAA;AAG5C,wBAAgB,UAAU,CAAC,GAAG,MAAM,EAAE,UAAU,EAAE,UAEjD"}
|
package/dist/utils/index.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AAAA,cAAc,cAAc,CAAA;AAC5B,cAAc,WAAW,CAAA
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AAAA,cAAc,cAAc,CAAA;AAC5B,cAAc,WAAW,CAAA"}
|
package/package.json
CHANGED
|
@@ -24,12 +24,15 @@ export const getProductsByHandles: ShopifyFetcher<
|
|
|
24
24
|
GetProductsByHandlesReq,
|
|
25
25
|
GetProductsMetafieldQueryRoot
|
|
26
26
|
> = async ({ options, config }) => {
|
|
27
|
-
const { handles, metafieldIdentifiers, comboMetafieldsNamespace } = options
|
|
27
|
+
const { handles, metafieldIdentifiers = {}, comboMetafieldsNamespace } = options
|
|
28
28
|
|
|
29
29
|
if (!handles?.length) {
|
|
30
30
|
throw new Error('Handles are required')
|
|
31
31
|
}
|
|
32
32
|
|
|
33
|
+
// 构建 metafield identifiers,确保默认值为空数组
|
|
34
|
+
const metafieldParams = constructMetafieldIdentifiersQueryParams(metafieldIdentifiers, comboMetafieldsNamespace)
|
|
35
|
+
|
|
33
36
|
const products = await fetchGraphqlApi<
|
|
34
37
|
Record<string, ShopifyProduct>,
|
|
35
38
|
ShopifyFetcherVariables<GetProductsByHandlesReq, GetProductsMetafieldQueryRoot>
|
|
@@ -37,7 +40,8 @@ export const getProductsByHandles: ShopifyFetcher<
|
|
|
37
40
|
query: getProductsByHandlesQuery(handles),
|
|
38
41
|
variables: {
|
|
39
42
|
handles,
|
|
40
|
-
|
|
43
|
+
productMetafieldIdentifiers: metafieldParams.productMetafieldIdentifiers || [],
|
|
44
|
+
variantMetafieldIdentifiers: metafieldParams.variantMetafieldIdentifiers || [],
|
|
41
45
|
},
|
|
42
46
|
config,
|
|
43
47
|
})
|
|
@@ -7,7 +7,7 @@ import { GetProductsByHandlesReq } from '../fetchers/get-products-by-handles'
|
|
|
7
7
|
|
|
8
8
|
export function useProductsByHandles({
|
|
9
9
|
handles,
|
|
10
|
-
metafieldIdentifiers,
|
|
10
|
+
metafieldIdentifiers = {},
|
|
11
11
|
}: ShopifyHookOptions<GetProductsByHandlesReq, GetProductsMetafieldQueryRoot>) {
|
|
12
12
|
const { storefrontToken, storeDomain, comboMetafieldsNamespace } = useHeadlessContext()
|
|
13
13
|
|
package/dist/cart/track/gtm.d.ts
DELETED
|
@@ -1,26 +0,0 @@
|
|
|
1
|
-
import { AddToCartLineItems, BuyNowLineItems, GtmParams } from '../types';
|
|
2
|
-
import { Cart } from '../../shopify/types/cart';
|
|
3
|
-
declare global {
|
|
4
|
-
interface Window {
|
|
5
|
-
dataLayer?: any[];
|
|
6
|
-
gtag?: (...args: any) => void;
|
|
7
|
-
}
|
|
8
|
-
}
|
|
9
|
-
export declare const gaTrack: (data: any) => "" | undefined;
|
|
10
|
-
export declare const addToCartGa: ({ lineItems, gtmParams, }: {
|
|
11
|
-
lineItems: AddToCartLineItems;
|
|
12
|
-
gtmParams?: GtmParams;
|
|
13
|
-
}) => void;
|
|
14
|
-
export declare const buyNowGa: ({ lineItems, gtmParams }: {
|
|
15
|
-
lineItems: BuyNowLineItems;
|
|
16
|
-
gtmParams?: GtmParams;
|
|
17
|
-
}) => void;
|
|
18
|
-
export declare const cartCheckoutGa: ({ cart, gtmParams }: {
|
|
19
|
-
cart: Cart;
|
|
20
|
-
gtmParams?: GtmParams;
|
|
21
|
-
}) => void;
|
|
22
|
-
export declare function gaNormalClick({ position, label }: {
|
|
23
|
-
position: string;
|
|
24
|
-
label: string;
|
|
25
|
-
}): void;
|
|
26
|
-
//# sourceMappingURL=gtm.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"gtm.d.ts","sourceRoot":"","sources":["../../../src/cart/track/gtm.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,kBAAkB,EAAE,eAAe,EAAE,SAAS,EAAE,MAAM,UAAU,CAAA;AACzE,OAAO,EAAE,IAAI,EAAE,MAAM,0BAA0B,CAAA;AAG/C,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,MAAM;QACd,SAAS,CAAC,EAAE,GAAG,EAAE,CAAA;QACjB,IAAI,CAAC,EAAE,CAAC,GAAG,IAAI,EAAE,GAAG,KAAK,IAAI,CAAA;KAC9B;CACF;AAED,eAAO,MAAM,OAAO,GAAI,MAAM,GAAG,mBAehC,CAAA;AAED,eAAO,MAAM,WAAW,GAAI,2BAGzB;IACD,SAAS,EAAE,kBAAkB,CAAA;IAC7B,SAAS,CAAC,EAAE,SAAS,CAAA;CACtB,SAwCA,CAAA;AAED,eAAO,MAAM,QAAQ,GAAI,0BAAoC;IAAE,SAAS,EAAE,eAAe,CAAC;IAAC,SAAS,CAAC,EAAE,SAAS,CAAA;CAAE,SAwCjH,CAAA;AAED,eAAO,MAAM,cAAc,GAAI,qBAA0B;IAAE,IAAI,EAAE,IAAI,CAAC;IAAC,SAAS,CAAC,EAAE,SAAS,CAAA;CAAE,SAyB7F,CAAA;AAED,wBAAgB,aAAa,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,EAAE;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,QAUrF"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/registration/hooks/index.ts"],"names":[],"mappings":"AAAA,cAAc,0BAA0B,CAAA;AACxC,cAAc,sBAAsB,CAAA;AACpC,cAAc,oBAAoB,CAAA"}
|
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
import { SWRMutationConfiguration } from 'swr/mutation';
|
|
2
|
-
export declare const useEmailValidation: (config?: SWRMutationConfiguration<any, {
|
|
3
|
-
type: "responseError";
|
|
4
|
-
data: any;
|
|
5
|
-
response: any;
|
|
6
|
-
}, string, {
|
|
7
|
-
token: string;
|
|
8
|
-
code: string;
|
|
9
|
-
}>) => import("swr/mutation").SWRMutationResponse<any, {
|
|
10
|
-
type: "responseError";
|
|
11
|
-
data: any;
|
|
12
|
-
response: any;
|
|
13
|
-
}, string, {
|
|
14
|
-
token: string;
|
|
15
|
-
code: string;
|
|
16
|
-
}>;
|
|
17
|
-
//# sourceMappingURL=useEmailValidation.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"useEmailValidation.d.ts","sourceRoot":"","sources":["../../../src/registration/hooks/useEmailValidation.ts"],"names":[],"mappings":"AAAA,OAAuB,EAAE,wBAAwB,EAAE,MAAM,cAAc,CAAA;AAIvE,eAAO,MAAM,kBAAkB,GAC7B,SAAS,wBAAwB,CAC/B,GAAG,EACH;IAAE,IAAI,EAAE,eAAe,CAAC;IAAC,IAAI,EAAE,GAAG,CAAC;IAAC,QAAQ,EAAE,GAAG,CAAA;CAAE,EACnD,MAAM,EACN;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAChC;UAHS,eAAe;UAAQ,GAAG;cAAY,GAAG;;WAExC,MAAM;UAAQ,MAAM;EAkBhC,CAAA"}
|
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
import { SWRResponse } from 'swr';
|
|
2
|
-
export interface Subscription {
|
|
3
|
-
preference: {
|
|
4
|
-
subscribe: boolean;
|
|
5
|
-
brand: string;
|
|
6
|
-
}[];
|
|
7
|
-
}
|
|
8
|
-
export type SubscriptionApiResponse = {
|
|
9
|
-
data: Subscription;
|
|
10
|
-
};
|
|
11
|
-
export type FetchSubscriptionResponse = SWRResponse<Subscription>;
|
|
12
|
-
export declare function useSubscriptions({ email }: {
|
|
13
|
-
email?: string;
|
|
14
|
-
}): FetchSubscriptionResponse;
|
|
15
|
-
//# sourceMappingURL=useSubscriptions.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"useSubscriptions.d.ts","sourceRoot":"","sources":["../../../src/registration/hooks/useSubscriptions.ts"],"names":[],"mappings":"AAAA,OAAe,EAAE,WAAW,EAAE,MAAM,KAAK,CAAA;AAKzC,MAAM,WAAW,YAAY;IAC3B,UAAU,EAAE;QACV,SAAS,EAAE,OAAO,CAAA;QAClB,KAAK,EAAE,MAAM,CAAA;KACd,EAAE,CAAA;CACJ;AAED,MAAM,MAAM,uBAAuB,GAAG;IAAE,IAAI,EAAE,YAAY,CAAA;CAAE,CAAA;AAC5D,MAAM,MAAM,yBAAyB,GAAG,WAAW,CAAC,YAAY,CAAC,CAAA;AAEjE,wBAAgB,gBAAgB,CAAC,EAAE,KAAK,EAAE,EAAE;IAAE,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,yBAAyB,CAoBzF"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/registration/index.ts"],"names":[],"mappings":"AACA,cAAc,SAAS,CAAA"}
|
package/dist/utils/track.d.ts
DELETED
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
declare global {
|
|
2
|
-
interface Window {
|
|
3
|
-
dataLayer?: Array<any>;
|
|
4
|
-
fbq?: (...args: any[]) => void;
|
|
5
|
-
klaviyo?: any;
|
|
6
|
-
gtag?: (...args: any[]) => void;
|
|
7
|
-
}
|
|
8
|
-
}
|
|
9
|
-
export declare const gaTrack: (data: any) => "" | undefined;
|
|
10
|
-
export declare function gaNormalClick({ position, label }: {
|
|
11
|
-
position: string;
|
|
12
|
-
label: string;
|
|
13
|
-
}): void;
|
|
14
|
-
export declare const fbq: (...args: any[]) => "" | undefined;
|
|
15
|
-
export declare const gtag: (...args: any[]) => "" | undefined;
|
|
16
|
-
//# sourceMappingURL=track.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"track.d.ts","sourceRoot":"","sources":["../../src/utils/track.ts"],"names":[],"mappings":"AAAA,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,MAAM;QACd,SAAS,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,CAAA;QACtB,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,IAAI,CAAA;QAC9B,OAAO,CAAC,EAAE,GAAG,CAAA;QACb,IAAI,CAAC,EAAE,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,IAAI,CAAA;KAChC;CACF;AAGD,eAAO,MAAM,OAAO,GAAI,MAAM,GAAG,mBAehC,CAAA;AAED,wBAAgB,aAAa,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,EAAE;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,QAUrF;AAGD,eAAO,MAAM,GAAG,GAAI,GAAG,MAAM,GAAG,EAAE,mBAOjC,CAAA;AAED,eAAO,MAAM,IAAI,GAAI,GAAG,MAAM,GAAG,EAAE,mBAOlC,CAAA"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"useCountDown.d.ts","sourceRoot":"","sources":["../../src/utils/useCountDown.tsx"],"names":[],"mappings":"AAEA,wBAAgB,YAAY,CAAC,aAAa,EAAE,MAAM,EAAE,KAAK,aAAW;;;;EAsCnE"}
|