@anker-in/shopify-react 1.3.0-beta.1 → 1.3.0-beta.11
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/hooks/index.d.mts +7 -26
- package/dist/hooks/index.d.ts +7 -26
- package/dist/hooks/index.js +227 -229
- package/dist/hooks/index.js.map +1 -1
- package/dist/hooks/index.mjs +229 -231
- package/dist/hooks/index.mjs.map +1 -1
- package/dist/index.d.mts +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.js +117 -95
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +120 -98
- package/dist/index.mjs.map +1 -1
- package/dist/provider/index.d.mts +3 -1
- package/dist/provider/index.d.ts +3 -1
- package/dist/provider/index.js +173 -7
- package/dist/provider/index.js.map +1 -1
- package/dist/provider/index.mjs +175 -9
- package/dist/provider/index.mjs.map +1 -1
- package/dist/{types-CM5QrlnE.d.mts → types-C0UyuPrG.d.mts} +10 -0
- package/dist/{types-CM5QrlnE.d.ts → types-C0UyuPrG.d.ts} +10 -0
- package/package.json +5 -5
package/dist/index.d.mts
CHANGED
|
@@ -2,7 +2,7 @@ export { AppContext, CartContextValue, CartProvider, CartProviderProps, LoadingS
|
|
|
2
2
|
export { C as CookieAdapter, a as CookieOptions, P as PerformanceAdapter, R as RouterAdapter, U as UserContextAdapter } from './types-SKDHauqk.mjs';
|
|
3
3
|
export { BrowserPerformanceAdapter, browserCartCookieAdapter, browserCookieAdapter } from './adapters/index.mjs';
|
|
4
4
|
export { AddCartLinesInput, ApplyCartCodesInput, AutoFreeGift, AutoFreeGiftCartLineInput, AutoFreeGiftConfig, AutoFreeGiftItem, AutoFreeGiftList, AutoFreeGiftMainProduct, BuyNowInput, BuyRuleType, CODE_AMOUNT_KEY, CUSTOMER_ATTRIBUTE_KEY, CUSTOMER_SCRIPT_GIFT_KEY, Config, CreateCartInput, DiscountLabel, FormattedGift, FunctionGiftResult, GeoLocationData, GetCartAttributesProps, GiftProduct, GiftProductItem, GiftTier, HasPlusMemberInCartProps, HasPlusMemberInCartResult, HasPlusMemberInLinesResult, ImageMedia, LocaleMapping, MAIN_PRODUCT_CODE, MEMBER_PRICE_ATTRIBUTE_KEY, MainProductInfo, NormalizedSearchResultItem, Options, OrderBasePriceType, OrderDiscountConfig, OrderDiscountResult, OrderDiscountType, PlusMemberContext, PlusMemberContextValue, PlusMemberProvider, PlusMemberProviderProps, PriceBasePriceType, PriceDiscountConfig, PriceDiscountType, RemoveCartCodesInput, RemoveCartLinesInput, RewardItem, RuleCondition, RuleType, SCRIPT_CODE_AMOUNT_KEY, SearchResult, SearchResultType, SelectedOptionsResult, ShippingMethodsContext, SiteInfo, SpendMoneyType, TieredDiscount, UpdateBuyerIdentityInput, UpdateCartAttributesInput, UseAllBlogsOptions, UseAllCollectionsOptions, UseAllProductsOptions, UseArticleOptions, UseArticlesInBlogOptions, UseArticlesOptions, UseAutoRemovePlusMemberInCartProps, UseAvailableDeliveryCouponResult, UseBlogOptions, UseBuyNowOptions, UseCalcGiftsFromLinesOptions, UseCalcGiftsFromLinesResult, UseCollectionOptions, UseCollectionsOptions, UseExposureOptions, UseGeoLocationOptions, UseHasPlusMemberInLinesProps, UseIntersectionOptions, UsePlusMemberVariantsOptions, UsePlusMemberVariantsResult, UsePriceOptions, UsePriceResult, UseProductOptions, UseProductsByHandlesOptions, UseSearchOptions, UseShippingMethodsOptions, UseShippingMethodsResult, UseSiteOptions, UseUpdateBuyerIdentityOptions, UseUpdateCartAttributesOptions, VariantItem, VariantMedia, VideoMedia, clearGeoLocationCache, createMockCartFromLines, currencyCodeMapping, defaultSWRMutationConfiguration, formatFunctionAutoFreeGift, formatScriptAutoFreeGift, getCachedGeoLocation, getCartBasicAttributes, getDiscountEnvAttributeValue, getGA4Attributes, getGA4AttributesAsync, getMatchedMainProductSubTotal, getOperatingSystem, getQuery, getReferralAttributes, getUserType, hasPlusMemberInCart, hasPlusMemberInLines, normalizeAddToCartLines, preCheck, safeParse, useAddCartLines, useAddToCart, useAllBlogs, useAllCollections, useAllProducts, useApplyCartCodes, useArticle, useArticles, useArticlesInBlog, useAutoRemovePlusMemberInCart, useAvailableDeliveryCoupon, useBlog, useBuyNow, useCalcAutoFreeGift, useCalcGiftsFromLines, useCalcOrderDiscount, useCartAttributes, useCartItemQuantityLimit, useCollection, useCollections, useCreateCart, useExposure, useGeoLocation, useHasPlusMemberInCart, useHasPlusMemberInLines, useIntersection, usePlusMemberCheckoutCustomAttributes, usePlusMemberContext, usePlusMemberNeedAddToCart, usePlusMemberVariants, usePrice, useProduct, useProductUrl, useProductsByHandles, useRemoveCartCodes, useRemoveCartLines, useReplaceCartPlusMember, useSearch, useSelectedOptions, useShippingMethods, useSite, useUpdateBuyerIdentity, useUpdateCartAttributes, useUpdateCartLines, useUpdateLineCodeAmountAttributes, useUpdateVariantQuery, useVariant, useVariantMedia } from './hooks/index.mjs';
|
|
5
|
-
export { g as AddToCartInput, A as AddToCartLineItem, C as BuyNowTrackConfig, p as DeliveryCustomData, D as DeliveryPlusType, v as GA4Data, G as GtmParams, P as PLUS_MEMBER_TYPE, j as PlusMemberMode, n as PlusMemberSettingsMetafields, m as PlusMemberShippingMethodConfig, l as PlusMemberShippingMethodMetafields, S as ScriptAutoFreeGiftConfig, o as SelectedPlusMemberVariant, k as ShippingMethodMode, h as UseAddToCartOptions, U as UseAutoRemoveFreeGiftsOptions, a as UseAutoRemoveFreeGiftsResult, e as UseScriptAutoFreeGiftResult, q as gaTrack, x as getGA4ClientId, z as getGA4Data, y as getGA4SessionId, d as isAnyGift, c as isBuyGetGift, i as isFunctionGift, b as isScriptGift, B as trackAddToCartFBQ, t as trackAddToCartGA, r as trackBeginCheckoutGA, E as trackBuyNowFBQ, s as trackBuyNowGA, u as useAutoRemoveFreeGifts, f as useScriptAutoFreeGift, w as waitForGtagReady } from './types-
|
|
5
|
+
export { g as AddToCartInput, A as AddToCartLineItem, C as BuyNowTrackConfig, p as DeliveryCustomData, D as DeliveryPlusType, v as GA4Data, G as GtmParams, P as PLUS_MEMBER_TYPE, j as PlusMemberMode, n as PlusMemberSettingsMetafields, m as PlusMemberShippingMethodConfig, l as PlusMemberShippingMethodMetafields, S as ScriptAutoFreeGiftConfig, o as SelectedPlusMemberVariant, k as ShippingMethodMode, h as UseAddToCartOptions, U as UseAutoRemoveFreeGiftsOptions, a as UseAutoRemoveFreeGiftsResult, e as UseScriptAutoFreeGiftResult, q as gaTrack, x as getGA4ClientId, z as getGA4Data, y as getGA4SessionId, d as isAnyGift, c as isBuyGetGift, i as isFunctionGift, b as isScriptGift, B as trackAddToCartFBQ, t as trackAddToCartGA, r as trackBeginCheckoutGA, E as trackBuyNowFBQ, s as trackBuyNowGA, u as useAutoRemoveFreeGifts, f as useScriptAutoFreeGift, w as waitForGtagReady } from './types-C0UyuPrG.mjs';
|
|
6
6
|
export * from '@anker-in/shopify-sdk';
|
|
7
7
|
import 'react';
|
|
8
8
|
import 'react/jsx-runtime';
|
package/dist/index.d.ts
CHANGED
|
@@ -2,7 +2,7 @@ export { AppContext, CartContextValue, CartProvider, CartProviderProps, LoadingS
|
|
|
2
2
|
export { C as CookieAdapter, a as CookieOptions, P as PerformanceAdapter, R as RouterAdapter, U as UserContextAdapter } from './types-SKDHauqk.js';
|
|
3
3
|
export { BrowserPerformanceAdapter, browserCartCookieAdapter, browserCookieAdapter } from './adapters/index.js';
|
|
4
4
|
export { AddCartLinesInput, ApplyCartCodesInput, AutoFreeGift, AutoFreeGiftCartLineInput, AutoFreeGiftConfig, AutoFreeGiftItem, AutoFreeGiftList, AutoFreeGiftMainProduct, BuyNowInput, BuyRuleType, CODE_AMOUNT_KEY, CUSTOMER_ATTRIBUTE_KEY, CUSTOMER_SCRIPT_GIFT_KEY, Config, CreateCartInput, DiscountLabel, FormattedGift, FunctionGiftResult, GeoLocationData, GetCartAttributesProps, GiftProduct, GiftProductItem, GiftTier, HasPlusMemberInCartProps, HasPlusMemberInCartResult, HasPlusMemberInLinesResult, ImageMedia, LocaleMapping, MAIN_PRODUCT_CODE, MEMBER_PRICE_ATTRIBUTE_KEY, MainProductInfo, NormalizedSearchResultItem, Options, OrderBasePriceType, OrderDiscountConfig, OrderDiscountResult, OrderDiscountType, PlusMemberContext, PlusMemberContextValue, PlusMemberProvider, PlusMemberProviderProps, PriceBasePriceType, PriceDiscountConfig, PriceDiscountType, RemoveCartCodesInput, RemoveCartLinesInput, RewardItem, RuleCondition, RuleType, SCRIPT_CODE_AMOUNT_KEY, SearchResult, SearchResultType, SelectedOptionsResult, ShippingMethodsContext, SiteInfo, SpendMoneyType, TieredDiscount, UpdateBuyerIdentityInput, UpdateCartAttributesInput, UseAllBlogsOptions, UseAllCollectionsOptions, UseAllProductsOptions, UseArticleOptions, UseArticlesInBlogOptions, UseArticlesOptions, UseAutoRemovePlusMemberInCartProps, UseAvailableDeliveryCouponResult, UseBlogOptions, UseBuyNowOptions, UseCalcGiftsFromLinesOptions, UseCalcGiftsFromLinesResult, UseCollectionOptions, UseCollectionsOptions, UseExposureOptions, UseGeoLocationOptions, UseHasPlusMemberInLinesProps, UseIntersectionOptions, UsePlusMemberVariantsOptions, UsePlusMemberVariantsResult, UsePriceOptions, UsePriceResult, UseProductOptions, UseProductsByHandlesOptions, UseSearchOptions, UseShippingMethodsOptions, UseShippingMethodsResult, UseSiteOptions, UseUpdateBuyerIdentityOptions, UseUpdateCartAttributesOptions, VariantItem, VariantMedia, VideoMedia, clearGeoLocationCache, createMockCartFromLines, currencyCodeMapping, defaultSWRMutationConfiguration, formatFunctionAutoFreeGift, formatScriptAutoFreeGift, getCachedGeoLocation, getCartBasicAttributes, getDiscountEnvAttributeValue, getGA4Attributes, getGA4AttributesAsync, getMatchedMainProductSubTotal, getOperatingSystem, getQuery, getReferralAttributes, getUserType, hasPlusMemberInCart, hasPlusMemberInLines, normalizeAddToCartLines, preCheck, safeParse, useAddCartLines, useAddToCart, useAllBlogs, useAllCollections, useAllProducts, useApplyCartCodes, useArticle, useArticles, useArticlesInBlog, useAutoRemovePlusMemberInCart, useAvailableDeliveryCoupon, useBlog, useBuyNow, useCalcAutoFreeGift, useCalcGiftsFromLines, useCalcOrderDiscount, useCartAttributes, useCartItemQuantityLimit, useCollection, useCollections, useCreateCart, useExposure, useGeoLocation, useHasPlusMemberInCart, useHasPlusMemberInLines, useIntersection, usePlusMemberCheckoutCustomAttributes, usePlusMemberContext, usePlusMemberNeedAddToCart, usePlusMemberVariants, usePrice, useProduct, useProductUrl, useProductsByHandles, useRemoveCartCodes, useRemoveCartLines, useReplaceCartPlusMember, useSearch, useSelectedOptions, useShippingMethods, useSite, useUpdateBuyerIdentity, useUpdateCartAttributes, useUpdateCartLines, useUpdateLineCodeAmountAttributes, useUpdateVariantQuery, useVariant, useVariantMedia } from './hooks/index.js';
|
|
5
|
-
export { g as AddToCartInput, A as AddToCartLineItem, C as BuyNowTrackConfig, p as DeliveryCustomData, D as DeliveryPlusType, v as GA4Data, G as GtmParams, P as PLUS_MEMBER_TYPE, j as PlusMemberMode, n as PlusMemberSettingsMetafields, m as PlusMemberShippingMethodConfig, l as PlusMemberShippingMethodMetafields, S as ScriptAutoFreeGiftConfig, o as SelectedPlusMemberVariant, k as ShippingMethodMode, h as UseAddToCartOptions, U as UseAutoRemoveFreeGiftsOptions, a as UseAutoRemoveFreeGiftsResult, e as UseScriptAutoFreeGiftResult, q as gaTrack, x as getGA4ClientId, z as getGA4Data, y as getGA4SessionId, d as isAnyGift, c as isBuyGetGift, i as isFunctionGift, b as isScriptGift, B as trackAddToCartFBQ, t as trackAddToCartGA, r as trackBeginCheckoutGA, E as trackBuyNowFBQ, s as trackBuyNowGA, u as useAutoRemoveFreeGifts, f as useScriptAutoFreeGift, w as waitForGtagReady } from './types-
|
|
5
|
+
export { g as AddToCartInput, A as AddToCartLineItem, C as BuyNowTrackConfig, p as DeliveryCustomData, D as DeliveryPlusType, v as GA4Data, G as GtmParams, P as PLUS_MEMBER_TYPE, j as PlusMemberMode, n as PlusMemberSettingsMetafields, m as PlusMemberShippingMethodConfig, l as PlusMemberShippingMethodMetafields, S as ScriptAutoFreeGiftConfig, o as SelectedPlusMemberVariant, k as ShippingMethodMode, h as UseAddToCartOptions, U as UseAutoRemoveFreeGiftsOptions, a as UseAutoRemoveFreeGiftsResult, e as UseScriptAutoFreeGiftResult, q as gaTrack, x as getGA4ClientId, z as getGA4Data, y as getGA4SessionId, d as isAnyGift, c as isBuyGetGift, i as isFunctionGift, b as isScriptGift, B as trackAddToCartFBQ, t as trackAddToCartGA, r as trackBeginCheckoutGA, E as trackBuyNowFBQ, s as trackBuyNowGA, u as useAutoRemoveFreeGifts, f as useScriptAutoFreeGift, w as waitForGtagReady } from './types-C0UyuPrG.js';
|
|
6
6
|
export * from '@anker-in/shopify-sdk';
|
|
7
7
|
import 'react';
|
|
8
8
|
import 'react/jsx-runtime';
|
package/dist/index.js
CHANGED
|
@@ -1163,6 +1163,26 @@ function useRemoveCartCodes(options) {
|
|
|
1163
1163
|
);
|
|
1164
1164
|
return useSWRMutation__default.default("remove-codes", removeCodes, options);
|
|
1165
1165
|
}
|
|
1166
|
+
function useUpdateCartLines(options) {
|
|
1167
|
+
const { client, locale, cartCookieAdapter } = useShopify();
|
|
1168
|
+
const { mutateCart, metafieldIdentifiers } = useCartContext();
|
|
1169
|
+
const updateLines = react.useCallback(
|
|
1170
|
+
async (_key, { arg }) => {
|
|
1171
|
+
const updatedCart = await shopifySdk.updateCartLines(client, {
|
|
1172
|
+
...arg,
|
|
1173
|
+
metafieldIdentifiers,
|
|
1174
|
+
cookieAdapter: cartCookieAdapter
|
|
1175
|
+
});
|
|
1176
|
+
if (updatedCart) {
|
|
1177
|
+
mutateCart(updatedCart);
|
|
1178
|
+
}
|
|
1179
|
+
console.log("use-update-cart-lines updatedCart", metafieldIdentifiers, updatedCart);
|
|
1180
|
+
return updatedCart;
|
|
1181
|
+
},
|
|
1182
|
+
[client, locale, cartCookieAdapter, mutateCart, metafieldIdentifiers]
|
|
1183
|
+
);
|
|
1184
|
+
return useSWRMutation__default.default("update-cart-lines", updateLines, options);
|
|
1185
|
+
}
|
|
1166
1186
|
var initSameLinesAttributes = ({
|
|
1167
1187
|
cart,
|
|
1168
1188
|
line
|
|
@@ -1295,9 +1315,13 @@ function useAutoRemoveFreeGifts(options = {}) {
|
|
|
1295
1315
|
const {
|
|
1296
1316
|
removeFunctionGifts = true,
|
|
1297
1317
|
removeScriptGifts = true,
|
|
1298
|
-
isGiftLineItem
|
|
1318
|
+
isGiftLineItem,
|
|
1319
|
+
runOnlyOnceAfterInit = false,
|
|
1320
|
+
initDelay = 500
|
|
1299
1321
|
} = options;
|
|
1300
1322
|
const [isRemoving, setIsRemoving] = react.useState(false);
|
|
1323
|
+
const [isInitialized, setIsInitialized] = react.useState(!runOnlyOnceAfterInit);
|
|
1324
|
+
const [isFinished, setIsFinished] = react.useState(false);
|
|
1301
1325
|
const { cart } = useCartContext();
|
|
1302
1326
|
const { trigger: removeCartLines2 } = useRemoveCartLines();
|
|
1303
1327
|
const giftsToRemove = react.useMemo(() => {
|
|
@@ -1334,7 +1358,29 @@ function useAutoRemoveFreeGifts(options = {}) {
|
|
|
1334
1358
|
return false;
|
|
1335
1359
|
});
|
|
1336
1360
|
}, [cart, removeFunctionGifts, removeScriptGifts, isGiftLineItem]);
|
|
1361
|
+
ahooks.useDebounceEffect(
|
|
1362
|
+
() => {
|
|
1363
|
+
if (!runOnlyOnceAfterInit || isInitialized || isFinished) {
|
|
1364
|
+
return;
|
|
1365
|
+
}
|
|
1366
|
+
if (!cart?.lineItems?.length) {
|
|
1367
|
+
return;
|
|
1368
|
+
}
|
|
1369
|
+
setIsInitialized(true);
|
|
1370
|
+
if (giftsToRemove.length === 0) {
|
|
1371
|
+
setIsFinished(true);
|
|
1372
|
+
}
|
|
1373
|
+
},
|
|
1374
|
+
[runOnlyOnceAfterInit, isInitialized, isFinished, cart?.lineItems, giftsToRemove.length],
|
|
1375
|
+
{
|
|
1376
|
+
trailing: true,
|
|
1377
|
+
wait: initDelay
|
|
1378
|
+
}
|
|
1379
|
+
);
|
|
1337
1380
|
react.useEffect(() => {
|
|
1381
|
+
if (runOnlyOnceAfterInit && (!isInitialized || isFinished)) {
|
|
1382
|
+
return;
|
|
1383
|
+
}
|
|
1338
1384
|
if (isRemoving || giftsToRemove.length === 0) {
|
|
1339
1385
|
return;
|
|
1340
1386
|
}
|
|
@@ -1348,10 +1394,16 @@ function useAutoRemoveFreeGifts(options = {}) {
|
|
|
1348
1394
|
console.error("Failed to remove free gifts:", error);
|
|
1349
1395
|
} finally {
|
|
1350
1396
|
setIsRemoving(false);
|
|
1397
|
+
if (runOnlyOnceAfterInit) {
|
|
1398
|
+
setIsFinished(true);
|
|
1399
|
+
}
|
|
1351
1400
|
}
|
|
1352
1401
|
};
|
|
1353
1402
|
performRemoval();
|
|
1354
1403
|
}, [
|
|
1404
|
+
runOnlyOnceAfterInit,
|
|
1405
|
+
isInitialized,
|
|
1406
|
+
isFinished,
|
|
1355
1407
|
isRemoving,
|
|
1356
1408
|
giftsToRemove,
|
|
1357
1409
|
removeCartLines2
|
|
@@ -2463,6 +2515,7 @@ function useAddToCart({ withTrack = true } = {}, swrOptions) {
|
|
|
2463
2515
|
const { trigger: applyCartCodes } = useApplyCartCodes();
|
|
2464
2516
|
const { trigger: removeInvalidCodes } = useRemoveCartCodes();
|
|
2465
2517
|
const { trigger: addCartLines2 } = useAddCartLines();
|
|
2518
|
+
const { trigger: updateCartLines3 } = useUpdateCartLines();
|
|
2466
2519
|
const { trigger: createCart4 } = useCreateCart({
|
|
2467
2520
|
updateCookie: true
|
|
2468
2521
|
});
|
|
@@ -2515,10 +2568,36 @@ function useAddToCart({ withTrack = true } = {}, swrOptions) {
|
|
|
2515
2568
|
// 初次加购时,就把所有 cart attributes 带上
|
|
2516
2569
|
});
|
|
2517
2570
|
} else {
|
|
2518
|
-
|
|
2519
|
-
|
|
2520
|
-
|
|
2571
|
+
const linesToUpdate = [];
|
|
2572
|
+
const linesToAddNew = lines.filter((lineToAdd) => {
|
|
2573
|
+
const existingLine = cart?.lineItems?.find(
|
|
2574
|
+
(item) => item.variant?.id === lineToAdd.merchandiseId
|
|
2575
|
+
);
|
|
2576
|
+
if (existingLine) {
|
|
2577
|
+
linesToUpdate.push({
|
|
2578
|
+
id: existingLine.id,
|
|
2579
|
+
quantity: existingLine.quantity + (lineToAdd.quantity || 1),
|
|
2580
|
+
attributes: lineToAdd.attributes || void 0
|
|
2581
|
+
});
|
|
2582
|
+
return false;
|
|
2583
|
+
}
|
|
2584
|
+
return true;
|
|
2521
2585
|
});
|
|
2586
|
+
if (linesToUpdate.length > 0) {
|
|
2587
|
+
resultCart = await updateCartLines3({
|
|
2588
|
+
cartId,
|
|
2589
|
+
lines: linesToUpdate
|
|
2590
|
+
});
|
|
2591
|
+
}
|
|
2592
|
+
if (linesToAddNew.length > 0) {
|
|
2593
|
+
resultCart = await addCartLines2({
|
|
2594
|
+
cartId: resultCart?.id || cartId,
|
|
2595
|
+
lines: linesToAddNew
|
|
2596
|
+
});
|
|
2597
|
+
}
|
|
2598
|
+
if (!resultCart) {
|
|
2599
|
+
resultCart = cart;
|
|
2600
|
+
}
|
|
2522
2601
|
console.log("npm addCartLines resultCart", resultCart);
|
|
2523
2602
|
if (resultCart && resultCart.discountCodes && resultCart.discountCodes.length > 0) {
|
|
2524
2603
|
const unapplicableCodes = resultCart.discountCodes.filter((item) => !item.applicable).map((item) => item.code);
|
|
@@ -2579,6 +2658,7 @@ function useAddToCart({ withTrack = true } = {}, swrOptions) {
|
|
|
2579
2658
|
performanceAdapter,
|
|
2580
2659
|
createCart4,
|
|
2581
2660
|
addCartLines2,
|
|
2661
|
+
updateCartLines3,
|
|
2582
2662
|
applyCartCodes,
|
|
2583
2663
|
removeInvalidCodes,
|
|
2584
2664
|
addCustomAttributes,
|
|
@@ -2588,26 +2668,6 @@ function useAddToCart({ withTrack = true } = {}, swrOptions) {
|
|
|
2588
2668
|
);
|
|
2589
2669
|
return useSWRMutation__default.default("add-to-cart", addToCart, swrOptions);
|
|
2590
2670
|
}
|
|
2591
|
-
function useUpdateCartLines(options) {
|
|
2592
|
-
const { client, locale, cartCookieAdapter } = useShopify();
|
|
2593
|
-
const { mutateCart, metafieldIdentifiers } = useCartContext();
|
|
2594
|
-
const updateLines = react.useCallback(
|
|
2595
|
-
async (_key, { arg }) => {
|
|
2596
|
-
const updatedCart = await shopifySdk.updateCartLines(client, {
|
|
2597
|
-
...arg,
|
|
2598
|
-
metafieldIdentifiers,
|
|
2599
|
-
cookieAdapter: cartCookieAdapter
|
|
2600
|
-
});
|
|
2601
|
-
if (updatedCart) {
|
|
2602
|
-
mutateCart(updatedCart);
|
|
2603
|
-
}
|
|
2604
|
-
console.log("use-update-cart-lines updatedCart", metafieldIdentifiers, updatedCart);
|
|
2605
|
-
return updatedCart;
|
|
2606
|
-
},
|
|
2607
|
-
[client, locale, cartCookieAdapter, mutateCart, metafieldIdentifiers]
|
|
2608
|
-
);
|
|
2609
|
-
return useSWRMutation__default.default("update-cart-lines", updateLines, options);
|
|
2610
|
-
}
|
|
2611
2671
|
function useUpdateCartAttributes({
|
|
2612
2672
|
mutate,
|
|
2613
2673
|
metafieldIdentifiers,
|
|
@@ -3206,8 +3266,7 @@ async function performSearch(client, locale, searchQuery, first = 20, types = ["
|
|
|
3206
3266
|
const query = (
|
|
3207
3267
|
/* GraphQL */
|
|
3208
3268
|
`
|
|
3209
|
-
query search($query: String!, $first: Int!, $types: [SearchType!])
|
|
3210
|
-
@inContext(language: $language) {
|
|
3269
|
+
query search($query: String!, $first: Int!, $types: [SearchType!]) {
|
|
3211
3270
|
search(query: $query, first: $first, types: $types, unavailableProducts: HIDE) {
|
|
3212
3271
|
totalCount
|
|
3213
3272
|
edges {
|
|
@@ -3296,76 +3355,15 @@ function useSearch(options = {}) {
|
|
|
3296
3355
|
swrOptions
|
|
3297
3356
|
);
|
|
3298
3357
|
}
|
|
3299
|
-
async function getSiteInfo(client, locale, metafieldIdentifiers) {
|
|
3300
|
-
const hasMetafields = metafieldIdentifiers && metafieldIdentifiers.length > 0;
|
|
3301
|
-
const query = (
|
|
3302
|
-
/* GraphQL */
|
|
3303
|
-
`
|
|
3304
|
-
query getSiteInfo(
|
|
3305
|
-
${hasMetafields ? "$shopMetafieldIdentifiers: [HasMetafieldsIdentifier!]!" : ""}
|
|
3306
|
-
) @inContext(language: $language) {
|
|
3307
|
-
shop {
|
|
3308
|
-
name
|
|
3309
|
-
description
|
|
3310
|
-
primaryDomain {
|
|
3311
|
-
url
|
|
3312
|
-
host
|
|
3313
|
-
}
|
|
3314
|
-
brand {
|
|
3315
|
-
logo {
|
|
3316
|
-
image {
|
|
3317
|
-
url
|
|
3318
|
-
}
|
|
3319
|
-
}
|
|
3320
|
-
colors {
|
|
3321
|
-
primary {
|
|
3322
|
-
background
|
|
3323
|
-
}
|
|
3324
|
-
secondary {
|
|
3325
|
-
background
|
|
3326
|
-
}
|
|
3327
|
-
}
|
|
3328
|
-
}
|
|
3329
|
-
${hasMetafields ? "metafields(identifiers: $shopMetafieldIdentifiers) { key value }" : ""}
|
|
3330
|
-
}
|
|
3331
|
-
}
|
|
3332
|
-
`
|
|
3333
|
-
);
|
|
3334
|
-
const variables = {};
|
|
3335
|
-
if (hasMetafields) {
|
|
3336
|
-
variables.shopMetafieldIdentifiers = metafieldIdentifiers;
|
|
3337
|
-
}
|
|
3338
|
-
const data = await client.query(query, variables);
|
|
3339
|
-
if (!data || !data.shop) {
|
|
3340
|
-
return void 0;
|
|
3341
|
-
}
|
|
3342
|
-
const shop = data.shop;
|
|
3343
|
-
const metafields = shop.metafields?.reduce((acc, mf) => {
|
|
3344
|
-
if (mf && mf.key) {
|
|
3345
|
-
acc[mf.key] = mf.value;
|
|
3346
|
-
}
|
|
3347
|
-
return acc;
|
|
3348
|
-
}, {});
|
|
3349
|
-
return {
|
|
3350
|
-
name: shop.name,
|
|
3351
|
-
description: shop.description,
|
|
3352
|
-
primaryDomain: shop.primaryDomain,
|
|
3353
|
-
brand: shop.brand ? {
|
|
3354
|
-
logo: shop.brand.logo,
|
|
3355
|
-
colors: shop.brand.colors ? {
|
|
3356
|
-
primary: shop.brand.colors.primary?.background,
|
|
3357
|
-
secondary: shop.brand.colors.secondary?.background
|
|
3358
|
-
} : void 0
|
|
3359
|
-
} : void 0,
|
|
3360
|
-
metafields
|
|
3361
|
-
};
|
|
3362
|
-
}
|
|
3363
3358
|
function useSite(options = {}) {
|
|
3364
3359
|
const { client, locale } = useShopify();
|
|
3365
3360
|
const { metafieldIdentifiers, ...swrOptions } = options;
|
|
3366
3361
|
return useSWR__default.default(
|
|
3367
3362
|
["site", locale, metafieldIdentifiers],
|
|
3368
|
-
() =>
|
|
3363
|
+
() => shopifySdk.getShop(client, {
|
|
3364
|
+
locale,
|
|
3365
|
+
metafieldIdentifiers
|
|
3366
|
+
}),
|
|
3369
3367
|
swrOptions
|
|
3370
3368
|
);
|
|
3371
3369
|
}
|
|
@@ -3549,6 +3547,16 @@ function clearGeoLocationCache(cacheKey = "geoLocation") {
|
|
|
3549
3547
|
}
|
|
3550
3548
|
}
|
|
3551
3549
|
var CartContext = react.createContext(null);
|
|
3550
|
+
function AutoRemoveGiftsHandler({
|
|
3551
|
+
options,
|
|
3552
|
+
onRemovingChange
|
|
3553
|
+
}) {
|
|
3554
|
+
const { isRemoving } = useAutoRemoveFreeGifts(options);
|
|
3555
|
+
react.useEffect(() => {
|
|
3556
|
+
onRemovingChange(isRemoving);
|
|
3557
|
+
}, [isRemoving, onRemovingChange]);
|
|
3558
|
+
return null;
|
|
3559
|
+
}
|
|
3552
3560
|
function CartProvider({
|
|
3553
3561
|
children,
|
|
3554
3562
|
// swrOptions,
|
|
@@ -3576,6 +3584,7 @@ function CartProvider({
|
|
|
3576
3584
|
});
|
|
3577
3585
|
const [scriptAutoFreeGift, setScriptAutoFreeGift] = react.useState([]);
|
|
3578
3586
|
const [functionAutoFreeGift, setFunctionAutoFreeGift] = react.useState([]);
|
|
3587
|
+
const [isAutoRemovingFreeGifts, setIsAutoRemovingFreeGifts] = react.useState(false);
|
|
3579
3588
|
const {
|
|
3580
3589
|
run: fetchCart,
|
|
3581
3590
|
data: cart,
|
|
@@ -3735,7 +3744,9 @@ function CartProvider({
|
|
|
3735
3744
|
const autoRemoveFreeGiftsOptions = react.useMemo(() => {
|
|
3736
3745
|
return {
|
|
3737
3746
|
removeFunctionGifts: !!functionAutoFreeGiftConfig,
|
|
3738
|
-
removeScriptGifts: !!scriptAutoFreeGiftConfig
|
|
3747
|
+
removeScriptGifts: !!scriptAutoFreeGiftConfig,
|
|
3748
|
+
runOnlyOnceAfterInit: true,
|
|
3749
|
+
initDelay: 500
|
|
3739
3750
|
};
|
|
3740
3751
|
}, [functionAutoFreeGiftConfig, scriptAutoFreeGiftConfig]);
|
|
3741
3752
|
const value = react.useMemo(
|
|
@@ -3768,7 +3779,8 @@ function CartProvider({
|
|
|
3768
3779
|
metafieldIdentifiers,
|
|
3769
3780
|
memberSetting,
|
|
3770
3781
|
appContext,
|
|
3771
|
-
autoRemoveFreeGiftsOptions
|
|
3782
|
+
autoRemoveFreeGiftsOptions,
|
|
3783
|
+
isAutoRemovingFreeGifts
|
|
3772
3784
|
}),
|
|
3773
3785
|
[
|
|
3774
3786
|
cart,
|
|
@@ -3797,10 +3809,20 @@ function CartProvider({
|
|
|
3797
3809
|
profile,
|
|
3798
3810
|
memberSetting,
|
|
3799
3811
|
appContext,
|
|
3800
|
-
autoRemoveFreeGiftsOptions
|
|
3812
|
+
autoRemoveFreeGiftsOptions,
|
|
3813
|
+
isAutoRemovingFreeGifts
|
|
3801
3814
|
]
|
|
3802
3815
|
);
|
|
3803
|
-
return /* @__PURE__ */ jsxRuntime.
|
|
3816
|
+
return /* @__PURE__ */ jsxRuntime.jsxs(CartContext.Provider, { value, children: [
|
|
3817
|
+
(functionAutoFreeGiftConfig || scriptAutoFreeGiftConfig) && /* @__PURE__ */ jsxRuntime.jsx(
|
|
3818
|
+
AutoRemoveGiftsHandler,
|
|
3819
|
+
{
|
|
3820
|
+
options: autoRemoveFreeGiftsOptions,
|
|
3821
|
+
onRemovingChange: setIsAutoRemovingFreeGifts
|
|
3822
|
+
}
|
|
3823
|
+
),
|
|
3824
|
+
children
|
|
3825
|
+
] });
|
|
3804
3826
|
}
|
|
3805
3827
|
function useCartContext(options) {
|
|
3806
3828
|
const context = react.useContext(CartContext);
|