@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/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-CM5QrlnE.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-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-CM5QrlnE.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-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
- resultCart = await addCartLines2({
2519
- cartId,
2520
- lines
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
- () => getSiteInfo(client, locale, metafieldIdentifiers),
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.jsx(CartContext.Provider, { value, children });
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);