@faststore/core 3.0.115 → 3.0.117
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/.next/BUILD_ID +1 -1
- package/.next/build-manifest.json +22 -22
- package/.next/cache/.tsbuildinfo +1 -1
- package/.next/cache/config.json +3 -3
- package/.next/cache/eslint/.cache_1gneedd +1 -1
- package/.next/cache/webpack/client-production/0.pack +0 -0
- package/.next/cache/webpack/client-production/index.pack +0 -0
- package/.next/cache/webpack/server-production/0.pack +0 -0
- package/.next/cache/webpack/server-production/index.pack +0 -0
- package/.next/next-minimal-server.js.nft.json +1 -1
- package/.next/next-server.js.nft.json +1 -1
- package/.next/prerender-manifest.js +1 -1
- package/.next/prerender-manifest.json +1 -1
- package/.next/routes-manifest.json +1 -1
- package/.next/server/chunks/24.js +1 -1
- package/.next/server/chunks/350.js +1 -1
- package/.next/server/chunks/485.js +1 -1
- package/.next/server/chunks/498.js +1 -1
- package/.next/server/chunks/646.js +6 -2
- package/.next/server/chunks/82.js +2 -2
- package/.next/server/chunks/933.js +1 -1
- package/.next/server/chunks/997.js +1 -1
- package/.next/server/middleware-build-manifest.js +1 -1
- package/.next/server/pages/[...slug].js +1 -1
- package/.next/server/pages/[slug]/p.js +1 -1
- package/.next/server/pages/_error.js +1 -1
- package/.next/server/pages/api/graphql.js +1 -1
- package/.next/server/pages/en-US/404.html +2 -2
- package/.next/server/pages/en-US/404.json +1 -1
- package/.next/server/pages/en-US/500.html +2 -2
- package/.next/server/pages/en-US/500.json +1 -1
- package/.next/server/pages/en-US/account.html +2 -2
- package/.next/server/pages/en-US/account.json +1 -1
- package/.next/server/pages/en-US/checkout.html +2 -2
- package/.next/server/pages/en-US/checkout.json +1 -1
- package/.next/server/pages/en-US/login.html +2 -2
- package/.next/server/pages/en-US/login.json +1 -1
- package/.next/server/pages/en-US/s.html +2 -2
- package/.next/server/pages/en-US/s.json +1 -1
- package/.next/server/pages/en-US.html +3 -3
- package/.next/server/pages/en-US.json +1 -1
- package/.next/server/pages/index.js +1 -1
- package/.next/server/pages/s.js +1 -1
- package/.next/server/pages-manifest.json +1 -1
- package/.next/static/{Phsiu2MTzhG7Yo-7F06VY → ZcioUQf53yK_7-v4Io2W-}/_buildManifest.js +1 -1
- package/.next/static/chunks/629-0cb613f9bcc4f486.js +1 -0
- package/.next/static/chunks/661-64696c6b69aad0cd.js +1 -0
- package/.next/static/chunks/968-3ed71db484b2d4e6.js +1 -0
- package/.next/static/chunks/pages/[...slug]-dd7f247ab9486429.js +1 -0
- package/.next/static/chunks/pages/[slug]/p-e7077156f76f4cef.js +1 -0
- package/.next/static/chunks/pages/{_app-5d553d859f2f0ef5.js → _app-c735dc8671b02901.js} +1 -1
- package/.next/static/chunks/pages/index-d7ef84d142b53200.js +1 -0
- package/.next/static/chunks/pages/s-5f2e23d107382a98.js +1 -0
- package/.next/trace +95 -95
- package/.turbo/turbo-build.log +5 -5
- package/.turbo/turbo-test.log +4 -4
- package/@generated/gql.ts +2 -2
- package/@generated/graphql.ts +25 -2
- package/@generated/persisted-documents.json +2 -2
- package/@generated/schema.graphql +16 -0
- package/faststore.config.default.js +1 -0
- package/package.json +9 -9
- package/src/components/common/Alert/Alert.tsx +1 -3
- package/src/components/common/Footer/Footer.tsx +1 -3
- package/src/components/navigation/Navbar/Navbar.tsx +1 -4
- package/src/components/navigation/NavbarLinks/NavbarLinks.tsx +1 -2
- package/src/components/navigation/NavbarSlider/NavbarSlider.tsx +1 -2
- package/src/components/product/ProductCard/ProductCard.tsx +15 -0
- package/src/components/sections/ProductGallery/ProductGallery.tsx +2 -7
- package/src/pages/[...slug].tsx +1 -3
- package/src/pages/[slug]/p.tsx +1 -4
- package/src/pages/_document.tsx +9 -0
- package/src/pages/index.tsx +1 -4
- package/src/pages/s.tsx +1 -4
- package/src/server/options.ts +1 -0
- package/.next/static/chunks/629-2035a739f8a77882.js +0 -1
- package/.next/static/chunks/661-37d224da8cd18a0d.js +0 -1
- package/.next/static/chunks/968-d09ce43a57f43460.js +0 -1
- package/.next/static/chunks/pages/[...slug]-71b879bc2fe42f9c.js +0 -1
- package/.next/static/chunks/pages/[slug]/p-e34db2401c5476f8.js +0 -1
- package/.next/static/chunks/pages/index-31ed9b1d5e358000.js +0 -1
- package/.next/static/chunks/pages/s-42e7637b150b1768.js +0 -1
- package/cypress/integration/performance.test.js +0 -65
- package/src/sdk/tests/mark.tsx +0 -10
- /package/.next/static/{Phsiu2MTzhG7Yo-7F06VY → ZcioUQf53yK_7-v4Io2W-}/_ssgManifest.js +0 -0
package/.turbo/turbo-build.log
CHANGED
|
@@ -45,10 +45,10 @@ Warning: Dynamic Content not found for the page: home. Refer to the Dynamic Cont
|
|
|
45
45
|
Collecting build traces ...
|
|
46
46
|
|
|
47
47
|
Route (pages) Size First Load JS
|
|
48
|
-
┌ ● / 1.
|
|
48
|
+
┌ ● / 1.24 kB 143 kB
|
|
49
49
|
├ └ css/197e314c5a03eabd.css 740 B
|
|
50
50
|
├ /_app 0 B 90.7 kB
|
|
51
|
-
├ ● /[...slug] 2.
|
|
51
|
+
├ ● /[...slug] 2.79 kB 155 kB
|
|
52
52
|
├ └ css/e47f1a002bdcf76f.css 2.38 kB
|
|
53
53
|
├ ● /[slug]/p 10.8 kB 152 kB
|
|
54
54
|
├ └ css/fbd711b9f5abf105.css 9.57 kB
|
|
@@ -60,12 +60,12 @@ Route (pages) Size First Load JS
|
|
|
60
60
|
├ λ /api/health/ready 0 B 90.7 kB
|
|
61
61
|
├ λ /api/preview 0 B 90.7 kB
|
|
62
62
|
├ ● /checkout 660 B 126 kB
|
|
63
|
-
├ ● /login 1.4 kB
|
|
64
|
-
└ ● /s 2.
|
|
63
|
+
├ ● /login 1.4 kB 126 kB
|
|
64
|
+
└ ● /s 2.22 kB 154 kB
|
|
65
65
|
+ First Load JS shared by all 93.7 kB
|
|
66
66
|
├ chunks/framework-8e279965036b6169.js 45.4 kB
|
|
67
67
|
├ chunks/main-029f1328cfee9686.js 33.1 kB
|
|
68
|
-
├ chunks/pages/_app-
|
|
68
|
+
├ chunks/pages/_app-c735dc8671b02901.js 9.86 kB
|
|
69
69
|
├ chunks/webpack-8883d8523b03e385.js 2.38 kB
|
|
70
70
|
└ css/ee0556daedda6306.css 3.07 kB
|
|
71
71
|
|
package/.turbo/turbo-test.log
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
$ jest
|
|
2
|
-
PASS test/utils/multipleTemplates.test.ts (
|
|
3
|
-
PASS test/server/cms/index.test.ts (
|
|
4
|
-
PASS test/server/index.test.ts (
|
|
2
|
+
PASS test/utils/multipleTemplates.test.ts (36.183 s)
|
|
3
|
+
PASS test/server/cms/index.test.ts (36.699 s)
|
|
4
|
+
PASS test/server/index.test.ts (39.743 s)
|
|
5
5
|
|
|
6
6
|
Test Suites: 3 passed, 3 total
|
|
7
7
|
Tests: 19 passed, 19 total
|
|
8
8
|
Snapshots: 0 total
|
|
9
|
-
Time:
|
|
9
|
+
Time: 40.871 s
|
|
10
10
|
Ran all test suites.
|
package/@generated/gql.ts
CHANGED
|
@@ -12,7 +12,7 @@ import * as types from './graphql'
|
|
|
12
12
|
* Therefore it is highly recommended to use the babel or swc plugin for production.
|
|
13
13
|
*/
|
|
14
14
|
const documents = {
|
|
15
|
-
'\n fragment ProductSummary_product on StoreProduct {\n id: productID\n slug\n sku\n brand {\n brandName: name\n }\n name\n gtin\n\n isVariantOf {\n productGroupID\n name\n }\n\n image {\n url\n alternateName\n }\n\n brand {\n name\n }\n\n offers {\n lowPrice\n lowPriceWithTaxes\n offers {\n availability\n price\n listPrice\n listPriceWithTaxes\n quantity\n seller {\n identifier\n }\n }\n }\n\n additionalProperty {\n propertyID\n name\n value\n valueReference\n }\n }\n':
|
|
15
|
+
'\n fragment ProductSummary_product on StoreProduct {\n id: productID\n slug\n sku\n brand {\n brandName: name\n }\n name\n gtin\n\n isVariantOf {\n productGroupID\n name\n }\n\n image {\n url\n alternateName\n }\n\n brand {\n name\n }\n\n offers {\n lowPrice\n lowPriceWithTaxes\n offers {\n availability\n price\n listPrice\n listPriceWithTaxes\n quantity\n seller {\n identifier\n }\n }\n }\n\n additionalProperty {\n propertyID\n name\n value\n valueReference\n }\n\n advertisement {\n adId\n adResponseId\n }\n }\n':
|
|
16
16
|
types.ProductSummary_ProductFragmentDoc,
|
|
17
17
|
'\n fragment Filter_facets on StoreFacet {\n ... on StoreFacetRange {\n key\n label\n\n min {\n selected\n absolute\n }\n\n max {\n selected\n absolute\n }\n\n __typename\n }\n ... on StoreFacetBoolean {\n key\n label\n values {\n label\n value\n selected\n quantity\n }\n\n __typename\n }\n }\n':
|
|
18
18
|
types.Filter_FacetsFragmentDoc,
|
|
@@ -62,7 +62,7 @@ const documents = {
|
|
|
62
62
|
* The gql function is used to parse GraphQL queries into a document that can be used by GraphQL clients.
|
|
63
63
|
*/
|
|
64
64
|
export function gql(
|
|
65
|
-
source: '\n fragment ProductSummary_product on StoreProduct {\n id: productID\n slug\n sku\n brand {\n brandName: name\n }\n name\n gtin\n\n isVariantOf {\n productGroupID\n name\n }\n\n image {\n url\n alternateName\n }\n\n brand {\n name\n }\n\n offers {\n lowPrice\n lowPriceWithTaxes\n offers {\n availability\n price\n listPrice\n listPriceWithTaxes\n quantity\n seller {\n identifier\n }\n }\n }\n\n additionalProperty {\n propertyID\n name\n value\n valueReference\n }\n }\n'
|
|
65
|
+
source: '\n fragment ProductSummary_product on StoreProduct {\n id: productID\n slug\n sku\n brand {\n brandName: name\n }\n name\n gtin\n\n isVariantOf {\n productGroupID\n name\n }\n\n image {\n url\n alternateName\n }\n\n brand {\n name\n }\n\n offers {\n lowPrice\n lowPriceWithTaxes\n offers {\n availability\n price\n listPrice\n listPriceWithTaxes\n quantity\n seller {\n identifier\n }\n }\n }\n\n additionalProperty {\n propertyID\n name\n value\n valueReference\n }\n\n advertisement {\n adId\n adResponseId\n }\n }\n'
|
|
66
66
|
): typeof import('./graphql').ProductSummary_ProductFragmentDoc
|
|
67
67
|
/**
|
|
68
68
|
* The gql function is used to parse GraphQL queries into a document that can be used by GraphQL clients.
|
package/@generated/graphql.ts
CHANGED
|
@@ -116,6 +116,20 @@ export type Address = {
|
|
|
116
116
|
street: Maybe<Scalars['String']['output']>
|
|
117
117
|
}
|
|
118
118
|
|
|
119
|
+
/** Advertisement information about a specific product in a campaign */
|
|
120
|
+
export type Advertisement = {
|
|
121
|
+
/** Cost of the action, usually Cost Per Click. */
|
|
122
|
+
actionCost: Scalars['Float']['output']
|
|
123
|
+
/** Advertiser ID of the product. */
|
|
124
|
+
adId: Scalars['String']['output']
|
|
125
|
+
/** Advertiser Request ID. */
|
|
126
|
+
adRequestId: Scalars['String']['output']
|
|
127
|
+
/** Advertiser Response ID. */
|
|
128
|
+
adResponseId: Scalars['String']['output']
|
|
129
|
+
/** Campaign ID. */
|
|
130
|
+
campaignId: Scalars['String']['output']
|
|
131
|
+
}
|
|
132
|
+
|
|
119
133
|
export type AvailableDeliveryWindows = {
|
|
120
134
|
/** Available delivery window end date in UTC */
|
|
121
135
|
endDateUtc: Maybe<Scalars['String']['output']>
|
|
@@ -901,6 +915,8 @@ export type StorePerson = {
|
|
|
901
915
|
export type StoreProduct = {
|
|
902
916
|
/** Array of additional properties. */
|
|
903
917
|
additionalProperty: Array<StorePropertyValue>
|
|
918
|
+
/** Advertisement information about the product. */
|
|
919
|
+
advertisement: Maybe<Advertisement>
|
|
904
920
|
/** Aggregate ratings data. */
|
|
905
921
|
aggregateRating: StoreAggregateRating
|
|
906
922
|
/** Product brand. */
|
|
@@ -1123,6 +1139,7 @@ export type ProductSummary_ProductFragment = {
|
|
|
1123
1139
|
value: any
|
|
1124
1140
|
valueReference: any
|
|
1125
1141
|
}>
|
|
1142
|
+
advertisement: { adId: string; adResponseId: string } | null
|
|
1126
1143
|
}
|
|
1127
1144
|
|
|
1128
1145
|
type Filter_Facets_StoreFacetBoolean_Fragment = {
|
|
@@ -1433,6 +1450,7 @@ export type ClientManyProductsQueryQuery = {
|
|
|
1433
1450
|
value: any
|
|
1434
1451
|
valueReference: any
|
|
1435
1452
|
}>
|
|
1453
|
+
advertisement: { adId: string; adResponseId: string } | null
|
|
1436
1454
|
}
|
|
1437
1455
|
}>
|
|
1438
1456
|
}
|
|
@@ -1560,6 +1578,7 @@ export type ClientSearchSuggestionsQueryQuery = {
|
|
|
1560
1578
|
value: any
|
|
1561
1579
|
valueReference: any
|
|
1562
1580
|
}>
|
|
1581
|
+
advertisement: { adId: string; adResponseId: string } | null
|
|
1563
1582
|
}>
|
|
1564
1583
|
}
|
|
1565
1584
|
products: { pageInfo: { totalCount: number } }
|
|
@@ -1690,6 +1709,10 @@ export const ProductSummary_ProductFragmentDoc = new TypedDocumentString(
|
|
|
1690
1709
|
value
|
|
1691
1710
|
valueReference
|
|
1692
1711
|
}
|
|
1712
|
+
advertisement {
|
|
1713
|
+
adId
|
|
1714
|
+
adResponseId
|
|
1715
|
+
}
|
|
1693
1716
|
}
|
|
1694
1717
|
`,
|
|
1695
1718
|
{ fragmentName: 'ProductSummary_product' }
|
|
@@ -2051,7 +2074,7 @@ export const SubscribeToNewsletterDocument = {
|
|
|
2051
2074
|
export const ClientManyProductsQueryDocument = {
|
|
2052
2075
|
__meta__: {
|
|
2053
2076
|
operationName: 'ClientManyProductsQuery',
|
|
2054
|
-
operationHash: '
|
|
2077
|
+
operationHash: 'ad2eb78cfccb9dbd5a9f2d1e150cc70fea5da99a',
|
|
2055
2078
|
},
|
|
2056
2079
|
} as unknown as TypedDocumentString<
|
|
2057
2080
|
ClientManyProductsQueryQuery,
|
|
@@ -2078,7 +2101,7 @@ export const ClientProductQueryDocument = {
|
|
|
2078
2101
|
export const ClientSearchSuggestionsQueryDocument = {
|
|
2079
2102
|
__meta__: {
|
|
2080
2103
|
operationName: 'ClientSearchSuggestionsQuery',
|
|
2081
|
-
operationHash: '
|
|
2104
|
+
operationHash: '4d9f934764d8578aea08673b8ba57e8bf738f534',
|
|
2082
2105
|
},
|
|
2083
2106
|
} as unknown as TypedDocumentString<
|
|
2084
2107
|
ClientSearchSuggestionsQueryQuery,
|
|
@@ -3,10 +3,10 @@
|
|
|
3
3
|
"46103bee661405bde706d72126fdbf9b0a0c9e6e": "fragment CartProductItem on StoreProduct { additionalProperty { name propertyID value valueReference } brand { name } gtin image { alternateName url } isVariantOf { name productGroupID skuVariants { activeVariations availableVariations slugsMap } } name sku unitMultiplier } fragment ProductDetailsFragment_product on StoreProduct { additionalProperty { name propertyID value valueReference } brand { name } description gtin image { alternateName url } isVariantOf { name productGroupID skuVariants { activeVariations availableVariations slugsMap } } name offers { lowPrice lowPriceWithTaxes offers { availability listPrice listPriceWithTaxes price priceWithTaxes seller { identifier } } } id: productID sku unitMultiplier ...CartProductItem } fragment ServerProduct on Query { product(locator: $locator) { id: productID } } query ServerProductQuery($locator: [IStoreSelectedFacet!]!) { product(locator: $locator) { brand { name } breadcrumbList { itemListElement { item name position } } description gtin image { alternateName url } isVariantOf { productGroupID } name offers { highPrice lowPrice lowPriceWithTaxes offers { availability itemCondition price priceCurrency priceValidUntil seller { identifier } } priceCurrency } id: productID releaseDate seo { canonical description title } sku ...ProductDetailsFragment_product } ...ServerProduct }",
|
|
4
4
|
"324471076994dca94a47adcaf1c6b8f7896e1b4f": "fragment CartItem on StoreOffer { itemOffered { ...CartProductItem } listPrice listPriceWithTaxes price priceWithTaxes quantity seller { identifier } } fragment CartMessage on StoreCartMessage { status text } fragment CartProductItem on StoreProduct { additionalProperty { name propertyID value valueReference } brand { name } gtin image { alternateName url } isVariantOf { name productGroupID skuVariants { activeVariations availableVariations slugsMap } } name sku unitMultiplier } mutation ValidateCartMutation($cart: IStoreCart!, $session: IStoreSession!) { validateCart(cart: $cart, session: $session) { messages { ...CartMessage } order { acceptedOffer { ...CartItem } orderNumber } } }",
|
|
5
5
|
"feb7005103a859e2bc8cf2360d568806fd88deba": "mutation SubscribeToNewsletter($data: IPersonNewsletter!) { subscribeToNewsletter(data: $data) { id } }",
|
|
6
|
-
"
|
|
6
|
+
"ad2eb78cfccb9dbd5a9f2d1e150cc70fea5da99a": "fragment ClientManyProducts on Query { search( first: $first after: $after sort: $sort term: $term selectedFacets: $selectedFacets ) { products { pageInfo { totalCount } } } } fragment ProductSummary_product on StoreProduct { additionalProperty { name propertyID value valueReference } advertisement { adId adResponseId } brand { brandName: name } brand { name } gtin image { alternateName url } isVariantOf { name productGroupID } name offers { lowPrice lowPriceWithTaxes offers { availability listPrice listPriceWithTaxes price quantity seller { identifier } } } id: productID sku slug } query ClientManyProductsQuery($after: String, $first: Int!, $selectedFacets: [IStoreSelectedFacet!]!, $sort: StoreSort!, $term: String!) { search( first: $first after: $after sort: $sort term: $term selectedFacets: $selectedFacets ) { products { edges { node { ...ProductSummary_product } } pageInfo { totalCount } } } ...ClientManyProducts }",
|
|
7
7
|
"177fe68cb385737b0901fc9e105f0a4813e18a20": "fragment ClientProductGallery on Query { search( first: $first after: $after sort: $sort term: $term selectedFacets: $selectedFacets ) { products { pageInfo { totalCount } } } } fragment Filter_facets on StoreFacet { ... on StoreFacetBoolean { __typename key label values { label quantity selected value } } ... on StoreFacetRange { __typename key label max { absolute selected } min { absolute selected } } } fragment SearchEvent_metadata on SearchMetadata { isTermMisspelled logicalOperator } query ClientProductGalleryQuery($after: String!, $first: Int!, $selectedFacets: [IStoreSelectedFacet!]!, $sort: StoreSort!, $term: String!) { redirect(term: $term, selectedFacets: $selectedFacets) { url } search( first: $first after: $after sort: $sort term: $term selectedFacets: $selectedFacets ) { facets { ...Filter_facets } metadata { ...SearchEvent_metadata } products { pageInfo { totalCount } } } ...ClientProductGallery }",
|
|
8
8
|
"7d121ef8d4dc99174e64e4429a9b977b8bbebed8": "fragment CartProductItem on StoreProduct { additionalProperty { name propertyID value valueReference } brand { name } gtin image { alternateName url } isVariantOf { name productGroupID skuVariants { activeVariations availableVariations slugsMap } } name sku unitMultiplier } fragment ClientProduct on Query { product(locator: $locator) { id: productID } } fragment ProductDetailsFragment_product on StoreProduct { additionalProperty { name propertyID value valueReference } brand { name } description gtin image { alternateName url } isVariantOf { name productGroupID skuVariants { activeVariations availableVariations slugsMap } } name offers { lowPrice lowPriceWithTaxes offers { availability listPrice listPriceWithTaxes price priceWithTaxes seller { identifier } } } id: productID sku unitMultiplier ...CartProductItem } query ClientProductQuery($locator: [IStoreSelectedFacet!]!) { product(locator: $locator) { ...ProductDetailsFragment_product } ...ClientProduct }",
|
|
9
|
-
"
|
|
9
|
+
"4d9f934764d8578aea08673b8ba57e8bf738f534": "fragment ClientSearchSuggestions on Query { search(first: 5, term: $term, selectedFacets: $selectedFacets) { suggestions { terms { value } } } } fragment ProductSummary_product on StoreProduct { additionalProperty { name propertyID value valueReference } advertisement { adId adResponseId } brand { brandName: name } brand { name } gtin image { alternateName url } isVariantOf { name productGroupID } name offers { lowPrice lowPriceWithTaxes offers { availability listPrice listPriceWithTaxes price quantity seller { identifier } } } id: productID sku slug } fragment SearchEvent_metadata on SearchMetadata { isTermMisspelled logicalOperator } query ClientSearchSuggestionsQuery($selectedFacets: [IStoreSelectedFacet!], $term: String!) { search(first: 5, term: $term, selectedFacets: $selectedFacets) { metadata { ...SearchEvent_metadata } products { pageInfo { totalCount } } suggestions { products { ...ProductSummary_product } terms { value } } } ...ClientSearchSuggestions }",
|
|
10
10
|
"e2385b0f11726d0068f96548f57a8dd441c064e3": "fragment ClientTopSearchSuggestions on Query { search(first: 5, term: $term, selectedFacets: $selectedFacets) { suggestions { terms { value } } } } query ClientTopSearchSuggestionsQuery($selectedFacets: [IStoreSelectedFacet!], $term: String!) { search(first: 5, term: $term, selectedFacets: $selectedFacets) { suggestions { terms { value } } } ...ClientTopSearchSuggestions }",
|
|
11
11
|
"5696202828f9275216a445e316ebf516f168c506": "mutation ValidateSession($search: String!, $session: IStoreSession!) { validateSession(session: $session, search: $search) { addressType channel country currency { code symbol } deliveryMode { deliveryChannel deliveryMethod deliveryWindow { endDate startDate } } geoCoordinates { latitude longitude } locale person { email familyName givenName id } postalCode } }",
|
|
12
12
|
"d6667f1de2a26b94b9b55f4b25d7d823f82635a0": "fragment ClientShippingSimulation on Query { shipping(items: $items, postalCode: $postalCode, country: $country) { address { city } } } query ClientShippingSimulationQuery($country: String!, $items: [IShippingItem!]!, $postalCode: String!) { shipping(items: $items, postalCode: $postalCode, country: $country) { address { city neighborhood state } logisticsInfo { slas { availableDeliveryWindows { endDateUtc listPrice price startDateUtc } carrier localizedEstimates price shippingEstimate } } } ...ClientShippingSimulation }"
|
|
@@ -29,6 +29,20 @@ type Address {
|
|
|
29
29
|
geoCoordinates: [Float]
|
|
30
30
|
}
|
|
31
31
|
|
|
32
|
+
"""Advertisement information about a specific product in a campaign"""
|
|
33
|
+
type Advertisement {
|
|
34
|
+
"""Advertiser ID of the product."""
|
|
35
|
+
adId: String!
|
|
36
|
+
"""Campaign ID."""
|
|
37
|
+
campaignId: String!
|
|
38
|
+
"""Cost of the action, usually Cost Per Click."""
|
|
39
|
+
actionCost: Float!
|
|
40
|
+
"""Advertiser Request ID."""
|
|
41
|
+
adRequestId: String!
|
|
42
|
+
"""Advertiser Response ID."""
|
|
43
|
+
adResponseId: String!
|
|
44
|
+
}
|
|
45
|
+
|
|
32
46
|
"""Aggregate offer information, for a given SKU that is available to be fulfilled by multiple sellers."""
|
|
33
47
|
type StoreAggregateOffer {
|
|
34
48
|
"""Highest price among all sellers."""
|
|
@@ -382,6 +396,8 @@ type StoreProduct {
|
|
|
382
396
|
releaseDate: String!
|
|
383
397
|
"""Sku Unit Multiplier"""
|
|
384
398
|
unitMultiplier: Float
|
|
399
|
+
"""Advertisement information about the product."""
|
|
400
|
+
advertisement: Advertisement
|
|
385
401
|
}
|
|
386
402
|
|
|
387
403
|
"""Product input. Products are variants within product groups, equivalent to VTEX [SKUs](https://help.vtex.com/en/tutorial/what-is-an-sku--1K75s4RXAQyOuGUYKMM68u#). For example, you may have a **Shirt** product group with associated products such as **Blue shirt size L**, **Green shirt size XL** and so on."""
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@faststore/core",
|
|
3
|
-
"version": "3.0.
|
|
3
|
+
"version": "3.0.117",
|
|
4
4
|
"license": "MIT",
|
|
5
5
|
"repository": "vtex/faststore",
|
|
6
6
|
"browserslist": "supports es6-module and not dead",
|
|
@@ -43,12 +43,12 @@
|
|
|
43
43
|
"@envelop/graphql-jit": "^1.1.1",
|
|
44
44
|
"@envelop/parser-cache": "^2.2.0",
|
|
45
45
|
"@envelop/validation-cache": "^2.2.0",
|
|
46
|
-
"@faststore/api": "^3.0.
|
|
47
|
-
"@faststore/components": "^3.0.
|
|
48
|
-
"@faststore/graphql-utils": "^3.0.
|
|
49
|
-
"@faststore/lighthouse": "^3.0.
|
|
50
|
-
"@faststore/sdk": "^3.0.
|
|
51
|
-
"@faststore/ui": "^3.0.
|
|
46
|
+
"@faststore/api": "^3.0.117",
|
|
47
|
+
"@faststore/components": "^3.0.116",
|
|
48
|
+
"@faststore/graphql-utils": "^3.0.116",
|
|
49
|
+
"@faststore/lighthouse": "^3.0.116",
|
|
50
|
+
"@faststore/sdk": "^3.0.116",
|
|
51
|
+
"@faststore/ui": "^3.0.116",
|
|
52
52
|
"@graphql-codegen/cli": "^5.0.2",
|
|
53
53
|
"@graphql-codegen/client-preset": "^4.2.6",
|
|
54
54
|
"@graphql-codegen/typescript": "^4.0.7",
|
|
@@ -87,7 +87,7 @@
|
|
|
87
87
|
"devDependencies": {
|
|
88
88
|
"@cypress/code-coverage": "^3.12.1",
|
|
89
89
|
"@envelop/testing": "^6.0.0",
|
|
90
|
-
"@faststore/eslint-config": "^3.0.
|
|
90
|
+
"@faststore/eslint-config": "^3.0.116",
|
|
91
91
|
"@lhci/cli": "^0.9.0",
|
|
92
92
|
"@testing-library/cypress": "^10.0.1",
|
|
93
93
|
"@types/cypress": "^1.1.3",
|
|
@@ -128,5 +128,5 @@
|
|
|
128
128
|
"node": "18.19.0",
|
|
129
129
|
"yarn": "1.19.1"
|
|
130
130
|
},
|
|
131
|
-
"gitHead": "
|
|
131
|
+
"gitHead": "7f082b44a4b4a5f79afc98b0c9803237feefd2e4"
|
|
132
132
|
}
|
|
@@ -2,7 +2,6 @@ import type { PropsWithChildren, ReactNode } from 'react'
|
|
|
2
2
|
import { useCallback, useState } from 'react'
|
|
3
3
|
|
|
4
4
|
import { AlertProps as UIAlertProps } from '@faststore/ui'
|
|
5
|
-
import { mark } from 'src/sdk/tests/mark'
|
|
6
5
|
|
|
7
6
|
import Section from 'src/components/sections/Section/Section'
|
|
8
7
|
import styles from './section.module.scss'
|
|
@@ -50,5 +49,4 @@ function Alert({
|
|
|
50
49
|
)
|
|
51
50
|
}
|
|
52
51
|
|
|
53
|
-
|
|
54
|
-
export default mark(Alert)
|
|
52
|
+
export default Alert
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import { ReactNode } from 'react'
|
|
2
|
-
import { mark } from 'src/sdk/tests/mark'
|
|
3
2
|
|
|
4
3
|
interface FooterProps {
|
|
5
4
|
children: ReactNode
|
|
@@ -30,5 +29,4 @@ export function Footer({ children }: FooterProps) {
|
|
|
30
29
|
)
|
|
31
30
|
}
|
|
32
31
|
|
|
33
|
-
|
|
34
|
-
export default mark(Footer)
|
|
32
|
+
export default Footer
|
|
@@ -2,8 +2,6 @@ import { useRef, useState, useCallback } from 'react'
|
|
|
2
2
|
|
|
3
3
|
import { useUI, useScrollDirection, Icon as UIIcon } from '@faststore/ui'
|
|
4
4
|
|
|
5
|
-
import { mark } from 'src/sdk/tests/mark'
|
|
6
|
-
|
|
7
5
|
import type { SearchInputRef } from 'src/components/search/SearchInput'
|
|
8
6
|
import SearchInput from 'src/components/search/SearchInput'
|
|
9
7
|
import NavbarLinks from 'src/components/navigation/NavbarLinks'
|
|
@@ -174,5 +172,4 @@ function Navbar({
|
|
|
174
172
|
)
|
|
175
173
|
}
|
|
176
174
|
|
|
177
|
-
|
|
178
|
-
export default mark(Navbar)
|
|
175
|
+
export default Navbar
|
|
@@ -7,7 +7,6 @@ import Link from 'src/components/ui/Link'
|
|
|
7
7
|
import RegionButton from 'src/components/region/RegionButton'
|
|
8
8
|
import type { NavbarProps } from 'src/components/navigation/Navbar'
|
|
9
9
|
|
|
10
|
-
import { mark } from 'src/sdk/tests/mark'
|
|
11
10
|
import { useOverrideComponents } from 'src/sdk/overrides/OverrideContext'
|
|
12
11
|
|
|
13
12
|
interface NavbarLinksProps extends UINavbarLinksProps {
|
|
@@ -52,4 +51,4 @@ function NavbarLinks({
|
|
|
52
51
|
)
|
|
53
52
|
}
|
|
54
53
|
|
|
55
|
-
export default
|
|
54
|
+
export default NavbarLinks
|
|
@@ -5,7 +5,6 @@ import { ButtonSignInFallback } from 'src/components/ui/Button'
|
|
|
5
5
|
import Link from 'src/components/ui/Link'
|
|
6
6
|
import NavbarLinks from 'src/components/navigation/NavbarLinks'
|
|
7
7
|
import Logo from 'src/components/ui/Logo'
|
|
8
|
-
import { mark } from 'src/sdk/tests/mark'
|
|
9
8
|
|
|
10
9
|
import type { NavbarProps } from '../Navbar'
|
|
11
10
|
|
|
@@ -73,4 +72,4 @@ function NavbarSlider({
|
|
|
73
72
|
)
|
|
74
73
|
}
|
|
75
74
|
|
|
76
|
-
export default
|
|
75
|
+
export default NavbarSlider
|
|
@@ -77,6 +77,7 @@ function ProductCard({
|
|
|
77
77
|
sku,
|
|
78
78
|
isVariantOf: { name },
|
|
79
79
|
image: [img],
|
|
80
|
+
advertisement,
|
|
80
81
|
offers: {
|
|
81
82
|
lowPrice,
|
|
82
83
|
lowPriceWithTaxes,
|
|
@@ -106,12 +107,21 @@ function ProductCard({
|
|
|
106
107
|
|
|
107
108
|
const hasDiscount = spotPrice <= listPrice
|
|
108
109
|
|
|
110
|
+
const advertisementDataAttributes = advertisement
|
|
111
|
+
? {
|
|
112
|
+
'data-van-res-id': advertisement.adResponseId,
|
|
113
|
+
'data-van-aid': advertisement.adId,
|
|
114
|
+
'data-van-prod-name': name,
|
|
115
|
+
}
|
|
116
|
+
: {}
|
|
117
|
+
|
|
109
118
|
return (
|
|
110
119
|
<UIProductCard
|
|
111
120
|
outOfStock={outOfStock}
|
|
112
121
|
bordered={bordered}
|
|
113
122
|
variant={variant}
|
|
114
123
|
data-fs-product-card-sku={sku}
|
|
124
|
+
{...advertisementDataAttributes}
|
|
115
125
|
{...otherProps}
|
|
116
126
|
>
|
|
117
127
|
<UIProductCardImage aspectRatio={aspectRatio}>
|
|
@@ -189,6 +199,11 @@ export const fragment = gql(`
|
|
|
189
199
|
value
|
|
190
200
|
valueReference
|
|
191
201
|
}
|
|
202
|
+
|
|
203
|
+
advertisement {
|
|
204
|
+
adId
|
|
205
|
+
adResponseId
|
|
206
|
+
}
|
|
192
207
|
}
|
|
193
208
|
`)
|
|
194
209
|
|
|
@@ -1,5 +1,3 @@
|
|
|
1
|
-
import { mark } from '../../../sdk/tests/mark'
|
|
2
|
-
|
|
3
1
|
import ProductGallery, {
|
|
4
2
|
ProductGalleryProps,
|
|
5
3
|
} from '../../ui/ProductGallery/ProductGallery'
|
|
@@ -70,11 +68,8 @@ function ProductGallerySection({
|
|
|
70
68
|
)
|
|
71
69
|
}
|
|
72
70
|
|
|
73
|
-
ProductGallerySection.displayName = 'ProductGallery'
|
|
74
|
-
const MarkedProductGallery = mark(ProductGallerySection)
|
|
75
|
-
|
|
76
71
|
const OverridableProductGallery = getOverridableSection<
|
|
77
|
-
typeof
|
|
78
|
-
>('ProductGallery',
|
|
72
|
+
typeof ProductGallerySection
|
|
73
|
+
>('ProductGallery', ProductGallerySection, ProductGalleryDefaultComponents)
|
|
79
74
|
|
|
80
75
|
export default OverridableProductGallery
|
package/src/pages/[...slug].tsx
CHANGED
|
@@ -7,7 +7,6 @@ import type {
|
|
|
7
7
|
ServerCollectionPageQueryQuery,
|
|
8
8
|
ServerCollectionPageQueryQueryVariables,
|
|
9
9
|
} from '@generated/graphql'
|
|
10
|
-
import { mark } from 'src/sdk/tests/mark'
|
|
11
10
|
import { execute } from 'src/server'
|
|
12
11
|
|
|
13
12
|
import { Locator } from '@vtex/client-cms'
|
|
@@ -150,5 +149,4 @@ export const getStaticPaths: GetStaticPaths = async () => {
|
|
|
150
149
|
}
|
|
151
150
|
}
|
|
152
151
|
|
|
153
|
-
|
|
154
|
-
export default mark(Page)
|
|
152
|
+
export default Page
|
package/src/pages/[slug]/p.tsx
CHANGED
|
@@ -22,7 +22,6 @@ import { OverriddenDefaultProductShelf as ProductShelf } from 'src/components/se
|
|
|
22
22
|
import ProductTiles from 'src/components/sections/ProductTiles'
|
|
23
23
|
import CUSTOM_COMPONENTS from 'src/customizations/src/components'
|
|
24
24
|
import { useSession } from 'src/sdk/session'
|
|
25
|
-
import { mark } from 'src/sdk/tests/mark'
|
|
26
25
|
import { execute } from 'src/server'
|
|
27
26
|
|
|
28
27
|
import storeConfig from 'faststore.config'
|
|
@@ -274,6 +273,4 @@ export const getStaticPaths: GetStaticPaths = async () => {
|
|
|
274
273
|
}
|
|
275
274
|
}
|
|
276
275
|
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
export default mark(Page)
|
|
276
|
+
export default Page
|
package/src/pages/_document.tsx
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { Head, Html, Main, NextScript } from 'next/document'
|
|
2
|
+
import storeConfig from '../../faststore.config'
|
|
2
3
|
|
|
3
4
|
import ThirdPartyScripts from 'src/components/ThirdPartyScripts'
|
|
4
5
|
import { WebFonts } from 'src/customizations/src/GlobalOverrides'
|
|
@@ -7,6 +8,14 @@ function Document() {
|
|
|
7
8
|
return (
|
|
8
9
|
<Html>
|
|
9
10
|
<Head>
|
|
11
|
+
<link
|
|
12
|
+
rel="preconnect"
|
|
13
|
+
href={`https://${storeConfig.api.storeId}.vtexassets.com`}
|
|
14
|
+
/>
|
|
15
|
+
<link
|
|
16
|
+
rel="dns-prefetch"
|
|
17
|
+
href={`https://${storeConfig.api.storeId}.vtexassets.com`}
|
|
18
|
+
/>
|
|
10
19
|
{!process.env.DISABLE_3P_SCRIPTS && <ThirdPartyScripts />}
|
|
11
20
|
<WebFonts />
|
|
12
21
|
</Head>
|
package/src/pages/index.tsx
CHANGED
|
@@ -12,7 +12,6 @@ import { OverriddenDefaultNewsletter as Newsletter } from 'src/components/sectio
|
|
|
12
12
|
import { OverriddenDefaultProductShelf as ProductShelf } from 'src/components/sections/ProductShelf/OverriddenDefaultProductShelf'
|
|
13
13
|
import ProductTiles from 'src/components/sections/ProductTiles'
|
|
14
14
|
import CUSTOM_COMPONENTS from 'src/customizations/src/components'
|
|
15
|
-
import { mark } from 'src/sdk/tests/mark'
|
|
16
15
|
import type { PageContentType } from 'src/server/cms'
|
|
17
16
|
import { getPage } from 'src/server/cms'
|
|
18
17
|
|
|
@@ -129,6 +128,4 @@ export const getStaticProps: GetStaticProps<
|
|
|
129
128
|
}
|
|
130
129
|
}
|
|
131
130
|
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
export default mark(Page)
|
|
131
|
+
export default Page
|
package/src/pages/s.tsx
CHANGED
|
@@ -13,7 +13,6 @@ import { SROnly as UISROnly } from '@faststore/ui'
|
|
|
13
13
|
|
|
14
14
|
import { ITEMS_PER_PAGE } from 'src/constants'
|
|
15
15
|
import { useApplySearchState } from 'src/sdk/search/state'
|
|
16
|
-
import { mark } from 'src/sdk/tests/mark'
|
|
17
16
|
|
|
18
17
|
import { Locator } from '@vtex/client-cms'
|
|
19
18
|
import storeConfig from 'faststore.config'
|
|
@@ -153,6 +152,4 @@ export const getStaticProps: GetStaticProps<
|
|
|
153
152
|
}
|
|
154
153
|
}
|
|
155
154
|
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
export default mark(Page)
|
|
155
|
+
export default Page
|
package/src/server/options.ts
CHANGED
|
@@ -8,6 +8,7 @@ export const apiOptions: APIOptions = {
|
|
|
8
8
|
environment: storeConfig.api.environment as APIOptions['environment'],
|
|
9
9
|
subDomainPrefix: storeConfig.api.subDomainPrefix ?? ['www'],
|
|
10
10
|
hideUnavailableItems: storeConfig.api.hideUnavailableItems,
|
|
11
|
+
showSponsored: storeConfig.api.showSponsored,
|
|
11
12
|
simulationBehavior: (storeConfig.api as Record<string, any>)
|
|
12
13
|
.simulationBehavior,
|
|
13
14
|
incrementAddress: storeConfig.api.incrementAddress,
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[629],{5699:function(e,t,r){"use strict";var n=r(2784),a=r(1516);t.Z=function({testId:e,title:t,indicesExpanded:r,onAccordionChange:o,children:l}){return n.createElement("div",{"data-fs-filter":!0,"data-testid":e},n.createElement("h2",{"data-fs-filter-title":!0},t),n.createElement(a.Z,{indices:r,onChange:o,"data-fs-filter-accordion":!0},l))}},2815:function(e,t,r){"use strict";var n=r(2784),a=r(4564);t.Z=function({children:e}){return n.createElement(a.Z,{"data-fs-filter-list":!0},e)}},1305:function(e,t,r){"use strict";r.d(t,{Z:function(){return Filter_FilterFacetBooleanItem}});var n=r(2784);let a=(0,n.forwardRef)(function({testId:e="fs-checkbox",partial:t,...r},a){return n.createElement("input",{ref:a,"data-fs-checkbox":!0,"data-testid":e,"data-fs-checkbox-partial":t,type:"checkbox",...r})});var o=r(1953),l=r(276),Filter_FilterFacetBooleanItem=function({testId:e,id:t,selected:r,value:i,quantity:c,facetKey:s,label:u,onFacetChange:d}){return n.createElement("li",{key:t,"data-fs-filter-list-item":!0},n.createElement(a,{id:t,checked:r,onChange:()=>d({key:s,value:i},"BOOLEAN"),"data-fs-filter-list-item-checkbox":!0,"data-testid":`${e}-accordion-panel-checkbox`,"data-value":i,"data-quantity":c}),n.createElement(o.Z,{htmlFor:t,className:"text__title-mini-alt","data-fs-filter-list-item-label":!0},u," ",n.createElement(l.Z,{"data-fs-filter-list-item-badge":!0},c)))}},1355:function(e,t,r){"use strict";r.d(t,{Z:function(){return Filter_FilterFacetRange}});var n=r(2784);let percent=(e,t,r)=>Math.round((e-t)/(r-t)*100),a=(0,n.forwardRef)(function({min:e,max:t,absoluteValuesLabel:r,onChange:a,onEnd:o,testId:l="fs-slider",getAriaValueText:i,step:c,minValueLabelComponent:s,maxValueLabelComponent:u,...d},p){let f=(0,n.useMemo)(()=>(t.absolute-e.absolute)/100,[t.absolute,e.absolute]),[m,b]=(0,n.useState)(()=>percent(e.selected,e.absolute,t.absolute)),[v,y]=(0,n.useState)(()=>percent(t.selected,e.absolute,t.absolute)),[h,g]=(0,n.useState)(()=>Math.floor(e.absolute+m*f)),[j,P]=(0,n.useState)(()=>Math.round(e.absolute+v*f));return(0,n.useImperativeHandle)(p,()=>({setSliderValues:r=>{let n=Math.min(Number(r.min),j);if(g(n),b(percent(n,e.absolute,t.absolute)),r.max>t.absolute){P(t.absolute),y(percent(t.absolute,e.absolute,t.absolute));return}let a=Math.max(Number(r.max),h);P(a),y(percent(a,e.absolute,t.absolute))}})),n.createElement("div",{"data-fs-slider":!0,"data-testid":l,...d},n.createElement("div",{"data-fs-slider-absolute-values":!0},n.createElement("span",null,r.min),n.createElement("span",null,r.max)),n.createElement("div",{"data-fs-slider-wrapper":!0},n.createElement("div",{"data-fs-slider-range":!0,style:{left:`${m}%`,width:`${v-m}%`}}),n.createElement("input",{type:"range",min:Math.floor(e.absolute),max:Math.round(t.absolute),value:h,step:c,onMouseUp:()=>o?.({min:h,max:j}),onTouchEnd:()=>o?.({min:h,max:j}),onChange:r=>{let n=Math.min(Number(r.target.value),j);g(n),b(percent(n,e.absolute,t.absolute)),a?.({min:n,max:j})},"data-fs-slider-thumb":"left","aria-valuemin":e.absolute,"aria-valuemax":t.absolute,"aria-valuenow":h,"aria-label":String(h),"aria-labelledby":i?.(h,"min")}),s&&n.createElement("span",{"data-fs-slider-value-label":"min",style:{left:`calc(${h/t.absolute*100}% + (${8-.2*(h/t.absolute*100)}px))`}},s(h)),n.createElement("input",{type:"range",min:Math.floor(e.absolute),max:Math.round(t.absolute),value:j,step:c,onMouseUp:()=>o?.({min:h,max:j}),onTouchEnd:()=>o?.({min:h,max:j}),onChange:r=>{let n=Math.max(Number(r.target.value),h);P(n),y(percent(n,e.absolute,t.absolute)),a?.({min:h,max:n})},"data-fs-slider-thumb":"right","aria-valuemin":e.absolute,"aria-valuemax":t.absolute,"aria-valuenow":j,"aria-label":String(j),"aria-labelledby":i?.(j,"max")}),u&&n.createElement("span",{"data-fs-slider-value-label":"max",style:{left:`calc(${j/t.absolute*100}% + (${8-.2*(j/t.absolute*100)}px))`}},u(j))))});var o=r(9767),l=r(3779);let i=(0,n.forwardRef)(function({formatter:e,max:t,min:r,step:i=1,onChange:c,onEnd:s,testId:u="fs-price-range",variant:d,"aria-label":p,...f},m){let b=(0,n.useRef)();(0,n.useImperativeHandle)(m,()=>({setPriceRangeValues:e=>{c?.(e),b.current?.setSliderValues(e)}}));let v=(0,n.useRef)(null),y=(0,n.useRef)(null),[h,g]=(0,n.useState)(),[j,P]=(0,n.useState)(),[w,O]=(0,n.useState)({min:Math.floor(r.selected),max:Math.round(t.selected)});return n.createElement("div",{"data-fs-price-range":!0,"data-testid":u,...f},n.createElement(a,{ref:b,min:r,max:t,step:i,onEnd:e=>{s?.(e),g(void 0),P(void 0),O({min:e.min,max:e.max}),v.current?.value&&(v.current.value=String(e.min)),y.current?.value&&(y.current.value=String(e.max))},"aria-label":p,onChange:e=>c?.(e),absoluteValuesLabel:{min:n.createElement(o.Z,{value:Math.floor(r.absolute),variant:d,formatter:e}),max:n.createElement(o.Z,{value:Math.round(t.absolute),variant:d,formatter:e})},minValueLabelComponent:t=>n.createElement(o.Z,{value:t,variant:d,formatter:e}),maxValueLabelComponent:t=>n.createElement(o.Z,{value:t,variant:d,formatter:e})}),n.createElement("div",{"data-fs-price-range-inputs":!0},n.createElement(l.Z,{id:"price-range-min",step:i,label:"Min",type:"number",inputMode:"numeric",error:h,inputRef:v,min:Math.floor(r.absolute),max:w.max,value:w.min,onChange:e=>{var t;return t=e.target.value,void(g(void 0),Number(t)<Math.floor(r.absolute)||(Number(t)>Math.floor(w.max)&&g("Min price can't be greater than max"),O({...w,min:Number(t)}),b.current?.setSliderValues({...w,min:Number(t)})))},onBlur:()=>!h&&s?.(w)}),n.createElement(l.Z,{id:"price-range-max",label:"Max",step:i,type:"number",inputMode:"numeric",error:j,inputRef:y,max:Math.round(t.absolute),min:w.min,value:w.max,onChange:e=>{var r;return r=e.target.value,void(P(void 0),Number(r)>Math.round(t.absolute)||(Number(r)<Math.round(w.min)&&P("Max price can't be smaller than min"),O({...w,max:Number(r)}),b.current?.setSliderValues({...w,max:Number(r)})))},onBlur:()=>!j&&s?.(w)})))}),formatRange=(e,t)=>`${e.toFixed(2)}-to-${t.toFixed(2)}`;var Filter_FilterFacetRange=function({min:e,max:t,formatter:r,facetKey:a,onFacetChange:o}){return n.createElement(i,{"data-fs-filter-facet-range":!0,min:e,max:t,formatter:r,step:1,onEnd:e=>o({key:a,value:formatRange(e.min,e.max)},"RANGE")})}},4199:function(e,t,r){"use strict";var n=r(2784),a=r(783),o=r(7734),l=r(7583);t.Z=function({testId:e,label:t,index:r,children:i,type:c}){return n.createElement(a.Z,{key:`${t}-${r}`,prefixId:e,testId:`${e}-accordion`,index:r,"data-type":c,"data-fs-filter-accordion-item":!0},n.createElement(o.Z,{testId:`${e}-accordion-button`},t),n.createElement(l.Z,null,i))}},7936:function(e,t,r){"use strict";r.d(t,{j:function(){return S}});var n=r(9499),a=r(7296),o=r(2784),l=r(9089),i=r(4177),c=r.n(i),s=r(4960),u=r(4329),d=r(2614),p=r(727);let f=(0,o.createContext)({isOpen:!1,dropdownButtonRef:null,selectedDropdownItemIndexRef:null,dropdownItemsRef:null,id:"fs-dropdown"});var Dropdown_Dropdown=({children:e,isOpen:t=!1,onDismiss:r,id:n="fs-dropdown"})=>{let[a,l]=(0,o.useState)(t),i=(0,o.useRef)([]),c=(0,o.useRef)(0),s=(0,o.useRef)(null),u=(0,o.useCallback)(()=>{l(!1),r?.()},[r]),open=()=>{l(!0)},d=(0,o.useCallback)(()=>{l(e=>(e&&(r?.(),s.current?.focus()),!e))},[r]);(0,o.useEffect)(()=>{l(t)},[t]),(0,o.useEffect)(()=>{a&&i?.current[0]?.focus()},[a]),(0,o.useEffect)(()=>{let e=!0,event=t=>{let r=i?.current.some(e=>t.target===e);if(e){e=!1;return}r||u()};return a?document.addEventListener("click",event):document.removeEventListener("click",event),()=>{document.removeEventListener("click",event)}},[u,a]);let p=(0,o.useMemo)(()=>({isOpen:a,close:u,open,toggle:d,dropdownButtonRef:s,onDismiss:r,selectedDropdownItemIndexRef:c,dropdownItemsRef:i,id:n}),[u,n,a,r,d]);return o.createElement(f.Provider,{value:p},e)},m=r(3339);let useDropdown=()=>{let e=(0,o.useContext)(f);if(void 0===e)throw Error("Do not use useDropdown hook outside the Dropdown context.");return e},b=(0,o.forwardRef)(function({testId:e="fs-dropdown-button","aria-label":t,children:r,...n},a){let{toggle:l,dropdownButtonRef:i,isOpen:c,id:s}=useDropdown();return(0,o.useImperativeHandle)(a,()=>i.current,[i]),o.createElement(m.Z,{"data-fs-dropdown-button":!0,onClick:l,"data-testid":e,ref:i,"aria-label":t,"aria-expanded":c,"aria-haspopup":"menu","aria-controls":s,variant:"tertiary",...n},r)});var v=r(8316);let useDropdownPosition=()=>{let{dropdownButtonRef:e}=useDropdown(),t="undefined"!=typeof window,r=e?.current?.getBoundingClientRect(),n=r?.top??0,a=r?.height??0,o=r?.left??0,l=t?document?.documentElement?.scrollTop:0,i=t?document?.documentElement?.scrollLeft:0;return{position:"absolute",top:n+a+l,left:o+i}};var Dropdown_DropdownMenu=({children:e,testId:t="fs-dropdown-menu",size:r="regular",style:n,...a})=>{let{isOpen:l,close:i,dropdownItemsRef:c,selectedDropdownItemIndexRef:s,dropdownButtonRef:u,id:d}=useDropdown(),p=useDropdownPosition(),f=o.Children.toArray(e).length,handleDownPress=()=>{s.current<f-1?s.current++:s.current=0,c?.current[s.current]?.focus()},handleUpPress=()=>{s.current>0?s.current--:s.current=f-1,c?.current[s.current]?.focus()},handleHomePress=()=>{s.current=0,c?.current[s.current]?.focus()},handleEndPress=()=>{s.current=f-1,c?.current[s.current]?.focus()},handleEscapePress=()=>{i?.(),u?.current?.focus()};return l?(0,v.createPortal)(o.createElement("div",{role:"presentation","data-fs-dropdown-overlay":!0,onKeyDown:e=>{e.defaultPrevented||"Enter"===e.key||(e.preventDefault(),"Escape"===e.key&&handleEscapePress(),"ArrowDown"===e.key&&handleDownPress(),"ArrowUp"===e.key&&handleUpPress(),"Home"===e.key&&handleHomePress(),"End"===e.key&&handleEndPress(),e.stopPropagation())},"data-testid":`${t}-overlay`},o.createElement("div",{role:"menu","aria-orientation":"vertical","data-fs-dropdown-menu":!0,"data-fs-dropdown-menu-size":r,"data-testid":t,style:{...p,...n},id:d,...a},e)),document.body):(c.current=[],null)};let y=(0,o.forwardRef)(function({children:e,icon:t,onClick:r,testId:n="fs-dropdown-item",...a},l){let{dropdownItemsRef:i,selectedDropdownItemIndexRef:c,close:s}=useDropdown(),[u,d]=(0,o.useState)(0),p=(0,o.useRef)(),onFocusItem=()=>{c.current=u,i?.current[c.current]?.focus()};return(0,o.useImperativeHandle)(l,()=>p.current,[]),o.createElement("button",{"data-fs-dropdown-item":!0,"data-testid":n,ref:e=>{e&&!i?.current.includes(e)&&(i?.current.push(e),d(i?.current.findIndex(t=>t===e)??0)),p.current=e},onFocus:onFocusItem,onMouseEnter:onFocusItem,onClick:e=>{r?.(e),s?.()},role:"menuitem",tabIndex:-1,"data-index":u,...a},!!t&&t,e)});var h=r(4564),Breadcrumb_Divider=({divider:e,testId:t})=>{let r={"data-fs-breadcrumb-divider":!0,"aria-hidden":!0,"data-testid":`${t}-divider`};return o.isValidElement(e)?o.cloneElement(e,r):o.createElement("span",{...r},e??"/")},Breadcrumb_ListItem=({children:e,isLastItem:t,divider:r,testId:n})=>{let a={"data-testid":`${n}-item`,"data-fs-breadcrumb-item":!t||"current","aria-current":t?"page":void 0};return o.isValidElement(e)?o.createElement("li",{"data-fs-breadcrumb-list-item":!0},o.cloneElement(e,a),t?null:o.createElement(Breadcrumb_Divider,{divider:r,testId:n})):o.createElement("li",{"data-fs-breadcrumb-list-item":!0},o.createElement("span",{...a},e,t?null:o.createElement(Breadcrumb_Divider,{divider:r,testId:n})))};let g=(0,o.forwardRef)(function({children:e,divider:t="",testId:r="fs-breadcrumb",...n},a){return o.createElement("nav",{"aria-label":"Breadcrumb",role:"navigation",ref:a,"data-fs-breadcrumb":!0,"data-testid":r,...n},o.createElement(h.Z,{as:"ol","data-fs-breadcrumb-list":!0,"data-fs-content":"breadcrumb"},o.Children.toArray(e).map((e,n,a)=>{let l=n===a.length-1;return o.createElement(Breadcrumb_ListItem,{isLastItem:l,divider:t,key:`breadcrumb-${n}`,testId:r},e)})))}),j=(0,o.forwardRef)(function({children:e,divider:t="",testId:r="fs-breadcrumb",breadcrumbList:n,isDesktop:a=!1,renderLink:l,homeLink:i,dropdownButtonIcon:c=o.createElement(d.Z,{name:"DotsThree"}),collapsedItemsIcon:s=o.createElement(d.Z,{"data-fs-dropdown-item-icon":!0,name:"ArrowElbowDownRight"}),...u},f){let m=a?n[0]:null,v=a?n.slice(1,-2):n.slice(0,-2),h=n.slice(-2),j=n.length>4,P=(0,o.useCallback)(e=>{let t=l?.(e),r=e.collapsed?{"data-fs-breadcrumb-dropdown-link":!0}:{"data-fs-breadcrumb-link":!0};return t?(0,o.cloneElement)(t,{...r,key:e.itemProps.position}):o.createElement(p.Z,{...r,href:e.itemProps.item,key:e.itemProps.position},e.itemProps.name)},[l]);return o.createElement(g,{ref:f,"data-fs-breadcrumb-is-desktop":a,...u},i,!j&&n.map((e,t)=>n.length===t+1?o.createElement("span",{key:String(e.position)},e.name):P({itemProps:e,collapsed:!1})),j&&m&&P({itemProps:m,collapsed:!1}),j&&o.createElement(Dropdown_Dropdown,null,o.createElement(b,{"aria-label":"View More","data-fs-breadcrumb-dropdown-button":!0,size:"small"},c),o.createElement(Dropdown_DropdownMenu,{"data-fs-breadcrumb-dropdown-menu":!0},v.map(e=>o.createElement(y,{"data-fs-breadcrumb-dropdown-item":!0,key:String(e.position),icon:s},P({itemProps:e,collapsed:!0}))))),j&&h.map((e,t)=>h.length===t+1?o.createElement("span",{key:String(e.position)},e.name):P({itemProps:e,collapsed:!1})))});var P={Breadcrumb:({breadcrumbList:e,...t})=>o.createElement(o.Fragment,null,o.createElement(j,{breadcrumbList:e,...t}),o.createElement(j,{breadcrumbList:e,isDesktop:!0,...t})),Icon:d.Z},w=r(2322);function ownKeys(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),r.push.apply(r,n)}return r}var O=(0,a.B)("Breadcrumb",function(e){var t,r,a,o,i,d,p,f,m,b=Object.assign({},e),{Breadcrumb:v}=(0,u.r3)(),y=(0,s.qt)(),h=(0,s.OJ)(y)?null==y?void 0:null===(t=y.data)||void 0===t?void 0:null===(r=t.collection)||void 0===r?void 0:null===(a=r.seo)||void 0===a?void 0:a.title:"All Products",g=(0,s.tS)(y)?null==y?void 0:null===(o=y.data)||void 0===o?void 0:null===(i=o.product)||void 0===i?void 0:null===(d=i.breadcrumbList)||void 0===d?void 0:d.itemListElement:(0,s.OJ)(y)?null==y?void 0:null===(p=y.data)||void 0===p?void 0:null===(f=p.collection)||void 0===f?void 0:null===(m=f.breadcrumbList)||void 0===m?void 0:m.itemListElement:[{item:"/",name:h,position:1}];return(0,w.jsx)(l.Z,{className:"".concat(c().section," section-breadcrumb"),children:(0,w.jsx)(v.Component,function(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?ownKeys(Object(r),!0).forEach(function(t){(0,n.Z)(e,t,r[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):ownKeys(Object(r)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))})}return e}({breadcrumbList:g},b))})},P),_=(0,o.memo)(O);function OverriddenDefaultBreadcrumb_ownKeys(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),r.push.apply(r,n)}return r}function OverriddenDefaultBreadcrumb_objectSpread(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?OverriddenDefaultBreadcrumb_ownKeys(Object(r),!0).forEach(function(t){(0,n.Z)(e,t,r[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):OverriddenDefaultBreadcrumb_ownKeys(Object(r)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))})}return e}var S=(0,a.v)(OverriddenDefaultBreadcrumb_objectSpread(OverriddenDefaultBreadcrumb_objectSpread({},{section:"Breadcrumb"}),{},{Section:_}))},4583:function(e,t,r){"use strict";r.d(t,{f:function(){return Y}});var n=r(9499),a=r(7296),o=r(4730),l=r(2718),i=r(3221),c=r(5351),s=r(2784),u=r(6652),d=r(4329),p=r(9664),f=["value"];function ownKeys(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),r.push.apply(r,n)}return r}function _objectSpread(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?ownKeys(Object(r),!0).forEach(function(t){(0,n.Z)(e,t,r[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):ownKeys(Object(r)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))})}return e}var reducer=(e,t)=>{var{expanded:r,selected:n}=e,{type:a,payload:o}=t;switch(a){case"toggleExpanded":return r.has(o)?r.delete(o):r.add(o),_objectSpread(_objectSpread({},e),{},{expanded:new Set(r)});case"selectFacets":if(o!==n)return _objectSpread(_objectSpread({},e),{},{selected:o});break;case"toggleFacet":return _objectSpread(_objectSpread({},e),{},{selected:(0,p.wB)(e.selected,o)});case"setFacet":return _objectSpread(_objectSpread({},e),{},{selected:(0,p.uL)(e.selected,o.facet,o.unique)});default:throw Error("Action ".concat(a," not implemented"))}return e},useFilter=e=>{var{state:{selectedFacets:t}}=(0,i.R)(),{0:{selected:r,expanded:n},1:a}=(0,s.useReducer)(reducer,null,()=>({expanded:new Set([]),selected:t})),l=(0,s.useMemo)(()=>r.reduce((e,t)=>{var r;return e.has(t.key)||e.set(t.key,new Map),null===(r=e.get(t.key))||void 0===r||r.set(t.value,t),e},new Map),[r]),c=(0,s.useMemo)(()=>e.map(e=>"StoreFacetBoolean"===e.__typename?_objectSpread(_objectSpread({},e),{},{values:e.values.map(t=>{var r,{value:n}=t;return _objectSpread(_objectSpread({},(0,o.Z)(t,f)),{},{value:n,selected:!!(null===(r=l.get(e.key))||void 0===r?void 0:r.has(n))})})}):e),[e,l]);return(0,s.useEffect)(()=>{a({type:"selectFacets",payload:t})},[t]),{facets:c,selected:r,expanded:n,dispatch:a}},m=r(2322);function Filter_ownKeys(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),r.push.apply(r,n)}return r}function Filter_objectSpread(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?Filter_ownKeys(Object(r),!0).forEach(function(t){(0,n.Z)(e,t,r[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):Filter_ownKeys(Object(r)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))})}return e}var Filter_Filter=function(e){var t,r,{facets:n,testId:a="fs-filter",filter:o}=e,{__experimentalFilterDesktop:l,__experimentalFilterSlider:i}=(0,d.r3)(),c=useFilter(n),{filter:p}=(0,u.l)();return(0,m.jsxs)(m.Fragment,{children:[(0,m.jsx)("div",{className:"hidden-mobile",children:(0,m.jsx)(l.Component,Filter_objectSpread(Filter_objectSpread(Filter_objectSpread({},l.props),c),{},{testId:a,title:null==o?void 0:o.title}))}),p&&(0,m.jsx)(s.Suspense,{fallback:null,children:(0,m.jsx)(i.Component,Filter_objectSpread(Filter_objectSpread(Filter_objectSpread({},i.props),c),{},{testId:a,title:null==o?void 0:o.title,clearButtonLabel:null==o?void 0:null===(t=o.mobileOnly)||void 0===t?void 0:t.clearButtonLabel,applyButtonLabel:null==o?void 0:null===(r=o.mobileOnly)||void 0===r?void 0:r.applyButtonLabel}))})]})},b=r(1953),v=r(2614);let y=(0,s.forwardRef)(function({options:e,id:t,testId:r="fs-select",...n},a){return s.createElement("div",{"data-fs-select":!0},s.createElement("select",{ref:a,id:t,"data-testid":r,...n},Object.keys(e).map(t=>s.createElement("option",{key:t,value:t},e[t]))),s.createElement(v.Z,{"data-fs-select-icon":!0,name:"CaretDown"}))}),h=(0,s.forwardRef)(function({id:e,label:t,options:r,testId:n="fs-select-field",...a},o){return s.createElement("div",{ref:o,"data-fs-select-field":!0},s.createElement(b.Z,{"data-fs-select-field-label":!0,htmlFor:e},t),s.createElement(y,{id:e,options:r,"data-testid":n,...a}))});function Sort_ownKeys(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),r.push.apply(r,n)}return r}function Sort_objectSpread(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?Sort_ownKeys(Object(r),!0).forEach(function(t){(0,n.Z)(e,t,r[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):Sort_ownKeys(Object(r)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))})}return e}var g={price_desc:"Price, descending",price_asc:"Price, ascending",orders_desc:"Top sales",name_asc:"Name, A-Z",name_desc:"Name, Z-A",release_desc:"Release date",discount_desc:"Discount",score_desc:"Relevance"},j=Object.keys(g),Sort_Sort=function(e){var{label:t="Sort by",options:r=g}=e,{state:n,setState:a}=(0,i.R)(),o=Object.keys(r).reduce((e,t)=>{var n;return e[t]=null!==(n=r[t])&&void 0!==n?n:g[t],e},{});return(0,m.jsx)(h,{id:"sort-select",className:"sort / text__title-mini-alt",label:t,options:o,onChange:e=>{var t=j[e.target.selectedIndex];a(Sort_objectSpread(Sort_objectSpread({},n),{},{sort:t,page:0}))},value:n.sort,testId:"search-sort"})},P=r(792),FilterSkeleton_FilterSkeleton=function(e){var{children:t,loading:r=!0}=e;return r?(0,m.jsxs)("div",{"data-fs-filter-skeleton":!0,children:[(0,m.jsx)(P.Z,{"data-fs-filter-skeleton-text":!0,size:{width:"100%",height:"1.5rem"}}),(0,m.jsxs)("div",{"data-fs-filter-skeleton-content":!0,children:[(0,m.jsx)(P.Z,{"data-fs-filter-skeleton-text":!0,size:{width:"100%",height:"1.5rem"},shimmer:!1}),(0,m.jsx)(P.Z,{"data-fs-filter-skeleton-text":!0,size:{width:"100%",height:"1.5rem"},shimmer:!1}),(0,m.jsx)(P.Z,{"data-fs-filter-skeleton-text":!0,size:{width:"100%",height:"1.5rem"},shimmer:!1})]})]}):(0,m.jsx)(m.Fragment,{children:t})},w=r(4548),useDelayedFacets=e=>{var t=(0,s.useRef)([]);return(0,s.useMemo)(()=>{if(e){var r;t.current=null===(r=e.search)||void 0===r?void 0:r.facets}return t.current},[e,t])},O=r(2339);let getLink=e=>{let{pathname:t,search:r}=(0,O.Z)(e);return`${t}${r}`},usePagination=e=>{let{pages:t,itemsPerPage:r,state:n}=(0,i.R)(),a=Math.ceil(e/r),o=Number(t[t.length-1])+1,l=t[0]-1;return(0,s.useMemo)(()=>({next:o<a&&{cursor:o,link:getLink({...n,page:o})},prev:l>-1&&{cursor:l,link:getLink({...n,page:l})}}),[o,l,n,a])};var useDelayedPagination=e=>{var t=usePagination(e),{0:r,1:n}=(0,s.useState)(()=>({next:!1,prev:!1}));return(0,s.useEffect)(()=>{n(t)},[t]),r},_=r(4960),S=r(3523),x=r(9857),E=r(2495),k=r(7553),D=["cache"],prefetchQuery=(e,t,r)=>{var{cache:n}=r,a=(0,o.Z)(r,D),l=(0,k.km)(e.__meta__.operationName,t);n.get(l)||(0,x.JG)(l,(0,E.W)(e,t,a))},F=r(5081);function useProductsPrefetch_ownKeys(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),r.push.apply(r,n)}return r}var Z=S.gU,useProductsQueryPrefetch=(e,t)=>{var r=(0,F.y)(e),{cache:a}=(0,x.kY)();return(0,s.useCallback)(()=>prefetchQuery(Z,r,function(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?useProductsPrefetch_ownKeys(Object(r),!0).forEach(function(t){(0,n.Z)(e,t,r[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):useProductsPrefetch_ownKeys(Object(r)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))})}return e}({cache:a},t)),[r,a,t])},useProductsPrefetch=e=>{var{itemsPerPage:t,state:{sort:r,term:n,selectedFacets:a}}=(0,i.R)(),o=useProductsQueryPrefetch({first:t,after:(t*(null!=e?e:0)).toString(),sort:r,term:null!=n?n:"",selectedFacets:a});(0,s.useEffect)(()=>{null!==e&&o()},[e,o])};function ProductGallery_ownKeys(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),r.push.apply(r,n)}return r}function ProductGallery_objectSpread(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?ProductGallery_ownKeys(Object(r),!0).forEach(function(t){(0,n.Z)(e,t,r[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):ProductGallery_ownKeys(Object(r)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))})}return e}var C=(0,s.lazy)(()=>r.e(758).then(r.bind(r,5758))),G=(0,m.jsx)(w.Z,{loading:!0}),ProductGallery_ProductGallery=function(e){var t,r,n,a,o,l,p,f,b,v,y,h,g,j,P,w,O,S,{title:x,searchTerm:E,totalCount:k,searchTermLabel:D,totalCountLabel:F,filter:Z,previousPageButton:R,loadMorePageButton:M,sortBySelector:B,productCard:I}=e,{FilterButtonSkeleton:N,FilterIcon:K,LinkButtonNext:L,LinkButtonPrev:$,MobileFilterButton:A,PrevIcon:q,ResultsCountSkeleton:T,SortSkeleton:U}=(0,d.r3)(),{openFilter:z}=(0,u.l)(),{pages:V,addNextPage:H,addPrevPage:J,itemsPerPage:Q}=(0,i.R)(),W=(0,_.qt)(),Y=null==W?void 0:W.data,X=null!==(t=useDelayedFacets(Y))&&void 0!==t?t:[],{next:ee,prev:et}=useDelayedPagination(k);useProductsPrefetch(et?et.cursor:null),useProductsPrefetch(ee?ee.cursor:null);var er=!!(null==Y?void 0:null===(r=Y.search)||void 0===r?void 0:r.facets),en=!!(null==Y?void 0:null===(n=Y.search)||void 0===n?void 0:n.products);return(0,m.jsxs)("section",{"data-testid":"product-gallery","data-fs-product-listing":!0,children:[E&&(0,m.jsx)("header",{"data-fs-product-listing-search-term":!0,"data-fs-content":"product-gallery",children:(0,m.jsxs)("h1",{children:[D," ",(0,m.jsx)("span",{children:E})]})}),(0,m.jsxs)("div",{"data-fs-product-listing-content-grid":!0,"data-fs-content":"product-gallery",children:[(0,m.jsx)("div",{"data-fs-product-listing-filters":!0,children:(0,m.jsx)(FilterSkeleton_FilterSkeleton,{loading:!er,children:er&&(null==X?void 0:X.length)>0&&(0,m.jsx)(Filter_Filter,{facets:X,filter:Z})})}),(0,m.jsx)("div",{"data-fs-product-listing-results-count":!0,"data-count":k,children:(0,m.jsx)(T.Component,ProductGallery_objectSpread(ProductGallery_objectSpread({"data-fs-product-listing-results-count-skeleton":!0,size:{width:"100%",height:"1.5rem"}},T.props),{},{loading:!en,children:(0,m.jsxs)("h2",{"data-testid":"total-product-count",children:[k," ",F]})}))}),(0,m.jsxs)("div",{"data-fs-product-listing-sort":!0,children:[(0,m.jsx)(U.Component,ProductGallery_objectSpread(ProductGallery_objectSpread({"data-fs-product-listing-sort-skeleton":!0,size:{width:"auto",height:"1.5rem"}},U.props),{},{loading:!en,children:(0,m.jsx)(Sort_Sort,{label:null==B?void 0:B.label,options:null==B?void 0:B.options})})),(0,m.jsx)(N.Component,ProductGallery_objectSpread(ProductGallery_objectSpread({"data-fs-product-listing-filter-button-skeleton":!0,size:{width:"6rem",height:"1.5rem"}},N.props),{},{loading:!er,children:er&&(null==X?void 0:X.length)>0&&(0,m.jsx)(A.Component,ProductGallery_objectSpread(ProductGallery_objectSpread({variant:"tertiary","data-testid":"open-filter-button",icon:(0,m.jsx)(K.Component,ProductGallery_objectSpread(ProductGallery_objectSpread({width:16,height:16},K.props),{},{name:null!==(a=null==Z?void 0:null===(o=Z.mobileOnly)||void 0===o?void 0:null===(l=o.filterButton)||void 0===l?void 0:null===(p=l.icon)||void 0===p?void 0:p.icon)&&void 0!==a?a:K.props.name,"aria-label":null!==(f=null==Z?void 0:null===(b=Z.mobileOnly)||void 0===b?void 0:null===(v=b.filterButton)||void 0===v?void 0:null===(y=v.icon)||void 0===y?void 0:y.alt)&&void 0!==f?f:K.props["aria-label"]})),iconPosition:"left"},A.props),{},{onClick:z,children:null==Z?void 0:null===(h=Z.mobileOnly)||void 0===h?void 0:null===(g=h.filterButton)||void 0===g?void 0:g.label}))}))]}),(0,m.jsxs)("div",{"data-fs-product-listing-results":!0,children:[!1!==et&&(0,m.jsxs)("div",{"data-fs-product-listing-pagination":"top",children:[(0,m.jsx)(c.PB,{additionalLinkTags:[{rel:"prev",href:et.link}]}),(0,m.jsx)($.Component,ProductGallery_objectSpread(ProductGallery_objectSpread({rel:"prev",variant:"secondary",iconPosition:"left",icon:(0,m.jsx)(q.Component,ProductGallery_objectSpread(ProductGallery_objectSpread({width:16,height:16,weight:"bold"},q.props),{},{name:null!==(j=null==R?void 0:null===(P=R.icon)||void 0===P?void 0:P.icon)&&void 0!==j?j:q.props.name,"aria-label":null!==(w=null!==(O=null==R?void 0:null===(S=R.icon)||void 0===S?void 0:S.alt)&&void 0!==O?O:null==R?void 0:R.label)&&void 0!==w?w:q.props["aria-label"]}))},$.props),{},{onClick:e=>{e.currentTarget.blur(),e.preventDefault(),J()},href:et.link,children:null==R?void 0:R.label}))]}),en?(0,m.jsx)(s.Suspense,{fallback:G,children:V.map(e=>(0,m.jsx)(C,{page:e,title:x,productCard:I,itemsPerPage:Q},"gallery-page-".concat(e)))}):G,!1!==ee&&(0,m.jsxs)("div",{"data-fs-product-listing-pagination":"bottom",children:[(0,m.jsx)(c.PB,{additionalLinkTags:[{rel:"next",href:ee.link}]}),(0,m.jsx)(L.Component,ProductGallery_objectSpread(ProductGallery_objectSpread({testId:"show-more",rel:"next",variant:"secondary"},L.props),{},{onClick:e=>{e.currentTarget.blur(),e.preventDefault(),H()},href:ee.link,children:null==M?void 0:M.label}))]})]})]})]})},R=r(9089),M=r(1080),B=r.n(M),I=r(3339),N=r(3922),K=r(6068),L=r(5699),$=r(4199),A=r(2815),q=r(1305),T=r(1355),U=r(113);function FilterDesktop_ownKeys(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),r.push.apply(r,n)}return r}function FilterDesktop_objectSpread(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?FilterDesktop_ownKeys(Object(r),!0).forEach(function(t){(0,n.Z)(e,t,r[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):FilterDesktop_ownKeys(Object(r)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))})}return e}var z=r(6133),V=(0,s.lazy)(()=>r.e(624).then(r.bind(r,7624))),H={MobileFilterButton:I.Z,FilterIcon:v.Z,PrevIcon:v.Z,ResultsCountSkeleton:P.Z,SortSkeleton:P.Z,FilterButtonSkeleton:P.Z,LinkButtonPrev:N.Z,LinkButtonNext:N.Z,__experimentalFilterDesktop:function(e){var{facets:t,testId:r,dispatch:n,expanded:a,title:o}=e,{resetInfiniteScroll:l,state:c,setState:s}=(0,i.R)();return(0,m.jsx)(L.Z,{testId:"desktop-".concat(r),title:o,indicesExpanded:a,onAccordionChange:e=>n({type:"toggleExpanded",payload:e}),children:t.map((e,t)=>{var{__typename:n,label:o}=e,i=a.has(t);return(0,m.jsxs)($.Z,{testId:r,index:t,type:n,label:o,children:["StoreFacetBoolean"===n&&i&&(0,m.jsx)(A.Z,{children:e.values.map(t=>(0,m.jsx)(q.Z,{id:"".concat(r,"-").concat(e.label,"-").concat(t.label),testId:r,onFacetChange:e=>{s(FilterDesktop_objectSpread(FilterDesktop_objectSpread({},c),{},{selectedFacets:(0,p.wB)(c.selectedFacets,e),page:0})),l(0)},selected:t.selected,value:t.value,quantity:t.quantity,facetKey:e.key,label:t.label},"".concat(r,"-").concat(e.label,"-").concat(t.label)))}),"StoreFacetRange"===n&&i&&(0,m.jsx)(T.Z,{facetKey:e.key,min:e.min,max:e.max,formatter:"price"===e.key.toLowerCase()?U.P:void 0,onFacetChange:e=>{s(FilterDesktop_objectSpread(FilterDesktop_objectSpread({},c),{},{selectedFacets:(0,p.uL)(c.selectedFacets,e,!0),page:0})),l(0)}})]},"".concat(r,"-").concat(o,"-").concat(t))})})},__experimentalFilterSlider:V,__experimentalProductCard:K.Z,__experimentalEmptyGallery:function(e){var t,r,n,a,o,l,{title:i,firstButton:c,secondButton:s}=e;return(0,m.jsxs)(z.Z,{variant:"rounded",title:null!=i?i:"Nothing matches with your search",titleIcon:(0,m.jsx)(v.Z,{name:"CircleWavyWarning",width:56,height:56,weight:"thin"}),children:[(0,m.jsx)(N.Z,{href:null!==(t=null==c?void 0:c.url)&&void 0!==t?t:"/office",variant:"secondary",icon:(0,m.jsx)(v.Z,{name:null!==(r=null==c?void 0:c.icon)&&void 0!==r?r:"CircleWavyWarning",width:18,height:18,weight:"bold"}),iconPosition:"left",children:null!==(n=null==c?void 0:c.label)&&void 0!==n?n:"Browse Offers"}),(0,m.jsx)(N.Z,{href:null!==(a=null==s?void 0:s.url)&&void 0!==a?a:"/technology",variant:"secondary",icon:(0,m.jsx)(v.Z,{name:null!==(o=null==s?void 0:s.icon)&&void 0!==o?o:"RocketLaunch",width:18,height:18,weight:"bold"}),iconPosition:"left",children:null!==(l=null==s?void 0:s.label)&&void 0!==l?l:"Just Arrived"})]})}},J=["emptyGallery"];function ProductGallery_ProductGallery_ownKeys(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),r.push.apply(r,n)}return r}function ProductGallery_ProductGallery_objectSpread(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?ProductGallery_ProductGallery_ownKeys(Object(r),!0).forEach(function(t){(0,n.Z)(e,t,r[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):ProductGallery_ProductGallery_ownKeys(Object(r)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))})}return e}function ProductGallerySection(e){var t,r,n,a,l,i,c,s,u,p,f,b,{emptyGallery:v}=e,y=(0,o.Z)(e,J),{__experimentalEmptyGallery:h}=(0,d.r3)(),g=(0,_.qt)(),[j,P]=(0,_.En)(g)?[null==g?void 0:null===(t=g.data)||void 0===t?void 0:t.title,null==g?void 0:null===(r=g.data)||void 0===r?void 0:r.searchTerm]:(0,_.OJ)(g)?[null==g?void 0:null===(n=g.data)||void 0===n?void 0:null===(a=n.collection)||void 0===a?void 0:null===(l=a.seo)||void 0===l?void 0:l.title]:[""],w=null!==(i=null==g?void 0:null===(c=g.data)||void 0===c?void 0:null===(s=c.search)||void 0===s?void 0:null===(u=s.products)||void 0===u?void 0:null===(p=u.pageInfo)||void 0===p?void 0:p.totalCount)&&void 0!==i?i:0;return null!=g&&null!==(f=g.data)&&void 0!==f&&null!==(b=f.search)&&void 0!==b&&b.products&&0===w?(0,m.jsx)(R.Z,{className:"".concat(B().section," section-product-gallery"),children:(0,m.jsx)("section",{"data-testid":"product-gallery","data-fs-product-listing":!0,children:(0,m.jsx)(h.Component,ProductGallery_ProductGallery_objectSpread({},v))})}):(0,m.jsx)(R.Z,{className:"".concat(B().section," section-product-gallery layout__section"),children:(0,m.jsx)(ProductGallery_ProductGallery,ProductGallery_ProductGallery_objectSpread({title:j,searchTerm:P,totalCount:w},y))})}ProductGallerySection.displayName="ProductGallery";var Q=(0,l.B)(ProductGallerySection),W=(0,a.B)("ProductGallery",Q,H);function OverriddenDefaultProductGallery_ownKeys(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),r.push.apply(r,n)}return r}function OverriddenDefaultProductGallery_objectSpread(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?OverriddenDefaultProductGallery_ownKeys(Object(r),!0).forEach(function(t){(0,n.Z)(e,t,r[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):OverriddenDefaultProductGallery_ownKeys(Object(r)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))})}return e}var Y=(0,a.v)(OverriddenDefaultProductGallery_objectSpread(OverriddenDefaultProductGallery_objectSpread({},{section:"ProductGallery"}),{},{Section:W}))},4548:function(e,t,r){"use strict";var n=r(1023),a=r(5476),o=r(2322);t.Z=function(e){var{children:t,aspectRatio:r,loading:l=!0}=e;return l?(0,o.jsx)("ul",{"data-fs-product-grid":!0,children:Array.from({length:n.g},(e,t)=>(0,o.jsx)("li",{children:(0,o.jsx)(a.Z,{aspectRatio:r,bordered:!0})},String(t)))}):(0,o.jsx)(o.Fragment,{children:t})}},7171:function(e,t,r){"use strict";r.d(t,{Bj:function(){return c},Y_:function(){return useCreateUseGalleryPage},__:function(){return useGalleryPage}});var n=r(3523),a=r(3221),o=r(2784),l=r(7553),i=r(5081),c=(0,o.createContext)(e=>({data:null})),useGalleryPage=e=>{var t=(0,o.useContext)(c);if(!t)throw Error("Missing UseGalleryPageContext on React tree");return t(e)},s=n.gU,getKey=e=>JSON.stringify(e),useCreateUseGalleryPage=()=>{var{0:e,1:t}=(0,o.useState)([]),r=(0,o.useRef)([]),n=(0,o.useRef)([]),c=(0,o.useCallback)(function(e){var{state:{sort:c,term:u,selectedFacets:d},itemsPerPage:p}=(0,a.R)(),f=(0,i.y)({first:p,after:(p*e).toString(),sort:c,term:null!=u?u:"",selectedFacets:d}),m=n.current[e]===getKey(f),{data:b}=(0,l.aM)(s,f,{fallbackData:null,suspense:!0,doNotRun:m}),v=!m&&null!==b;if(v){n.current[e]=getKey(f);var y=[...r.current];y[e]=b,r.current=y}return(0,o.useEffect)(()=>{v&&t(t=>{var r=[...t];return r[e]=b,r})},[b,e,v]),(0,o.useMemo)(()=>m?{data:r.current[e]}:{data:b},[m,b,e])},[]);return(0,o.useMemo)(()=>({pages:e,useGalleryPage:c}),[e,c])}},7921:function(e,t,r){"use strict";r.d(t,{U:function(){return useProductGalleryQuery}});var n=r(3523),a=r(1072),o=r(7553),l=r(1868),i=r(5081),c=n.VA,useProductGalleryQuery=e=>{var{term:t,sort:r,selectedFacets:n,itemsPerPage:s}=e,{locale:u}=(0,l.kP)(),d=(0,i.y)({first:s,after:"0",sort:r,term:null!=t?t:"",selectedFacets:n});return(0,o.aM)(c,d,{onSuccess:e=>{if(e&&t){var r,n,o,l;(0,a._)({name:"intelligent_search_query",params:{locale:u,term:t,url:window.location.href,logicalOperator:null!==(r=null===(n=e.search.metadata)||void 0===n?void 0:n.logicalOperator)&&void 0!==r?r:"and",isTermMisspelled:null!==(o=null===(l=e.search.metadata)||void 0===l?void 0:l.isTermMisspelled)&&void 0!==o&&o,totalCount:e.search.products.pageInfo.totalCount}})}}})}},5403:function(e,t,r){"use strict";r.d(t,{j:function(){return useApplySearchState}});var n=r(2784),a=r(1163),useApplySearchState=()=>{var e=(0,a.useRouter)();return(0,n.useCallback)(t=>e.push("".concat(t.pathname).concat(t.search)),[e])}},4177:function(e){e.exports={section:"section_section__dvBbv"}},1080:function(e){e.exports={section:"section_section__4Hqa8",loading:"section_loading__GPzvE"}},1197:function(e,t,r){"use strict";r.d(t,{_:function(){return l},z:function(){return Provider}});var n=r(2784),a=r(2254);function setPagesSessionStorage(e){try{let t=window.history.state?.key;if(!t)return;let r=`__fs_gallery_page_${t}`;sessionStorage.setItem(r,JSON.stringify(e))}catch(e){return}}let reducer=(e,t)=>{switch(t.type){case"addPrev":{let t=e[0]-1,r=[t,...e];return setPagesSessionStorage(r),r}case"addNext":{let t=Number(e[e.length-1])+1,r=[...e,t];return setPagesSessionStorage(r),r}case"reset":{let{payload:e}=t,r=[e];return setPagesSessionStorage(r),r}default:throw new a.q("Unknown action for infinite search")}},useSearchInfiniteState=e=>{let[t,r]=(0,n.useReducer)(reducer,void 0,()=>(function(){try{let e=window.history.state?.key;if(!e)return null;let t=`__fs_gallery_page_${e}`,r=sessionStorage.getItem(t);return r?JSON.parse(r):null}catch(e){return null}})()??[e]),a=(0,n.useMemo)(()=>({addPrevPage:()=>r({type:"addPrev"}),addNextPage:()=>r({type:"addNext"}),resetInfiniteScroll:e=>r({type:"reset",payload:e})}),[]);return{pages:t,...a}};var o=r(2524);let l=(0,n.createContext)(void 0),Provider=({children:e,itemsPerPage:t,onChange:r,...a})=>{let{state:i,...c}=(0,o.X)(a,r),{pages:s,...u}=useSearchInfiniteState(i.page),d=(0,n.useMemo)(()=>({state:i,...c,pages:s,...u,itemsPerPage:t}),[u,t,s,c,i]);return n.createElement(l.Provider,{value:d},e)}},9664:function(e,t,r){"use strict";r.d(t,{uL:function(){return setFacet},wB:function(){return toggleFacet},wb:function(){return isSearchSort}});var n=r(2254);let a=new Set(["price_desc","price_asc","orders_desc","name_desc","name_asc","release_desc","discount_desc","score_desc"]),isSearchSort=e=>a.has(e),removeFacet=(e,t)=>{let{value:r}=t,a=e.findIndex(e=>e.value===r);if(a<0)throw new n.q(`Cannot remove ${r} from search params`);return e.filter((e,t)=>t!==a)},setFacet=(e,t,r)=>{if(!0===r){let r=e.findIndex(e=>e.key===t.key);if(r>-1)return e.map((e,n)=>n===r?t:e)}return[...e,t]},toggleFacet=(e,t)=>{let r=e.find(e=>e.key===t.key&&e.value===t.value);return void 0!==r?removeFacet(e,t):setFacet(e,t,!1)}},6142:function(e,t,r){"use strict";r.d(t,{Q:function(){return parse}});var n=r(2254),a=r(9664),o=r(2524);let parse=({pathname:e,searchParams:t})=>{let r=(0,o.j)({base:e,term:t.get("q")??null,sort:t.get("sort")??void 0,page:Number(t.get("page")??0)});if(!(0,a.wb)(r.sort))throw new n.q(`Uknown sorting option ${r.sort}`);let l=t.get("facets")?.split(",")??[];for(let e of l){let n=t.getAll(e);for(let t of n)r.selectedFacets=(0,a.uL)(r.selectedFacets,{key:e,value:t})}return r.passThrough=function(e,t){let r=new URLSearchParams,n=new Set(t),a=Array.from(e.entries());for(let[e,t]of a)n.has(e)||r.append(e,t);return r}(t,["q","sort","page","facets",...l]),r}},3221:function(e,t,r){"use strict";r.d(t,{R:function(){return useSearch}});var n=r(1197),a=r(2784),o=r(2254);let useContext=e=>{let t=(0,a.useContext)(e);if(void 0===t)throw new o.q(`${e.displayName??"Context"} needs to be on the React tree`);return t},useSearch=()=>useContext(n._)}}]);
|