@rebuy/rebuy-hydrogen 3.0.0-beta.18 → 3.0.0-beta.19
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/README.md +3 -3
- package/dist/components/Timer/Timer.d.ts +1 -1
- package/dist/components/Timer/Timer.d.ts.map +1 -1
- package/dist/components/Timer/types.d.ts +4 -0
- package/dist/components/Timer/types.d.ts.map +1 -1
- package/dist/hooks/useBFCacheReset.d.ts +7 -0
- package/dist/hooks/useBFCacheReset.d.ts.map +1 -0
- package/dist/index.css +27 -27
- package/dist/index.css.map +1 -1
- package/dist/index.js +420 -376
- package/dist/index.js.map +4 -4
- package/dist/index.mjs +193 -149
- package/dist/index.mjs.map +4 -4
- package/dist/providers/RebuyHydrogenContextProvider.d.ts.map +1 -1
- package/dist/providers/RebuyHydrogenReactContextProvider.d.ts.map +1 -1
- package/dist/types/widgets.d.ts +168 -168
- package/dist/widgets/RebuyWidget/RebuyWidget.d.ts.map +1 -1
- package/dist/widgets/RebuyWidget/WidgetContent.d.ts +1 -1
- package/dist/widgets/RebuyWidget/WidgetContent.d.ts.map +1 -1
- package/dist/widgets/RebuyWidget/types.d.ts +2 -0
- package/dist/widgets/RebuyWidget/types.d.ts.map +1 -1
- package/package.json +1 -9
package/dist/index.js
CHANGED
@@ -50,7 +50,7 @@ module.exports = __toCommonJS(index_exports);
|
|
50
50
|
|
51
51
|
// src/providers/RebuyHydrogenContextProvider.tsx
|
52
52
|
var Utilities2 = __toESM(require("@rebuy/rebuy/utilities"), 1);
|
53
|
-
var
|
53
|
+
var import_react5 = require("react");
|
54
54
|
var import_react_router = require("react-router");
|
55
55
|
|
56
56
|
// src/context/RebuyConfigContext.tsx
|
@@ -315,9 +315,26 @@ var useRebuyConfig = () => {
|
|
315
315
|
var import_react2 = require("react");
|
316
316
|
var RebuyContext = (0, import_react2.createContext)(null);
|
317
317
|
|
318
|
+
// src/hooks/useBFCacheReset.ts
|
319
|
+
var import_react3 = require("react");
|
320
|
+
var useBFCacheReset = () => {
|
321
|
+
const [resetKey, setResetKey] = (0, import_react3.useState)(() => Date.now());
|
322
|
+
(0, import_react3.useEffect)(() => {
|
323
|
+
const handlePageShow = (event) => {
|
324
|
+
if (event.persisted) {
|
325
|
+
console.log("[useBFCacheReset] B/F cache detected, triggering reset");
|
326
|
+
setResetKey(Date.now());
|
327
|
+
}
|
328
|
+
};
|
329
|
+
window.addEventListener("pageshow", handlePageShow);
|
330
|
+
return () => window.removeEventListener("pageshow", handlePageShow);
|
331
|
+
}, []);
|
332
|
+
return resetKey;
|
333
|
+
};
|
334
|
+
|
318
335
|
// src/smart-cart/context/SmartCartContext.tsx
|
319
336
|
var import_lodash_es2 = require("lodash-es");
|
320
|
-
var
|
337
|
+
var import_react4 = require("react");
|
321
338
|
var import_shallow = require("zustand/react/shallow");
|
322
339
|
|
323
340
|
// src/smart-cart/store/tieredProgressBarStore.ts
|
@@ -2136,7 +2153,7 @@ var mapHydrogenCartToStorefrontCartData = (cartSource, contextParameters) => {
|
|
2136
2153
|
|
2137
2154
|
// src/smart-cart/context/SmartCartContext.tsx
|
2138
2155
|
var import_jsx_runtime4 = require("react/jsx-runtime");
|
2139
|
-
var SmartCartContext = (0,
|
2156
|
+
var SmartCartContext = (0, import_react4.createContext)(null);
|
2140
2157
|
var mapStorefrontAttributesToHRAttributes = (attributes) => {
|
2141
2158
|
if (!attributes) return [];
|
2142
2159
|
return attributes.filter((attr) => typeof attr.key === "string" && attr.value !== null).map((attr) => ({
|
@@ -2154,12 +2171,12 @@ var SmartCartProvider = ({
|
|
2154
2171
|
shopifyDomain,
|
2155
2172
|
storefrontAccessToken
|
2156
2173
|
}) => {
|
2157
|
-
const rebuyContext = (0,
|
2158
|
-
const [isVisible, setIsVisible] = (0,
|
2159
|
-
const showCart = (0,
|
2160
|
-
const hideCart = (0,
|
2161
|
-
const toggleCart = (0,
|
2162
|
-
const { contextParameters, isHydrogenReact } = (0,
|
2174
|
+
const rebuyContext = (0, import_react4.useContext)(RebuyContext);
|
2175
|
+
const [isVisible, setIsVisible] = (0, import_react4.useState)(false);
|
2176
|
+
const showCart = (0, import_react4.useCallback)(() => setIsVisible(true), []);
|
2177
|
+
const hideCart = (0, import_react4.useCallback)(() => setIsVisible(false), []);
|
2178
|
+
const toggleCart = (0, import_react4.useCallback)(() => setIsVisible((prev) => !prev), []);
|
2179
|
+
const { contextParameters, isHydrogenReact } = (0, import_react4.useMemo)(() => {
|
2163
2180
|
if (!rebuyContext) {
|
2164
2181
|
return { contextParameters: null, isHydrogenReact: false };
|
2165
2182
|
}
|
@@ -2171,8 +2188,8 @@ var SmartCartProvider = ({
|
|
2171
2188
|
const hReactActions = contextParameters?.hydrogenReactCartActions;
|
2172
2189
|
const hReactStatus = contextParameters?.hydrogenReactCartStatus;
|
2173
2190
|
const hReactError = contextParameters?.hydrogenReactCartError;
|
2174
|
-
const prevCartData = (0,
|
2175
|
-
const mappedStorefrontCartData = (0,
|
2191
|
+
const prevCartData = (0, import_react4.useRef)(null);
|
2192
|
+
const mappedStorefrontCartData = (0, import_react4.useMemo)(() => {
|
2176
2193
|
const cartSource = hydrogenCart ?? contextParameters?.hydrogenCart;
|
2177
2194
|
if (!cartSource) {
|
2178
2195
|
rebuyDebugLog.log(
|
@@ -2198,13 +2215,13 @@ var SmartCartProvider = ({
|
|
2198
2215
|
prevCartData.current = cartData;
|
2199
2216
|
return cartData;
|
2200
2217
|
}, [hydrogenCart, contextParameters]);
|
2201
|
-
const isLoading = (0,
|
2218
|
+
const isLoading = (0, import_react4.useMemo)(() => {
|
2202
2219
|
if (isHydrogenReact && hReactStatus) {
|
2203
2220
|
return ["fetching", "creating", "updating"].includes(hReactStatus);
|
2204
2221
|
}
|
2205
2222
|
return !rebuyContext || !contextParameters;
|
2206
2223
|
}, [isHydrogenReact, hReactStatus, rebuyContext, contextParameters]);
|
2207
|
-
const error = (0,
|
2224
|
+
const error = (0, import_react4.useMemo)(() => {
|
2208
2225
|
if (isHydrogenReact && hReactError) {
|
2209
2226
|
if (typeof hReactError === "string") return hReactError;
|
2210
2227
|
if (hReactError instanceof Error) return hReactError.message;
|
@@ -2216,7 +2233,7 @@ var SmartCartProvider = ({
|
|
2216
2233
|
}
|
2217
2234
|
return null;
|
2218
2235
|
}, [isHydrogenReact, hReactError]);
|
2219
|
-
const isCartReady = (0,
|
2236
|
+
const isCartReady = (0, import_react4.useMemo)(() => !!mappedStorefrontCartData, [mappedStorefrontCartData]);
|
2220
2237
|
const tpbStoreInstance = useTieredProgressBarStore();
|
2221
2238
|
const {
|
2222
2239
|
activeBarConfig,
|
@@ -2246,23 +2263,23 @@ var SmartCartProvider = ({
|
|
2246
2263
|
"smart-cart-ctx-tpb-selector" /* SC_CTX_TPB_SELECTOR */,
|
2247
2264
|
`tpbCartSyncStatus: ${tpbCartSyncStatus}, tpbUserActionStatus: ${tpbUserActionStatus}`
|
2248
2265
|
);
|
2249
|
-
const isProcessingTPBGifts = (0,
|
2266
|
+
const isProcessingTPBGifts = (0, import_react4.useMemo)(() => {
|
2250
2267
|
return tpbCartSyncStatus === "syncing" || tpbCartSyncStatus === "awaiting_cart_update" || tpbUserActionStatus === "pending";
|
2251
2268
|
}, [tpbCartSyncStatus, tpbUserActionStatus]);
|
2252
|
-
const isCartBusy = (0,
|
2269
|
+
const isCartBusy = (0, import_react4.useMemo)(() => {
|
2253
2270
|
return isLoading || isProcessingTPBGifts;
|
2254
2271
|
}, [isLoading, isProcessingTPBGifts]);
|
2255
2272
|
rebuyDebugLog.log("smart-cart-ctx" /* SC_CTX */, "isCartBusy state:", isCartBusy);
|
2256
|
-
const progressBarSettings = (0,
|
2273
|
+
const progressBarSettings = (0, import_react4.useMemo)(() => {
|
2257
2274
|
const tpbComponentConfig = config?.components?.find((comp) => comp.type === "tiered_progress_bar");
|
2258
2275
|
return tpbComponentConfig?.settings ?? null;
|
2259
2276
|
}, [config]);
|
2260
|
-
(0,
|
2277
|
+
(0, import_react4.useEffect)(() => {
|
2261
2278
|
if (progressBarSettings && isCartReady && shopifyDomain && storefrontAccessToken) {
|
2262
2279
|
tpbInit(progressBarSettings, shopifyDomain, storefrontAccessToken);
|
2263
2280
|
}
|
2264
2281
|
}, [progressBarSettings, isCartReady, shopifyDomain, storefrontAccessToken, tpbInit]);
|
2265
|
-
(0,
|
2282
|
+
(0, import_react4.useEffect)(() => {
|
2266
2283
|
const currentTpbState = useTieredProgressBarStore.getState();
|
2267
2284
|
const newTpbIsCartReady = isCartReady;
|
2268
2285
|
if (!(0, import_lodash_es2.isEqual)(currentTpbState.cartData, mappedStorefrontCartData) || currentTpbState.isCartReady !== newTpbIsCartReady) {
|
@@ -2283,7 +2300,7 @@ var SmartCartProvider = ({
|
|
2283
2300
|
);
|
2284
2301
|
return Promise.resolve(null);
|
2285
2302
|
};
|
2286
|
-
const addItems = (0,
|
2303
|
+
const addItems = (0, import_react4.useCallback)(
|
2287
2304
|
(items) => {
|
2288
2305
|
if (isHydrogenReact && hReactActions?.linesAdd) {
|
2289
2306
|
const linesToAdd = items.map((item) => ({
|
@@ -2300,7 +2317,7 @@ var SmartCartProvider = ({
|
|
2300
2317
|
},
|
2301
2318
|
[isHydrogenReact, hReactActions]
|
2302
2319
|
);
|
2303
|
-
const addItem = (0,
|
2320
|
+
const addItem = (0, import_react4.useCallback)(
|
2304
2321
|
(variantId, attributes, quantity = 1) => {
|
2305
2322
|
const mappedAttributes = mapStorefrontAttributesToHRAttributes(attributes);
|
2306
2323
|
const item = {
|
@@ -2314,7 +2331,7 @@ var SmartCartProvider = ({
|
|
2314
2331
|
[addItems]
|
2315
2332
|
// Dependency is the refactored addItems
|
2316
2333
|
);
|
2317
|
-
const updateItems = (0,
|
2334
|
+
const updateItems = (0, import_react4.useCallback)(
|
2318
2335
|
(updates) => {
|
2319
2336
|
if (isHydrogenReact && hReactActions?.linesUpdate) {
|
2320
2337
|
const linesToUpdate = updates.map((update) => ({
|
@@ -2332,7 +2349,7 @@ var SmartCartProvider = ({
|
|
2332
2349
|
},
|
2333
2350
|
[isHydrogenReact, hReactActions]
|
2334
2351
|
);
|
2335
|
-
const updateItem = (0,
|
2352
|
+
const updateItem = (0, import_react4.useCallback)(
|
2336
2353
|
(lineId, updates) => {
|
2337
2354
|
const updatePayload = {
|
2338
2355
|
id: lineId,
|
@@ -2342,7 +2359,7 @@ var SmartCartProvider = ({
|
|
2342
2359
|
},
|
2343
2360
|
[updateItems]
|
2344
2361
|
);
|
2345
|
-
const removeItems = (0,
|
2362
|
+
const removeItems = (0, import_react4.useCallback)(
|
2346
2363
|
(lineIds) => {
|
2347
2364
|
if (isHydrogenReact && hReactActions?.linesRemove) {
|
2348
2365
|
rebuyDebugLog.log("smart-cart-ctx-h-react" /* SC_CTX_H_REACT */, "Dispatching H-React linesRemove:", lineIds);
|
@@ -2353,8 +2370,8 @@ var SmartCartProvider = ({
|
|
2353
2370
|
},
|
2354
2371
|
[isHydrogenReact, hReactActions]
|
2355
2372
|
);
|
2356
|
-
const removeItem = (0,
|
2357
|
-
const applyDiscountCodes = (0,
|
2373
|
+
const removeItem = (0, import_react4.useCallback)((lineId) => removeItems([lineId]), [removeItems]);
|
2374
|
+
const applyDiscountCodes = (0, import_react4.useCallback)(
|
2358
2375
|
(codes) => {
|
2359
2376
|
if (isHydrogenReact && hReactActions?.discountCodesUpdate) {
|
2360
2377
|
rebuyDebugLog.log("smart-cart-ctx-h-react" /* SC_CTX_H_REACT */, "Dispatching H-React discountCodesUpdate:", codes);
|
@@ -2365,7 +2382,7 @@ var SmartCartProvider = ({
|
|
2365
2382
|
},
|
2366
2383
|
[isHydrogenReact, hReactActions]
|
2367
2384
|
);
|
2368
|
-
const updateCartAttributes = (0,
|
2385
|
+
const updateCartAttributes = (0, import_react4.useCallback)(
|
2369
2386
|
(attributes) => {
|
2370
2387
|
if (isHydrogenReact && hReactActions?.cartAttributesUpdate) {
|
2371
2388
|
const attrsToUpdate = mapStorefrontAttributesToHRAttributes(attributes);
|
@@ -2377,7 +2394,7 @@ var SmartCartProvider = ({
|
|
2377
2394
|
},
|
2378
2395
|
[isHydrogenReact, hReactActions]
|
2379
2396
|
);
|
2380
|
-
const updateCartNote = (0,
|
2397
|
+
const updateCartNote = (0, import_react4.useCallback)(
|
2381
2398
|
(note) => {
|
2382
2399
|
if (isHydrogenReact && hReactActions?.noteUpdate) {
|
2383
2400
|
const noteToUpdate = note ?? "";
|
@@ -2389,7 +2406,7 @@ var SmartCartProvider = ({
|
|
2389
2406
|
},
|
2390
2407
|
[isHydrogenReact, hReactActions]
|
2391
2408
|
);
|
2392
|
-
const checkout = (0,
|
2409
|
+
const checkout = (0, import_react4.useCallback)(() => {
|
2393
2410
|
const checkoutUrl = mappedStorefrontCartData?.checkoutUrl;
|
2394
2411
|
if (checkoutUrl) {
|
2395
2412
|
window.location.href = checkoutUrl;
|
@@ -2401,7 +2418,7 @@ var SmartCartProvider = ({
|
|
2401
2418
|
);
|
2402
2419
|
}
|
2403
2420
|
}, [mappedStorefrontCartData]);
|
2404
|
-
(0,
|
2421
|
+
(0, import_react4.useEffect)(() => {
|
2405
2422
|
const conditions = {
|
2406
2423
|
activeBarConfigPresent: !!activeBarConfig,
|
2407
2424
|
cartDataIsEqual: (0, import_lodash_es2.isEqual)(tpbInternalCartData, mappedStorefrontCartData),
|
@@ -2438,20 +2455,20 @@ var SmartCartProvider = ({
|
|
2438
2455
|
tpbSyncCartGifts,
|
2439
2456
|
mappedStorefrontCartData
|
2440
2457
|
]);
|
2441
|
-
const getItemCount = (0,
|
2442
|
-
const getCartSubtotal = (0,
|
2458
|
+
const getItemCount = (0, import_react4.useCallback)(() => mappedStorefrontCartData?.totalQuantity ?? 0, [mappedStorefrontCartData]);
|
2459
|
+
const getCartSubtotal = (0, import_react4.useCallback)(
|
2443
2460
|
() => mappedStorefrontCartData?.cost?.subtotalAmount?.amount ?? "0.00",
|
2444
2461
|
[mappedStorefrontCartData]
|
2445
2462
|
);
|
2446
|
-
const getComponentConfigByType = (0,
|
2463
|
+
const getComponentConfigByType = (0, import_react4.useCallback)(
|
2447
2464
|
(type) => config?.components?.find((comp) => comp.type === type),
|
2448
2465
|
[config?.components]
|
2449
2466
|
);
|
2450
|
-
const getComponentConfigById = (0,
|
2467
|
+
const getComponentConfigById = (0, import_react4.useCallback)(
|
2451
2468
|
(id) => config?.components?.find((comp) => comp.component_id === id),
|
2452
2469
|
[config?.components]
|
2453
2470
|
);
|
2454
|
-
const combinedValue = (0,
|
2471
|
+
const combinedValue = (0, import_react4.useMemo)(
|
2455
2472
|
() => ({
|
2456
2473
|
addItem,
|
2457
2474
|
addItems,
|
@@ -2525,7 +2542,7 @@ var SmartCartProvider = ({
|
|
2525
2542
|
};
|
2526
2543
|
var warningLogged = false;
|
2527
2544
|
var useSmartCart = () => {
|
2528
|
-
const context = (0,
|
2545
|
+
const context = (0, import_react4.useContext)(SmartCartContext);
|
2529
2546
|
if (context === void 0 || context === null) {
|
2530
2547
|
if (!warningLogged) {
|
2531
2548
|
console.warn(
|
@@ -2776,6 +2793,7 @@ var RebuyHydrogenContext = ({
|
|
2776
2793
|
shop,
|
2777
2794
|
sourceHydrogenCart
|
2778
2795
|
}) => {
|
2796
|
+
const resetKey = useBFCacheReset();
|
2779
2797
|
const {
|
2780
2798
|
apiKey,
|
2781
2799
|
fetchError: configFetchError,
|
@@ -2784,11 +2802,11 @@ var RebuyHydrogenContext = ({
|
|
2784
2802
|
shopDomain: configShopDomain,
|
2785
2803
|
smartCartConfig
|
2786
2804
|
} = useRebuyConfig();
|
2787
|
-
const warningLogged2 = (0,
|
2805
|
+
const warningLogged2 = (0, import_react5.useRef)(false);
|
2788
2806
|
const location = (0, import_react_router.useLocation)();
|
2789
2807
|
const queryObject = Utilities2.queryStringToObject(location.search);
|
2790
2808
|
const windowUrl = `${shop}${location.pathname}${location.search}`;
|
2791
|
-
const contextParameters = (0,
|
2809
|
+
const contextParameters = (0, import_react5.useMemo)(
|
2792
2810
|
() => createContextParameters({
|
2793
2811
|
cacheKey: rebuyConfig?.shop?.cache_key,
|
2794
2812
|
isHydrogenReact: false,
|
@@ -2798,8 +2816,8 @@ var RebuyHydrogenContext = ({
|
|
2798
2816
|
}),
|
2799
2817
|
[rebuyConfig?.shop?.cache_key, windowUrl, queryObject, sourceHydrogenCart]
|
2800
2818
|
);
|
2801
|
-
const defaultContextValue = (0,
|
2802
|
-
const contextValue = (0,
|
2819
|
+
const defaultContextValue = (0, import_react5.useMemo)(() => null, []);
|
2820
|
+
const contextValue = (0, import_react5.useMemo)(
|
2803
2821
|
() => configLoadingStatus === "success" && rebuyConfig ? { contextParameters } : defaultContextValue,
|
2804
2822
|
[configLoadingStatus, rebuyConfig, contextParameters, defaultContextValue]
|
2805
2823
|
);
|
@@ -2817,7 +2835,8 @@ var RebuyHydrogenContext = ({
|
|
2817
2835
|
shopifyDomain: shopifyDomainForSmartCart,
|
2818
2836
|
storefrontAccessToken,
|
2819
2837
|
children
|
2820
|
-
}
|
2838
|
+
},
|
2839
|
+
`smart-cart-${resetKey}`
|
2821
2840
|
) : /* @__PURE__ */ (0, import_jsx_runtime5.jsxs)(import_jsx_runtime5.Fragment, { children: [
|
2822
2841
|
enableSmartCart && !hasAllSmartCartPrerequisites && !warningLogged2.current && (() => {
|
2823
2842
|
console.warn(
|
@@ -2875,7 +2894,7 @@ var RebuyHydrogenContextProvider = ({
|
|
2875
2894
|
// src/providers/RebuyHydrogenReactContextProvider.tsx
|
2876
2895
|
var Utilities3 = __toESM(require("@rebuy/rebuy/utilities"), 1);
|
2877
2896
|
var import_hydrogen_react = require("@shopify/hydrogen-react");
|
2878
|
-
var
|
2897
|
+
var import_react6 = require("react");
|
2879
2898
|
var import_react_router2 = require("react-router");
|
2880
2899
|
|
2881
2900
|
// src/queries/cart.queries.ts
|
@@ -3419,6 +3438,7 @@ var RebuyHydrogenReactContext = ({
|
|
3419
3438
|
publicPrimaryDomain,
|
3420
3439
|
publicStorefrontToken
|
3421
3440
|
}) => {
|
3441
|
+
const resetKey = useBFCacheReset();
|
3422
3442
|
const {
|
3423
3443
|
apiKey,
|
3424
3444
|
fetchError: configFetchError,
|
@@ -3426,7 +3446,7 @@ var RebuyHydrogenReactContext = ({
|
|
3426
3446
|
rebuyConfig,
|
3427
3447
|
shopDomain: configShopDomain
|
3428
3448
|
} = useRebuyConfig();
|
3429
|
-
const warningLogged2 = (0,
|
3449
|
+
const warningLogged2 = (0, import_react6.useRef)(false);
|
3430
3450
|
const location = (0, import_react_router2.useLocation)();
|
3431
3451
|
const queryObject = Utilities3.queryStringToObject(location.search);
|
3432
3452
|
const windowUrl = publicPrimaryDomain ? `${publicPrimaryDomain}${location.pathname}${location.search}` : "";
|
@@ -3442,7 +3462,7 @@ var RebuyHydrogenReactContext = ({
|
|
3442
3462
|
status: hydrogenReactCartStatus,
|
3443
3463
|
...hydrogenReactCartData
|
3444
3464
|
} = (0, import_hydrogen_react.useCart)();
|
3445
|
-
const hydrogenReactCartActions = (0,
|
3465
|
+
const hydrogenReactCartActions = (0, import_react6.useMemo)(
|
3446
3466
|
() => ({
|
3447
3467
|
cartAttributesUpdate,
|
3448
3468
|
cartCreate,
|
@@ -3454,7 +3474,7 @@ var RebuyHydrogenReactContext = ({
|
|
3454
3474
|
}),
|
3455
3475
|
[cartAttributesUpdate, cartCreate, discountCodesUpdate, linesAdd, linesRemove, linesUpdate, noteUpdate]
|
3456
3476
|
);
|
3457
|
-
const contextParameters = (0,
|
3477
|
+
const contextParameters = (0, import_react6.useMemo)(() => {
|
3458
3478
|
const propsForParamCreation = {
|
3459
3479
|
cacheKey: rebuyConfig?.shop?.cache_key,
|
3460
3480
|
hydrogenReactCartActions,
|
@@ -3476,8 +3496,8 @@ var RebuyHydrogenReactContext = ({
|
|
3476
3496
|
hydrogenReactCartStatus,
|
3477
3497
|
hydrogenReactCartError
|
3478
3498
|
]);
|
3479
|
-
const defaultContextValue = (0,
|
3480
|
-
const rebuyContextValue = (0,
|
3499
|
+
const defaultContextValue = (0, import_react6.useMemo)(() => ({ contextParameters: {} }), []);
|
3500
|
+
const rebuyContextValue = (0, import_react6.useMemo)(
|
3481
3501
|
() => configLoadingStatus === "success" && rebuyConfig ? { contextParameters } : defaultContextValue,
|
3482
3502
|
[configLoadingStatus, rebuyConfig, contextParameters, defaultContextValue]
|
3483
3503
|
);
|
@@ -3486,7 +3506,7 @@ var RebuyHydrogenReactContext = ({
|
|
3486
3506
|
const shopifyDomainForSmartCart = configShopDomain || rebuyConfig?.shop?.domain || "";
|
3487
3507
|
const storefrontAccessToken = publicStorefrontToken || rebuyConfig?.shop?.storefront_access_token || "";
|
3488
3508
|
const hasAllSmartCartPrerequisites = enableSmartCart && configLoadingStatus === "success" && !!rebuyConfig && !!(smartCartConfig && apiKey && shopifyDomainForSmartCart && storefrontAccessToken);
|
3489
|
-
(0,
|
3509
|
+
(0, import_react6.useEffect)(() => {
|
3490
3510
|
if (configLoadingStatus === "loading") return;
|
3491
3511
|
const smartCartDetails = enableSmartCart ? {
|
3492
3512
|
hasAllSmartCartPrerequisites,
|
@@ -3523,7 +3543,8 @@ var RebuyHydrogenReactContext = ({
|
|
3523
3543
|
shopifyDomain: shopifyDomainForSmartCart,
|
3524
3544
|
storefrontAccessToken,
|
3525
3545
|
children
|
3526
|
-
}
|
3546
|
+
},
|
3547
|
+
`smart-cart-react-${resetKey}`
|
3527
3548
|
) : /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)(import_jsx_runtime6.Fragment, { children: [
|
3528
3549
|
enableSmartCart && !hasAllSmartCartPrerequisites && !warningLogged2.current && (() => {
|
3529
3550
|
console.warn(
|
@@ -3576,7 +3597,7 @@ var RebuyHydrogenReactContextProvider = ({
|
|
3576
3597
|
publicStorefrontToken,
|
3577
3598
|
storefrontApiVersion = "2025-01"
|
3578
3599
|
}) => {
|
3579
|
-
const adaptedCallbacks = (0,
|
3600
|
+
const adaptedCallbacks = (0, import_react6.useMemo)(
|
3580
3601
|
() => ({
|
3581
3602
|
onAttributesUpdate: onAttributesUpdate ? () => onAttributesUpdate() : void 0,
|
3582
3603
|
onAttributesUpdateComplete: onAttributesUpdateComplete ? () => onAttributesUpdateComplete() : void 0,
|
@@ -3662,14 +3683,14 @@ var RebuyHydrogenReactContextProvider = ({
|
|
3662
3683
|
|
3663
3684
|
// src/smart-cart/components/SmartCartContainer/SmartCartContainer.tsx
|
3664
3685
|
var import_clsx13 = __toESM(require("clsx"), 1);
|
3665
|
-
var
|
3686
|
+
var import_react33 = __toESM(require("react"), 1);
|
3666
3687
|
|
3667
3688
|
// src/smart-cart/components/_Layouts/AnchorSlot.tsx
|
3668
|
-
var
|
3689
|
+
var import_react29 = require("react");
|
3669
3690
|
|
3670
3691
|
// src/smart-cart/components/AnnouncementBar/AnnouncementBar.tsx
|
3671
3692
|
var import_dompurify = __toESM(require("dompurify"), 1);
|
3672
|
-
var
|
3693
|
+
var import_react7 = __toESM(require("react"), 1);
|
3673
3694
|
|
3674
3695
|
// src/smart-cart/components/ScreenReaderText/ScreenReaderText.tsx
|
3675
3696
|
var import_jsx_runtime7 = require("react/jsx-runtime");
|
@@ -3683,17 +3704,17 @@ var AnnouncementBar_default = result;
|
|
3683
3704
|
var import_jsx_runtime8 = require("react/jsx-runtime");
|
3684
3705
|
var AUTOPLAY_INTERVAL = 5e3;
|
3685
3706
|
var DRAG_THRESHOLD = 50;
|
3686
|
-
var AnnouncementBar =
|
3707
|
+
var AnnouncementBar = import_react7.default.memo(({ componentConfig }) => {
|
3687
3708
|
const { isVisible } = useSmartCart();
|
3688
|
-
const [currentSlideIndex, setCurrentSlideIndex] = (0,
|
3689
|
-
const [isPaused, setIsPaused] = (0,
|
3690
|
-
const [isFocused, setIsFocused] = (0,
|
3691
|
-
const intervalRef = (0,
|
3692
|
-
const containerRef = (0,
|
3693
|
-
const [isDragging, setIsDragging] = (0,
|
3694
|
-
const [startX, setStartX] = (0,
|
3695
|
-
const [dragOffset, setDragOffset] = (0,
|
3696
|
-
const sanitizedMessages = (0,
|
3709
|
+
const [currentSlideIndex, setCurrentSlideIndex] = (0, import_react7.useState)(0);
|
3710
|
+
const [isPaused, setIsPaused] = (0, import_react7.useState)(false);
|
3711
|
+
const [isFocused, setIsFocused] = (0, import_react7.useState)(false);
|
3712
|
+
const intervalRef = (0, import_react7.useRef)(null);
|
3713
|
+
const containerRef = (0, import_react7.useRef)(null);
|
3714
|
+
const [isDragging, setIsDragging] = (0, import_react7.useState)(false);
|
3715
|
+
const [startX, setStartX] = (0, import_react7.useState)(0);
|
3716
|
+
const [dragOffset, setDragOffset] = (0, import_react7.useState)(0);
|
3717
|
+
const sanitizedMessages = (0, import_react7.useMemo)(() => {
|
3697
3718
|
const settings = componentConfig?.settings;
|
3698
3719
|
const rawMessages = settings?.messages ?? [];
|
3699
3720
|
if (!Array.isArray(rawMessages)) {
|
@@ -3704,13 +3725,13 @@ var AnnouncementBar = import_react6.default.memo(({ componentConfig }) => {
|
|
3704
3725
|
}, [componentConfig]);
|
3705
3726
|
const messageCount = sanitizedMessages.length;
|
3706
3727
|
const isCarousel = messageCount >= 2;
|
3707
|
-
const clearTimer = (0,
|
3728
|
+
const clearTimer = (0, import_react7.useCallback)(() => {
|
3708
3729
|
if (intervalRef.current) {
|
3709
3730
|
clearInterval(intervalRef.current);
|
3710
3731
|
intervalRef.current = null;
|
3711
3732
|
}
|
3712
3733
|
}, []);
|
3713
|
-
const startTimer = (0,
|
3734
|
+
const startTimer = (0, import_react7.useCallback)(() => {
|
3714
3735
|
clearTimer();
|
3715
3736
|
if (!isPaused && isVisible && isCarousel && !isFocused && !isDragging) {
|
3716
3737
|
intervalRef.current = setInterval(() => {
|
@@ -3718,17 +3739,17 @@ var AnnouncementBar = import_react6.default.memo(({ componentConfig }) => {
|
|
3718
3739
|
}, AUTOPLAY_INTERVAL);
|
3719
3740
|
}
|
3720
3741
|
}, [clearTimer, isPaused, isVisible, isCarousel, messageCount, isFocused, isDragging]);
|
3721
|
-
const goToSlide = (0,
|
3742
|
+
const goToSlide = (0, import_react7.useCallback)(
|
3722
3743
|
(index) => {
|
3723
3744
|
setCurrentSlideIndex((index + messageCount) % messageCount);
|
3724
3745
|
},
|
3725
3746
|
[messageCount]
|
3726
3747
|
);
|
3727
|
-
(0,
|
3748
|
+
(0, import_react7.useEffect)(() => {
|
3728
3749
|
startTimer();
|
3729
3750
|
return clearTimer;
|
3730
3751
|
}, [startTimer, isPaused, isVisible, isFocused]);
|
3731
|
-
(0,
|
3752
|
+
(0, import_react7.useEffect)(() => {
|
3732
3753
|
if (!isVisible) {
|
3733
3754
|
setCurrentSlideIndex(0);
|
3734
3755
|
setIsPaused(false);
|
@@ -3864,7 +3885,7 @@ AnnouncementBar.displayName = "AnnouncementBar";
|
|
3864
3885
|
|
3865
3886
|
// src/smart-cart/components/CartItem/CartItem.tsx
|
3866
3887
|
var import_clsx = __toESM(require("clsx"), 1);
|
3867
|
-
var
|
3888
|
+
var import_react9 = require("react");
|
3868
3889
|
var import_react_router4 = require("react-router");
|
3869
3890
|
|
3870
3891
|
// src/components/RebuyLink/RebuyLink.tsx
|
@@ -3875,7 +3896,7 @@ var RebuyLink = ({ ariaLabel, children, className, handle, onClick, role = "link
|
|
3875
3896
|
};
|
3876
3897
|
|
3877
3898
|
// src/smart-cart/hooks/useCartItemFeatures.ts
|
3878
|
-
var
|
3899
|
+
var import_react8 = require("react");
|
3879
3900
|
|
3880
3901
|
// src/smart-cart/utils/imageUtils.ts
|
3881
3902
|
var sizeImage = (src, size) => {
|
@@ -3904,107 +3925,107 @@ var mapCartAttributes = (attributes) => {
|
|
3904
3925
|
}));
|
3905
3926
|
};
|
3906
3927
|
var useCartItemFeatures = ({ config, line }) => {
|
3907
|
-
const [isBundleExpanded, setIsBundleExpanded] = (0,
|
3908
|
-
const productTitle = (0,
|
3909
|
-
const variantTitle = (0,
|
3928
|
+
const [isBundleExpanded, setIsBundleExpanded] = (0, import_react8.useState)(false);
|
3929
|
+
const productTitle = (0, import_react8.useMemo)(() => line.merchandise.product.title, [line.merchandise.product.title]);
|
3930
|
+
const variantTitle = (0, import_react8.useMemo)(
|
3910
3931
|
() => line.merchandise.title !== "Default Title" ? line.merchandise.title : null,
|
3911
3932
|
[line.merchandise.title]
|
3912
3933
|
);
|
3913
|
-
const itemUrl = (0,
|
3914
|
-
const imageAltText = (0,
|
3915
|
-
const imageUrl = (0,
|
3916
|
-
const linkLabel = (0,
|
3917
|
-
const tagCssClasses = (0,
|
3918
|
-
const attributeCssClasses = (0,
|
3919
|
-
const baseCssClasses = (0,
|
3934
|
+
const itemUrl = (0, import_react8.useMemo)(() => getItemURL(line), [line]);
|
3935
|
+
const imageAltText = (0, import_react8.useMemo)(() => getItemImageAlt(line), [line]);
|
3936
|
+
const imageUrl = (0, import_react8.useMemo)(() => sizeImage(line.merchandise.image?.url, "120x120"), [line.merchandise.image?.url]);
|
3937
|
+
const linkLabel = (0, import_react8.useMemo)(() => getItemLinkLabel(line), [line]);
|
3938
|
+
const tagCssClasses = (0, import_react8.useMemo)(() => getItemProductTagsClasses(line), [line]);
|
3939
|
+
const attributeCssClasses = (0, import_react8.useMemo)(() => getItemAttributeClasses(line), [line]);
|
3940
|
+
const baseCssClasses = (0, import_react8.useMemo)(
|
3920
3941
|
() => `product-${line.merchandise.product.handle}`,
|
3921
3942
|
[line.merchandise.product.handle]
|
3922
3943
|
);
|
3923
|
-
const pricing = (0,
|
3924
|
-
const deliveryFrequency = (0,
|
3925
|
-
const standardProperties = (0,
|
3926
|
-
const discountProperties = (0,
|
3927
|
-
const allVisibleProperties = (0,
|
3944
|
+
const pricing = (0, import_react8.useMemo)(() => calculatePricingData(line), [line]);
|
3945
|
+
const deliveryFrequency = (0, import_react8.useMemo)(() => getItemDeliveryFrequency(line), [line]);
|
3946
|
+
const standardProperties = (0, import_react8.useMemo)(() => getVisibleItemProperties(line), [line]);
|
3947
|
+
const discountProperties = (0, import_react8.useMemo)(() => getDiscountProperties(line), [line]);
|
3948
|
+
const allVisibleProperties = (0, import_react8.useMemo)(
|
3928
3949
|
() => [...standardProperties, ...discountProperties],
|
3929
3950
|
[standardProperties, discountProperties]
|
3930
3951
|
);
|
3931
|
-
const hasVisibleProperties = (0,
|
3952
|
+
const hasVisibleProperties = (0, import_react8.useMemo)(
|
3932
3953
|
() => allVisibleProperties.length > 0 || !!deliveryFrequency,
|
3933
3954
|
[allVisibleProperties, deliveryFrequency]
|
3934
3955
|
);
|
3935
|
-
const isBundleParent = (0,
|
3936
|
-
const bundleItemCount = (0,
|
3937
|
-
const shouldHideBundleOptions = (0,
|
3938
|
-
const showBundleToggle = (0,
|
3956
|
+
const isBundleParent = (0, import_react8.useMemo)(() => itemIsBundle(line), [line]);
|
3957
|
+
const bundleItemCount = (0, import_react8.useMemo)(() => isBundleParent ? getItemBundleLength(line) : 0, [isBundleParent, line]);
|
3958
|
+
const shouldHideBundleOptions = (0, import_react8.useMemo)(() => isBundleParent && hideBundleOptions(line), [isBundleParent, line]);
|
3959
|
+
const showBundleToggle = (0, import_react8.useMemo)(
|
3939
3960
|
() => isBundleParent && !shouldHideBundleOptions && bundleItemCount > 0,
|
3940
3961
|
[isBundleParent, shouldHideBundleOptions, bundleItemCount]
|
3941
3962
|
);
|
3942
|
-
const shouldHideQuantitySelector = (0,
|
3963
|
+
const shouldHideQuantitySelector = (0, import_react8.useMemo)(() => {
|
3943
3964
|
if (isTieredProgressBarGiftItem(line)) return true;
|
3944
3965
|
if (isCartItemHiddenByStandardLogic(line)) return true;
|
3945
3966
|
return false;
|
3946
3967
|
}, [line]);
|
3947
|
-
const isBmsmGloballyEnabled = (0,
|
3948
|
-
const isBmsmEligible = (0,
|
3968
|
+
const isBmsmGloballyEnabled = (0, import_react8.useMemo)(() => isBMSMEnabled(config), [config]);
|
3969
|
+
const isBmsmEligible = (0, import_react8.useMemo)(
|
3949
3970
|
() => isBmsmGloballyEnabled && itemHasBMSM(line, config),
|
3950
3971
|
[isBmsmGloballyEnabled, line, config]
|
3951
3972
|
);
|
3952
|
-
const bmsmNotAtFinalTier = (0,
|
3973
|
+
const bmsmNotAtFinalTier = (0, import_react8.useMemo)(
|
3953
3974
|
() => isBmsmEligible && bMSMFinalTierNotReached(line, config),
|
3954
3975
|
[isBmsmEligible, line, config]
|
3955
3976
|
);
|
3956
|
-
const isBmsmEnabledAndApplicable = (0,
|
3977
|
+
const isBmsmEnabledAndApplicable = (0, import_react8.useMemo)(
|
3957
3978
|
() => isBmsmEligible && bmsmNotAtFinalTier,
|
3958
3979
|
[isBmsmEligible, bmsmNotAtFinalTier]
|
3959
3980
|
);
|
3960
|
-
const isBmsmButtonMode = (0,
|
3981
|
+
const isBmsmButtonMode = (0, import_react8.useMemo)(
|
3961
3982
|
() => isBmsmEnabledAndApplicable && hasBMSMButtons(config),
|
3962
3983
|
[isBmsmEnabledAndApplicable, config]
|
3963
3984
|
);
|
3964
|
-
const bmsmTiers = (0,
|
3985
|
+
const bmsmTiers = (0, import_react8.useMemo)(
|
3965
3986
|
() => isBmsmEnabledAndApplicable ? getBMSMTiers(config) : [],
|
3966
3987
|
[isBmsmEnabledAndApplicable, config]
|
3967
3988
|
);
|
3968
|
-
const bmsmNextApplicableTiers = (0,
|
3989
|
+
const bmsmNextApplicableTiers = (0, import_react8.useMemo)(
|
3969
3990
|
() => isBmsmButtonMode ? bmsmTiers.filter((tier) => tier.quantity && tier.quantity > line.quantity).sort((a, b) => (a.quantity ?? 0) - (b.quantity ?? 0)) : [],
|
3970
3991
|
[isBmsmButtonMode, bmsmTiers, line.quantity]
|
3971
3992
|
);
|
3972
|
-
const bmsmDynamicText = (0,
|
3993
|
+
const bmsmDynamicText = (0, import_react8.useMemo)(
|
3973
3994
|
() => isBmsmEnabledAndApplicable && !isBmsmButtonMode ? buyMoreSaveMoreDynamicText(line, config) : "",
|
3974
3995
|
[isBmsmEnabledAndApplicable, isBmsmButtonMode, line, config]
|
3975
3996
|
);
|
3976
|
-
const isStsGloballyEnabled = (0,
|
3977
|
-
const productHasSellingPlans = (0,
|
3997
|
+
const isStsGloballyEnabled = (0, import_react8.useMemo)(() => config?.switch_to_subscription_enabled ?? false, [config]);
|
3998
|
+
const productHasSellingPlans = (0, import_react8.useMemo)(
|
3978
3999
|
() => (line.merchandise.product.sellingPlanGroups?.edges ?? []).length > 0,
|
3979
4000
|
[line.merchandise.product.sellingPlanGroups]
|
3980
4001
|
);
|
3981
|
-
const isStsEligible = (0,
|
4002
|
+
const isStsEligible = (0, import_react8.useMemo)(
|
3982
4003
|
() => isStsGloballyEnabled && productHasSellingPlans,
|
3983
4004
|
[isStsGloballyEnabled, productHasSellingPlans]
|
3984
4005
|
);
|
3985
|
-
const isCurrentlySubscription = (0,
|
3986
|
-
const productRequiresSellingPlan = (0,
|
4006
|
+
const isCurrentlySubscription = (0, import_react8.useMemo)(() => !!line.sellingPlanAllocation, [line.sellingPlanAllocation]);
|
4007
|
+
const productRequiresSellingPlan = (0, import_react8.useMemo)(
|
3987
4008
|
() => line.merchandise.product.requiresSellingPlan ?? false,
|
3988
4009
|
[line.merchandise.product]
|
3989
4010
|
);
|
3990
|
-
const downgradeGloballyAllowed = (0,
|
4011
|
+
const downgradeGloballyAllowed = (0, import_react8.useMemo)(
|
3991
4012
|
() => !(config?.switch_to_subscription?.disable_downgrade ?? false),
|
3992
4013
|
[config?.switch_to_subscription?.disable_downgrade]
|
3993
4014
|
);
|
3994
|
-
const canStsDowngrade = (0,
|
4015
|
+
const canStsDowngrade = (0, import_react8.useMemo)(
|
3995
4016
|
() => isStsEligible && downgradeGloballyAllowed && !productRequiresSellingPlan,
|
3996
4017
|
[isStsEligible, downgradeGloballyAllowed, productRequiresSellingPlan]
|
3997
4018
|
);
|
3998
|
-
const stsAvailableFrequencies = (0,
|
3999
|
-
const defaultSellingPlanDiscountPercent = (0,
|
4019
|
+
const stsAvailableFrequencies = (0, import_react8.useMemo)(() => getAvailableSellingPlans(line), [line]);
|
4020
|
+
const defaultSellingPlanDiscountPercent = (0, import_react8.useMemo)(
|
4000
4021
|
() => calculateDefaultSellingPlanDiscount(stsAvailableFrequencies, line),
|
4001
4022
|
[stsAvailableFrequencies, line]
|
4002
4023
|
);
|
4003
|
-
const isStsEnabledAndApplicable = (0,
|
4024
|
+
const isStsEnabledAndApplicable = (0, import_react8.useMemo)(
|
4004
4025
|
() => isStsEligible && (canStsDowngrade || stsAvailableFrequencies.length > 1 || !isCurrentlySubscription && stsAvailableFrequencies.length > 0),
|
4005
4026
|
[isStsEligible, canStsDowngrade, stsAvailableFrequencies.length, isCurrentlySubscription]
|
4006
4027
|
);
|
4007
|
-
const getStsLabel = (0,
|
4028
|
+
const getStsLabel = (0, import_react8.useCallback)(
|
4008
4029
|
// This remains as it's for UI text
|
4009
4030
|
(key, fallback) => {
|
4010
4031
|
const labelTemplate = config?.switch_to_subscription?.language?.[key] ?? fallback ?? key.toString();
|
@@ -4016,7 +4037,7 @@ var useCartItemFeatures = ({ config, line }) => {
|
|
4016
4037
|
},
|
4017
4038
|
[config?.switch_to_subscription?.language, defaultSellingPlanDiscountPercent]
|
4018
4039
|
);
|
4019
|
-
const prepareDecreaseQuantity = (0,
|
4040
|
+
const prepareDecreaseQuantity = (0, import_react8.useCallback)(() => {
|
4020
4041
|
const newQuantity = line.quantity - 1;
|
4021
4042
|
if (newQuantity <= 0) {
|
4022
4043
|
rebuyDebugLog.log("smart-cart-cart-item-features" /* SC_CART_ITEM_FEATURES */, `Preparing remove for ${line.id} (qty became 0).`);
|
@@ -4048,7 +4069,7 @@ var useCartItemFeatures = ({ config, line }) => {
|
|
4048
4069
|
rebuyDebugLog.log("smart-cart-cart-item-features" /* SC_CART_ITEM_FEATURES */, `Preparing decrease qty for ${line.id} to ${newQuantity}.`);
|
4049
4070
|
return { attributes: finalAttributesInput, lineId: line.id, quantity: newQuantity };
|
4050
4071
|
}, [line, config]);
|
4051
|
-
const prepareIncreaseQuantity = (0,
|
4072
|
+
const prepareIncreaseQuantity = (0, import_react8.useCallback)(() => {
|
4052
4073
|
const newQuantity = line.quantity + 1;
|
4053
4074
|
let finalAttributes = void 0;
|
4054
4075
|
const currentAttributes = line.attributes;
|
@@ -4073,11 +4094,11 @@ var useCartItemFeatures = ({ config, line }) => {
|
|
4073
4094
|
rebuyDebugLog.log("smart-cart-cart-item-features" /* SC_CART_ITEM_FEATURES */, `Preparing increase qty for ${line.id} to ${newQuantity}.`);
|
4074
4095
|
return { attributes: finalAttributesInput, lineId: line.id, quantity: newQuantity };
|
4075
4096
|
}, [line, config]);
|
4076
|
-
const prepareRemoveItem = (0,
|
4097
|
+
const prepareRemoveItem = (0, import_react8.useCallback)(() => {
|
4077
4098
|
rebuyDebugLog.log("smart-cart-cart-item-features" /* SC_CART_ITEM_FEATURES */, `Preparing remove for ${line.id}.`);
|
4078
4099
|
return { lineId: line.id };
|
4079
4100
|
}, [line.id]);
|
4080
|
-
const prepareAdjustBMSMQuantity = (0,
|
4101
|
+
const prepareAdjustBMSMQuantity = (0, import_react8.useCallback)(
|
4081
4102
|
(tierQuantity) => {
|
4082
4103
|
if (tierQuantity === line.quantity) return null;
|
4083
4104
|
const currentAttributes = line.attributes;
|
@@ -4098,10 +4119,10 @@ var useCartItemFeatures = ({ config, line }) => {
|
|
4098
4119
|
},
|
4099
4120
|
[line]
|
4100
4121
|
);
|
4101
|
-
const toggleBundle = (0,
|
4122
|
+
const toggleBundle = (0, import_react8.useCallback)(() => {
|
4102
4123
|
setIsBundleExpanded((prev) => !prev);
|
4103
4124
|
}, []);
|
4104
|
-
const prepareSubscriptionSwitch = (0,
|
4125
|
+
const prepareSubscriptionSwitch = (0, import_react8.useCallback)(
|
4105
4126
|
(targetSellingPlanId) => {
|
4106
4127
|
const currentAttributes = line.attributes;
|
4107
4128
|
let finalAttributesArray = void 0;
|
@@ -4148,7 +4169,7 @@ var useCartItemFeatures = ({ config, line }) => {
|
|
4148
4169
|
},
|
4149
4170
|
[line, isCurrentlySubscription]
|
4150
4171
|
);
|
4151
|
-
return (0,
|
4172
|
+
return (0, import_react8.useMemo)(
|
4152
4173
|
() => ({
|
4153
4174
|
actions: {
|
4154
4175
|
prepareAdjustBMSMQuantity,
|
@@ -4297,12 +4318,12 @@ var Spinner = ({ className }) => /* @__PURE__ */ (0, import_jsx_runtime10.jsx)("
|
|
4297
4318
|
var CartItem = ({ line }) => {
|
4298
4319
|
const { config, isCartBusy, isHydrogenReact, removeItem, updateItem } = useSmartCart();
|
4299
4320
|
const itemFetcher = (0, import_react_router4.useFetcher)();
|
4300
|
-
const [isIncreasing, setIsIncreasing] = (0,
|
4301
|
-
const [isDecreasing, setIsDecreasing] = (0,
|
4302
|
-
const [isRemoving, setIsRemoving] = (0,
|
4303
|
-
const [isAdjustingBMSM, setIsAdjustingBMSM] = (0,
|
4304
|
-
const [isSwitchingSubscription, setIsSwitchingSubscription] = (0,
|
4305
|
-
const [switchingDirection, setSwitchingDirection] = (0,
|
4321
|
+
const [isIncreasing, setIsIncreasing] = (0, import_react9.useState)(false);
|
4322
|
+
const [isDecreasing, setIsDecreasing] = (0, import_react9.useState)(false);
|
4323
|
+
const [isRemoving, setIsRemoving] = (0, import_react9.useState)(false);
|
4324
|
+
const [isAdjustingBMSM, setIsAdjustingBMSM] = (0, import_react9.useState)(false);
|
4325
|
+
const [isSwitchingSubscription, setIsSwitchingSubscription] = (0, import_react9.useState)(false);
|
4326
|
+
const [switchingDirection, setSwitchingDirection] = (0, import_react9.useState)(null);
|
4306
4327
|
const { toggleCart } = useSmartCart();
|
4307
4328
|
const {
|
4308
4329
|
actions: itemActionsLogic,
|
@@ -4315,7 +4336,7 @@ var CartItem = ({ line }) => {
|
|
4315
4336
|
shouldHideQuantitySelector,
|
4316
4337
|
sts
|
4317
4338
|
} = useCartItemFeatures({ config, line });
|
4318
|
-
const isLoadingCombined = (0,
|
4339
|
+
const isLoadingCombined = (0, import_react9.useMemo)(() => {
|
4319
4340
|
if (isCartBusy) {
|
4320
4341
|
return true;
|
4321
4342
|
}
|
@@ -4343,7 +4364,7 @@ var CartItem = ({ line }) => {
|
|
4343
4364
|
meta.attributeCssClasses,
|
4344
4365
|
{ [CartItem_default["rebuy-cart-item--updating"]]: isLoadingCombined }
|
4345
4366
|
);
|
4346
|
-
const handleDecreaseQuantity = (0,
|
4367
|
+
const handleDecreaseQuantity = (0, import_react9.useCallback)(() => {
|
4347
4368
|
if (isLoadingCombined) return;
|
4348
4369
|
const payload = itemActionsLogic.prepareDecreaseQuantity();
|
4349
4370
|
setIsDecreasing(true);
|
@@ -4377,7 +4398,7 @@ var CartItem = ({ line }) => {
|
|
4377
4398
|
}
|
4378
4399
|
}
|
4379
4400
|
}, [isLoadingCombined, itemActionsLogic, isHydrogenReact, updateItem, removeItem, itemFetcher]);
|
4380
|
-
const handleIncreaseQuantity = (0,
|
4401
|
+
const handleIncreaseQuantity = (0, import_react9.useCallback)(() => {
|
4381
4402
|
if (isLoadingCombined) return;
|
4382
4403
|
setIsIncreasing(true);
|
4383
4404
|
const payload = itemActionsLogic.prepareIncreaseQuantity();
|
@@ -4395,7 +4416,7 @@ var CartItem = ({ line }) => {
|
|
4395
4416
|
);
|
4396
4417
|
}
|
4397
4418
|
}, [isLoadingCombined, itemActionsLogic, isHydrogenReact, updateItem, itemFetcher]);
|
4398
|
-
const handleRemoveItem = (0,
|
4419
|
+
const handleRemoveItem = (0, import_react9.useCallback)(() => {
|
4399
4420
|
if (isLoadingCombined) return;
|
4400
4421
|
setIsRemoving(true);
|
4401
4422
|
const payload = itemActionsLogic.prepareRemoveItem();
|
@@ -4411,7 +4432,7 @@ var CartItem = ({ line }) => {
|
|
4411
4432
|
);
|
4412
4433
|
}
|
4413
4434
|
}, [isLoadingCombined, itemActionsLogic, isHydrogenReact, removeItem, itemFetcher]);
|
4414
|
-
const handleAdjustBMSMQuantity = (0,
|
4435
|
+
const handleAdjustBMSMQuantity = (0, import_react9.useCallback)(
|
4415
4436
|
(tierQuantity) => {
|
4416
4437
|
if (isLoadingCombined) return;
|
4417
4438
|
const payload = itemActionsLogic.prepareAdjustBMSMQuantity(tierQuantity);
|
@@ -4433,7 +4454,7 @@ var CartItem = ({ line }) => {
|
|
4433
4454
|
},
|
4434
4455
|
[isLoadingCombined, itemActionsLogic, isHydrogenReact, updateItem, itemFetcher]
|
4435
4456
|
);
|
4436
|
-
const handleSwitchSubscriptionChange = (0,
|
4457
|
+
const handleSwitchSubscriptionChange = (0, import_react9.useCallback)(
|
4437
4458
|
(event) => {
|
4438
4459
|
if (isLoadingCombined) return;
|
4439
4460
|
const targetValue = event.target.value;
|
@@ -4465,7 +4486,7 @@ var CartItem = ({ line }) => {
|
|
4465
4486
|
},
|
4466
4487
|
[isLoadingCombined, itemActionsLogic, isHydrogenReact, updateItem, itemFetcher, sts.isCurrentlySubscription]
|
4467
4488
|
);
|
4468
|
-
const handleUpgradeToSubscriptionClick = (0,
|
4489
|
+
const handleUpgradeToSubscriptionClick = (0, import_react9.useCallback)(() => {
|
4469
4490
|
if (isLoadingCombined || sts.isCurrentlySubscription || sts.availableFrequencies.length === 0) return;
|
4470
4491
|
const defaultFrequencyId = sts.availableFrequencies[0].id;
|
4471
4492
|
if (!defaultFrequencyId) return;
|
@@ -4500,7 +4521,7 @@ var CartItem = ({ line }) => {
|
|
4500
4521
|
sts.isCurrentlySubscription,
|
4501
4522
|
sts.availableFrequencies
|
4502
4523
|
]);
|
4503
|
-
(0,
|
4524
|
+
(0, import_react9.useEffect)(() => {
|
4504
4525
|
const resetLocalSpinners = () => {
|
4505
4526
|
setIsIncreasing(false);
|
4506
4527
|
setIsDecreasing(false);
|
@@ -4801,7 +4822,7 @@ var CartItemList = ({ componentConfig }) => {
|
|
4801
4822
|
|
4802
4823
|
// src/smart-cart/components/CartNoteInput/CartNoteInput.tsx
|
4803
4824
|
var import_clsx2 = __toESM(require("clsx"), 1);
|
4804
|
-
var
|
4825
|
+
var import_react10 = __toESM(require("react"), 1);
|
4805
4826
|
var import_react_router5 = require("react-router");
|
4806
4827
|
|
4807
4828
|
// src/smart-cart/components/CartNoteInput/CartNoteInput.module.css
|
@@ -4810,7 +4831,7 @@ var CartNoteInput_default = result5;
|
|
4810
4831
|
|
4811
4832
|
// src/smart-cart/components/CartNoteInput/CartNoteInput.tsx
|
4812
4833
|
var import_jsx_runtime13 = require("react/jsx-runtime");
|
4813
|
-
var CartNoteInput =
|
4834
|
+
var CartNoteInput = import_react10.default.memo(({ componentConfig }) => {
|
4814
4835
|
const {
|
4815
4836
|
cartData,
|
4816
4837
|
getItemCount,
|
@@ -4819,27 +4840,27 @@ var CartNoteInput = import_react9.default.memo(({ componentConfig }) => {
|
|
4819
4840
|
updateCartNote: hrUpdateCartNote
|
4820
4841
|
} = useSmartCart();
|
4821
4842
|
const noteFetcher = (0, import_react_router5.useFetcher)();
|
4822
|
-
const textareaRef = (0,
|
4823
|
-
const isTextareaFocusedRef = (0,
|
4843
|
+
const textareaRef = (0, import_react10.useRef)(null);
|
4844
|
+
const isTextareaFocusedRef = (0, import_react10.useRef)(false);
|
4824
4845
|
const settings = componentConfig.settings || {};
|
4825
4846
|
const label = settings?.language?.notes_label ?? "Add a note (optional)";
|
4826
4847
|
const placeholder = settings?.language?.notes_placeholder ?? "Your notes...";
|
4827
4848
|
const limitChars = settings?.limit_characters ?? true;
|
4828
4849
|
const maxLength = settings?.max_length ?? 200;
|
4829
|
-
const [currentNoteValue, setCurrentNoteValue] = (0,
|
4830
|
-
const [isTextareaVisible, setIsTextareaVisible] = (0,
|
4831
|
-
const [isSaving, setIsSaving] = (0,
|
4832
|
-
const [saveMessage, setSaveMessage] = (0,
|
4833
|
-
const saveMessageTimerRef = (0,
|
4850
|
+
const [currentNoteValue, setCurrentNoteValue] = (0, import_react10.useState)(cartData?.note || "");
|
4851
|
+
const [isTextareaVisible, setIsTextareaVisible] = (0, import_react10.useState)(!!cartData?.note);
|
4852
|
+
const [isSaving, setIsSaving] = (0, import_react10.useState)(false);
|
4853
|
+
const [saveMessage, setSaveMessage] = (0, import_react10.useState)(null);
|
4854
|
+
const saveMessageTimerRef = (0, import_react10.useRef)(null);
|
4834
4855
|
const currentCartNoteFromCtx = cartData?.note || "";
|
4835
4856
|
const isNoteChanged = currentNoteValue.trim() !== currentCartNoteFromCtx.trim();
|
4836
4857
|
const hasItems = getItemCount() > 0;
|
4837
|
-
const isLoadingCombined = (0,
|
4858
|
+
const isLoadingCombined = (0, import_react10.useMemo)(() => {
|
4838
4859
|
if (isHydrogenReact) return isGlobalCartLoading || isSaving;
|
4839
4860
|
return noteFetcher.state !== "idle" || isSaving;
|
4840
4861
|
}, [isHydrogenReact, isGlobalCartLoading, noteFetcher.state, isSaving]);
|
4841
4862
|
const canSave = isNoteChanged && !isLoadingCombined;
|
4842
|
-
(0,
|
4863
|
+
(0, import_react10.useEffect)(() => {
|
4843
4864
|
const noteFromCart = cartData?.note || "";
|
4844
4865
|
if (!isTextareaFocusedRef.current && !isSaving && noteFromCart !== currentNoteValue) {
|
4845
4866
|
setCurrentNoteValue(noteFromCart);
|
@@ -4848,7 +4869,7 @@ var CartNoteInput = import_react9.default.memo(({ componentConfig }) => {
|
|
4848
4869
|
} else if (!noteFromCart && isTextareaVisible && !isSaving && !currentNoteValue.trim()) {
|
4849
4870
|
}
|
4850
4871
|
}, [cartData?.note, isSaving, currentNoteValue, isTextareaVisible]);
|
4851
|
-
(0,
|
4872
|
+
(0, import_react10.useEffect)(() => {
|
4852
4873
|
return () => {
|
4853
4874
|
if (saveMessageTimerRef.current) clearTimeout(saveMessageTimerRef.current);
|
4854
4875
|
};
|
@@ -4858,7 +4879,7 @@ var CartNoteInput = import_react9.default.memo(({ componentConfig }) => {
|
|
4858
4879
|
if (saveMessageTimerRef.current) clearTimeout(saveMessageTimerRef.current);
|
4859
4880
|
saveMessageTimerRef.current = setTimeout(() => setSaveMessage(null), 3e3);
|
4860
4881
|
};
|
4861
|
-
const handleToggle = (0,
|
4882
|
+
const handleToggle = (0, import_react10.useCallback)(
|
4862
4883
|
(event) => {
|
4863
4884
|
const checked = event.target.checked;
|
4864
4885
|
setIsTextareaVisible(checked);
|
@@ -4883,7 +4904,7 @@ var CartNoteInput = import_react9.default.memo(({ componentConfig }) => {
|
|
4883
4904
|
[currentNoteValue, isHydrogenReact, hrUpdateCartNote, noteFetcher]
|
4884
4905
|
// currentNoteValue IS needed here
|
4885
4906
|
);
|
4886
|
-
const handleInputChange = (0,
|
4907
|
+
const handleInputChange = (0, import_react10.useCallback)(
|
4887
4908
|
(event) => {
|
4888
4909
|
let value = event.target.value;
|
4889
4910
|
if (limitChars && value.length > maxLength) value = value.substring(0, maxLength);
|
@@ -4898,7 +4919,7 @@ var CartNoteInput = import_react9.default.memo(({ componentConfig }) => {
|
|
4898
4919
|
const handleTextareaBlur = () => {
|
4899
4920
|
isTextareaFocusedRef.current = false;
|
4900
4921
|
};
|
4901
|
-
const handleSave = (0,
|
4922
|
+
const handleSave = (0, import_react10.useCallback)(() => {
|
4902
4923
|
if (!canSave) return;
|
4903
4924
|
setIsSaving(true);
|
4904
4925
|
const noteToSave = currentNoteValue.trim();
|
@@ -4912,7 +4933,7 @@ var CartNoteInput = import_react9.default.memo(({ componentConfig }) => {
|
|
4912
4933
|
});
|
4913
4934
|
}
|
4914
4935
|
}, [canSave, currentNoteValue, isHydrogenReact, hrUpdateCartNote, noteFetcher]);
|
4915
|
-
const handleKeyDown = (0,
|
4936
|
+
const handleKeyDown = (0, import_react10.useCallback)(
|
4916
4937
|
(event) => {
|
4917
4938
|
if (event.key === "Enter" && !event.shiftKey) {
|
4918
4939
|
event.preventDefault();
|
@@ -4921,7 +4942,7 @@ var CartNoteInput = import_react9.default.memo(({ componentConfig }) => {
|
|
4921
4942
|
},
|
4922
4943
|
[handleSave]
|
4923
4944
|
);
|
4924
|
-
(0,
|
4945
|
+
(0, import_react10.useEffect)(() => {
|
4925
4946
|
if (isHydrogenReact) {
|
4926
4947
|
if (!isGlobalCartLoading && isSaving) {
|
4927
4948
|
setIsSaving(false);
|
@@ -5058,7 +5079,7 @@ CartNoteInput.displayName = "CartNoteInput";
|
|
5058
5079
|
|
5059
5080
|
// src/smart-cart/components/CartSubtotal/CartSubtotal.tsx
|
5060
5081
|
var import_clsx3 = __toESM(require("clsx"), 1);
|
5061
|
-
var
|
5082
|
+
var import_react11 = __toESM(require("react"), 1);
|
5062
5083
|
|
5063
5084
|
// src/smart-cart/components/CartSubtotal/CartSubtotal.module.css
|
5064
5085
|
var result6 = { "rebuy-cart-subtotal": "CartSubtotal_rebuy-cart-subtotal", "rebuy-cart-subtotal--simple": "CartSubtotal_rebuy-cart-subtotal--simple", "rebuy-cart-subtotal__label": "CartSubtotal_rebuy-cart-subtotal__label", "rebuy-cart-subtotal__amount-wrapper": "CartSubtotal_rebuy-cart-subtotal__amount-wrapper", "rebuy-cart-subtotal__price--compare-at": "CartSubtotal_rebuy-cart-subtotal__price--compare-at", "rebuy-cart-subtotal__price--final": "CartSubtotal_rebuy-cart-subtotal__price--final", "rebuy-cart-subtotal--with-summary": "CartSubtotal_rebuy-cart-subtotal--with-summary", "rebuy-cart-subtotal__row": "CartSubtotal_rebuy-cart-subtotal__row", "rebuy-cart-subtotal__discount-summary": "CartSubtotal_rebuy-cart-subtotal__discount-summary", "rebuy-cart-subtotal__discount-summary-header": "CartSubtotal_rebuy-cart-subtotal__discount-summary-header", "rebuy-cart-subtotal__discount-summary-icon": "CartSubtotal_rebuy-cart-subtotal__discount-summary-icon", "rebuy-cart-subtotal__discount-summary--expanded": "CartSubtotal_rebuy-cart-subtotal__discount-summary--expanded", "rebuy-cart-subtotal__discount-summary-details": "CartSubtotal_rebuy-cart-subtotal__discount-summary-details", "rebuy-cart-subtotal__discount-summary-item": "CartSubtotal_rebuy-cart-subtotal__discount-summary-item" };
|
@@ -5080,61 +5101,61 @@ var getDiscountAllocationTitle = (alloc) => {
|
|
5080
5101
|
};
|
5081
5102
|
var CartSubtotalComponent = ({ componentConfig }) => {
|
5082
5103
|
const { cartData } = useSmartCart();
|
5083
|
-
const [isDiscountSummaryExpanded, setIsDiscountSummaryExpanded] = (0,
|
5084
|
-
const settings = (0,
|
5104
|
+
const [isDiscountSummaryExpanded, setIsDiscountSummaryExpanded] = (0, import_react11.useState)(false);
|
5105
|
+
const settings = (0, import_react11.useMemo)(
|
5085
5106
|
() => componentConfig?.settings ?? {},
|
5086
5107
|
[componentConfig?.settings]
|
5087
5108
|
);
|
5088
|
-
const allLines = (0,
|
5089
|
-
const excludedLines = (0,
|
5109
|
+
const allLines = (0, import_react11.useMemo)(() => cartData?.lines?.edges ?? [], [cartData?.lines?.edges]);
|
5110
|
+
const excludedLines = (0, import_react11.useMemo)(
|
5090
5111
|
() => allLines.map((edge) => edge.node).filter(
|
5091
5112
|
(line) => line.merchandise.product.tags?.includes("smart-cart-subtotal-excluded" /* EXCLUDE_FROM_CART_SUBTOTAL */)
|
5092
5113
|
),
|
5093
5114
|
[allLines]
|
5094
5115
|
);
|
5095
|
-
const excludedLinesValue = (0,
|
5116
|
+
const excludedLinesValue = (0, import_react11.useMemo)(
|
5096
5117
|
() => excludedLines.reduce((sum, line) => sum + parseFloat(line.cost.subtotalAmount?.amount ?? "0"), 0),
|
5097
5118
|
[excludedLines]
|
5098
5119
|
);
|
5099
|
-
const apiSubtotalAmount = (0,
|
5120
|
+
const apiSubtotalAmount = (0, import_react11.useMemo)(
|
5100
5121
|
() => parseFloat(cartData?.cost?.subtotalAmount?.amount ?? "0"),
|
5101
5122
|
[cartData?.cost?.subtotalAmount?.amount]
|
5102
5123
|
);
|
5103
|
-
const apiTotalAmount = (0,
|
5124
|
+
const apiTotalAmount = (0, import_react11.useMemo)(
|
5104
5125
|
() => parseFloat(cartData?.cost?.totalAmount?.amount ?? "0"),
|
5105
5126
|
[cartData?.cost?.totalAmount?.amount]
|
5106
5127
|
);
|
5107
|
-
const adjustedPreDiscountSubtotal = (0,
|
5128
|
+
const adjustedPreDiscountSubtotal = (0, import_react11.useMemo)(
|
5108
5129
|
() => Math.max(0, apiSubtotalAmount - excludedLinesValue),
|
5109
5130
|
[apiSubtotalAmount, excludedLinesValue]
|
5110
5131
|
);
|
5111
|
-
const adjustedFinalTotal = (0,
|
5132
|
+
const adjustedFinalTotal = (0, import_react11.useMemo)(
|
5112
5133
|
() => Math.max(0, apiTotalAmount - excludedLinesValue),
|
5113
5134
|
[apiTotalAmount, excludedLinesValue]
|
5114
5135
|
);
|
5115
|
-
const totalItemCount = (0,
|
5116
|
-
const subtotalLabel = (0,
|
5136
|
+
const totalItemCount = (0, import_react11.useMemo)(() => cartData?.totalQuantity ?? 0, [cartData?.totalQuantity]);
|
5137
|
+
const subtotalLabel = (0, import_react11.useMemo)(() => {
|
5117
5138
|
const singular = settings.subtotal_singular_text ?? "Subtotal ({{item_count}} item)";
|
5118
5139
|
const plural = settings.subtotal_plural_text ?? "Subtotal ({{item_count}} items)";
|
5119
5140
|
return (totalItemCount === 1 ? singular : plural).replace("{{item_count}}", String(totalItemCount));
|
5120
5141
|
}, [totalItemCount, settings.subtotal_singular_text, settings.subtotal_plural_text]);
|
5121
|
-
const currencyCode = (0,
|
5142
|
+
const currencyCode = (0, import_react11.useMemo)(
|
5122
5143
|
() => cartData?.cost?.subtotalAmount?.currencyCode ?? "USD",
|
5123
5144
|
[cartData?.cost?.subtotalAmount?.currencyCode]
|
5124
5145
|
);
|
5125
|
-
const hasOrderDiscount = (0,
|
5146
|
+
const hasOrderDiscount = (0, import_react11.useMemo)(
|
5126
5147
|
() => adjustedPreDiscountSubtotal > adjustedFinalTotal,
|
5127
5148
|
[adjustedPreDiscountSubtotal, adjustedFinalTotal]
|
5128
5149
|
);
|
5129
|
-
const formattedFinalTotal = (0,
|
5150
|
+
const formattedFinalTotal = (0, import_react11.useMemo)(
|
5130
5151
|
() => formatMoney(adjustedFinalTotal, currencyCode),
|
5131
5152
|
[adjustedFinalTotal, currencyCode]
|
5132
5153
|
);
|
5133
|
-
const formattedPreDiscountSubtotal = (0,
|
5154
|
+
const formattedPreDiscountSubtotal = (0, import_react11.useMemo)(
|
5134
5155
|
() => formatMoney(adjustedPreDiscountSubtotal, currencyCode),
|
5135
5156
|
[adjustedPreDiscountSubtotal, currencyCode]
|
5136
5157
|
);
|
5137
|
-
const groupedCartLevelDiscounts = (0,
|
5158
|
+
const groupedCartLevelDiscounts = (0, import_react11.useMemo)(() => {
|
5138
5159
|
if (!cartData?.discountAllocations) return [];
|
5139
5160
|
const grouped = cartData.discountAllocations.reduce((acc, alloc) => {
|
5140
5161
|
const amount = parseFloat(alloc.discountedAmount?.amount ?? "0");
|
@@ -5148,11 +5169,11 @@ var CartSubtotalComponent = ({ componentConfig }) => {
|
|
5148
5169
|
title
|
5149
5170
|
}));
|
5150
5171
|
}, [cartData?.discountAllocations, currencyCode]);
|
5151
|
-
const shouldShowDiscountSummary = (0,
|
5172
|
+
const shouldShowDiscountSummary = (0, import_react11.useMemo)(
|
5152
5173
|
() => settings.show_discount_summary === true && groupedCartLevelDiscounts.length > 0,
|
5153
5174
|
[settings.show_discount_summary, groupedCartLevelDiscounts.length]
|
5154
5175
|
);
|
5155
|
-
const discountSummaryCountLabel = (0,
|
5176
|
+
const discountSummaryCountLabel = (0, import_react11.useMemo)(() => {
|
5156
5177
|
if (!shouldShowDiscountSummary) return "";
|
5157
5178
|
const count = groupedCartLevelDiscounts.length;
|
5158
5179
|
const singular = settings.discount_summary_count_label ?? "{{discount_count}} order discount applied";
|
@@ -5164,7 +5185,7 @@ var CartSubtotalComponent = ({ componentConfig }) => {
|
|
5164
5185
|
settings.discount_summary_count_label,
|
5165
5186
|
settings.discount_summary_count_label_plural
|
5166
5187
|
]);
|
5167
|
-
const toggleDiscountSummary = (0,
|
5188
|
+
const toggleDiscountSummary = (0, import_react11.useCallback)(() => setIsDiscountSummaryExpanded((prev) => !prev), []);
|
5168
5189
|
if (totalItemCount === 0) return null;
|
5169
5190
|
const rootClasses = (0, import_clsx3.default)(
|
5170
5191
|
CartSubtotal_default["rebuy-cart-subtotal"],
|
@@ -5239,12 +5260,12 @@ var CartSubtotalComponent = ({ componentConfig }) => {
|
|
5239
5260
|
}
|
5240
5261
|
);
|
5241
5262
|
};
|
5242
|
-
var CartSubtotal =
|
5263
|
+
var CartSubtotal = import_react11.default.memo(CartSubtotalComponent);
|
5243
5264
|
CartSubtotal.displayName = "CartSubtotal";
|
5244
5265
|
|
5245
5266
|
// src/smart-cart/components/CartTitleBar/CartTitleBar.tsx
|
5246
5267
|
var import_dompurify2 = __toESM(require("dompurify"), 1);
|
5247
|
-
var
|
5268
|
+
var import_react12 = __toESM(require("react"), 1);
|
5248
5269
|
|
5249
5270
|
// src/smart-cart/components/CartTitleBar/CartTitleBar.module.css
|
5250
5271
|
var result7 = { "rebuy-cart-title-bar": "CartTitleBar_rebuy-cart-title-bar" };
|
@@ -5252,13 +5273,13 @@ var CartTitleBar_default = result7;
|
|
5252
5273
|
|
5253
5274
|
// src/smart-cart/components/CartTitleBar/CartTitleBar.tsx
|
5254
5275
|
var import_jsx_runtime15 = require("react/jsx-runtime");
|
5255
|
-
var CartTitleBar =
|
5276
|
+
var CartTitleBar = import_react12.default.memo(() => {
|
5256
5277
|
const { getComponentConfigByType } = useSmartCart();
|
5257
5278
|
const componentConfig = getComponentConfigByType("title_bar");
|
5258
5279
|
const title = componentConfig?.settings?.title ?? "Your Cart";
|
5259
5280
|
const headingTag = componentConfig?.settings?.heading_tag ?? "h2";
|
5260
5281
|
const screenReaderOnly = componentConfig?.settings?.screen_reader_only ?? false;
|
5261
|
-
const sanitizedTitle = (0,
|
5282
|
+
const sanitizedTitle = (0, import_react12.useMemo)(() => {
|
5262
5283
|
if (typeof window !== "undefined") return import_dompurify2.default.sanitize(title);
|
5263
5284
|
return title;
|
5264
5285
|
}, [title]);
|
@@ -5288,7 +5309,7 @@ var CartTitleBar = import_react11.default.memo(() => {
|
|
5288
5309
|
CartTitleBar.displayName = "CartTitleBar";
|
5289
5310
|
|
5290
5311
|
// src/smart-cart/components/CheckoutArea/CheckoutArea.tsx
|
5291
|
-
var
|
5312
|
+
var import_react13 = __toESM(require("react"), 1);
|
5292
5313
|
var import_react_router6 = require("react-router");
|
5293
5314
|
|
5294
5315
|
// src/smart-cart/components/CheckoutArea/CheckoutArea.module.css
|
@@ -5297,7 +5318,7 @@ var CheckoutArea_default = result8;
|
|
5297
5318
|
|
5298
5319
|
// src/smart-cart/components/CheckoutArea/CheckoutArea.tsx
|
5299
5320
|
var import_jsx_runtime16 = require("react/jsx-runtime");
|
5300
|
-
var CheckoutArea =
|
5321
|
+
var CheckoutArea = import_react13.default.memo(({ componentConfig }) => {
|
5301
5322
|
const {
|
5302
5323
|
cartData,
|
5303
5324
|
checkout,
|
@@ -5309,9 +5330,9 @@ var CheckoutArea = import_react12.default.memo(({ componentConfig }) => {
|
|
5309
5330
|
} = useSmartCart();
|
5310
5331
|
const termsFetcher = (0, import_react_router6.useFetcher)();
|
5311
5332
|
const settings = componentConfig.settings;
|
5312
|
-
const [termsAccepted, setTermsAccepted] = (0,
|
5313
|
-
const [processingSource, setProcessingSource] = (0,
|
5314
|
-
(0,
|
5333
|
+
const [termsAccepted, setTermsAccepted] = (0, import_react13.useState)(false);
|
5334
|
+
const [processingSource, setProcessingSource] = (0, import_react13.useState)(null);
|
5335
|
+
(0, import_react13.useEffect)(() => {
|
5315
5336
|
const termsAttr = cartData?.attributes?.find((attr) => attr.key === "Terms and Conditions");
|
5316
5337
|
const acceptedInCart = termsAttr?.value === "Accepted";
|
5317
5338
|
if (processingSource !== "terms" && termsAccepted !== acceptedInCart) {
|
@@ -5319,58 +5340,58 @@ var CheckoutArea = import_react12.default.memo(({ componentConfig }) => {
|
|
5319
5340
|
}
|
5320
5341
|
}, [cartData?.attributes, termsAccepted, processingSource]);
|
5321
5342
|
const hasItems = getItemCount() > 0;
|
5322
|
-
const hasTermsEnabled = (0,
|
5323
|
-
const isLoadingCombined = (0,
|
5343
|
+
const hasTermsEnabled = (0, import_react13.useMemo)(() => !!settings?.terms?.enabled, [settings?.terms?.enabled]);
|
5344
|
+
const isLoadingCombined = (0, import_react13.useMemo)(() => {
|
5324
5345
|
if (isHydrogenReact) return isGlobalCartLoading || processingSource === "terms";
|
5325
5346
|
return termsFetcher.state !== "idle" || processingSource === "terms";
|
5326
5347
|
}, [isHydrogenReact, isGlobalCartLoading, termsFetcher.state, processingSource]);
|
5327
|
-
const isAnyCriticalActionProcessing = (0,
|
5348
|
+
const isAnyCriticalActionProcessing = (0, import_react13.useMemo)(() => {
|
5328
5349
|
if (isHydrogenReact) return isGlobalCartLoading;
|
5329
5350
|
return termsFetcher.state !== "idle" || processingSource === "checkout" || processingSource === "shop_pay" || processingSource === "view_cart";
|
5330
5351
|
}, [isHydrogenReact, isGlobalCartLoading, termsFetcher.state, processingSource]);
|
5331
|
-
const isCheckoutDisabled = (0,
|
5352
|
+
const isCheckoutDisabled = (0, import_react13.useMemo)(
|
5332
5353
|
() => !hasItems || isAnyCriticalActionProcessing || hasTermsEnabled && !termsAccepted,
|
5333
5354
|
[hasItems, isAnyCriticalActionProcessing, hasTermsEnabled, termsAccepted]
|
5334
5355
|
);
|
5335
|
-
const isTermsCheckboxDisabled = (0,
|
5356
|
+
const isTermsCheckboxDisabled = (0, import_react13.useMemo)(() => {
|
5336
5357
|
if (isHydrogenReact) return isGlobalCartLoading || processingSource === "terms";
|
5337
5358
|
return termsFetcher.state !== "idle" || processingSource === "terms";
|
5338
5359
|
}, [isHydrogenReact, isGlobalCartLoading, termsFetcher.state, processingSource]);
|
5339
|
-
const hasCheckoutButton = (0,
|
5340
|
-
const hasViewCartButton = (0,
|
5360
|
+
const hasCheckoutButton = (0, import_react13.useMemo)(() => !!settings?.checkout_button?.enabled, [settings?.checkout_button?.enabled]);
|
5361
|
+
const hasViewCartButton = (0, import_react13.useMemo)(
|
5341
5362
|
() => !!settings?.view_cart_button?.enabled,
|
5342
5363
|
[settings?.view_cart_button?.enabled]
|
5343
5364
|
);
|
5344
|
-
const hasContinueShoppingButton = (0,
|
5365
|
+
const hasContinueShoppingButton = (0, import_react13.useMemo)(
|
5345
5366
|
() => !!settings?.continue_shopping_button?.enabled,
|
5346
5367
|
[settings?.continue_shopping_button?.enabled]
|
5347
5368
|
);
|
5348
|
-
const hasShopPayButton = (0,
|
5349
|
-
const hasInstallments = (0,
|
5369
|
+
const hasShopPayButton = (0, import_react13.useMemo)(() => !!settings?.shop_pay?.enabled, [settings?.shop_pay?.enabled]);
|
5370
|
+
const hasInstallments = (0, import_react13.useMemo)(
|
5350
5371
|
() => settings?.installments?.enabled && settings?.installments?.provider,
|
5351
5372
|
[settings?.installments?.enabled, settings?.installments?.provider]
|
5352
5373
|
);
|
5353
|
-
const hasPrePurchase = (0,
|
5374
|
+
const hasPrePurchase = (0, import_react13.useMemo)(
|
5354
5375
|
() => settings?.pre_purchase?.enabled && settings?.pre_purchase?.widget_id,
|
5355
5376
|
[settings?.pre_purchase?.enabled, settings?.pre_purchase?.widget_id]
|
5356
5377
|
);
|
5357
|
-
const checkoutLabel = (0,
|
5378
|
+
const checkoutLabel = (0, import_react13.useMemo)(
|
5358
5379
|
() => processingSource === "checkout" ? settings?.language?.checking_out_label ?? "Checking Out..." : settings?.language?.checkout_label ?? "Checkout \u2192",
|
5359
5380
|
[processingSource, settings?.language]
|
5360
5381
|
);
|
5361
|
-
const viewCartLabel = (0,
|
5382
|
+
const viewCartLabel = (0, import_react13.useMemo)(
|
5362
5383
|
() => processingSource === "view_cart" ? settings?.language?.view_cart_working_label ?? "Redirecting..." : settings?.language?.view_cart_label ?? "View Cart",
|
5363
5384
|
[processingSource, settings?.language]
|
5364
5385
|
);
|
5365
|
-
const continueShoppingLabel = (0,
|
5386
|
+
const continueShoppingLabel = (0, import_react13.useMemo)(
|
5366
5387
|
() => settings?.language?.continue_shopping_label ?? "Continue Shopping",
|
5367
5388
|
[settings?.language?.continue_shopping_label]
|
5368
5389
|
);
|
5369
|
-
const termsLabel = (0,
|
5390
|
+
const termsLabel = (0, import_react13.useMemo)(
|
5370
5391
|
() => settings?.language?.terms_and_conditions_label ?? "I agree to the terms and conditions",
|
5371
5392
|
[settings?.language?.terms_and_conditions_label]
|
5372
5393
|
);
|
5373
|
-
const installmentsMessage = (0,
|
5394
|
+
const installmentsMessage = (0, import_react13.useMemo)(() => {
|
5374
5395
|
const totalAmountData = cartData?.cost?.totalAmount;
|
5375
5396
|
if (!hasInstallments || !totalAmountData?.amount || !totalAmountData?.currencyCode) return "";
|
5376
5397
|
const paymentCount = parseInt(settings?.installments?.payment_count ?? "4", 10);
|
@@ -5383,7 +5404,7 @@ var CheckoutArea = import_react12.default.memo(({ componentConfig }) => {
|
|
5383
5404
|
const termsUrl = settings?.installments?.terms_url ?? "#";
|
5384
5405
|
return `or ${paymentCount} interest-free installments of ${formattedPayment} by <a target="_blank" rel="noopener noreferrer" href="${termsUrl}">${provider}</a>`;
|
5385
5406
|
}, [hasInstallments, cartData?.cost?.totalAmount, settings?.installments]);
|
5386
|
-
const handleTermsChange = (0,
|
5407
|
+
const handleTermsChange = (0, import_react13.useCallback)(async () => {
|
5387
5408
|
if (!hasTermsEnabled || isTermsCheckboxDisabled || !hasItems) return;
|
5388
5409
|
setProcessingSource("terms");
|
5389
5410
|
const newAcceptedState = !termsAccepted;
|
@@ -5417,7 +5438,7 @@ var CheckoutArea = import_react12.default.memo(({ componentConfig }) => {
|
|
5417
5438
|
termsFetcher,
|
5418
5439
|
cartData?.attributes
|
5419
5440
|
]);
|
5420
|
-
(0,
|
5441
|
+
(0, import_react13.useEffect)(() => {
|
5421
5442
|
if (processingSource === "terms") {
|
5422
5443
|
if (isHydrogenReact && !isGlobalCartLoading) {
|
5423
5444
|
setProcessingSource(null);
|
@@ -5456,7 +5477,7 @@ var CheckoutArea = import_react12.default.memo(({ componentConfig }) => {
|
|
5456
5477
|
termsAccepted,
|
5457
5478
|
cartData?.attributes
|
5458
5479
|
]);
|
5459
|
-
const handleCheckoutClick = (0,
|
5480
|
+
const handleCheckoutClick = (0, import_react13.useCallback)(() => {
|
5460
5481
|
if (isCheckoutDisabled) return;
|
5461
5482
|
setProcessingSource("checkout");
|
5462
5483
|
const routing = settings?.checkout_button?.routing ?? "automatic";
|
@@ -5471,16 +5492,16 @@ var CheckoutArea = import_react12.default.memo(({ componentConfig }) => {
|
|
5471
5492
|
setProcessingSource(null);
|
5472
5493
|
}
|
5473
5494
|
}, [isCheckoutDisabled, settings?.checkout_button, checkout]);
|
5474
|
-
const handleViewCartClick = (0,
|
5495
|
+
const handleViewCartClick = (0, import_react13.useCallback)(() => {
|
5475
5496
|
if (isAnyCriticalActionProcessing && processingSource !== "terms") return;
|
5476
5497
|
setProcessingSource("view_cart");
|
5477
5498
|
window.location.href = "/cart";
|
5478
5499
|
}, [isAnyCriticalActionProcessing, processingSource]);
|
5479
|
-
const handleContinueShoppingClick = (0,
|
5500
|
+
const handleContinueShoppingClick = (0, import_react13.useCallback)(() => {
|
5480
5501
|
if (isAnyCriticalActionProcessing && processingSource !== "terms") return;
|
5481
5502
|
hideCart();
|
5482
5503
|
}, [isAnyCriticalActionProcessing, processingSource, hideCart]);
|
5483
|
-
const handleShopPayClick = (0,
|
5504
|
+
const handleShopPayClick = (0, import_react13.useCallback)(() => {
|
5484
5505
|
if (isLoadingCombined || !!processingSource && processingSource !== "terms" || !hasItems) return;
|
5485
5506
|
setProcessingSource("shop_pay");
|
5486
5507
|
try {
|
@@ -5497,7 +5518,7 @@ var CheckoutArea = import_react12.default.memo(({ componentConfig }) => {
|
|
5497
5518
|
setProcessingSource(null);
|
5498
5519
|
}
|
5499
5520
|
}, [isLoadingCombined, processingSource, hasItems, cartData?.checkoutUrl]);
|
5500
|
-
const shopPaySvg = (0,
|
5521
|
+
const shopPaySvg = (0, import_react13.useMemo)(
|
5501
5522
|
() => ({
|
5502
5523
|
__html: `<?xml version="1.0" encoding="UTF-8"?><svg width="80" height="30" fill="none" viewBox="0 0 4317 1037" xmlns="http://www.w3.org/2000/svg"><g clip-path="url(#a)" fill="#fff"><path d="m1106 326.19c-34.62-72.633-100.26-119.55-199.17-119.55-30.36 0.529-60.193 8.026-87.198 21.908-27.003 13.884-50.46 33.785-68.555 58.168l-3.61 4.398v-284.67c0-1.6452-0.653-3.2229-1.817-4.3862-1.163-1.1633-2.742-1.817-4.387-1.817h-139.85c-1.625 0.029561-3.173 0.69609-4.312 1.8562-1.14 1.1601-1.778 2.7211-1.778 4.3469v816.56c0 1.615 0.643 3.163 1.785 4.305 1.142 1.143 2.69 1.785 4.305 1.785h149.78c1.626 0 3.187-0.637 4.347-1.778 1.16-1.139 1.826-2.687 1.856-4.312v-348.16c0-67.67 45.113-115.6 117.3-115.6 78.949 0 98.912 64.964 98.912 131.17v332.6c0 1.615 0.641 3.163 1.783 4.305 1.142 1.143 2.692 1.785 4.307 1.785h149.44c1.63 0 3.19-0.637 4.35-1.778 1.16-1.139 1.83-2.687 1.86-4.312v-352.45c0-12.068 0-23.911-1.58-35.414-2.57-37.698-11.97-74.616-27.75-108.95z"/><path d="m358.09 447.21s-76.242-17.933-104.32-25.151c-28.084-7.218-77.145-22.557-77.145-59.663s39.587-48.949 79.739-48.949c40.151 0 84.814 9.7 88.31 54.25 0.141 1.606 0.88 3.098 2.07 4.186 1.191 1.086 2.746 1.684 4.358 1.679l147.63-0.564c0.869 2e-3 1.729-0.175 2.526-0.52s1.514-0.851 2.107-1.487c0.593-0.634 1.049-1.385 1.338-2.204 0.289-0.82 0.408-1.69 0.345-2.557-9.135-142.56-134.21-193.54-249.59-193.54-136.81 0-236.85 90.227-236.85 189.7 0 72.633 20.527 140.76 181.92 188.12 28.309 8.233 66.769 18.947 100.38 28.309 40.376 11.279 62.143 28.309 62.143 55.151 0 31.128-45.113 52.782-89.437 52.782-64.174 0-109.74-23.797-113.46-66.543-0.194-1.563-0.955-3.003-2.141-4.043-1.185-1.04-2.711-1.608-4.288-1.596l-147.3 0.677c-0.86355 0-1.7182 0.173-2.5133 0.511-0.79503 0.337-1.514 0.83-2.114 1.452-0.6 0.62-1.0688 1.356-1.3783 2.162-0.30948 0.807-0.45331 1.667-0.42301 2.53 6.767 134.55 136.69 207.07 257.83 207.07 180.45 0 262-101.5 262-196.58 0.226-44.663-10.038-146.39-161.73-185.19z"/><path d="m2257.4 206.41c-74.99 0-137.82 41.504-178.31 91.582v-85.717c0-1.596-0.63-3.129-1.75-4.267-1.1-1.139-2.63-1.794-4.23-1.822h-140.07c-1.61 0-3.17 0.64-4.31 1.782-1.14 1.143-1.79 2.693-1.79 4.307v800.77c0.04 1.59 0.7 3.12 1.84 4.23 1.14 1.12 2.67 1.75 4.26 1.75h149.89c1.58 0 3.1-0.63 4.22-1.75s1.75-2.65 1.75-4.23v-263.24h2.26c23.79 36.315 88.87 79.851 173.92 79.851 159.91 0 293.23-132.63 293.23-311.85 0.12-172-132.52-311.4-300.91-311.4zm-13.87 470.65c-31.56 0.784-62.67-7.857-89.3-24.819-26.63-16.964-47.62-41.479-60.27-70.418-12.64-28.94-16.38-60.991-10.72-92.063 5.64-31.072 20.43-59.755 42.45-82.388 22.03-22.636 50.3-38.194 81.21-44.69 30.9-6.496 63.04-3.637 92.31 8.214 29.28 11.85 54.35 32.155 72.04 58.322 17.68 26.168 27.16 57.009 27.25 88.591 0.32 20.643-3.44 41.149-11.05 60.339s-18.95 36.686-33.35 51.483c-14.39 14.797-31.57 26.604-50.56 34.743-18.97 8.14-39.36 12.45-60.01 12.686z"/><path d="m1483.3 171.23c-139.74 0-209.44 47.482-265.39 85.491l-1.69 1.127c-2.88 1.974-4.91 4.966-5.69 8.374-0.77 3.409-0.23 6.983 1.52 10.01l55.26 95.188c1.04 1.782 2.46 3.313 4.15 4.482 1.7 1.17 3.63 1.951 5.67 2.286 1.99 0.359 4.03 0.272 5.98-0.255s3.76-1.478 5.3-2.791l4.39-3.608c28.76-24.136 74.89-56.393 186.55-65.19 62.14-4.961 115.83 11.279 155.41 48.272 43.54 40.152 69.6 105 69.6 173.46 0 125.98-74.22 205.15-193.43 206.73-98.24-0.564-164.22-51.768-164.22-127.45 0-40.152 18.16-66.317 53.58-92.483 2.7-1.934 4.61-4.781 5.38-8.015s0.34-6.637-1.21-9.579l-49.63-93.837c-0.91-1.679-2.15-3.161-3.64-4.361s-3.2-2.094-5.04-2.631c-1.88-0.559-3.85-0.717-5.79-0.466-1.95 0.253-3.82 0.911-5.49 1.933-55.71 33.045-124.06 93.497-120.34 209.66 4.51 147.86 127.45 260.76 287.26 265.38h18.95c189.92-6.204 327.07-147.18 327.07-338.35 0-175.49-127.9-363.39-364.51-363.39z"/><path d="m3148.9 261.46h-95.2c-2.22 0.029-4.36 0.93-5.94 2.509-1.59 1.58-2.49 3.715-2.5 5.95v199.74c0.01 2.225 0.92 4.346 2.51 5.908 1.58 1.562 3.71 2.439 5.93 2.439h95.2c57.97 0 100.72-45.678 100.72-108.27s-42.75-108.27-100.72-108.27z"/><path d="m3441.4 614.8c0 28.985 24.47 45.113 67.1 45.113 57.97 0 92.25-31.354 92.25-86.957v-16.014l-86.83 4.511c-45.8 2.255-72.52 21.317-72.52 53.347z"/><path d="m4146.3 2.0498h-1279c-20.97-2e-5 -41.76 4.1346-61.13 12.167-19.39 8.0328-37 19.806-51.82 34.648-14.84 14.842-26.6 32.46-34.62 51.85-8.03 19.389-12.14 40.168-12.12 61.15v700.16c0 42.366 16.82 82.999 46.77 112.97 29.95 29.968 70.57 46.818 112.92 46.848h1279c21.01 0.06 41.83-4.02 61.26-12.01 19.42-7.99 37.08-19.737 51.97-34.557 14.87-14.823 26.7-32.434 34.78-51.828 8.07-19.393 12.23-40.187 12.27-61.193v-700.16c0.03-21.048-4.08-41.898-12.12-61.35-8.04-19.452-19.85-37.122-34.74-51.995-14.89-14.873-32.58-26.655-52.04-34.668-19.46-8.0136-40.32-12.101-61.38-12.026zm-992.5 554.56h-100.6c-2.24 0-4.38 0.89-5.98 2.476-1.58 1.587-2.48 3.739-2.48 5.983v143.23c0 2.243-0.89 4.395-2.47 5.981-1.59 1.587-3.74 2.478-5.98 2.478h-70.84c-2.22-0.029-4.37-0.93-5.95-2.511-1.58-1.578-2.46-3.713-2.5-5.948v-516.66c0-2.242 0.89-4.394 2.49-5.981 1.58-1.586 3.72-2.477 5.96-2.477h188.35c106.7 0 183.05 77.708 183.05 186.77s-75.79 186.88-182.47 186.88l-0.58-0.224zm530.09 151.58c0.02 1.12-0.18 2.231-0.61 3.271-0.42 1.039-1.04 1.986-1.82 2.783-0.8 0.797-1.73 1.431-2.77 1.863-1.02 0.431-2.14 0.654-3.26 0.654h-66.88c-1.12 0-2.23-0.223-3.26-0.654-1.04-0.432-1.98-1.066-2.76-1.863s-1.41-1.744-1.82-2.783c-0.42-1.04-0.63-2.151-0.61-3.271v-15.451c0.1-1.357-0.22-2.713-0.95-3.865-0.71-1.154-1.78-2.045-3.06-2.54-1.26-0.494-2.65-0.565-3.96-0.203-1.33 0.36-2.48 1.135-3.31 2.209-19.97 21.767-52.45 37.556-104.22 37.556-76.23 0-126.66-39.699-126.66-108.27-0.73-16.72 2.72-33.359 10.05-48.408 7.32-15.046 18.3-28.026 31.92-37.758 27.51-20.64 70.14-31.354 133.41-33.836l67.1-2.255v-19.626c0-39.587-26.61-56.391-69.36-56.391-42.74 0-69.7 15.113-76 39.813-0.51 1.744-1.58 3.27-3.06 4.333-1.46 1.064-3.25 1.602-5.07 1.531h-66.2c-1.22 0.031-2.43-0.207-3.55-0.693-1.1-0.488-2.11-1.214-2.92-2.128-0.8-0.915-1.4-1.992-1.74-3.162-0.35-1.169-0.44-2.398-0.25-3.603 9.93-58.648 58.42-103.2 161.85-103.2 109.85 0 149.43 51.092 149.43 148.65l0.34 207.3zm416.63-335.2-148.87 397.11c-33.84 92.256-93.06 115.94-157.91 115.94-12.21 0.298-24.41-1.184-36.2-4.398-1.84-0.495-3.45-1.579-4.63-3.089-1.15-1.507-1.78-3.355-1.8-5.258v-60.34c0-1.262 0.27-2.51 0.8-3.654 0.54-1.144 1.31-2.157 2.28-2.964 0.98-0.809 2.11-1.392 3.33-1.71s2.5-0.363 3.74-0.131c10.23 1.94 20.61 2.922 31.02 2.934 17.93 0.899 35.65-4.247 50.32-14.615 14.65-10.368 25.41-25.358 30.54-42.567l4.41-13.873c0.68-1.856 0.68-3.894 0-5.752l-139.19-357.52c-0.42-1.278-0.54-2.64-0.34-3.972 0.21-1.333 0.72-2.6 1.48-3.698 0.79-1.098 1.82-1.997 3.01-2.625 1.19-0.627 2.52-0.965 3.86-0.984h67.68c1.73 0.017 3.41 0.551 4.84 1.537 1.43 0.984 2.53 2.374 3.16 3.99l94.52 252.18c0.63 1.647 1.73 3.066 3.18 4.067 1.46 1.003 3.17 1.538 4.94 1.538 1.75 0 3.49-0.535 4.93-1.538 1.45-1.001 2.57-2.42 3.18-4.067l82.01-251.51c0.54-1.715 1.63-3.209 3.09-4.264 1.46-1.056 3.21-1.617 5.01-1.601h69.38c1.33-6e-3 2.65 0.306 3.86 0.904 1.19 0.6 2.24 1.472 3.04 2.547s1.33 2.322 1.56 3.643c0.24 1.319 0.16 2.675-0.23 3.958v-0.226z"/></g><defs><clipPath id="a"><rect transform="translate(0 .24023)" width="4317" height="1036.8" fill="#fff"/></clipPath></defs></svg>`
|
5503
5524
|
}),
|
@@ -5600,7 +5621,7 @@ CheckoutArea.displayName = "CheckoutArea";
|
|
5600
5621
|
var import_rebuy2 = require("@rebuy/rebuy");
|
5601
5622
|
var Utilities4 = __toESM(require("@rebuy/rebuy/utilities"), 1);
|
5602
5623
|
var import_hydrogen6 = require("@shopify/hydrogen");
|
5603
|
-
var
|
5624
|
+
var import_react21 = require("react");
|
5604
5625
|
|
5605
5626
|
// src/assets/Close.tsx
|
5606
5627
|
var import_jsx_runtime17 = require("react/jsx-runtime");
|
@@ -5609,10 +5630,10 @@ var Close = () => {
|
|
5609
5630
|
};
|
5610
5631
|
|
5611
5632
|
// src/hooks/useBreakpoint.ts
|
5612
|
-
var
|
5633
|
+
var import_react14 = require("react");
|
5613
5634
|
var useBreakpoint = (settings) => {
|
5614
|
-
const [breakpoint, setBreakpoint] = (0,
|
5615
|
-
(0,
|
5635
|
+
const [breakpoint, setBreakpoint] = (0, import_react14.useState)("medium");
|
5636
|
+
(0, import_react14.useEffect)(() => {
|
5616
5637
|
if (!settings?.breakpoints) return;
|
5617
5638
|
const handleResize = () => {
|
5618
5639
|
const width = window.innerWidth;
|
@@ -5645,18 +5666,18 @@ var useBreakpoint = (settings) => {
|
|
5645
5666
|
};
|
5646
5667
|
|
5647
5668
|
// src/hooks/usePopupTrigger.tsx
|
5648
|
-
var
|
5669
|
+
var import_react15 = require("react");
|
5649
5670
|
var usePopupTrigger = (settings, popupTriggerId, widgetId, popupShownOnce, showPopup, setShowPopup, setPopupShownOnce) => {
|
5650
5671
|
const delayInMs = settings?.display_type === "popup" ? (settings?.popup_delay || 0) * 1e3 : 0;
|
5651
5672
|
const popupTrigger = settings?.popup_trigger;
|
5652
|
-
const showPopupWithDelay = (0,
|
5673
|
+
const showPopupWithDelay = (0, import_react15.useCallback)(() => {
|
5653
5674
|
if (!settings || settings.display_type !== "popup") return;
|
5654
5675
|
setTimeout(() => {
|
5655
5676
|
setShowPopup(true);
|
5656
5677
|
setPopupShownOnce(true);
|
5657
5678
|
}, delayInMs);
|
5658
5679
|
}, [delayInMs, setShowPopup, setPopupShownOnce, settings]);
|
5659
|
-
(0,
|
5680
|
+
(0, import_react15.useEffect)(() => {
|
5660
5681
|
if (!settings || settings.display_type !== "popup" || popupTrigger !== "load" || popupShownOnce) return;
|
5661
5682
|
const timer = setTimeout(() => {
|
5662
5683
|
setShowPopup(true);
|
@@ -5664,7 +5685,7 @@ var usePopupTrigger = (settings, popupTriggerId, widgetId, popupShownOnce, showP
|
|
5664
5685
|
}, delayInMs);
|
5665
5686
|
return () => clearTimeout(timer);
|
5666
5687
|
}, [popupTrigger, popupShownOnce, delayInMs, setShowPopup, setPopupShownOnce, settings]);
|
5667
|
-
(0,
|
5688
|
+
(0, import_react15.useEffect)(() => {
|
5668
5689
|
if (!settings || settings.display_type !== "popup" || popupTrigger !== "add_to_cart" || !popupTriggerId) return;
|
5669
5690
|
const selector = `#${popupTriggerId}`;
|
5670
5691
|
const handleCartAdd = () => {
|
@@ -5696,7 +5717,7 @@ var usePopupTrigger = (settings, popupTriggerId, widgetId, popupShownOnce, showP
|
|
5696
5717
|
});
|
5697
5718
|
};
|
5698
5719
|
}, [popupTrigger, popupTriggerId, showPopup, showPopupWithDelay, settings]);
|
5699
|
-
(0,
|
5720
|
+
(0, import_react15.useEffect)(() => {
|
5700
5721
|
if (!settings || settings.display_type !== "popup" || popupTrigger !== "submit") return;
|
5701
5722
|
const selector = "form";
|
5702
5723
|
const handleSubmit = () => {
|
@@ -5712,7 +5733,7 @@ var usePopupTrigger = (settings, popupTriggerId, widgetId, popupShownOnce, showP
|
|
5712
5733
|
});
|
5713
5734
|
};
|
5714
5735
|
}, [popupTrigger, showPopupWithDelay, settings]);
|
5715
|
-
(0,
|
5736
|
+
(0, import_react15.useEffect)(() => {
|
5716
5737
|
if (!settings || settings.display_type !== "popup" || popupTrigger !== "exit") return;
|
5717
5738
|
const handleExitIntent = (e) => {
|
5718
5739
|
if (e.clientY <= 0 && !popupShownOnce) {
|
@@ -6113,7 +6134,7 @@ var defaultProductCardSettings = {
|
|
6113
6134
|
|
6114
6135
|
// src/components/ProductCard/ProductCard.tsx
|
6115
6136
|
var import_hydrogen5 = require("@shopify/hydrogen");
|
6116
|
-
var
|
6137
|
+
var import_react18 = require("react");
|
6117
6138
|
|
6118
6139
|
// src/components/AddToCartBtn/HydrogenAddToCartBtn.tsx
|
6119
6140
|
var import_hydrogen3 = require("@shopify/hydrogen");
|
@@ -6301,7 +6322,7 @@ var RebuyProductPrice = ({ selectedVariant, settingsDiscount }) => {
|
|
6301
6322
|
};
|
6302
6323
|
|
6303
6324
|
// src/components/QuantityInput/QuantityInput.tsx
|
6304
|
-
var
|
6325
|
+
var import_react16 = require("react");
|
6305
6326
|
|
6306
6327
|
// src/components/QuantityInput/QuantityInput.module.css
|
6307
6328
|
var result11 = { "rebuy-quantity__container": "QuantityInput_rebuy-quantity__container", "rebuy-quantity__select": "QuantityInput_rebuy-quantity__select" };
|
@@ -6315,7 +6336,7 @@ var QuantityInput = ({
|
|
6315
6336
|
maxValue = 10,
|
6316
6337
|
minValue = 1
|
6317
6338
|
}) => {
|
6318
|
-
const [quantity, setQuantity] = (0,
|
6339
|
+
const [quantity, setQuantity] = (0, import_react16.useState)(defaultQuantity);
|
6319
6340
|
const handleChange = (event) => {
|
6320
6341
|
const newValue = parseInt(event.target.value, 10);
|
6321
6342
|
setQuantity(newValue);
|
@@ -6339,7 +6360,7 @@ var QuantityInput = ({
|
|
6339
6360
|
|
6340
6361
|
// src/components/VariantSelect/VariantSelect.tsx
|
6341
6362
|
var import_clsx5 = __toESM(require("clsx"), 1);
|
6342
|
-
var
|
6363
|
+
var import_react17 = require("react");
|
6343
6364
|
|
6344
6365
|
// src/components/VariantSelect/VariantSelect.module.css
|
6345
6366
|
var result12 = { "rebuy-variant__container": "VariantSelect_rebuy-variant__container", "rebuy-variant__select": "VariantSelect_rebuy-variant__select", "rebuy-variant__select-option": "VariantSelect_rebuy-variant__select-option", "rebuy-variant__buttons": "VariantSelect_rebuy-variant__buttons", "rebuy-variant__button": "VariantSelect_rebuy-variant__button", "rebuy-variant__button--selected": "VariantSelect_rebuy-variant__button--selected" };
|
@@ -6348,8 +6369,8 @@ var VariantSelect_default = result12;
|
|
6348
6369
|
// src/components/VariantSelect/VariantSelect.tsx
|
6349
6370
|
var import_jsx_runtime23 = require("react/jsx-runtime");
|
6350
6371
|
var VariantSelect = ({ handleSelectedVariant, product, selectedId, style = "select" }) => {
|
6351
|
-
const [selectedVariantId, setSelectedVariantId] = (0,
|
6352
|
-
(0,
|
6372
|
+
const [selectedVariantId, setSelectedVariantId] = (0, import_react17.useState)(selectedId || product.variants.nodes[0]?.id);
|
6373
|
+
(0, import_react17.useEffect)(() => {
|
6353
6374
|
if (selectedId && selectedId !== selectedVariantId) {
|
6354
6375
|
setSelectedVariantId(selectedId);
|
6355
6376
|
}
|
@@ -6440,21 +6461,21 @@ var ProductCard = ({
|
|
6440
6461
|
settings = defaultProductCardSettings,
|
6441
6462
|
variantOptionsText
|
6442
6463
|
}) => {
|
6443
|
-
const [selectedVariant, setSelectedVariant] = (0,
|
6444
|
-
const [selectedQuantity, setSelectedQuantity] = (0,
|
6445
|
-
const [interactionStatus, setInteractionStatus] = (0,
|
6464
|
+
const [selectedVariant, setSelectedVariant] = (0, import_react18.useState)(product.variants.nodes[0]);
|
6465
|
+
const [selectedQuantity, setSelectedQuantity] = (0, import_react18.useState)(settings?.quantityInput?.default_quantity || 1);
|
6466
|
+
const [interactionStatus, setInteractionStatus] = (0, import_react18.useState)("ready");
|
6446
6467
|
const { toggleCart } = useSmartCart();
|
6447
6468
|
const displayImage = selectedVariant.image || product.featuredImage;
|
6448
|
-
const handleSelectedVariant = (0,
|
6469
|
+
const handleSelectedVariant = (0, import_react18.useCallback)((product2, variant_id) => {
|
6449
6470
|
const updatedVariant = product2.variants.nodes.find((variant) => variant.id === variant_id);
|
6450
6471
|
if (updatedVariant) {
|
6451
6472
|
setSelectedVariant(updatedVariant);
|
6452
6473
|
}
|
6453
6474
|
}, []);
|
6454
|
-
const handleSelectedQuantity = (0,
|
6475
|
+
const handleSelectedQuantity = (0, import_react18.useCallback)((quantity) => {
|
6455
6476
|
setSelectedQuantity(quantity);
|
6456
6477
|
}, []);
|
6457
|
-
const handleLinkClick = (0,
|
6478
|
+
const handleLinkClick = (0, import_react18.useCallback)(() => {
|
6458
6479
|
if (isCrossSell) {
|
6459
6480
|
toggleCart();
|
6460
6481
|
}
|
@@ -6465,7 +6486,7 @@ var ProductCard = ({
|
|
6465
6486
|
const cardLayout = settings?.layoutStyle || "grid";
|
6466
6487
|
const productOptions = settings?.productOptions;
|
6467
6488
|
const showVariantOptionsSetting = productOptions?.show_variant_options || "always";
|
6468
|
-
const showVariantSelect = (0,
|
6489
|
+
const showVariantSelect = (0, import_react18.useMemo)(() => {
|
6469
6490
|
if (product?.variants.nodes.length <= 1) {
|
6470
6491
|
const firstVariantTitle = product.variants.nodes[0]?.title?.toLowerCase();
|
6471
6492
|
if (firstVariantTitle === "default title" || firstVariantTitle === "default") {
|
@@ -6488,10 +6509,10 @@ var ProductCard = ({
|
|
6488
6509
|
return true;
|
6489
6510
|
}
|
6490
6511
|
}, [product?.variants.nodes, showVariantOptionsSetting, interactionStatus, cardLayout]);
|
6491
|
-
const isSelectionRequiredBeforeAddToCart = (0,
|
6512
|
+
const isSelectionRequiredBeforeAddToCart = (0, import_react18.useMemo)(() => {
|
6492
6513
|
return product?.variants.nodes.length > 1 && !showVariantSelect && interactionStatus === "ready";
|
6493
6514
|
}, [product?.variants.nodes, showVariantSelect, interactionStatus]);
|
6494
|
-
const atcButtonLabel = (0,
|
6515
|
+
const atcButtonLabel = (0, import_react18.useMemo)(() => {
|
6495
6516
|
if (isSelectionRequiredBeforeAddToCart) {
|
6496
6517
|
if (product.options && product.options.length === 1) {
|
6497
6518
|
return `${product.options[0].name}`;
|
@@ -6500,12 +6521,12 @@ var ProductCard = ({
|
|
6500
6521
|
}
|
6501
6522
|
return addToCartBtnText || "Add to Cart";
|
6502
6523
|
}, [isSelectionRequiredBeforeAddToCart, product.options, variantOptionsText, addToCartBtnText]);
|
6503
|
-
const handlePrimaryAction = (0,
|
6524
|
+
const handlePrimaryAction = (0, import_react18.useCallback)(() => {
|
6504
6525
|
if (isSelectionRequiredBeforeAddToCart) {
|
6505
6526
|
setInteractionStatus("selecting");
|
6506
6527
|
} else {
|
6507
|
-
if (isInPopup
|
6508
|
-
onPopupDismiss();
|
6528
|
+
if (isInPopup) {
|
6529
|
+
onPopupDismiss?.();
|
6509
6530
|
}
|
6510
6531
|
}
|
6511
6532
|
}, [isSelectionRequiredBeforeAddToCart, isInPopup, onPopupDismiss]);
|
@@ -6674,7 +6695,7 @@ var ProductCard = ({
|
|
6674
6695
|
addToCartCallback,
|
6675
6696
|
disableShopifyAddAction: isSelectionRequiredBeforeAddToCart,
|
6676
6697
|
isHydrogenReact,
|
6677
|
-
onClickAction: handlePrimaryAction,
|
6698
|
+
onClickAction: isSelectionRequiredBeforeAddToCart ? handlePrimaryAction : void 0,
|
6678
6699
|
quantity: selectedQuantity,
|
6679
6700
|
selectedVariants: isSelectionRequiredBeforeAddToCart ? [] : [selectedVariant]
|
6680
6701
|
}
|
@@ -6695,7 +6716,7 @@ var ProductCard = ({
|
|
6695
6716
|
};
|
6696
6717
|
|
6697
6718
|
// src/components/ProductCarousel/ProductCarousel.tsx
|
6698
|
-
var
|
6719
|
+
var import_react19 = require("react");
|
6699
6720
|
|
6700
6721
|
// src/components/ProductCarousel/ProductCarousel.module.css
|
6701
6722
|
var result15 = { "rebuy-carousel": "ProductCarousel_rebuy-carousel", "rebuy-carousel__container": "ProductCarousel_rebuy-carousel__container", "rebuy-carousel__slide": "ProductCarousel_rebuy-carousel__slide", "rebuy-carousel__controls": "ProductCarousel_rebuy-carousel__controls", "rebuy-carousel__prev": "ProductCarousel_rebuy-carousel__prev", "rebuy-carousel__next": "ProductCarousel_rebuy-carousel__next", "rebuy-carousel__pagination": "ProductCarousel_rebuy-carousel__pagination", "rebuy-carousel__dot": "ProductCarousel_rebuy-carousel__dot", "rebuy-carousel__grid": "ProductCarousel_rebuy-carousel__grid" };
|
@@ -6717,10 +6738,10 @@ var ProductCarousel = ({
|
|
6717
6738
|
showPagination = true,
|
6718
6739
|
variantOptionsText
|
6719
6740
|
}) => {
|
6720
|
-
const [currentSlide, setCurrentSlide] = (0,
|
6721
|
-
const [totalSlides, setTotalSlides] = (0,
|
6722
|
-
const [repeatedProducts, setRepeatedProducts] = (0,
|
6723
|
-
(0,
|
6741
|
+
const [currentSlide, setCurrentSlide] = (0, import_react19.useState)(0);
|
6742
|
+
const [totalSlides, setTotalSlides] = (0, import_react19.useState)(0);
|
6743
|
+
const [repeatedProducts, setRepeatedProducts] = (0, import_react19.useState)([]);
|
6744
|
+
(0, import_react19.useEffect)(() => {
|
6724
6745
|
if (products.length === 0) {
|
6725
6746
|
setRepeatedProducts([]);
|
6726
6747
|
return;
|
@@ -6733,7 +6754,7 @@ var ProductCarousel = ({
|
|
6733
6754
|
}
|
6734
6755
|
setRepeatedProducts(repeated);
|
6735
6756
|
}, [products, columns]);
|
6736
|
-
(0,
|
6757
|
+
(0, import_react19.useEffect)(() => {
|
6737
6758
|
if (repeatedProducts.length && columns) {
|
6738
6759
|
setTotalSlides(Math.ceil(repeatedProducts.length / columns));
|
6739
6760
|
}
|
@@ -6794,7 +6815,7 @@ var ProductCarousel = ({
|
|
6794
6815
|
|
6795
6816
|
// src/components/Timer/Timer.tsx
|
6796
6817
|
var import_clsx7 = __toESM(require("clsx"), 1);
|
6797
|
-
var
|
6818
|
+
var import_react20 = require("react");
|
6798
6819
|
|
6799
6820
|
// src/components/Timer/Timer.module.css
|
6800
6821
|
var result16 = { "rebuy-timer__container": "Timer_rebuy-timer__container", "rebuy-timer__text": "Timer_rebuy-timer__text", "rebuy-timer__title": "Timer_rebuy-timer__title", "rebuy-timer__display": "Timer_rebuy-timer__display", "rebuy-timer__display--urgent": "Timer_rebuy-timer__display--urgent", "rebuy-timer__minutes": "Timer_rebuy-timer__minutes", "rebuy-timer__seconds": "Timer_rebuy-timer__seconds", "rebuy-timer__separator": "Timer_rebuy-timer__separator" };
|
@@ -6802,15 +6823,24 @@ var Timer_default = result16;
|
|
6802
6823
|
|
6803
6824
|
// src/components/Timer/Timer.tsx
|
6804
6825
|
var import_jsx_runtime27 = require("react/jsx-runtime");
|
6805
|
-
var Timer = ({
|
6826
|
+
var Timer = ({
|
6827
|
+
action,
|
6828
|
+
cartCount,
|
6829
|
+
checkoutUrl,
|
6830
|
+
durationMinutes,
|
6831
|
+
durationSeconds,
|
6832
|
+
isPopup = false,
|
6833
|
+
onDismiss,
|
6834
|
+
title
|
6835
|
+
}) => {
|
6806
6836
|
const initialTotalSeconds = (durationMinutes || 0) * 60 + (durationSeconds || 0);
|
6807
|
-
const [totalSeconds, setTotalSeconds] = (0,
|
6808
|
-
const [timerActive, setTimerActive] = (0,
|
6837
|
+
const [totalSeconds, setTotalSeconds] = (0, import_react20.useState)(initialTotalSeconds);
|
6838
|
+
const [timerActive, setTimerActive] = (0, import_react20.useState)(true);
|
6809
6839
|
const minutes = Math.floor(totalSeconds / 60);
|
6810
6840
|
const seconds = totalSeconds % 60;
|
6811
6841
|
const formattedMinutes = String(minutes).padStart(2, "0");
|
6812
6842
|
const formattedSeconds = String(seconds).padStart(2, "0");
|
6813
|
-
const handleTimerEnd = (0,
|
6843
|
+
const handleTimerEnd = (0, import_react20.useCallback)(() => {
|
6814
6844
|
setTimerActive(false);
|
6815
6845
|
switch (action) {
|
6816
6846
|
case "dismiss":
|
@@ -6819,7 +6849,14 @@ var Timer = ({ action, durationMinutes, durationSeconds, isPopup = false, onDism
|
|
6819
6849
|
}
|
6820
6850
|
break;
|
6821
6851
|
case "checkout":
|
6822
|
-
|
6852
|
+
if (checkoutUrl && cartCount && cartCount > 0) {
|
6853
|
+
window.location.href = checkoutUrl;
|
6854
|
+
} else {
|
6855
|
+
console.warn("Timer: No checkout URL available for checkout action");
|
6856
|
+
if (isPopup && onDismiss) {
|
6857
|
+
onDismiss();
|
6858
|
+
}
|
6859
|
+
}
|
6823
6860
|
break;
|
6824
6861
|
case "cart":
|
6825
6862
|
window.location.href = "/cart";
|
@@ -6828,8 +6865,8 @@ var Timer = ({ action, durationMinutes, durationSeconds, isPopup = false, onDism
|
|
6828
6865
|
default:
|
6829
6866
|
break;
|
6830
6867
|
}
|
6831
|
-
}, [action, isPopup, onDismiss]);
|
6832
|
-
(0,
|
6868
|
+
}, [action, checkoutUrl, isPopup, onDismiss]);
|
6869
|
+
(0, import_react20.useEffect)(() => {
|
6833
6870
|
if (!timerActive) return;
|
6834
6871
|
const interval = setInterval(() => {
|
6835
6872
|
setTotalSeconds((prevSeconds) => {
|
@@ -6906,6 +6943,8 @@ var RebuyWidget_default = result17;
|
|
6906
6943
|
var import_jsx_runtime28 = require("react/jsx-runtime");
|
6907
6944
|
var WidgetContent = ({
|
6908
6945
|
addToCartCallback,
|
6946
|
+
cartCount,
|
6947
|
+
checkoutUrl,
|
6909
6948
|
customTitle,
|
6910
6949
|
customTitleLevel,
|
6911
6950
|
customTitleStyle,
|
@@ -6999,6 +7038,8 @@ var WidgetContent = ({
|
|
6999
7038
|
Timer,
|
7000
7039
|
{
|
7001
7040
|
action: settings?.timer.action,
|
7041
|
+
cartCount,
|
7042
|
+
checkoutUrl,
|
7002
7043
|
durationMinutes: settings?.timer.duration_minutes,
|
7003
7044
|
durationSeconds: settings?.timer.duration_seconds,
|
7004
7045
|
isPopup: settings?.display_type === "popup",
|
@@ -7044,26 +7085,26 @@ var RebuyWidget = (props) => {
|
|
7044
7085
|
widgetId
|
7045
7086
|
} = props;
|
7046
7087
|
const { apiKey: apiKeyFromConfig, loadingStatus: configLoadingStatus, rebuyConfig } = useRebuyConfig();
|
7047
|
-
const [settings, setSettings] = (0,
|
7048
|
-
const [loadingSettings, setLoadingSettings] = (0,
|
7049
|
-
const [error, setError] = (0,
|
7050
|
-
const [showPopup, setShowPopup] = (0,
|
7051
|
-
const [popupShownOnce, setPopupShownOnce] = (0,
|
7052
|
-
const popupRef = (0,
|
7053
|
-
const [clientInstance, setClientInstance] = (0,
|
7054
|
-
const rebuyGeneralContext = (0,
|
7088
|
+
const [settings, setSettings] = (0, import_react21.useState)(null);
|
7089
|
+
const [loadingSettings, setLoadingSettings] = (0, import_react21.useState)(true);
|
7090
|
+
const [error, setError] = (0, import_react21.useState)(null);
|
7091
|
+
const [showPopup, setShowPopup] = (0, import_react21.useState)(false);
|
7092
|
+
const [popupShownOnce, setPopupShownOnce] = (0, import_react21.useState)(false);
|
7093
|
+
const popupRef = (0, import_react21.useRef)(null);
|
7094
|
+
const [clientInstance, setClientInstance] = (0, import_react21.useState)(null);
|
7095
|
+
const rebuyGeneralContext = (0, import_react21.useContext)(RebuyContext);
|
7055
7096
|
const generalContextParams = rebuyGeneralContext?.contextParameters;
|
7056
7097
|
const mainCacheKey = rebuyConfig?.shop?.cache_key;
|
7057
7098
|
const generalContextCacheKey = generalContextParams?.cache_key;
|
7058
7099
|
const cacheKeyToUse = mainCacheKey || generalContextCacheKey || "";
|
7059
|
-
const [initialized, setInitialized] = (0,
|
7100
|
+
const [initialized, setInitialized] = (0, import_react21.useState)(false);
|
7060
7101
|
const shopifyProductId = product?.id ?? productId ?? null;
|
7061
7102
|
const shopifyVariantId = variant?.id ?? variantId ?? null;
|
7062
|
-
const [products, setProducts] = (0,
|
7103
|
+
const [products, setProducts] = (0, import_react21.useState)([]);
|
7063
7104
|
const currentBreakpoint = useBreakpoint(settings);
|
7064
7105
|
const shouldHideWidget = settings?.layout?.[currentBreakpoint]?.style === "none";
|
7065
7106
|
usePopupTrigger(settings, popupTriggerId, widgetId, popupShownOnce, showPopup, setShowPopup, setPopupShownOnce);
|
7066
|
-
(0,
|
7107
|
+
(0, import_react21.useEffect)(() => {
|
7067
7108
|
if (!clientInstance && apiKeyFromConfig && configLoadingStatus === "success") {
|
7068
7109
|
const client = new import_rebuy2.RebuyClient(apiKeyFromConfig);
|
7069
7110
|
if (generalContextParams) {
|
@@ -7074,12 +7115,12 @@ var RebuyWidget = (props) => {
|
|
7074
7115
|
setInitialized(true);
|
7075
7116
|
}
|
7076
7117
|
}, [clientInstance, apiKeyFromConfig, configLoadingStatus, generalContextParams]);
|
7077
|
-
(0,
|
7118
|
+
(0, import_react21.useEffect)(() => {
|
7078
7119
|
if (!clientInstance || !generalContextParams) return;
|
7079
7120
|
const filteredParams = filterContextForWidgetEndpoints(generalContextParams, settings?.endpoint);
|
7080
7121
|
clientInstance.setContextParameters(filteredParams);
|
7081
7122
|
}, [clientInstance, generalContextParams, settings]);
|
7082
|
-
(0,
|
7123
|
+
(0, import_react21.useEffect)(() => {
|
7083
7124
|
if (configLoadingStatus === "loading") {
|
7084
7125
|
return;
|
7085
7126
|
}
|
@@ -7138,13 +7179,13 @@ var RebuyWidget = (props) => {
|
|
7138
7179
|
};
|
7139
7180
|
fetchSettings();
|
7140
7181
|
}, [widgetId, clientInstance, configLoadingStatus, apiKeyFromConfig, cacheKeyToUse, initialized]);
|
7141
|
-
const cartProductIds = (0,
|
7182
|
+
const cartProductIds = (0, import_react21.useMemo)(() => {
|
7142
7183
|
return (generalContextParams?.cart?.items || []).map((item) => item.product_id).filter(Boolean).join(",");
|
7143
7184
|
}, [generalContextParams?.cart?.items]);
|
7144
|
-
const cartVariantIds = (0,
|
7185
|
+
const cartVariantIds = (0, import_react21.useMemo)(() => {
|
7145
7186
|
return (generalContextParams?.cart?.items || []).map((item) => item.variant_id).filter(Boolean).join(",");
|
7146
7187
|
}, [generalContextParams?.cart?.items]);
|
7147
|
-
const request = (0,
|
7188
|
+
const request = (0, import_react21.useMemo)(() => {
|
7148
7189
|
const req = {
|
7149
7190
|
endpoint: settings?.endpoint || "/api/v1/products/recommended",
|
7150
7191
|
params: {}
|
@@ -7174,7 +7215,7 @@ var RebuyWidget = (props) => {
|
|
7174
7215
|
}
|
7175
7216
|
return req;
|
7176
7217
|
}, [settings, shopifyProductId, shopifyVariantId, cartProductIds, cartVariantIds]);
|
7177
|
-
(0,
|
7218
|
+
(0, import_react21.useEffect)(() => {
|
7178
7219
|
let isMounted = true;
|
7179
7220
|
if (!clientInstance || !initialized || !settings || configLoadingStatus !== "success") return;
|
7180
7221
|
const fetchData = async () => {
|
@@ -7226,7 +7267,7 @@ var RebuyWidget = (props) => {
|
|
7226
7267
|
apiKeyFromConfig,
|
7227
7268
|
cacheKeyToUse
|
7228
7269
|
]);
|
7229
|
-
(0,
|
7270
|
+
(0, import_react21.useEffect)(() => {
|
7230
7271
|
if (!showPopup) return;
|
7231
7272
|
const handleClickOutside = (event) => {
|
7232
7273
|
if (popupRef.current && !popupRef.current.contains(event.target)) {
|
@@ -7276,6 +7317,8 @@ var RebuyWidget = (props) => {
|
|
7276
7317
|
closePopup();
|
7277
7318
|
}, 0);
|
7278
7319
|
},
|
7320
|
+
cartCount: generalContextParams?.cart_count || 0,
|
7321
|
+
checkoutUrl: generalContextParams?.checkoutUrl,
|
7279
7322
|
customTitle,
|
7280
7323
|
customTitleLevel,
|
7281
7324
|
customTitleStyle,
|
@@ -7290,6 +7333,7 @@ var RebuyWidget = (props) => {
|
|
7290
7333
|
WidgetContent,
|
7291
7334
|
{
|
7292
7335
|
addToCartCallback,
|
7336
|
+
checkoutUrl: generalContextParams?.checkoutUrl,
|
7293
7337
|
customTitle,
|
7294
7338
|
customTitleLevel,
|
7295
7339
|
customTitleStyle,
|
@@ -7314,7 +7358,7 @@ var CrossSell = ({ componentConfig }) => {
|
|
7314
7358
|
};
|
7315
7359
|
|
7316
7360
|
// src/smart-cart/components/CustomCode/CustomCodeBlock.tsx
|
7317
|
-
var
|
7361
|
+
var import_react22 = __toESM(require("react"), 1);
|
7318
7362
|
|
7319
7363
|
// src/utils/nonceManager.ts
|
7320
7364
|
var cachedNonce = void 0;
|
@@ -7388,12 +7432,12 @@ var executeScriptsInContainer = (container, debugKey, debugContext) => {
|
|
7388
7432
|
|
7389
7433
|
// src/smart-cart/components/CustomCode/CustomCodeBlock.tsx
|
7390
7434
|
var import_jsx_runtime31 = require("react/jsx-runtime");
|
7391
|
-
var CustomCodeBlock =
|
7392
|
-
const containerRef = (0,
|
7393
|
-
const executedCodeRef = (0,
|
7435
|
+
var CustomCodeBlock = import_react22.default.memo(({ componentConfig }) => {
|
7436
|
+
const containerRef = (0, import_react22.useRef)(null);
|
7437
|
+
const executedCodeRef = (0, import_react22.useRef)(null);
|
7394
7438
|
const componentId = componentConfig.component_id;
|
7395
|
-
const htmlCode = (0,
|
7396
|
-
(0,
|
7439
|
+
const htmlCode = (0, import_react22.useMemo)(() => componentConfig.settings?.html_code ?? null, [componentConfig.settings?.html_code]);
|
7440
|
+
(0, import_react22.useEffect)(() => {
|
7397
7441
|
const container = containerRef.current;
|
7398
7442
|
if (htmlCode && container && executedCodeRef.current !== htmlCode) {
|
7399
7443
|
const timerId = setTimeout(() => {
|
@@ -7429,20 +7473,20 @@ CustomCodeBlock.displayName = "CustomCodeBlock";
|
|
7429
7473
|
|
7430
7474
|
// src/smart-cart/components/DiscountCodeInput/DiscountCodeInput.tsx
|
7431
7475
|
var import_clsx8 = __toESM(require("clsx"), 1);
|
7432
|
-
var
|
7476
|
+
var import_react24 = __toESM(require("react"), 1);
|
7433
7477
|
var import_react_router7 = require("react-router");
|
7434
7478
|
|
7435
7479
|
// src/smart-cart/hooks/useDiscountManager.ts
|
7436
|
-
var
|
7480
|
+
var import_react23 = require("react");
|
7437
7481
|
var GENERIC_ERROR_CODE_MESSAGE = "{{code}} is not valid for this cart.";
|
7438
7482
|
var useDiscountManager = () => {
|
7439
7483
|
const { cartData, error: cartErrorFromCtx, getComponentConfigByType } = useSmartCart();
|
7440
|
-
const [isProcessing, setIsProcessing] = (0,
|
7441
|
-
const [currentError, setCurrentError] = (0,
|
7442
|
-
const [appliedCodesState, setAppliedCodesState] = (0,
|
7443
|
-
const componentConfig = (0,
|
7444
|
-
const settings = (0,
|
7445
|
-
(0,
|
7484
|
+
const [isProcessing, setIsProcessing] = (0, import_react23.useState)(false);
|
7485
|
+
const [currentError, setCurrentError] = (0, import_react23.useState)(null);
|
7486
|
+
const [appliedCodesState, setAppliedCodesState] = (0, import_react23.useState)([]);
|
7487
|
+
const componentConfig = (0, import_react23.useMemo)(() => getComponentConfigByType("discount_code"), [getComponentConfigByType]);
|
7488
|
+
const settings = (0, import_react23.useMemo)(() => componentConfig?.settings ?? null, [componentConfig]);
|
7489
|
+
(0, import_react23.useEffect)(() => {
|
7446
7490
|
const codesFromApi = cartData?.discountCodes?.filter((dc) => dc.applicable).map((dc) => dc.code) ?? [];
|
7447
7491
|
if (JSON.stringify(codesFromApi) !== JSON.stringify(appliedCodesState)) {
|
7448
7492
|
setAppliedCodesState(codesFromApi);
|
@@ -7453,7 +7497,7 @@ var useDiscountManager = () => {
|
|
7453
7497
|
}
|
7454
7498
|
}, [cartData?.discountCodes, appliedCodesState, currentError]);
|
7455
7499
|
const errorToDisplay = currentError ?? cartErrorFromCtx;
|
7456
|
-
const prepareApplyCode = (0,
|
7500
|
+
const prepareApplyCode = (0, import_react23.useCallback)(
|
7457
7501
|
(code) => {
|
7458
7502
|
if (!code) return null;
|
7459
7503
|
const codeUpper = code.trim().toUpperCase();
|
@@ -7462,7 +7506,7 @@ var useDiscountManager = () => {
|
|
7462
7506
|
},
|
7463
7507
|
[appliedCodesState]
|
7464
7508
|
);
|
7465
|
-
const prepareRemoveCode = (0,
|
7509
|
+
const prepareRemoveCode = (0, import_react23.useCallback)(
|
7466
7510
|
(codeToRemove) => {
|
7467
7511
|
const codeUpper = codeToRemove.trim().toUpperCase();
|
7468
7512
|
const codesToKeep = appliedCodesState.filter((c) => c.toUpperCase() !== codeUpper);
|
@@ -7470,7 +7514,7 @@ var useDiscountManager = () => {
|
|
7470
7514
|
},
|
7471
7515
|
[appliedCodesState]
|
7472
7516
|
);
|
7473
|
-
const prepareRemoveAllCodes = (0,
|
7517
|
+
const prepareRemoveAllCodes = (0, import_react23.useCallback)(() => {
|
7474
7518
|
return { codes: [] };
|
7475
7519
|
}, []);
|
7476
7520
|
const processActionResult = (resultCart, attemptedCode) => {
|
@@ -7536,12 +7580,12 @@ var DiscountCodeInputComponent = ({ componentConfig }) => {
|
|
7536
7580
|
setIsProcessing: setDiscountManagerIsProcessing,
|
7537
7581
|
settings
|
7538
7582
|
} = useDiscountManager();
|
7539
|
-
const [inputValue, setInputValue] = (0,
|
7540
|
-
const [isInputFocused, setIsInputFocused] = (0,
|
7541
|
-
const [isLocallyProcessing, setIsLocallyProcessing] = (0,
|
7542
|
-
const inputRef = (0,
|
7583
|
+
const [inputValue, setInputValue] = (0, import_react24.useState)("");
|
7584
|
+
const [isInputFocused, setIsInputFocused] = (0, import_react24.useState)(false);
|
7585
|
+
const [isLocallyProcessing, setIsLocallyProcessing] = (0, import_react24.useState)(false);
|
7586
|
+
const inputRef = (0, import_react24.useRef)(null);
|
7543
7587
|
const hasItems = getItemCount() > 0;
|
7544
|
-
const lang = (0,
|
7588
|
+
const lang = (0, import_react24.useMemo)(
|
7545
7589
|
() => ({
|
7546
7590
|
// applyingLabel: settings?.language?.discount_applying_label ?? 'Applying...',
|
7547
7591
|
buttonLabel: settings?.language?.discount_button_label ?? "Apply",
|
@@ -7549,23 +7593,23 @@ var DiscountCodeInputComponent = ({ componentConfig }) => {
|
|
7549
7593
|
}),
|
7550
7594
|
[settings]
|
7551
7595
|
);
|
7552
|
-
const isLoadingCombined = (0,
|
7596
|
+
const isLoadingCombined = (0, import_react24.useMemo)(() => {
|
7553
7597
|
if (isHydrogenReact) return isGlobalCartLoading || isLocallyProcessing;
|
7554
7598
|
return discountFetcher.state !== "idle" || isLocallyProcessing;
|
7555
7599
|
}, [isHydrogenReact, isGlobalCartLoading, discountFetcher.state, isLocallyProcessing]);
|
7556
7600
|
const shouldShowTags = appliedCodes.length > 0;
|
7557
|
-
const discountTotalAmount = (0,
|
7601
|
+
const discountTotalAmount = (0, import_react24.useMemo)(() => {
|
7558
7602
|
if (!cartData || !shouldShowTags || !Array.isArray(cartData.discountAllocations)) {
|
7559
7603
|
return 0;
|
7560
7604
|
}
|
7561
7605
|
return cartData.discountAllocations.filter((alloc) => alloc.__typename === "CartCodeDiscountAllocation").reduce((sum, alloc) => sum + parseFloat(alloc.discountedAmount.amount), 0);
|
7562
7606
|
}, [cartData, shouldShowTags]);
|
7563
|
-
const _formattedDiscountTotal = (0,
|
7607
|
+
const _formattedDiscountTotal = (0, import_react24.useMemo)(() => {
|
7564
7608
|
if (discountTotalAmount <= 0) return "";
|
7565
7609
|
const currencyCode = cartData?.cost?.totalAmount?.currencyCode ?? "USD";
|
7566
7610
|
return `- ${formatMoney(discountTotalAmount, void 0, currencyCode)}`;
|
7567
7611
|
}, [discountTotalAmount, cartData, appliedCodes]);
|
7568
|
-
const handleApply = (0,
|
7612
|
+
const handleApply = (0, import_react24.useCallback)(
|
7569
7613
|
(event) => {
|
7570
7614
|
event.preventDefault();
|
7571
7615
|
if (!inputValue.trim() || isLoadingCombined) return;
|
@@ -7602,7 +7646,7 @@ var DiscountCodeInputComponent = ({ componentConfig }) => {
|
|
7602
7646
|
setDiscountManagerError
|
7603
7647
|
]
|
7604
7648
|
);
|
7605
|
-
const handleRemove = (0,
|
7649
|
+
const handleRemove = (0, import_react24.useCallback)(
|
7606
7650
|
(code) => {
|
7607
7651
|
if (isLoadingCombined) return;
|
7608
7652
|
const payloadFromManager = prepareRemoveCode(code);
|
@@ -7635,7 +7679,7 @@ var DiscountCodeInputComponent = ({ componentConfig }) => {
|
|
7635
7679
|
setDiscountManagerError
|
7636
7680
|
]
|
7637
7681
|
);
|
7638
|
-
(0,
|
7682
|
+
(0, import_react24.useEffect)(() => {
|
7639
7683
|
if (isHydrogenReact) {
|
7640
7684
|
if (!isGlobalCartLoading && isLocallyProcessing) {
|
7641
7685
|
setIsLocallyProcessing(false);
|
@@ -7762,11 +7806,11 @@ var DiscountCodeInputComponent = ({ componentConfig }) => {
|
|
7762
7806
|
}
|
7763
7807
|
);
|
7764
7808
|
};
|
7765
|
-
var DiscountCodeInput =
|
7809
|
+
var DiscountCodeInput = import_react24.default.memo(DiscountCodeInputComponent);
|
7766
7810
|
DiscountCodeInput.displayName = "DiscountCodeInput";
|
7767
7811
|
|
7768
7812
|
// src/smart-cart/components/LoginButton/LoginButton.tsx
|
7769
|
-
var
|
7813
|
+
var import_react25 = __toESM(require("react"), 1);
|
7770
7814
|
|
7771
7815
|
// src/smart-cart/components/LoginButton/LoginButton.module.css
|
7772
7816
|
var result19 = { "rebuy-login-button": "LoginButton_rebuy-login-button" };
|
@@ -7774,7 +7818,7 @@ var LoginButton_default = result19;
|
|
7774
7818
|
|
7775
7819
|
// src/smart-cart/components/LoginButton/LoginButton.tsx
|
7776
7820
|
var import_jsx_runtime33 = require("react/jsx-runtime");
|
7777
|
-
var LoginButton =
|
7821
|
+
var LoginButton = import_react25.default.memo(() => {
|
7778
7822
|
const { cartData, getComponentConfigByType } = useSmartCart();
|
7779
7823
|
const componentConfig = getComponentConfigByType("login");
|
7780
7824
|
const isLoggedInViaApi = !!cartData?.buyerIdentity?.customer?.id;
|
@@ -7802,10 +7846,10 @@ var LoginButton = import_react24.default.memo(() => {
|
|
7802
7846
|
LoginButton.displayName = "LoginButton";
|
7803
7847
|
|
7804
7848
|
// src/smart-cart/components/SmartCartApp/SmartCartApp.tsx
|
7805
|
-
var
|
7849
|
+
var import_react27 = __toESM(require("react"), 1);
|
7806
7850
|
|
7807
7851
|
// src/smart-cart/hooks/useSmartCartApps.ts
|
7808
|
-
var
|
7852
|
+
var import_react26 = require("react");
|
7809
7853
|
|
7810
7854
|
// src/smart-cart/types/smart-cart-app.ts
|
7811
7855
|
var import_zod2 = require("zod");
|
@@ -7827,11 +7871,11 @@ var smartCartAppMerchantConfigSchema = import_zod2.z.object({
|
|
7827
7871
|
// src/smart-cart/hooks/useSmartCartApps.ts
|
7828
7872
|
var useSmartCartApps = () => {
|
7829
7873
|
const { apiKey, cacheKey, config, shopifyDomain } = useSmartCart();
|
7830
|
-
const [enrichedApps, setEnrichedApps] = (0,
|
7831
|
-
const [isLoading, setIsLoading] = (0,
|
7832
|
-
const [error, setError] = (0,
|
7874
|
+
const [enrichedApps, setEnrichedApps] = (0, import_react26.useState)(/* @__PURE__ */ new Map());
|
7875
|
+
const [isLoading, setIsLoading] = (0, import_react26.useState)(false);
|
7876
|
+
const [error, setError] = (0, import_react26.useState)(null);
|
7833
7877
|
const initialAppsConfig = config?.apps;
|
7834
|
-
(0,
|
7878
|
+
(0, import_react26.useEffect)(() => {
|
7835
7879
|
let isMounted = true;
|
7836
7880
|
const fetchAndEnrichApps = async () => {
|
7837
7881
|
if (!initialAppsConfig || initialAppsConfig.length === 0) {
|
@@ -8012,19 +8056,19 @@ var useSmartCartApps = () => {
|
|
8012
8056
|
|
8013
8057
|
// src/smart-cart/components/SmartCartApp/SmartCartApp.tsx
|
8014
8058
|
var import_jsx_runtime34 = require("react/jsx-runtime");
|
8015
|
-
var SmartCartApp =
|
8016
|
-
const containerRef = (0,
|
8017
|
-
const executedScriptRef = (0,
|
8059
|
+
var SmartCartApp = import_react27.default.memo(({ componentConfig }) => {
|
8060
|
+
const containerRef = (0, import_react27.useRef)(null);
|
8061
|
+
const executedScriptRef = (0, import_react27.useRef)(null);
|
8018
8062
|
const { enrichedApps, error: appsHookError, isLoading: appsLoading } = useSmartCartApps();
|
8019
8063
|
const componentId = componentConfig.component_id;
|
8020
|
-
const appId = (0,
|
8064
|
+
const appId = (0, import_react27.useMemo)(
|
8021
8065
|
() => componentConfig.settings?.app_id ? Number(componentConfig.settings.app_id) : null,
|
8022
8066
|
[componentConfig.settings?.app_id]
|
8023
8067
|
);
|
8024
8068
|
const appData = appId !== null ? enrichedApps.get(appId) : null;
|
8025
8069
|
const enabledAppData = appData?.enabled ? appData : null;
|
8026
8070
|
const scriptContent = enabledAppData?.script ?? null;
|
8027
|
-
(0,
|
8071
|
+
(0, import_react27.useEffect)(() => {
|
8028
8072
|
const container = containerRef.current;
|
8029
8073
|
if (container && scriptContent && executedScriptRef.current !== scriptContent) {
|
8030
8074
|
const timerId = setTimeout(() => {
|
@@ -8079,7 +8123,7 @@ SmartCartApp.displayName = "SmartCartApp";
|
|
8079
8123
|
|
8080
8124
|
// src/smart-cart/components/TieredProgressBar/TieredProgressBar.tsx
|
8081
8125
|
var import_clsx10 = __toESM(require("clsx"), 1);
|
8082
|
-
var
|
8126
|
+
var import_react28 = __toESM(require("react"), 1);
|
8083
8127
|
var import_react_router8 = require("react-router");
|
8084
8128
|
var import_shallow2 = require("zustand/shallow");
|
8085
8129
|
|
@@ -8284,10 +8328,10 @@ var codeBlock = {
|
|
8284
8328
|
|
8285
8329
|
// src/smart-cart/components/TieredProgressBar/TieredProgressBar.tsx
|
8286
8330
|
var import_jsx_runtime36 = require("react/jsx-runtime");
|
8287
|
-
var TieredProgressBar =
|
8331
|
+
var TieredProgressBar = import_react28.default.memo(() => {
|
8288
8332
|
const { hydrogenReactCartActions, isCartBusy, isHydrogenReact } = useSmartCart();
|
8289
8333
|
const tpbUserActionFetcher = (0, import_react_router8.useFetcher)();
|
8290
|
-
const [showDebugPanel, setShowDebugPanel] = (0,
|
8334
|
+
const [showDebugPanel, setShowDebugPanel] = (0, import_react28.useState)(false);
|
8291
8335
|
const {
|
8292
8336
|
_lastFetchedBarId,
|
8293
8337
|
activeBarConfig,
|
@@ -8329,10 +8373,10 @@ var TieredProgressBar = import_react27.default.memo(() => {
|
|
8329
8373
|
const handleRemoveGiftStore = useTieredProgressBarStore((state) => state.handleRemoveGift);
|
8330
8374
|
const clearUserActionError = useTieredProgressBarStore((state) => state.clearUserActionError);
|
8331
8375
|
const setSubmitFunctions = useTieredProgressBarStore((state) => state.setSubmitFunctions);
|
8332
|
-
const shouldDisableGiftActions = (0,
|
8376
|
+
const shouldDisableGiftActions = (0, import_react28.useMemo)(() => {
|
8333
8377
|
return isCartBusy || productFetchStatus === "loading";
|
8334
8378
|
}, [isCartBusy, productFetchStatus]);
|
8335
|
-
(0,
|
8379
|
+
(0, import_react28.useEffect)(() => {
|
8336
8380
|
if (isHydrogenReact) {
|
8337
8381
|
const hReactLinesAdd = hydrogenReactCartActions?.linesAdd;
|
8338
8382
|
const hReactLinesRemove = hydrogenReactCartActions?.linesRemove;
|
@@ -8373,13 +8417,13 @@ var TieredProgressBar = import_react27.default.memo(() => {
|
|
8373
8417
|
rebuyDebugLog.log("smart-cart-tpb" /* SC_TPB */, "Set Remix fetcher submit functions for TPB.");
|
8374
8418
|
}
|
8375
8419
|
}, [isHydrogenReact, hydrogenReactCartActions, tpbUserActionFetcher, setSubmitFunctions]);
|
8376
|
-
(0,
|
8420
|
+
(0, import_react28.useEffect)(() => {
|
8377
8421
|
if (userActionError) {
|
8378
8422
|
const timer = setTimeout(() => clearUserActionError(), 5e3);
|
8379
8423
|
return () => clearTimeout(timer);
|
8380
8424
|
}
|
8381
8425
|
}, [userActionError, clearUserActionError]);
|
8382
|
-
const { amountToNextTier, currentTier, lastReachedTier, realPercentageComplete, visualPercentageComplete } = (0,
|
8426
|
+
const { amountToNextTier, currentTier, lastReachedTier, realPercentageComplete, visualPercentageComplete } = (0, import_react28.useMemo)(() => {
|
8383
8427
|
let calculatedAmountToNextTier = 0, calculatedCurrentTier = null, calculatedLastReachedTier = null, calculatedRealPercentageComplete = 0;
|
8384
8428
|
if (activeBarConfig && activeBarConfig.tiers.length > 0 && isCartReady) {
|
8385
8429
|
const allTiers = activeBarConfig.tiers;
|
@@ -8407,31 +8451,31 @@ var TieredProgressBar = import_react27.default.memo(() => {
|
|
8407
8451
|
visualPercentageComplete: calculatedVisualPercentageComplete
|
8408
8452
|
};
|
8409
8453
|
}, [activeBarConfig, currentSubtotal, hasFreeShippingOnSubscription, isCartReady]);
|
8410
|
-
const giftsForDisplay = (0,
|
8411
|
-
const feedbackText = (0,
|
8454
|
+
const giftsForDisplay = (0, import_react28.useMemo)(() => Array.from(giftStates.values()), [giftStates]);
|
8455
|
+
const feedbackText = (0, import_react28.useMemo)(
|
8412
8456
|
() => getTierFeedbackText(activeBarConfig, currentTier, lastReachedTier, amountToNextTier, fetchedProductMap),
|
8413
8457
|
[activeBarConfig, currentTier, lastReachedTier, amountToNextTier, fetchedProductMap]
|
8414
8458
|
);
|
8415
|
-
const handleVariantSelect = (0,
|
8459
|
+
const handleVariantSelect = (0, import_react28.useCallback)(
|
8416
8460
|
(tierId, variantGid) => {
|
8417
8461
|
handleSelectVariantStore(tierId, variantGid);
|
8418
8462
|
},
|
8419
8463
|
[handleSelectVariantStore]
|
8420
8464
|
);
|
8421
|
-
const handleGiftAddOrReAdd = (0,
|
8465
|
+
const handleGiftAddOrReAdd = (0, import_react28.useCallback)(
|
8422
8466
|
(tierId) => {
|
8423
8467
|
handleAddOrReAddGiftStore(tierId);
|
8424
8468
|
},
|
8425
8469
|
[handleAddOrReAddGiftStore]
|
8426
8470
|
);
|
8427
|
-
const handleGiftRemove = (0,
|
8471
|
+
const handleGiftRemove = (0, import_react28.useCallback)(
|
8428
8472
|
(tierId) => {
|
8429
8473
|
handleRemoveGiftStore(tierId);
|
8430
8474
|
},
|
8431
8475
|
[handleRemoveGiftStore]
|
8432
8476
|
);
|
8433
8477
|
const lineItemMode = activeBarConfig?.use_line_item_mode ?? false;
|
8434
|
-
const productsToRenderInGiftArea = (0,
|
8478
|
+
const productsToRenderInGiftArea = (0, import_react28.useMemo)(
|
8435
8479
|
() => giftsForDisplay.filter((p) => {
|
8436
8480
|
if (!p.isReached) return false;
|
8437
8481
|
if (p.displayStatus === "unavailable" /* UNAVAILABLE */ && !p.error && !p.canReAdd) return false;
|
@@ -8441,7 +8485,7 @@ var TieredProgressBar = import_react27.default.memo(() => {
|
|
8441
8485
|
}),
|
8442
8486
|
[giftsForDisplay, lineItemMode]
|
8443
8487
|
);
|
8444
|
-
const renderGiftArea = (0,
|
8488
|
+
const renderGiftArea = (0, import_react28.useMemo)(
|
8445
8489
|
() => shouldRenderGiftArea(activeBarConfig, productsToRenderInGiftArea.length > 0),
|
8446
8490
|
[activeBarConfig, productsToRenderInGiftArea.length]
|
8447
8491
|
);
|
@@ -8476,7 +8520,7 @@ var TieredProgressBar = import_react27.default.memo(() => {
|
|
8476
8520
|
width: configuredIconSize
|
8477
8521
|
};
|
8478
8522
|
let iconElement;
|
8479
|
-
if (
|
8523
|
+
if (import_react28.default.isValidElement(iconRenderData)) iconElement = iconRenderData;
|
8480
8524
|
else if (iconRenderData.type === "image") {
|
8481
8525
|
const imageObject = iconRenderData;
|
8482
8526
|
iconElement = /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(
|
@@ -8662,7 +8706,7 @@ var componentRegistry = {
|
|
8662
8706
|
// src/smart-cart/components/_Layouts/AnchorSlot.tsx
|
8663
8707
|
var import_jsx_runtime38 = require("react/jsx-runtime");
|
8664
8708
|
var AnchorSlot = ({ anchor, components, excludeTypes, includeTypes }) => {
|
8665
|
-
const componentsForSlot = (0,
|
8709
|
+
const componentsForSlot = (0, import_react29.useMemo)(() => {
|
8666
8710
|
return components.filter((comp) => {
|
8667
8711
|
const isCorrectAnchor = comp.anchor === anchor;
|
8668
8712
|
const isVisible = comp.visibility_status !== "hidden";
|
@@ -8690,13 +8734,13 @@ var AnchorSlot = ({ anchor, components, excludeTypes, includeTypes }) => {
|
|
8690
8734
|
|
8691
8735
|
// src/smart-cart/components/_Layouts/DoubleColumnLayout.tsx
|
8692
8736
|
var import_clsx11 = __toESM(require("clsx"), 1);
|
8693
|
-
var
|
8737
|
+
var import_react31 = require("react");
|
8694
8738
|
|
8695
8739
|
// src/smart-cart/hooks/useIsScrolled.ts
|
8696
|
-
var
|
8740
|
+
var import_react30 = require("react");
|
8697
8741
|
var useIsScrolled = (scrollElementRef) => {
|
8698
|
-
const [isScrolled, setIsScrolled] = (0,
|
8699
|
-
(0,
|
8742
|
+
const [isScrolled, setIsScrolled] = (0, import_react30.useState)(false);
|
8743
|
+
(0, import_react30.useEffect)(() => {
|
8700
8744
|
const scrollElement = scrollElementRef.current;
|
8701
8745
|
if (!scrollElement) return;
|
8702
8746
|
const handleScroll = () => {
|
@@ -8718,7 +8762,7 @@ var LayoutStyles_default = result21;
|
|
8718
8762
|
// src/smart-cart/components/_Layouts/DoubleColumnLayout.tsx
|
8719
8763
|
var import_jsx_runtime39 = require("react/jsx-runtime");
|
8720
8764
|
var DoubleColumnLayout = ({ components, itemCount, layout }) => {
|
8721
|
-
const scrollAreaRef = (0,
|
8765
|
+
const scrollAreaRef = (0, import_react31.useRef)(null);
|
8722
8766
|
const isScrolled = useIsScrolled(scrollAreaRef);
|
8723
8767
|
const layoutClass = layout === "double-right" ? LayoutStyles_default["rebuy-smart-cart-layout__flyout-inner--double-right"] : LayoutStyles_default["rebuy-smart-cart-layout__flyout-inner--double"];
|
8724
8768
|
return /* @__PURE__ */ (0, import_jsx_runtime39.jsxs)("div", { className: (0, import_clsx11.default)(LayoutStyles_default["rebuy-smart-cart-layout__flyout-inner"], layoutClass), children: [
|
@@ -8760,10 +8804,10 @@ var DoubleColumnLayout = ({ components, itemCount, layout }) => {
|
|
8760
8804
|
|
8761
8805
|
// src/smart-cart/components/_Layouts/SingleColumnLayout.tsx
|
8762
8806
|
var import_clsx12 = __toESM(require("clsx"), 1);
|
8763
|
-
var
|
8807
|
+
var import_react32 = require("react");
|
8764
8808
|
var import_jsx_runtime40 = require("react/jsx-runtime");
|
8765
8809
|
var SingleColumnLayout = ({ components, itemCount }) => {
|
8766
|
-
const scrollAreaRef = (0,
|
8810
|
+
const scrollAreaRef = (0, import_react32.useRef)(null);
|
8767
8811
|
const isScrolled = useIsScrolled(scrollAreaRef);
|
8768
8812
|
return /* @__PURE__ */ (0, import_jsx_runtime40.jsxs)(import_jsx_runtime40.Fragment, { children: [
|
8769
8813
|
/* @__PURE__ */ (0, import_jsx_runtime40.jsx)("div", { className: LayoutStyles_default["rebuy-smart-cart-layout__anchor-goal-box"], "data-rebuy-cart-anchor": "goalBox", children: /* @__PURE__ */ (0, import_jsx_runtime40.jsx)(AnchorSlot, { anchor: "goalBox", components }) }),
|
@@ -8800,16 +8844,16 @@ var SmartCartContainer_default = result22;
|
|
8800
8844
|
var import_jsx_runtime41 = require("react/jsx-runtime");
|
8801
8845
|
var SmartCartContainer = ({ containerId }) => {
|
8802
8846
|
const { config, getItemCount, hideCart, isVisible } = useSmartCart();
|
8803
|
-
const containerRef = (0,
|
8804
|
-
const previousFocusRef = (0,
|
8805
|
-
const components = (0,
|
8806
|
-
const handleClose = (0,
|
8847
|
+
const containerRef = (0, import_react33.useRef)(null);
|
8848
|
+
const previousFocusRef = (0, import_react33.useRef)(null);
|
8849
|
+
const components = (0, import_react33.useMemo)(() => config && Array.isArray(config.components) ? config.components : [], [config]);
|
8850
|
+
const handleClose = (0, import_react33.useCallback)(() => {
|
8807
8851
|
hideCart();
|
8808
8852
|
if (previousFocusRef.current) {
|
8809
8853
|
previousFocusRef.current.focus();
|
8810
8854
|
}
|
8811
8855
|
}, [hideCart]);
|
8812
|
-
(0,
|
8856
|
+
(0, import_react33.useEffect)(() => {
|
8813
8857
|
if (isVisible) {
|
8814
8858
|
previousFocusRef.current = document.activeElement;
|
8815
8859
|
const closeButton = containerRef.current?.querySelector("#rebuy-cart-close");
|
@@ -8818,7 +8862,7 @@ var SmartCartContainer = ({ containerId }) => {
|
|
8818
8862
|
}
|
8819
8863
|
}
|
8820
8864
|
}, [isVisible]);
|
8821
|
-
(0,
|
8865
|
+
(0, import_react33.useEffect)(() => {
|
8822
8866
|
if (isVisible) {
|
8823
8867
|
document.body.classList.add("rebuy-smart-cart-open");
|
8824
8868
|
} else {
|
@@ -8852,7 +8896,7 @@ var SmartCartContainer = ({ containerId }) => {
|
|
8852
8896
|
const defaultTitleId = "rebuy-smart-cart-default-title";
|
8853
8897
|
const titleBarComponent = components.find((c) => c.type === "title_bar");
|
8854
8898
|
const ariaLabelledBy = titleBarComponent ? `rebuy-title-${titleBarComponent.component_id}` : defaultTitleId;
|
8855
|
-
return /* @__PURE__ */ (0, import_jsx_runtime41.jsxs)(
|
8899
|
+
return /* @__PURE__ */ (0, import_jsx_runtime41.jsxs)(import_react33.default.Fragment, { children: [
|
8856
8900
|
/* @__PURE__ */ (0, import_jsx_runtime41.jsx)("div", { className: backgroundClassName, onClick: handleClose }),
|
8857
8901
|
/* @__PURE__ */ (0, import_jsx_runtime41.jsxs)(
|
8858
8902
|
"div",
|
@@ -8909,12 +8953,12 @@ var RebuySmartCart = () => {
|
|
8909
8953
|
var import_rebuy3 = require("@rebuy/rebuy");
|
8910
8954
|
var Utilities5 = __toESM(require("@rebuy/rebuy/utilities"), 1);
|
8911
8955
|
var import_hydrogen7 = require("@shopify/hydrogen");
|
8912
|
-
var
|
8956
|
+
var import_react35 = require("react");
|
8913
8957
|
|
8914
8958
|
// src/context/RebuyWidgetContext.tsx
|
8915
|
-
var
|
8959
|
+
var import_react34 = require("react");
|
8916
8960
|
var import_jsx_runtime43 = require("react/jsx-runtime");
|
8917
|
-
var RebuyWidgetContext = (0,
|
8961
|
+
var RebuyWidgetContext = (0, import_react34.createContext)({
|
8918
8962
|
dataSource: "",
|
8919
8963
|
isHydrogenReact: false,
|
8920
8964
|
key: "",
|
@@ -8925,7 +8969,7 @@ var RebuyWidgetContext = (0, import_react33.createContext)({
|
|
8925
8969
|
variant: void 0,
|
8926
8970
|
variantId: void 0
|
8927
8971
|
});
|
8928
|
-
var useRebuyWidget = () => (0,
|
8972
|
+
var useRebuyWidget = () => (0, import_react34.useContext)(RebuyWidgetContext);
|
8929
8973
|
var RebuyWidgetProvider = ({ children, value }) => {
|
8930
8974
|
return /* @__PURE__ */ (0, import_jsx_runtime43.jsx)(RebuyWidgetContext.Provider, { value, children });
|
8931
8975
|
};
|
@@ -8935,15 +8979,15 @@ var import_jsx_runtime44 = require("react/jsx-runtime");
|
|
8935
8979
|
var RebuyWidgetContainerBase = ({ children, ...props }) => {
|
8936
8980
|
const { collection, collectionId, dataSource, limit, options, product, productId, variant, variantId } = props;
|
8937
8981
|
const { apiKey, loadingStatus: configLoadingStatus, rebuyConfig } = useRebuyConfig();
|
8938
|
-
const rebuyContext = (0,
|
8939
|
-
const [rebuyApiClient, setRebuyApiClient] = (0,
|
8940
|
-
const [initialized, setInitialized] = (0,
|
8982
|
+
const rebuyContext = (0, import_react35.useContext)(RebuyContext);
|
8983
|
+
const [rebuyApiClient, setRebuyApiClient] = (0, import_react35.useState)(null);
|
8984
|
+
const [initialized, setInitialized] = (0, import_react35.useState)(false);
|
8941
8985
|
const shopifyProductId = product?.id ?? productId ?? null;
|
8942
8986
|
const shopifyVariantId = variant?.id ?? variantId ?? null;
|
8943
8987
|
const shopifyCollectionId = collection?.id ?? collectionId ?? null;
|
8944
|
-
const [products, setProducts] = (0,
|
8945
|
-
const [metadata, setMetadata] = (0,
|
8946
|
-
(0,
|
8988
|
+
const [products, setProducts] = (0, import_react35.useState)([]);
|
8989
|
+
const [metadata, setMetadata] = (0, import_react35.useState)();
|
8990
|
+
(0, import_react35.useEffect)(() => {
|
8947
8991
|
if (!rebuyApiClient && apiKey && configLoadingStatus === "success") {
|
8948
8992
|
const client = new import_rebuy3.RebuyClient(apiKey);
|
8949
8993
|
const currentEndpoint = dataSource || "/api/v1/products/recommended";
|
@@ -8958,14 +9002,14 @@ var RebuyWidgetContainerBase = ({ children, ...props }) => {
|
|
8958
9002
|
setInitialized(true);
|
8959
9003
|
}
|
8960
9004
|
}, [apiKey, rebuyApiClient, configLoadingStatus, options, rebuyContext, dataSource]);
|
8961
|
-
(0,
|
9005
|
+
(0, import_react35.useEffect)(() => {
|
8962
9006
|
if (rebuyApiClient && rebuyContext?.contextParameters) {
|
8963
9007
|
const currentEndpoint = dataSource || "/api/v1/products/recommended";
|
8964
9008
|
const filteredParams = filterContextForWidgetEndpoints(rebuyContext.contextParameters, currentEndpoint);
|
8965
9009
|
rebuyApiClient.setContextParameters(filteredParams);
|
8966
9010
|
}
|
8967
9011
|
}, [rebuyApiClient, rebuyContext, dataSource]);
|
8968
|
-
const request = (0,
|
9012
|
+
const request = (0, import_react35.useMemo)(() => {
|
8969
9013
|
const req = {
|
8970
9014
|
endpoint: dataSource || "/api/v1/products/recommended",
|
8971
9015
|
params: {}
|
@@ -8985,7 +9029,7 @@ var RebuyWidgetContainerBase = ({ children, ...props }) => {
|
|
8985
9029
|
}
|
8986
9030
|
return req;
|
8987
9031
|
}, [dataSource, shopifyProductId, shopifyVariantId, shopifyCollectionId, limit]);
|
8988
|
-
(0,
|
9032
|
+
(0, import_react35.useEffect)(() => {
|
8989
9033
|
let isMounted = true;
|
8990
9034
|
if (!rebuyApiClient || !initialized || configLoadingStatus !== "success") return;
|
8991
9035
|
const fetchData = async () => {
|
@@ -9081,7 +9125,7 @@ var RebuyCompleteTheLook = (props) => {
|
|
9081
9125
|
};
|
9082
9126
|
|
9083
9127
|
// src/widgets/RebuyDynamicBundleProducts/RebuyDynamicBundleProducts.tsx
|
9084
|
-
var
|
9128
|
+
var import_react37 = require("react");
|
9085
9129
|
|
9086
9130
|
// src/utils/convertToRebuyProduct.tsx
|
9087
9131
|
var convertToRebuyProduct = (isHydrogenReact, product) => {
|
@@ -9333,7 +9377,7 @@ var convertToRebuyProduct = (isHydrogenReact, product) => {
|
|
9333
9377
|
|
9334
9378
|
// src/widgets/RebuyDynamicBundleProducts/BundleImages.tsx
|
9335
9379
|
var import_hydrogen8 = require("@shopify/hydrogen");
|
9336
|
-
var
|
9380
|
+
var import_react36 = require("react");
|
9337
9381
|
|
9338
9382
|
// src/widgets/RebuyDynamicBundleProducts/RebuyDynamicBundleProducts.module.css
|
9339
9383
|
var result24 = { "container": "RebuyDynamicBundleProducts_container", "addCartBtnContainer": "RebuyDynamicBundleProducts_addCartBtnContainer", "bundleContainer": "RebuyDynamicBundleProducts_bundleContainer", "select": "RebuyDynamicBundleProducts_select", "bundleItemRowContainer": "RebuyDynamicBundleProducts_bundleItemRowContainer", "unselected": "RebuyDynamicBundleProducts_unselected", "bundleItemRow": "RebuyDynamicBundleProducts_bundleItemRow", "bundleItemInput": "RebuyDynamicBundleProducts_bundleItemInput", "bundleItemLabel": "RebuyDynamicBundleProducts_bundleItemLabel", "bundleImages": "RebuyDynamicBundleProducts_bundleImages", "bundleImage": "RebuyDynamicBundleProducts_bundleImage", "bundleImageDelimiter": "RebuyDynamicBundleProducts_bundleImageDelimiter", "compareAtPrice": "RebuyDynamicBundleProducts_compareAtPrice" };
|
@@ -9360,7 +9404,7 @@ var BundleImages = ({ products }) => {
|
|
9360
9404
|
product.title
|
9361
9405
|
);
|
9362
9406
|
const showDelimiter = selected[0]?.id !== product.id;
|
9363
|
-
return /* @__PURE__ */ (0, import_jsx_runtime46.jsx)(
|
9407
|
+
return /* @__PURE__ */ (0, import_jsx_runtime46.jsx)(import_react36.Fragment, { children: product.selected && /* @__PURE__ */ (0, import_jsx_runtime46.jsxs)(import_jsx_runtime46.Fragment, { children: [
|
9364
9408
|
showDelimiter && /* @__PURE__ */ (0, import_jsx_runtime46.jsx)("li", { className: RebuyDynamicBundleProducts_default.bundleImageDelimiter, children: /* @__PURE__ */ (0, import_jsx_runtime46.jsx)("span", { children: "+" }) }),
|
9365
9409
|
/* @__PURE__ */ (0, import_jsx_runtime46.jsx)("li", { className: "flex items-center", children: product.default ? (
|
9366
9410
|
// Already on product page
|
@@ -9504,8 +9548,8 @@ var RebuyDynamicBundleProducts = (props) => {
|
|
9504
9548
|
} = props;
|
9505
9549
|
const { isHydrogenReact, product, products } = useRebuyWidget();
|
9506
9550
|
const productTitle = customTitle.replace("{product_title}", product?.title ?? "");
|
9507
|
-
const [bundleProducts, setBundleProducts] = (0,
|
9508
|
-
(0,
|
9551
|
+
const [bundleProducts, setBundleProducts] = (0, import_react37.useState)([]);
|
9552
|
+
(0, import_react37.useEffect)(() => {
|
9509
9553
|
const mainProduct = convertToRebuyProduct(isHydrogenReact || false, product);
|
9510
9554
|
const formattedProducts = products.map((product2) => {
|
9511
9555
|
return {
|
@@ -9516,14 +9560,14 @@ var RebuyDynamicBundleProducts = (props) => {
|
|
9516
9560
|
});
|
9517
9561
|
setBundleProducts([mainProduct, ...formattedProducts]);
|
9518
9562
|
}, [product, products, isHydrogenReact]);
|
9519
|
-
const onToggleBundleItem = (0,
|
9563
|
+
const onToggleBundleItem = (0, import_react37.useCallback)(
|
9520
9564
|
(product2) => {
|
9521
9565
|
product2.selected = !product2.selected;
|
9522
9566
|
setBundleProducts([...bundleProducts]);
|
9523
9567
|
},
|
9524
9568
|
[bundleProducts]
|
9525
9569
|
);
|
9526
|
-
const onSelectVariant = (0,
|
9570
|
+
const onSelectVariant = (0, import_react37.useCallback)(
|
9527
9571
|
(product2, variant_id) => {
|
9528
9572
|
const variant = product2.variants.nodes.find(({ id }) => id === variant_id);
|
9529
9573
|
if (variant) {
|
@@ -9569,7 +9613,7 @@ var RebuyDynamicBundleProducts = (props) => {
|
|
9569
9613
|
|
9570
9614
|
// src/widgets/RebuyProductAddOns/RebuyProductAddOns.tsx
|
9571
9615
|
var import_hydrogen_react3 = require("@shopify/hydrogen-react");
|
9572
|
-
var
|
9616
|
+
var import_react38 = require("react");
|
9573
9617
|
|
9574
9618
|
// src/widgets/RebuyProductAddOns/RebuyProductAddOnCard.tsx
|
9575
9619
|
var import_hydrogen10 = require("@shopify/hydrogen");
|
@@ -9646,11 +9690,11 @@ var RebuyProductAddOns = (props) => {
|
|
9646
9690
|
const { isHydrogenReact, product, products } = useRebuyWidget();
|
9647
9691
|
const productTitleClean = customTitle.replace("{product_title}", product?.title ?? "");
|
9648
9692
|
const withProductTextClean = withProductText.replace("{product_title}", product?.title ?? "");
|
9649
|
-
const [addedItems, setAddedItems] = (0,
|
9650
|
-
const [subtotalWithProduct, setSubtotalWithProduct] = (0,
|
9651
|
-
const [subtotalWithOutProduct, setSubtotalWithOutProduct] = (0,
|
9693
|
+
const [addedItems, setAddedItems] = (0, import_react38.useState)(products);
|
9694
|
+
const [subtotalWithProduct, setSubtotalWithProduct] = (0, import_react38.useState)();
|
9695
|
+
const [subtotalWithOutProduct, setSubtotalWithOutProduct] = (0, import_react38.useState)();
|
9652
9696
|
const convertedProduct = convertToRebuyProduct(isHydrogenReact || false, product);
|
9653
|
-
(0,
|
9697
|
+
(0, import_react38.useEffect)(() => {
|
9654
9698
|
let initialTotal = 0;
|
9655
9699
|
let currencyCode = "USD";
|
9656
9700
|
products.map((product2) => {
|
@@ -9680,7 +9724,7 @@ var RebuyProductAddOns = (props) => {
|
|
9680
9724
|
setAddedItems(products);
|
9681
9725
|
}
|
9682
9726
|
}, [products, product, isHydrogenReact, includeMainProduct]);
|
9683
|
-
const handleChange = (0,
|
9727
|
+
const handleChange = (0, import_react38.useCallback)(
|
9684
9728
|
(event, product2) => {
|
9685
9729
|
const newProducts = [...products];
|
9686
9730
|
const productIndex = newProducts.findIndex((p) => p.id === product2.id);
|
@@ -9699,7 +9743,7 @@ var RebuyProductAddOns = (props) => {
|
|
9699
9743
|
},
|
9700
9744
|
[products]
|
9701
9745
|
);
|
9702
|
-
(0,
|
9746
|
+
(0, import_react38.useEffect)(() => {
|
9703
9747
|
let total = 0;
|
9704
9748
|
let currencyCode = "USD";
|
9705
9749
|
addedItems.forEach((item) => {
|
@@ -9809,7 +9853,7 @@ var RebuyProductRecommendations = (props) => {
|
|
9809
9853
|
// src/widgets/RebuyProductViewed/RebuyProductViewed.tsx
|
9810
9854
|
var import_rebuy4 = require("@rebuy/rebuy");
|
9811
9855
|
var Utilities6 = __toESM(require("@rebuy/rebuy/utilities"), 1);
|
9812
|
-
var
|
9856
|
+
var import_react39 = require("react");
|
9813
9857
|
|
9814
9858
|
// src/zustandStores/productViewed.ts
|
9815
9859
|
var import_zustand2 = require("zustand");
|
@@ -9824,12 +9868,12 @@ var useProductViewedStore = (0, import_zustand2.create)((set) => ({
|
|
9824
9868
|
var RebuyProductViewed = ({ ...props }) => {
|
9825
9869
|
const { apiKey: apiKeyFromContext } = useRebuyConfig();
|
9826
9870
|
const { customerId, product, productHandle, productId } = props;
|
9827
|
-
const [event, setEvent] = (0,
|
9828
|
-
const [Rebuy, setRebuy] = (0,
|
9871
|
+
const [event, setEvent] = (0, import_react39.useState)(null);
|
9872
|
+
const [Rebuy, setRebuy] = (0, import_react39.useState)(null);
|
9829
9873
|
const shopifyProductId = product?.id ?? productId ?? null;
|
9830
|
-
const [initialized, setInitialized] = (0,
|
9874
|
+
const [initialized, setInitialized] = (0, import_react39.useState)(false);
|
9831
9875
|
const { setCustomerId, setUuid } = useProductViewedStore();
|
9832
|
-
const request = (0,
|
9876
|
+
const request = (0, import_react39.useMemo)(() => {
|
9833
9877
|
const request2 = {
|
9834
9878
|
parameters: {}
|
9835
9879
|
};
|
@@ -9843,7 +9887,7 @@ var RebuyProductViewed = ({ ...props }) => {
|
|
9843
9887
|
}
|
9844
9888
|
return request2;
|
9845
9889
|
}, [productHandle, shopifyProductId]);
|
9846
|
-
(0,
|
9890
|
+
(0, import_react39.useEffect)(() => {
|
9847
9891
|
const recordView = async () => {
|
9848
9892
|
if (!Rebuy) {
|
9849
9893
|
return;
|
@@ -9879,7 +9923,7 @@ var RebuyProductViewed = ({ ...props }) => {
|
|
9879
9923
|
// src/widgets/RebuyRecentlyViewedProducts/RebuyRecentlyViewedProducts.tsx
|
9880
9924
|
var import_rebuy5 = require("@rebuy/rebuy");
|
9881
9925
|
var import_hydrogen11 = require("@shopify/hydrogen");
|
9882
|
-
var
|
9926
|
+
var import_react40 = require("react");
|
9883
9927
|
|
9884
9928
|
// src/widgets/RebuyRecentlyViewedProducts/RebuyRecentlyViewedProducts.module.css
|
9885
9929
|
var result27 = { "rebuy-recently-viewed-products-container": "RebuyRecentlyViewedProducts_rebuy-recently-viewed-products-container", "product-grid": "RebuyRecentlyViewedProducts_product-grid" };
|
@@ -9900,14 +9944,14 @@ var RebuyRecentlyViewedProducts = (props) => {
|
|
9900
9944
|
} = props;
|
9901
9945
|
const { customerId, uuid } = useProductViewedStore();
|
9902
9946
|
const { apiKey, loadingStatus: configLoadingStatus, rebuyConfig } = useRebuyConfig();
|
9903
|
-
const rebuyContext = (0,
|
9904
|
-
const [rebuyApiClient, setRebuyApiClient] = (0,
|
9905
|
-
const [initialized, setInitialized] = (0,
|
9906
|
-
const [products, setProducts] = (0,
|
9907
|
-
const [metadata, setMetadata] = (0,
|
9947
|
+
const rebuyContext = (0, import_react40.useContext)(RebuyContext);
|
9948
|
+
const [rebuyApiClient, setRebuyApiClient] = (0, import_react40.useState)(null);
|
9949
|
+
const [initialized, setInitialized] = (0, import_react40.useState)(false);
|
9950
|
+
const [products, setProducts] = (0, import_react40.useState)([]);
|
9951
|
+
const [metadata, setMetadata] = (0, import_react40.useState)();
|
9908
9952
|
const rebuyConfigKey = rebuyConfig?.shop?.cache_key;
|
9909
9953
|
const endpoint = customerId && customerId !== "" ? `/api/v1/products/viewed?key=${rebuyConfigKey}&customer_id=${customerId}` : `/api/v1/products/viewed?key=${rebuyConfigKey}&uuid=${uuid}`;
|
9910
|
-
(0,
|
9954
|
+
(0, import_react40.useEffect)(() => {
|
9911
9955
|
if (!rebuyApiClient && apiKey && configLoadingStatus === "success") {
|
9912
9956
|
const client = new import_rebuy5.RebuyClient(apiKey);
|
9913
9957
|
if (rebuyContext?.contextParameters) {
|
@@ -9921,13 +9965,13 @@ var RebuyRecentlyViewedProducts = (props) => {
|
|
9921
9965
|
setInitialized(true);
|
9922
9966
|
}
|
9923
9967
|
}, [apiKey, rebuyApiClient, configLoadingStatus, options, rebuyContext, uuid, endpoint]);
|
9924
|
-
(0,
|
9968
|
+
(0, import_react40.useEffect)(() => {
|
9925
9969
|
if (rebuyApiClient && rebuyContext?.contextParameters) {
|
9926
9970
|
const filteredParams = filterContextForWidgetEndpoints(rebuyContext.contextParameters, endpoint);
|
9927
9971
|
rebuyApiClient.setContextParameters(filteredParams);
|
9928
9972
|
}
|
9929
9973
|
}, [rebuyApiClient, rebuyContext, uuid, endpoint]);
|
9930
|
-
const request = (0,
|
9974
|
+
const request = (0, import_react40.useMemo)(() => {
|
9931
9975
|
const req = {
|
9932
9976
|
endpoint,
|
9933
9977
|
params: {}
|
@@ -9938,7 +9982,7 @@ var RebuyRecentlyViewedProducts = (props) => {
|
|
9938
9982
|
}
|
9939
9983
|
return req;
|
9940
9984
|
}, [limit, uuid, endpoint]);
|
9941
|
-
(0,
|
9985
|
+
(0, import_react40.useEffect)(() => {
|
9942
9986
|
let isMounted = true;
|
9943
9987
|
if (!rebuyApiClient || !initialized || configLoadingStatus !== "success") return;
|
9944
9988
|
const fetchData = async () => {
|