@shopify/hydrogen-react 2024.10.1 → 2025.1.1
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/customer-account.schema.json +1 -1
- package/dist/browser-dev/CartCheckoutButton.mjs.map +1 -1
- package/dist/browser-dev/CartLineProvider.mjs.map +1 -1
- package/dist/browser-dev/CartProvider.mjs.map +1 -1
- package/dist/browser-dev/Image.mjs.map +1 -1
- package/dist/browser-dev/ModelViewer.mjs.map +1 -1
- package/dist/browser-dev/Money.mjs.map +1 -1
- package/dist/browser-dev/Video.mjs.map +1 -1
- package/dist/browser-dev/analytics-schema-custom-storefront-customer-tracking.mjs +1 -2
- package/dist/browser-dev/analytics-schema-custom-storefront-customer-tracking.mjs.map +1 -1
- package/dist/browser-dev/analytics.mjs +0 -3
- package/dist/browser-dev/analytics.mjs.map +1 -1
- package/dist/browser-dev/cart-hooks.mjs.map +1 -1
- package/dist/browser-dev/codegen.helpers.mjs.map +1 -1
- package/dist/browser-dev/flatten-connection.mjs.map +1 -1
- package/dist/browser-dev/getProductOptions.mjs +50 -36
- package/dist/browser-dev/getProductOptions.mjs.map +1 -1
- package/dist/browser-dev/optionValueDecoder.mjs +10 -8
- package/dist/browser-dev/optionValueDecoder.mjs.map +1 -1
- package/dist/browser-dev/packages/hydrogen-react/package.json.mjs +1 -1
- package/dist/browser-dev/storefront-api-constants.mjs +1 -1
- package/dist/browser-dev/storefront-api-constants.mjs.map +1 -1
- package/dist/browser-dev/useCartAPIStateMachine.mjs.map +1 -1
- package/dist/browser-dev/useCartActions.mjs.map +1 -1
- package/dist/browser-dev/useMoney.mjs.map +1 -1
- package/dist/browser-prod/CartCheckoutButton.mjs.map +1 -1
- package/dist/browser-prod/CartLineProvider.mjs.map +1 -1
- package/dist/browser-prod/CartProvider.mjs.map +1 -1
- package/dist/browser-prod/Image.mjs.map +1 -1
- package/dist/browser-prod/ModelViewer.mjs.map +1 -1
- package/dist/browser-prod/Money.mjs.map +1 -1
- package/dist/browser-prod/Video.mjs.map +1 -1
- package/dist/browser-prod/analytics-schema-custom-storefront-customer-tracking.mjs +1 -2
- package/dist/browser-prod/analytics-schema-custom-storefront-customer-tracking.mjs.map +1 -1
- package/dist/browser-prod/analytics.mjs +0 -3
- package/dist/browser-prod/analytics.mjs.map +1 -1
- package/dist/browser-prod/cart-hooks.mjs.map +1 -1
- package/dist/browser-prod/codegen.helpers.mjs.map +1 -1
- package/dist/browser-prod/flatten-connection.mjs.map +1 -1
- package/dist/browser-prod/getProductOptions.mjs +50 -36
- package/dist/browser-prod/getProductOptions.mjs.map +1 -1
- package/dist/browser-prod/optionValueDecoder.mjs +10 -8
- package/dist/browser-prod/optionValueDecoder.mjs.map +1 -1
- package/dist/browser-prod/packages/hydrogen-react/package.json.mjs +1 -1
- package/dist/browser-prod/storefront-api-constants.mjs +1 -1
- package/dist/browser-prod/storefront-api-constants.mjs.map +1 -1
- package/dist/browser-prod/useCartAPIStateMachine.mjs.map +1 -1
- package/dist/browser-prod/useCartActions.mjs.map +1 -1
- package/dist/browser-prod/useMoney.mjs.map +1 -1
- package/dist/node-dev/CartCheckoutButton.js.map +1 -1
- package/dist/node-dev/CartCheckoutButton.mjs.map +1 -1
- package/dist/node-dev/CartLineProvider.js.map +1 -1
- package/dist/node-dev/CartLineProvider.mjs.map +1 -1
- package/dist/node-dev/CartProvider.js.map +1 -1
- package/dist/node-dev/CartProvider.mjs.map +1 -1
- package/dist/node-dev/Image.js.map +1 -1
- package/dist/node-dev/Image.mjs.map +1 -1
- package/dist/node-dev/ModelViewer.js.map +1 -1
- package/dist/node-dev/ModelViewer.mjs.map +1 -1
- package/dist/node-dev/Money.js.map +1 -1
- package/dist/node-dev/Money.mjs.map +1 -1
- package/dist/node-dev/Video.js.map +1 -1
- package/dist/node-dev/Video.mjs.map +1 -1
- package/dist/node-dev/analytics-schema-custom-storefront-customer-tracking.js +1 -2
- package/dist/node-dev/analytics-schema-custom-storefront-customer-tracking.js.map +1 -1
- package/dist/node-dev/analytics-schema-custom-storefront-customer-tracking.mjs +1 -2
- package/dist/node-dev/analytics-schema-custom-storefront-customer-tracking.mjs.map +1 -1
- package/dist/node-dev/analytics.js +0 -3
- package/dist/node-dev/analytics.js.map +1 -1
- package/dist/node-dev/analytics.mjs +0 -3
- package/dist/node-dev/analytics.mjs.map +1 -1
- package/dist/node-dev/cart-hooks.js.map +1 -1
- package/dist/node-dev/cart-hooks.mjs.map +1 -1
- package/dist/node-dev/codegen.helpers.js.map +1 -1
- package/dist/node-dev/codegen.helpers.mjs.map +1 -1
- package/dist/node-dev/flatten-connection.js.map +1 -1
- package/dist/node-dev/flatten-connection.mjs.map +1 -1
- package/dist/node-dev/getProductOptions.js +50 -36
- package/dist/node-dev/getProductOptions.js.map +1 -1
- package/dist/node-dev/getProductOptions.mjs +50 -36
- package/dist/node-dev/getProductOptions.mjs.map +1 -1
- package/dist/node-dev/optionValueDecoder.js +10 -8
- package/dist/node-dev/optionValueDecoder.js.map +1 -1
- package/dist/node-dev/optionValueDecoder.mjs +10 -8
- package/dist/node-dev/optionValueDecoder.mjs.map +1 -1
- package/dist/node-dev/packages/hydrogen-react/package.json.js +1 -1
- package/dist/node-dev/packages/hydrogen-react/package.json.mjs +1 -1
- package/dist/node-dev/storefront-api-constants.js +1 -1
- package/dist/node-dev/storefront-api-constants.js.map +1 -1
- package/dist/node-dev/storefront-api-constants.mjs +1 -1
- package/dist/node-dev/storefront-api-constants.mjs.map +1 -1
- package/dist/node-dev/useCartAPIStateMachine.js.map +1 -1
- package/dist/node-dev/useCartAPIStateMachine.mjs.map +1 -1
- package/dist/node-dev/useCartActions.js.map +1 -1
- package/dist/node-dev/useCartActions.mjs.map +1 -1
- package/dist/node-dev/useMoney.js.map +1 -1
- package/dist/node-dev/useMoney.mjs.map +1 -1
- package/dist/node-prod/CartCheckoutButton.js.map +1 -1
- package/dist/node-prod/CartCheckoutButton.mjs.map +1 -1
- package/dist/node-prod/CartLineProvider.js.map +1 -1
- package/dist/node-prod/CartLineProvider.mjs.map +1 -1
- package/dist/node-prod/CartProvider.js.map +1 -1
- package/dist/node-prod/CartProvider.mjs.map +1 -1
- package/dist/node-prod/Image.js.map +1 -1
- package/dist/node-prod/Image.mjs.map +1 -1
- package/dist/node-prod/ModelViewer.js.map +1 -1
- package/dist/node-prod/ModelViewer.mjs.map +1 -1
- package/dist/node-prod/Money.js.map +1 -1
- package/dist/node-prod/Money.mjs.map +1 -1
- package/dist/node-prod/Video.js.map +1 -1
- package/dist/node-prod/Video.mjs.map +1 -1
- package/dist/node-prod/analytics-schema-custom-storefront-customer-tracking.js +1 -2
- package/dist/node-prod/analytics-schema-custom-storefront-customer-tracking.js.map +1 -1
- package/dist/node-prod/analytics-schema-custom-storefront-customer-tracking.mjs +1 -2
- package/dist/node-prod/analytics-schema-custom-storefront-customer-tracking.mjs.map +1 -1
- package/dist/node-prod/analytics.js +0 -3
- package/dist/node-prod/analytics.js.map +1 -1
- package/dist/node-prod/analytics.mjs +0 -3
- package/dist/node-prod/analytics.mjs.map +1 -1
- package/dist/node-prod/cart-hooks.js.map +1 -1
- package/dist/node-prod/cart-hooks.mjs.map +1 -1
- package/dist/node-prod/codegen.helpers.js.map +1 -1
- package/dist/node-prod/codegen.helpers.mjs.map +1 -1
- package/dist/node-prod/flatten-connection.js.map +1 -1
- package/dist/node-prod/flatten-connection.mjs.map +1 -1
- package/dist/node-prod/getProductOptions.js +50 -36
- package/dist/node-prod/getProductOptions.js.map +1 -1
- package/dist/node-prod/getProductOptions.mjs +50 -36
- package/dist/node-prod/getProductOptions.mjs.map +1 -1
- package/dist/node-prod/optionValueDecoder.js +10 -8
- package/dist/node-prod/optionValueDecoder.js.map +1 -1
- package/dist/node-prod/optionValueDecoder.mjs +10 -8
- package/dist/node-prod/optionValueDecoder.mjs.map +1 -1
- package/dist/node-prod/packages/hydrogen-react/package.json.js +1 -1
- package/dist/node-prod/packages/hydrogen-react/package.json.mjs +1 -1
- package/dist/node-prod/storefront-api-constants.js +1 -1
- package/dist/node-prod/storefront-api-constants.js.map +1 -1
- package/dist/node-prod/storefront-api-constants.mjs +1 -1
- package/dist/node-prod/storefront-api-constants.mjs.map +1 -1
- package/dist/node-prod/useCartAPIStateMachine.js.map +1 -1
- package/dist/node-prod/useCartAPIStateMachine.mjs.map +1 -1
- package/dist/node-prod/useCartActions.js.map +1 -1
- package/dist/node-prod/useCartActions.mjs.map +1 -1
- package/dist/node-prod/useMoney.js.map +1 -1
- package/dist/node-prod/useMoney.mjs.map +1 -1
- package/dist/types/CartLineProvider.d.ts +1 -1
- package/dist/types/CartProvider.d.ts +2 -2
- package/dist/types/Image.d.ts +1 -1
- package/dist/types/ModelViewer.d.ts +1 -1
- package/dist/types/Money.d.ts +1 -1
- package/dist/types/Video.d.ts +1 -1
- package/dist/types/codegen.helpers.d.ts +2 -2
- package/dist/types/flatten-connection.d.ts +1 -1
- package/dist/types/optionValueDecoder.d.ts +2 -2
- package/dist/types/storefront-api-constants.d.ts +1 -1
- package/dist/types/storefront-api-types.d.ts +641 -127
- package/dist/types/useCartAPIStateMachine.d.ts +2 -2
- package/dist/types/useCartActions.d.ts +2 -2
- package/dist/umd/hydrogen-react.dev.js +63 -51
- package/dist/umd/hydrogen-react.dev.js.map +1 -1
- package/dist/umd/hydrogen-react.prod.js +7 -7
- package/dist/umd/hydrogen-react.prod.js.map +1 -1
- package/package.json +7 -15
- package/storefront.schema.json +1 -1
|
@@ -11,11 +11,11 @@ export declare function useCartAPIStateMachine({ numCartLines, onCartActionEntry
|
|
|
11
11
|
onCartActionOptimisticUI?: (context: CartMachineContext, event: CartMachineEvent) => Partial<CartMachineContext>;
|
|
12
12
|
/** A callback that is invoked after a Cart API completes. */
|
|
13
13
|
onCartActionComplete?: (context: CartMachineContext, event: CartMachineFetchResultEvent) => void;
|
|
14
|
-
/** An object with fields that correspond to the Storefront API's [Cart object](https://shopify.dev/api/storefront/
|
|
14
|
+
/** An object with fields that correspond to the Storefront API's [Cart object](https://shopify.dev/api/storefront/2025-01/objects/cart). */
|
|
15
15
|
data?: PartialDeep<CartType, {
|
|
16
16
|
recurseIntoArrays: true;
|
|
17
17
|
}>;
|
|
18
|
-
/** A fragment used to query the Storefront API's [Cart object](https://shopify.dev/api/storefront/
|
|
18
|
+
/** A fragment used to query the Storefront API's [Cart object](https://shopify.dev/api/storefront/2025-01/objects/cart) for all queries and mutations. A default value is used if no argument is provided. */
|
|
19
19
|
cartFragment: string;
|
|
20
20
|
/** The ISO country code for i18n. */
|
|
21
21
|
countryCode?: CountryCode;
|
|
@@ -6,12 +6,12 @@ type CartResponse = PartialDeep<CartType, {
|
|
|
6
6
|
/**
|
|
7
7
|
* The `useCartActions` hook returns helper graphql functions for Storefront Cart API
|
|
8
8
|
*
|
|
9
|
-
* See [cart API graphql mutations](https://shopify.dev/api/storefront/
|
|
9
|
+
* See [cart API graphql mutations](https://shopify.dev/api/storefront/2025-01/objects/Cart)
|
|
10
10
|
*/
|
|
11
11
|
export declare function useCartActions({ numCartLines, cartFragment, countryCode, languageCode, }: {
|
|
12
12
|
/** Maximum number of cart lines to fetch. Defaults to 250 cart lines. */
|
|
13
13
|
numCartLines?: number;
|
|
14
|
-
/** A fragment used to query the Storefront API's [Cart object](https://shopify.dev/api/storefront/
|
|
14
|
+
/** A fragment used to query the Storefront API's [Cart object](https://shopify.dev/api/storefront/2025-01/objects/cart) for all queries and mutations. A default value is used if no argument is provided. */
|
|
15
15
|
cartFragment: string;
|
|
16
16
|
/** The ISO country code for i18n. Default to `US` */
|
|
17
17
|
countryCode?: CountryCode;
|
|
@@ -796,7 +796,7 @@
|
|
|
796
796
|
}
|
|
797
797
|
`
|
|
798
798
|
);
|
|
799
|
-
const SFAPI_VERSION = "
|
|
799
|
+
const SFAPI_VERSION = "2025-01";
|
|
800
800
|
const MOCK_SHOP_DOMAIN = "mock.shop";
|
|
801
801
|
const isMockShop = (domain) => domain.includes(MOCK_SHOP_DOMAIN);
|
|
802
802
|
function createStorefrontClient({
|
|
@@ -2405,7 +2405,7 @@ Refer to the authentication https://shopify.dev/api/storefront#authentication do
|
|
|
2405
2405
|
}
|
|
2406
2406
|
return false;
|
|
2407
2407
|
}
|
|
2408
|
-
const version = "
|
|
2408
|
+
const version = "2025.1.1";
|
|
2409
2409
|
const SCHEMA_ID = "custom_storefront_customer_tracking/1.2";
|
|
2410
2410
|
const PAGE_RENDERED_EVENT_NAME = "page_rendered";
|
|
2411
2411
|
const COLLECTION_PAGE_RENDERED_EVENT_NAME = "collection_page_rendered";
|
|
@@ -2560,7 +2560,6 @@ Refer to the authentication https://shopify.dev/api/storefront#authentication do
|
|
|
2560
2560
|
function addToCart(payload) {
|
|
2561
2561
|
const addToCartPayload = payload;
|
|
2562
2562
|
const cartToken = parseGid(addToCartPayload.cartId);
|
|
2563
|
-
const cart_token = (cartToken == null ? void 0 : cartToken.id) ? `${cartToken.id}` : null;
|
|
2564
2563
|
return [
|
|
2565
2564
|
schemaWrapper(
|
|
2566
2565
|
SCHEMA_ID,
|
|
@@ -2568,7 +2567,7 @@ Refer to the authentication https://shopify.dev/api/storefront#authentication do
|
|
|
2568
2567
|
{
|
|
2569
2568
|
event_name: PRODUCT_ADDED_TO_CART_EVENT_NAME,
|
|
2570
2569
|
customerId: addToCartPayload.customerId,
|
|
2571
|
-
cart_token,
|
|
2570
|
+
cart_token: (cartToken == null ? void 0 : cartToken.id) ? `${cartToken.id}` : null,
|
|
2572
2571
|
total_value: addToCartPayload.totalValue,
|
|
2573
2572
|
products: formatProductPayload(addToCartPayload.products),
|
|
2574
2573
|
customer_id: parseInt(
|
|
@@ -2762,13 +2761,10 @@ Refer to the authentication https://shopify.dev/api/storefront#authentication do
|
|
|
2762
2761
|
switch (rawType) {
|
|
2763
2762
|
case PerformanceNavigation.TYPE_NAVIGATE:
|
|
2764
2763
|
return "navigate";
|
|
2765
|
-
break;
|
|
2766
2764
|
case PerformanceNavigation.TYPE_RELOAD:
|
|
2767
2765
|
return "reload";
|
|
2768
|
-
break;
|
|
2769
2766
|
case PerformanceNavigation.TYPE_BACK_FORWARD:
|
|
2770
2767
|
return "back_forward";
|
|
2771
|
-
break;
|
|
2772
2768
|
default:
|
|
2773
2769
|
return `unknown: ${rawType}`;
|
|
2774
2770
|
}
|
|
@@ -3203,27 +3199,34 @@ Refer to the authentication https://shopify.dev/api/storefront#authentication do
|
|
|
3203
3199
|
}
|
|
3204
3200
|
index2 = tokenizer.lastIndex;
|
|
3205
3201
|
}
|
|
3206
|
-
const
|
|
3207
|
-
if (
|
|
3208
|
-
const finalValueIndex = parseInt(
|
|
3209
|
-
|
|
3210
|
-
|
|
3211
|
-
|
|
3212
|
-
|
|
3213
|
-
|
|
3202
|
+
const encodingEndsWithIndex = encodedVariantField.match(/\d+$/g);
|
|
3203
|
+
if (encodingEndsWithIndex) {
|
|
3204
|
+
const finalValueIndex = parseInt(encodingEndsWithIndex[0]);
|
|
3205
|
+
if (rangeStart != null) {
|
|
3206
|
+
for (; rangeStart <= finalValueIndex; rangeStart++) {
|
|
3207
|
+
currentOptionValue[depth] = rangeStart;
|
|
3208
|
+
options.push([...currentOptionValue]);
|
|
3209
|
+
}
|
|
3210
|
+
} else {
|
|
3211
|
+
options.push([finalValueIndex]);
|
|
3214
3212
|
}
|
|
3215
3213
|
}
|
|
3216
3214
|
return options;
|
|
3217
3215
|
}
|
|
3218
3216
|
function mapProductOptions(options) {
|
|
3219
|
-
return
|
|
3220
|
-
|
|
3221
|
-
|
|
3222
|
-
|
|
3223
|
-
|
|
3224
|
-
|
|
3225
|
-
|
|
3226
|
-
|
|
3217
|
+
return Object.assign(
|
|
3218
|
+
{},
|
|
3219
|
+
...options.map((option) => {
|
|
3220
|
+
return {
|
|
3221
|
+
[option.name]: Object.assign(
|
|
3222
|
+
{},
|
|
3223
|
+
...(option == null ? void 0 : option.optionValues) ? option.optionValues.map((value, index2) => {
|
|
3224
|
+
return { [value.name]: index2 };
|
|
3225
|
+
}) : []
|
|
3226
|
+
)
|
|
3227
|
+
};
|
|
3228
|
+
})
|
|
3229
|
+
);
|
|
3227
3230
|
}
|
|
3228
3231
|
function mapSelectedProductOptionToObject(options) {
|
|
3229
3232
|
return Object.assign(
|
|
@@ -3236,28 +3239,30 @@ Refer to the authentication https://shopify.dev/api/storefront#authentication do
|
|
|
3236
3239
|
function mapSelectedProductOptionToObjectAsString(options) {
|
|
3237
3240
|
return JSON.stringify(mapSelectedProductOptionToObject(options));
|
|
3238
3241
|
}
|
|
3239
|
-
function encodeSelectedProductOptionAsKey(selectedOption
|
|
3242
|
+
function encodeSelectedProductOptionAsKey(selectedOption) {
|
|
3240
3243
|
if (Array.isArray(selectedOption)) {
|
|
3241
3244
|
return JSON.stringify(
|
|
3242
|
-
|
|
3243
|
-
|
|
3244
|
-
|
|
3245
|
+
Object.assign(
|
|
3246
|
+
{},
|
|
3247
|
+
...selectedOption.map((option) => ({ [option.name]: option.value }))
|
|
3248
|
+
)
|
|
3245
3249
|
);
|
|
3246
3250
|
} else {
|
|
3247
|
-
return JSON.stringify(
|
|
3248
|
-
Object.keys(selectedOption).map((key, index2) => {
|
|
3249
|
-
return productOptionMappings[index2][selectedOption[key]];
|
|
3250
|
-
})
|
|
3251
|
-
);
|
|
3251
|
+
return JSON.stringify(selectedOption);
|
|
3252
3252
|
}
|
|
3253
3253
|
}
|
|
3254
|
-
function
|
|
3254
|
+
function buildEncodingArrayFromSelectedOptions(selectedOption, productOptionMappings) {
|
|
3255
|
+
const encoding = Object.keys(selectedOption).map((key) => {
|
|
3256
|
+
return productOptionMappings[key] ? productOptionMappings[key][selectedOption[key]] : null;
|
|
3257
|
+
});
|
|
3258
|
+
return encoding.filter((code) => code !== null);
|
|
3259
|
+
}
|
|
3260
|
+
function mapVariants(variants) {
|
|
3255
3261
|
return Object.assign(
|
|
3256
3262
|
{},
|
|
3257
3263
|
...variants.map((variant) => {
|
|
3258
3264
|
const variantKey = encodeSelectedProductOptionAsKey(
|
|
3259
|
-
variant.selectedOptions || []
|
|
3260
|
-
productOptionMappings
|
|
3265
|
+
variant.selectedOptions || []
|
|
3261
3266
|
);
|
|
3262
3267
|
return { [variantKey]: variant };
|
|
3263
3268
|
})
|
|
@@ -3294,10 +3299,13 @@ Refer to the authentication https://shopify.dev/api/storefront#authentication do
|
|
|
3294
3299
|
validParam = logErrorAndReturnFalse("options.name");
|
|
3295
3300
|
}
|
|
3296
3301
|
if ((_a = product == null ? void 0 : product.options[0]) == null ? void 0 : _a.optionValues) {
|
|
3297
|
-
|
|
3302
|
+
let firstOptionValues = product.options[0].optionValues[0];
|
|
3298
3303
|
if (checkAll && !(firstOptionValues == null ? void 0 : firstOptionValues.name)) {
|
|
3299
3304
|
validParam = logErrorAndReturnFalse("options.optionValues.name");
|
|
3300
3305
|
}
|
|
3306
|
+
firstOptionValues = product.options[0].optionValues.filter(
|
|
3307
|
+
(value) => !!(value == null ? void 0 : value.firstSelectableVariant)
|
|
3308
|
+
)[0];
|
|
3301
3309
|
if (firstOptionValues == null ? void 0 : firstOptionValues.firstSelectableVariant) {
|
|
3302
3310
|
validParam = checkProductVariantParam(
|
|
3303
3311
|
firstOptionValues.firstSelectableVariant,
|
|
@@ -3305,10 +3313,6 @@ Refer to the authentication https://shopify.dev/api/storefront#authentication do
|
|
|
3305
3313
|
validParam,
|
|
3306
3314
|
checkAll
|
|
3307
3315
|
);
|
|
3308
|
-
} else {
|
|
3309
|
-
validParam = logErrorAndReturnFalse(
|
|
3310
|
-
"options.optionValues.firstSelectableVariant"
|
|
3311
|
-
);
|
|
3312
3316
|
}
|
|
3313
3317
|
} else {
|
|
3314
3318
|
validParam = logErrorAndReturnFalse("options.optionValues");
|
|
@@ -3394,15 +3398,20 @@ Refer to the authentication https://shopify.dev/api/storefront#authentication do
|
|
|
3394
3398
|
encodedVariantAvailability,
|
|
3395
3399
|
handle: productHandle
|
|
3396
3400
|
} = checkedProduct;
|
|
3401
|
+
const selectedOptionKeys = selectedVariant == null ? void 0 : selectedVariant.selectedOptions.map(
|
|
3402
|
+
(option) => option.name
|
|
3403
|
+
);
|
|
3404
|
+
const filteredOptions = options.filter((option) => {
|
|
3405
|
+
return selectedOptionKeys && selectedOptionKeys.indexOf(option.name) >= 0;
|
|
3406
|
+
});
|
|
3397
3407
|
const productOptionMappings = mapProductOptions(options);
|
|
3398
3408
|
const variants = mapVariants(
|
|
3399
|
-
selectedVariant ? [selectedVariant, ...adjacentVariants] : adjacentVariants
|
|
3400
|
-
productOptionMappings
|
|
3409
|
+
selectedVariant ? [selectedVariant, ...adjacentVariants] : adjacentVariants
|
|
3401
3410
|
);
|
|
3402
3411
|
const selectedOptions = mapSelectedProductOptionToObject(
|
|
3403
3412
|
selectedVariant ? selectedVariant.selectedOptions : []
|
|
3404
3413
|
);
|
|
3405
|
-
const productOptions =
|
|
3414
|
+
const productOptions = filteredOptions.map((option, optionIndex) => {
|
|
3406
3415
|
return {
|
|
3407
3416
|
...option,
|
|
3408
3417
|
optionValues: option.optionValues.map((value) => {
|
|
@@ -3410,13 +3419,13 @@ Refer to the authentication https://shopify.dev/api/storefront#authentication do
|
|
|
3410
3419
|
const targetOptionParams = { ...selectedOptions };
|
|
3411
3420
|
targetOptionParams[option.name] = value.name;
|
|
3412
3421
|
const targetKey = encodeSelectedProductOptionAsKey(
|
|
3422
|
+
targetOptionParams || []
|
|
3423
|
+
);
|
|
3424
|
+
const encodingKey = buildEncodingArrayFromSelectedOptions(
|
|
3413
3425
|
targetOptionParams || [],
|
|
3414
3426
|
productOptionMappings
|
|
3415
3427
|
);
|
|
3416
|
-
const topDownKey =
|
|
3417
|
-
0,
|
|
3418
|
-
optionIndex + 1
|
|
3419
|
-
);
|
|
3428
|
+
const topDownKey = encodingKey.slice(0, optionIndex + 1);
|
|
3420
3429
|
const exists = isOptionValueCombinationInEncodedVariant(
|
|
3421
3430
|
topDownKey,
|
|
3422
3431
|
encodedVariantExistence || ""
|
|
@@ -3426,11 +3435,14 @@ Refer to the authentication https://shopify.dev/api/storefront#authentication do
|
|
|
3426
3435
|
encodedVariantAvailability || ""
|
|
3427
3436
|
);
|
|
3428
3437
|
const variant = variants[targetKey] || value.firstSelectableVariant;
|
|
3429
|
-
|
|
3430
|
-
|
|
3431
|
-
|
|
3438
|
+
let variantOptionParam = {};
|
|
3439
|
+
if (variant) {
|
|
3440
|
+
variantOptionParam = mapSelectedProductOptionToObject(
|
|
3441
|
+
variant.selectedOptions || []
|
|
3442
|
+
);
|
|
3443
|
+
}
|
|
3432
3444
|
const searchParams = new URLSearchParams(variantOptionParam);
|
|
3433
|
-
const handle = (_a = variant == null ? void 0 : variant.product) == null ? void 0 : _a.handle;
|
|
3445
|
+
const handle = ((_a = variant == null ? void 0 : variant.product) == null ? void 0 : _a.handle) || productHandle;
|
|
3434
3446
|
return {
|
|
3435
3447
|
...value,
|
|
3436
3448
|
variant,
|