@faststore/core 3.0.45 → 3.0.47
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/app-build-manifest.json +25 -0
- package/.next/app-path-routes-manifest.json +1 -0
- package/.next/build-manifest.json +95 -90
- 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/react-loadable-manifest.json +17 -17
- package/.next/required-server-files.json +1 -1
- package/.next/routes-manifest.json +1 -1
- package/.next/server/app/_not-found.html +1 -0
- package/.next/server/app/_not-found.js +1 -0
- package/.next/server/app/_not-found.js.nft.json +1 -0
- package/.next/server/app/_not-found.meta +1 -0
- package/.next/server/app/_not-found.rsc +6 -0
- package/.next/server/app/_not-found_client-reference-manifest.js +1 -0
- package/.next/server/app/fs-next-update/page.js +1 -0
- package/.next/server/app/fs-next-update/page.js.nft.json +1 -0
- package/.next/server/app/fs-next-update/page_client-reference-manifest.js +1 -0
- package/.next/server/app/fs-next-update.html +1 -0
- package/.next/server/app/fs-next-update.meta +1 -0
- package/.next/server/app/fs-next-update.rsc +6 -0
- package/.next/server/app-paths-manifest.json +4 -0
- package/.next/server/chunks/1408.js +1 -0
- package/.next/server/chunks/1488.js +9 -0
- package/.next/server/chunks/2053.js +8 -0
- package/.next/server/chunks/3057.js +1 -0
- package/.next/server/chunks/3068.js +1 -0
- package/.next/server/chunks/3131.js +1 -0
- package/.next/server/chunks/3404.js +1 -0
- package/.next/server/chunks/3607.js +1 -0
- package/.next/server/chunks/368.js +1 -0
- package/.next/server/chunks/3779.js +1 -0
- package/.next/server/chunks/3992.js +1 -0
- package/.next/server/chunks/4222.js +1 -0
- package/.next/server/chunks/466.js +1 -0
- package/.next/server/chunks/513.js +1 -0
- package/.next/server/chunks/522.js +1 -0
- package/.next/server/chunks/5640.js +6 -0
- package/.next/server/chunks/5686.js +1 -0
- package/.next/server/chunks/6090.js +1 -0
- package/.next/server/chunks/6414.js +1 -0
- package/.next/server/chunks/647.js +296 -0
- package/.next/server/chunks/6535.js +1 -0
- package/.next/server/chunks/6693.js +1 -0
- package/.next/server/chunks/{859.js → 6859.js} +2 -2
- package/.next/server/chunks/692.js +1 -0
- package/.next/server/chunks/7143.js +1 -0
- package/.next/server/chunks/7982.js +1 -0
- package/.next/server/chunks/8352.js +1 -0
- package/.next/server/chunks/8609.js +1 -0
- package/.next/server/chunks/8653.js +1 -0
- package/.next/server/chunks/8811.js +1 -0
- package/.next/server/chunks/9134.js +1 -0
- package/.next/server/chunks/9239.js +1 -0
- package/.next/server/chunks/9740.js +1 -0
- package/.next/server/middleware-build-manifest.js +1 -1
- package/.next/server/middleware-react-loadable-manifest.js +1 -1
- package/.next/server/pages/404.html +1 -0
- package/.next/server/pages/404.js +1 -1
- package/.next/server/pages/404.js.nft.json +1 -1
- package/.next/server/pages/500.js +1 -1
- package/.next/server/pages/500.js.nft.json +1 -1
- package/.next/server/pages/[...slug].js +1 -1
- package/.next/server/pages/[...slug].js.nft.json +1 -1
- package/.next/server/pages/[slug]/p.js +1 -1
- package/.next/server/pages/[slug]/p.js.nft.json +1 -1
- package/.next/server/pages/_app.js +1 -1
- package/.next/server/pages/_app.js.nft.json +1 -1
- package/.next/server/pages/_document.js +1 -1
- package/.next/server/pages/_document.js.nft.json +1 -1
- package/.next/server/pages/_error.js +1 -1
- package/.next/server/pages/_error.js.nft.json +1 -1
- package/.next/server/pages/account.js +1 -1
- package/.next/server/pages/account.js.nft.json +1 -1
- package/.next/server/pages/api/graphql.js +1 -1
- package/.next/server/pages/api/graphql.js.nft.json +1 -1
- package/.next/server/pages/api/health/live.js +1 -1
- package/.next/server/pages/api/health/live.js.nft.json +1 -1
- package/.next/server/pages/api/health/ready.js +1 -1
- package/.next/server/pages/api/health/ready.js.nft.json +1 -1
- package/.next/server/pages/api/preview.js +1 -1
- package/.next/server/pages/api/preview.js.nft.json +1 -1
- package/.next/server/pages/checkout.js +1 -1
- package/.next/server/pages/checkout.js.nft.json +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 +2 -2
- package/.next/server/pages/en-US.json +1 -1
- package/.next/server/pages/index.js +1 -1
- package/.next/server/pages/index.js.nft.json +1 -1
- package/.next/server/pages/login.js +1 -1
- package/.next/server/pages/login.js.nft.json +1 -1
- package/.next/server/pages/s.js +1 -1
- package/.next/server/pages/s.js.nft.json +1 -1
- package/.next/server/pages-manifest.json +1 -1
- package/.next/server/server-reference-manifest.js +1 -0
- package/.next/server/server-reference-manifest.json +1 -0
- package/.next/server/webpack-api-runtime.js +1 -1
- package/.next/server/webpack-runtime.js +1 -1
- package/.next/static/chunks/{484.b82b73b1d8c37e02.js → 119.e218828b0132b8b2.js} +1 -1
- package/.next/static/chunks/{857.d2299cfe995af21d.js → 319.8d30e9ffafb22a7b.js} +1 -1
- package/.next/static/chunks/346-94f30a4bb6dafd89.js +1 -0
- package/.next/static/chunks/439.db1fe827fd6839bb.js +1 -0
- package/.next/static/chunks/461.74f76bc649cb0446.js +1 -0
- package/.next/static/chunks/503-e6db8cab6eb3bf60.js +25 -0
- package/.next/static/chunks/{540.6c62d2536d42a1e0.js → 515.e66ca5426460f9b5.js} +1 -1
- package/.next/static/chunks/551-448d32b3b6393825.js +1 -0
- package/.next/static/chunks/{575-853fb8b1ba4ce8c4.js → 575-cdcaf62ab25bbfca.js} +1 -1
- package/.next/static/chunks/{202.c7d8a71173edecfb.js → 576.bd044c1cd3af7bbc.js} +1 -1
- package/.next/static/chunks/{217.01bc0ad07edd6f1b.js → 641.e663ec37da787600.js} +1 -1
- package/.next/static/chunks/{758.3ca049c36b5ddd7d.js → 661.df439acd66dbae34.js} +1 -1
- package/.next/static/chunks/680.355e4fc032bd559f.js +1 -0
- package/.next/static/chunks/913-4af007b10d50c50f.js +1 -0
- package/.next/static/chunks/app/_not-found-3649108cdca52b21.js +1 -0
- package/.next/static/chunks/app/fs-next-update/page-9a2debb5dd829908.js +1 -0
- package/.next/static/chunks/app/layout-a5723c7cfcca3bdf.js +1 -0
- package/.next/static/chunks/fd9d1056-e4950b334bc218cf.js +9 -0
- package/.next/static/chunks/main-5e45f8a409e3ce1c.js +1 -0
- package/.next/static/chunks/main-app-7b31a9960d0fa675.js +1 -0
- package/.next/static/chunks/pages/{404-1334d11ab8467b3d.js → 404-2e174f10fe6712cd.js} +1 -1
- package/.next/static/chunks/pages/{500-449c5bd51f98423f.js → 500-52c42b827ed9693b.js} +1 -1
- package/.next/static/chunks/pages/[...slug]-91cd643a14638b90.js +1 -0
- package/.next/static/chunks/pages/[slug]/p-436d394ddc268573.js +1 -0
- package/.next/static/chunks/pages/{_app-ec0d2e833bd9cea0.js → _app-88eac41033b6a613.js} +2 -2
- package/.next/static/chunks/pages/{_error-fbf331a03642b495.js → _error-5a3e12f364a20272.js} +1 -1
- package/.next/static/chunks/pages/{account-dbc5c028225cd1ac.js → account-9e4bcc3ab5b88353.js} +1 -1
- package/.next/static/chunks/pages/{checkout-29ae2c37eaf172e1.js → checkout-7c95e252d2cbfd75.js} +1 -1
- package/.next/static/chunks/pages/index-d3008f576cb2fc9d.js +1 -0
- package/.next/static/chunks/pages/{login-c4d2c856008df5ac.js → login-7a53f93622c6fded.js} +1 -1
- package/.next/static/chunks/pages/s-4d4c0bb22d489fa2.js +1 -0
- package/.next/static/chunks/webpack-31f87692f808967d.js +1 -0
- package/.next/static/css/173705e880fb4eaf.css +1 -0
- package/.next/static/css/17e37eb991935d47.css +1 -0
- package/.next/static/css/185f3332f3d0db64.css +1 -0
- package/.next/static/css/25261a033e496803.css +1 -0
- package/.next/static/css/36f9392d58a1a958.css +1 -0
- package/.next/static/css/4ababb851a0d481b.css +1 -0
- package/.next/static/css/6ce7302d311d7d68.css +1 -0
- package/.next/static/css/d6562b2ce182bbef.css +1 -0
- package/.next/static/css/ec44b650be144ada.css +1 -0
- package/.next/static/css/ec840ce35f0cf5e0.css +1 -0
- package/.next/static/ieYDvu46hXTqDayv0izz5/_buildManifest.js +1 -0
- package/.next/trace +113 -91
- package/.next/types/app/fs-next-update/page.ts +71 -0
- package/.next/types/package.json +1 -0
- package/.turbo/turbo-build.log +38 -28
- package/.turbo/turbo-test.log +11 -11
- package/@generated/gql.ts +4 -4
- package/@generated/graphql.ts +15 -3
- package/@generated/persisted-documents.json +3 -3
- package/@generated/schema.graphql +2 -0
- package/api/index.ts +2 -0
- package/app/fs-next-update/page.tsx +3 -0
- package/app/layout.tsx +11 -0
- package/cms/faststore/sections.json +22 -0
- package/index.ts +1 -9
- package/next-env.d.ts +1 -0
- package/next.config.js +11 -0
- package/package.json +9 -9
- package/src/components/cart/CartItem/CartItem.tsx +4 -1
- package/src/components/cart/CartSidebar/CartSidebar.tsx +10 -1
- package/src/components/sections/ProductDetails/ProductDetails.tsx +7 -2
- package/src/components/templates/LandingPage/LandingPage.tsx +10 -1
- package/src/components/ui/ProductDetails/ProductDetailsSettings.tsx +7 -0
- package/src/customizations/src/dynamicContent/index.ts +16 -0
- package/src/experimental/index.ts +4 -0
- package/src/pages/[...slug].tsx +5 -0
- package/src/pages/index.tsx +18 -4
- package/src/sdk/cart/index.ts +1 -0
- package/src/sdk/graphql/request.ts +3 -3
- package/src/sdk/overrides/PageProvider.tsx +19 -8
- package/src/utils/dynamicContent.ts +29 -0
- package/tsconfig.json +17 -2
- package/.next/server/chunks/119.js +0 -1
- package/.next/server/chunks/12.js +0 -1
- package/.next/server/chunks/187.js +0 -1
- package/.next/server/chunks/202.js +0 -1
- package/.next/server/chunks/24.js +0 -1
- package/.next/server/chunks/242.js +0 -1
- package/.next/server/chunks/247.js +0 -1
- package/.next/server/chunks/344.js +0 -1
- package/.next/server/chunks/404.js +0 -1
- package/.next/server/chunks/414.js +0 -1
- package/.next/server/chunks/484.js +0 -1
- package/.next/server/chunks/493.js +0 -1
- package/.next/server/chunks/498.js +0 -1
- package/.next/server/chunks/540.js +0 -1
- package/.next/server/chunks/57.js +0 -1
- package/.next/server/chunks/624.js +0 -1
- package/.next/server/chunks/640.js +0 -6
- package/.next/server/chunks/646.js +0 -292
- package/.next/server/chunks/659.js +0 -9
- package/.next/server/chunks/679.js +0 -1
- package/.next/server/chunks/693.js +0 -1
- package/.next/server/chunks/694.js +0 -1
- package/.next/server/chunks/779.js +0 -1
- package/.next/server/chunks/82.js +0 -8
- package/.next/server/chunks/857.js +0 -1
- package/.next/server/chunks/881.js +0 -1
- package/.next/server/chunks/917.js +0 -1
- package/.next/server/chunks/936.js +0 -1
- package/.next/server/chunks/96.js +0 -1
- package/.next/server/chunks/997.js +0 -1
- package/.next/static/4d-dhs4ERxMUlufFbhp1E/_buildManifest.js +0 -1
- package/.next/static/chunks/104-549e3a03338dbf15.js +0 -1
- package/.next/static/chunks/161-b39fe2f79ff7bc85.js +0 -1
- package/.next/static/chunks/247.6f1391104a867395.js +0 -1
- package/.next/static/chunks/624.455cdc0925956ae5.js +0 -1
- package/.next/static/chunks/629-751d31ac7c84f87d.js +0 -1
- package/.next/static/chunks/65.da22595d53beae76.js +0 -1
- package/.next/static/chunks/main-6f63f6746cc029db.js +0 -1
- package/.next/static/chunks/pages/[...slug]-bcaf61b01157d8cb.js +0 -1
- package/.next/static/chunks/pages/[slug]/p-7ac0f128969c3df8.js +0 -1
- package/.next/static/chunks/pages/index-cd109119d65df8e3.js +0 -1
- package/.next/static/chunks/pages/s-26e475975386c51a.js +0 -1
- package/.next/static/chunks/webpack-cb411fb5cc9a0449.js +0 -1
- package/.next/static/css/0d45c82d8887a269.css +0 -1
- package/.next/static/css/211c7542af66d8b4.css +0 -1
- package/.next/static/css/2980acad3f8e1028.css +0 -1
- package/.next/static/css/4c4d90eb8cb1d2b7.css +0 -1
- package/.next/static/css/96e3fddf695d6aa9.css +0 -1
- package/.next/static/css/b9d9ba1b04f3160d.css +0 -1
- package/.next/static/css/cff9aafa16fccc9c.css +0 -1
- package/.next/static/css/d586715f4f707df4.css +0 -1
- package/.next/static/css/d8b918e01478a2ed.css +0 -1
- package/.next/static/css/e32410b31c666cb2.css +0 -1
- /package/.next/static/chunks/{framework-8e279965036b6169.js → framework-21e9365486ba23a6.js} +0 -0
- /package/.next/static/{4d-dhs4ERxMUlufFbhp1E → ieYDvu46hXTqDayv0izz5}/_ssgManifest.js +0 -0
|
@@ -51,6 +51,9 @@ export interface ProductDetailsProps {
|
|
|
51
51
|
notAvailableButton: {
|
|
52
52
|
title: string
|
|
53
53
|
}
|
|
54
|
+
quantitySelector: {
|
|
55
|
+
useUnitMultiplier?: boolean
|
|
56
|
+
}
|
|
54
57
|
}
|
|
55
58
|
|
|
56
59
|
function ProductDetails({
|
|
@@ -71,6 +74,7 @@ function ProductDetails({
|
|
|
71
74
|
displayDescription: shouldDisplayProductDescription,
|
|
72
75
|
},
|
|
73
76
|
notAvailableButton: { title: notAvailableButtonTitle },
|
|
77
|
+
quantitySelector,
|
|
74
78
|
}: ProductDetailsProps) {
|
|
75
79
|
const {
|
|
76
80
|
DiscountBadge,
|
|
@@ -80,9 +84,9 @@ function ProductDetails({
|
|
|
80
84
|
__experimentalNotAvailableButton: NotAvailableButton,
|
|
81
85
|
} = useOverrideComponents<'ProductDetails'>()
|
|
82
86
|
const { currency } = useSession()
|
|
83
|
-
const [quantity, setQuantity] = useState(1)
|
|
84
87
|
const context = usePDP()
|
|
85
88
|
const { product, isValidating } = context?.data
|
|
89
|
+
const [quantity, setQuantity] = useState(1)
|
|
86
90
|
|
|
87
91
|
if (!product) {
|
|
88
92
|
throw new Error('NotFound')
|
|
@@ -188,6 +192,7 @@ function ProductDetails({
|
|
|
188
192
|
notAvailableButtonTitle={
|
|
189
193
|
notAvailableButtonTitle ?? NotAvailableButton.props.title
|
|
190
194
|
}
|
|
195
|
+
useUnitMultiplier={quantitySelector?.useUnitMultiplier ?? false}
|
|
191
196
|
/>
|
|
192
197
|
</section>
|
|
193
198
|
|
|
@@ -245,7 +250,7 @@ export const fragment = gql(`
|
|
|
245
250
|
name
|
|
246
251
|
gtin
|
|
247
252
|
description
|
|
248
|
-
|
|
253
|
+
unitMultiplier
|
|
249
254
|
isVariantOf {
|
|
250
255
|
name
|
|
251
256
|
productGroupID
|
|
@@ -11,6 +11,7 @@ import { OverriddenDefaultProductShelf as ProductShelf } from 'src/components/se
|
|
|
11
11
|
import ProductTiles from 'src/components/sections/ProductTiles'
|
|
12
12
|
import CUSTOM_COMPONENTS from 'src/customizations/src/components'
|
|
13
13
|
import MissingContentError from 'src/sdk/error/MissingContentError/MissingContentError'
|
|
14
|
+
import PageProvider from 'src/sdk/overrides/PageProvider'
|
|
14
15
|
import type { PageContentType } from 'src/server/cms'
|
|
15
16
|
import { getPage } from 'src/server/cms'
|
|
16
17
|
|
|
@@ -30,12 +31,18 @@ const COMPONENTS: Record<string, ComponentType<any>> = {
|
|
|
30
31
|
export type LandingPageProps = {
|
|
31
32
|
page: PageContentType
|
|
32
33
|
slug?: string
|
|
34
|
+
serverData?: unknown
|
|
33
35
|
}
|
|
34
36
|
|
|
35
37
|
export default function LandingPage({
|
|
36
38
|
page: { sections, settings },
|
|
37
39
|
slug,
|
|
40
|
+
serverData,
|
|
38
41
|
}: LandingPageProps) {
|
|
42
|
+
const context = {
|
|
43
|
+
data: serverData,
|
|
44
|
+
}
|
|
45
|
+
|
|
39
46
|
return (
|
|
40
47
|
<>
|
|
41
48
|
{/* SEO */}
|
|
@@ -75,7 +82,9 @@ export default function LandingPage({
|
|
|
75
82
|
If needed, wrap your component in a <Section /> component
|
|
76
83
|
(not the HTML tag) before rendering it here.
|
|
77
84
|
*/}
|
|
78
|
-
<
|
|
85
|
+
<PageProvider context={context}>
|
|
86
|
+
<RenderSections sections={sections} components={COMPONENTS} />
|
|
87
|
+
</PageProvider>
|
|
79
88
|
</>
|
|
80
89
|
)
|
|
81
90
|
}
|
|
@@ -5,6 +5,7 @@ import type { ProductDetailsFragment_ProductFragment } from '@generated/graphql'
|
|
|
5
5
|
|
|
6
6
|
import { useBuyButton } from 'src/sdk/cart/useBuyButton'
|
|
7
7
|
import { useFormattedPrice } from 'src/sdk/product/useFormattedPrice'
|
|
8
|
+
import config from '../../../../faststore.config'
|
|
8
9
|
|
|
9
10
|
import Selectors from 'src/components/ui/SkuSelector'
|
|
10
11
|
import AddToCartLoadingSkeleton from './AddToCartLoadingSkeleton'
|
|
@@ -22,6 +23,7 @@ interface ProductDetailsSettingsProps {
|
|
|
22
23
|
quantity: number
|
|
23
24
|
setQuantity: Dispatch<SetStateAction<number>>
|
|
24
25
|
notAvailableButtonTitle: string
|
|
26
|
+
useUnitMultiplier: boolean
|
|
25
27
|
}
|
|
26
28
|
|
|
27
29
|
function ProductDetailsSettings({
|
|
@@ -32,6 +34,7 @@ function ProductDetailsSettings({
|
|
|
32
34
|
setQuantity,
|
|
33
35
|
buyButtonIcon: { icon: buyButtonIconName, alt: buyButtonIconAlt },
|
|
34
36
|
notAvailableButtonTitle,
|
|
37
|
+
useUnitMultiplier,
|
|
35
38
|
}: ProductDetailsSettingsProps) {
|
|
36
39
|
const {
|
|
37
40
|
BuyButton,
|
|
@@ -45,6 +48,7 @@ function ProductDetailsSettings({
|
|
|
45
48
|
id,
|
|
46
49
|
sku,
|
|
47
50
|
gtin,
|
|
51
|
+
unitMultiplier,
|
|
48
52
|
name: variantName,
|
|
49
53
|
brand,
|
|
50
54
|
isVariantOf,
|
|
@@ -70,6 +74,7 @@ function ProductDetailsSettings({
|
|
|
70
74
|
brand,
|
|
71
75
|
isVariantOf,
|
|
72
76
|
additionalProperty,
|
|
77
|
+
unitMultiplier,
|
|
73
78
|
},
|
|
74
79
|
})
|
|
75
80
|
|
|
@@ -115,6 +120,8 @@ function ProductDetailsSettings({
|
|
|
115
120
|
<QuantitySelector.Component
|
|
116
121
|
min={1}
|
|
117
122
|
max={10}
|
|
123
|
+
unitMultiplier={useUnitMultiplier ? unitMultiplier : 1}
|
|
124
|
+
useUnitMultiplier={useUnitMultiplier}
|
|
118
125
|
{...QuantitySelector.props}
|
|
119
126
|
// Dynamic props shouldn't be overridable
|
|
120
127
|
// This decision can be reviewed later if needed
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
// starter.store code that will be copied to .faststore (core) dynamicContent/index.ts
|
|
2
|
+
|
|
3
|
+
// Refer to the Dynamic Content documentation at https://developers.vtex.com/docs/guides/faststore/dynamic-content-overview
|
|
4
|
+
// for mapping the page and the corresponding data-fetching function.
|
|
5
|
+
|
|
6
|
+
// Example:
|
|
7
|
+
// const dynamicContent = {
|
|
8
|
+
// home: fetchDataHomepage,
|
|
9
|
+
// "my-landing-page": fetchDataMyLandingPage,
|
|
10
|
+
// };
|
|
11
|
+
|
|
12
|
+
// export default dynamicContent;
|
|
13
|
+
|
|
14
|
+
const dynamicContent = {}
|
|
15
|
+
|
|
16
|
+
export default dynamicContent
|
|
@@ -30,9 +30,13 @@ export { default as useTopSearch_unstable } from '../../src/sdk/search/useTopSea
|
|
|
30
30
|
export { useFilter as useFilter_unstable } from '../../src/sdk/search/useFilter'
|
|
31
31
|
export { useDelayedFacets as useDelayedFacets_unstable } from '../../src/sdk/search/useDelayedFacets'
|
|
32
32
|
export { useDelayedPagination as useDelayedPagination_unstable } from '../../src/sdk/search/useDelayedPagination'
|
|
33
|
+
|
|
33
34
|
export { getShippingSimulation as getShippingSimulation_unstable } from '../../src/sdk/shipping'
|
|
34
35
|
export { useShippingSimulation as useShippingSimulation_unstable } from '../../src/sdk/shipping/useShippingSimulation'
|
|
35
36
|
|
|
36
37
|
// Components
|
|
37
38
|
export { Image as Image_unstable } from '../../src/components/ui/Image'
|
|
38
39
|
export { ProfileChallenge as ProfileChallenge_unstable } from '../../src/components/auth/ProfileChallenge'
|
|
40
|
+
|
|
41
|
+
// Server GraphQL
|
|
42
|
+
export { execute as execute_unstable } from '../../src/server'
|
package/src/pages/[...slug].tsx
CHANGED
|
@@ -23,6 +23,7 @@ import ProductListingPage, {
|
|
|
23
23
|
} from 'src/components/templates/ProductListingPage'
|
|
24
24
|
import { PageContentType } from 'src/server/cms'
|
|
25
25
|
import { getPLP, PLPContentType } from 'src/server/cms/plp'
|
|
26
|
+
import { getDynamicContent } from 'src/utils/dynamicContent'
|
|
26
27
|
|
|
27
28
|
type BaseProps = {
|
|
28
29
|
globalSections: GlobalSectionsData
|
|
@@ -39,6 +40,7 @@ type Props = BaseProps &
|
|
|
39
40
|
type: 'page'
|
|
40
41
|
slug: string
|
|
41
42
|
page: PageContentType
|
|
43
|
+
serverData?: unknown
|
|
42
44
|
}
|
|
43
45
|
)
|
|
44
46
|
|
|
@@ -91,12 +93,15 @@ export const getStaticProps: GetStaticProps<
|
|
|
91
93
|
]
|
|
92
94
|
|
|
93
95
|
if (await landingPagePromise) {
|
|
96
|
+
const serverData = await getDynamicContent({ pageType: slug })
|
|
97
|
+
|
|
94
98
|
return {
|
|
95
99
|
props: {
|
|
96
100
|
page: await landingPagePromise,
|
|
97
101
|
globalSections: await globalSectionsPromise,
|
|
98
102
|
type: 'page',
|
|
99
103
|
slug,
|
|
104
|
+
serverData,
|
|
100
105
|
},
|
|
101
106
|
}
|
|
102
107
|
}
|
package/src/pages/index.tsx
CHANGED
|
@@ -19,6 +19,8 @@ import GlobalSections, {
|
|
|
19
19
|
GlobalSectionsData,
|
|
20
20
|
getGlobalSectionsData,
|
|
21
21
|
} from 'src/components/cms/GlobalSections'
|
|
22
|
+
import PageProvider from 'src/sdk/overrides/PageProvider'
|
|
23
|
+
import { getDynamicContent } from 'src/utils/dynamicContent'
|
|
22
24
|
import storeConfig from '../../faststore.config'
|
|
23
25
|
|
|
24
26
|
/* A list of components that can be used in the CMS. */
|
|
@@ -35,9 +37,18 @@ const COMPONENTS: Record<string, ComponentType<any>> = {
|
|
|
35
37
|
type Props = {
|
|
36
38
|
page: PageContentType
|
|
37
39
|
globalSections: GlobalSectionsData
|
|
40
|
+
serverData?: unknown
|
|
38
41
|
}
|
|
39
42
|
|
|
40
|
-
function Page({
|
|
43
|
+
function Page({
|
|
44
|
+
page: { sections, settings },
|
|
45
|
+
globalSections,
|
|
46
|
+
serverData,
|
|
47
|
+
}: Props) {
|
|
48
|
+
const context = {
|
|
49
|
+
data: serverData,
|
|
50
|
+
}
|
|
51
|
+
|
|
41
52
|
return (
|
|
42
53
|
<GlobalSections {...globalSections}>
|
|
43
54
|
{/* SEO */}
|
|
@@ -75,7 +86,9 @@ function Page({ page: { sections, settings }, globalSections }: Props) {
|
|
|
75
86
|
If needed, wrap your component in a <Section /> component
|
|
76
87
|
(not the HTML tag) before rendering it here.
|
|
77
88
|
*/}
|
|
78
|
-
<
|
|
89
|
+
<PageProvider context={context}>
|
|
90
|
+
<RenderSections sections={sections} components={COMPONENTS} />
|
|
91
|
+
</PageProvider>
|
|
79
92
|
</GlobalSections>
|
|
80
93
|
)
|
|
81
94
|
}
|
|
@@ -85,6 +98,7 @@ export const getStaticProps: GetStaticProps<
|
|
|
85
98
|
Record<string, string>,
|
|
86
99
|
Locator
|
|
87
100
|
> = async ({ previewData }) => {
|
|
101
|
+
const serverData = await getDynamicContent({ pageType: 'home' })
|
|
88
102
|
const globalSections = await getGlobalSectionsData(previewData)
|
|
89
103
|
|
|
90
104
|
if (storeConfig.cms.data) {
|
|
@@ -99,7 +113,7 @@ export const getStaticProps: GetStaticProps<
|
|
|
99
113
|
})
|
|
100
114
|
|
|
101
115
|
return {
|
|
102
|
-
props: { page: pageData, globalSections },
|
|
116
|
+
props: { page: pageData, globalSections, serverData },
|
|
103
117
|
}
|
|
104
118
|
}
|
|
105
119
|
}
|
|
@@ -110,7 +124,7 @@ export const getStaticProps: GetStaticProps<
|
|
|
110
124
|
})
|
|
111
125
|
|
|
112
126
|
return {
|
|
113
|
-
props: { page, globalSections },
|
|
127
|
+
props: { page, globalSections, serverData },
|
|
114
128
|
}
|
|
115
129
|
}
|
|
116
130
|
|
package/src/sdk/cart/index.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { TypedDocumentString } from '@generated/graphql'
|
|
2
|
-
|
|
3
1
|
export type RequestOptions = Omit<BaseRequestOptions, 'operation' | 'variables'>
|
|
4
|
-
export type Operation =
|
|
2
|
+
export type Operation = {
|
|
3
|
+
__meta__?: Record<string, any>
|
|
4
|
+
}
|
|
5
5
|
|
|
6
6
|
export interface GraphQLResponse<D = any> {
|
|
7
7
|
data: D
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import {
|
|
2
|
+
ClientManyProductsQueryQuery,
|
|
2
3
|
ClientProductGalleryQueryQuery,
|
|
3
4
|
ClientProductQueryQuery,
|
|
4
|
-
ClientManyProductsQueryQuery,
|
|
5
5
|
ServerCollectionPageQueryQuery,
|
|
6
6
|
ServerProductQueryQuery,
|
|
7
7
|
} from '@generated/graphql'
|
|
@@ -28,6 +28,20 @@ export interface SearchPageContext {
|
|
|
28
28
|
}
|
|
29
29
|
}
|
|
30
30
|
|
|
31
|
+
export interface DynamicContent<T> {
|
|
32
|
+
data?: T
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
export interface PageProviderContextValue {
|
|
36
|
+
context?: PageProviderContext
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
type PageProviderContext =
|
|
40
|
+
| PDPContext
|
|
41
|
+
| PLPContext
|
|
42
|
+
| SearchPageContext
|
|
43
|
+
| DynamicContent<unknown>
|
|
44
|
+
|
|
31
45
|
export const isPDP = (x: any): x is PDPContext =>
|
|
32
46
|
x?.data?.product?.sku != undefined && x?.data?.product?.sku != null
|
|
33
47
|
|
|
@@ -41,10 +55,6 @@ export const isSearchPage = (x: any): x is SearchPageContext =>
|
|
|
41
55
|
x?.data?.title != undefined ||
|
|
42
56
|
x?.data?.searchTerm != undefined
|
|
43
57
|
|
|
44
|
-
export interface PageProviderContextValue {
|
|
45
|
-
context?: PDPContext | PLPContext | SearchPageContext
|
|
46
|
-
}
|
|
47
|
-
|
|
48
58
|
const PageContext = createContext<PageProviderContextValue | null>(null)
|
|
49
59
|
|
|
50
60
|
function PageProvider({
|
|
@@ -61,9 +71,7 @@ function PageProvider({
|
|
|
61
71
|
return <PageContext.Provider value={value}>{children}</PageContext.Provider>
|
|
62
72
|
}
|
|
63
73
|
|
|
64
|
-
export function usePage<
|
|
65
|
-
T extends PLPContext | SearchPageContext | PDPContext
|
|
66
|
-
>(): T {
|
|
74
|
+
export function usePage<T extends PageProviderContext>(): T {
|
|
67
75
|
const { context } = useContext(PageContext)
|
|
68
76
|
|
|
69
77
|
if (context == null) {
|
|
@@ -79,4 +87,7 @@ export const usePLP = () => usePage<PLPContext>()
|
|
|
79
87
|
|
|
80
88
|
export const useSearchPage = () => usePage<SearchPageContext>()
|
|
81
89
|
|
|
90
|
+
export const useDynamicContent = <T extends unknown>() =>
|
|
91
|
+
usePage<DynamicContent<T>>()
|
|
92
|
+
|
|
82
93
|
export default PageProvider
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import dynamicContent from 'src/customizations/src/dynamicContent'
|
|
2
|
+
|
|
3
|
+
export async function getDynamicContent({ pageType }: { pageType: string }) {
|
|
4
|
+
try {
|
|
5
|
+
// Checking if the fetch function corresponding to the type of page exists (home or LP slug)
|
|
6
|
+
const fetchFunction = dynamicContent[pageType]
|
|
7
|
+
|
|
8
|
+
if (!fetchFunction) {
|
|
9
|
+
console.warn(
|
|
10
|
+
`Warning: Dynamic Content not found for the page: ${pageType}. Refer to the Dynamic Content documentation at https://developers.vtex.com/docs/guides/faststore/dynamic-content-overview for mapping the page and the corresponding data-fetching function.`
|
|
11
|
+
)
|
|
12
|
+
return null
|
|
13
|
+
}
|
|
14
|
+
// Calling the fetch function corresponding to the page
|
|
15
|
+
const { data, errors = [] } = await fetchFunction()
|
|
16
|
+
|
|
17
|
+
if (errors.length > 0) {
|
|
18
|
+
console.error(...errors)
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
return data
|
|
22
|
+
} catch (error) {
|
|
23
|
+
console.error('Error while fetching Dynamic Content:', error)
|
|
24
|
+
console.warn(
|
|
25
|
+
`Refer to the Dynamic Content documentation at https://developers.vtex.com/docs/guides/faststore/dynamic-content-overview for mapping the page and the corresponding data-fetching function.`
|
|
26
|
+
)
|
|
27
|
+
return null
|
|
28
|
+
}
|
|
29
|
+
}
|
package/tsconfig.json
CHANGED
|
@@ -13,6 +13,7 @@
|
|
|
13
13
|
"allowJs": true,
|
|
14
14
|
"paths": {
|
|
15
15
|
"src/*": ["src/*"],
|
|
16
|
+
"app/*": ["app/*"],
|
|
16
17
|
"@generated/*": ["@generated/*"],
|
|
17
18
|
"@faststore/core": ["index.ts"],
|
|
18
19
|
"@faststore/core/api": ["api/index.ts"],
|
|
@@ -25,8 +26,22 @@
|
|
|
25
26
|
"target": "es5",
|
|
26
27
|
"lib": ["dom", "dom.iterable", "esnext"],
|
|
27
28
|
"skipLibCheck": true,
|
|
28
|
-
"esModuleInterop": true
|
|
29
|
+
"esModuleInterop": true,
|
|
30
|
+
"plugins": [
|
|
31
|
+
{
|
|
32
|
+
"name": "next"
|
|
33
|
+
}
|
|
34
|
+
],
|
|
35
|
+
"strictNullChecks": false
|
|
29
36
|
},
|
|
30
|
-
"include": [
|
|
37
|
+
"include": [
|
|
38
|
+
"*.d.ts",
|
|
39
|
+
"src/**/*.ts",
|
|
40
|
+
"src/**/*.tsx",
|
|
41
|
+
"@generated/**/*.ts",
|
|
42
|
+
"app/**/*.ts",
|
|
43
|
+
"app/**/*.tsx",
|
|
44
|
+
".next/types/**/*.ts"
|
|
45
|
+
],
|
|
31
46
|
"exclude": ["node_modules", "public"]
|
|
32
47
|
}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
exports.id=119,exports.ids=[119],exports.modules={3405:(e,t,r)=>{"use strict";r.d(t,{V:()=>g});var n=r(7296),o=r(8918),i=r(4329),c=r(9089),a=r(4809),s=r.n(a),l=r(6689),d=r.n(l);let u=(0,l.createContext)(void 0),f=(0,l.forwardRef)(function({children:e,testId:t="fs-hero",variant:r="primary",colorVariant:n="main",...o},i){return d().createElement(u.Provider,{value:{variant:r,colorVariant:n}},d().createElement("article",{ref:i,"data-fs-hero":!0,"data-fs-hero-variant":r,"data-fs-hero-color-variant":n,"data-testid":t,...o},e))}),p=(0,l.forwardRef)(function({children:e,testId:t="fs-hero-image",...r},n){return d().createElement("div",{ref:n,"data-fs-hero-image":!0,"data-testid":t,...r},e)});var b=r(3922),O=r(2614);let j=(0,l.forwardRef)(function({icon:e,link:t,title:r,linkText:n,linkTargetBlank:o,subtitle:i,children:c,testId:a="fs-hero-heading",...s},f){let{variant:p,colorVariant:j}=function(){let e=(0,l.useContext)(u);if(void 0===e)throw Error("Do not use Hero components outside the Hero context.");return e}();return d().createElement("header",{ref:f,"data-fs-hero-heading":!0,"data-testid":a,...s},d().createElement("div",{"data-fs-hero-wrapper":!0,"data-fs-content":"hero"},d().createElement("div",{"data-fs-hero-info":!0},d().createElement("h1",{"data-fs-hero-title":!0},r),d().createElement("p",{"data-fs-hero-subtitle":!0},i),!!t&&d().createElement(b.Z,{href:t,inverse:"main"===j,icon:d().createElement(O.Z,{name:"ArrowRight"}),iconPosition:"right",target:o?"_blank":void 0},n)),!!e&&"secondary"===p&&d().createElement("span",{"data-fs-hero-icon":!0},e)))});var h=r(997);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){var n;n=r[t],t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):ownKeys(Object(r)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))})}return e}let y=(0,n.B)("Hero",({link:e,title:t,subtitle:r,image:n,variant:a,colorVariant:l,icon:d})=>{let{Hero:u,HeroImage:f,HeroHeader:p}=(0,i.r3)();return h.jsx(c.Z,{className:`${s().section} section-hero`,children:(0,h.jsxs)(u.Component,_objectSpread(_objectSpread({},u.props),{},{variant:a??u.props.variant??"primary",colorVariant:l??u.props.colorVariant??"main",children:[h.jsx(f.Component,_objectSpread(_objectSpread({},f.props),{},{children:h.jsx(o.Z,{loading:"eager",src:n.src,alt:n.alt,width:360,height:240,sizes:"(max-width: 360px) 50vw, (max-width: 768px) 90vw, 50vw"})})),h.jsx(p.Component,_objectSpread({title:t,subtitle:r,link:e?.url,linkText:e?.text,linkTargetBlank:e?.linkTargetBlank,icon:d},p.props))]}))})},{Hero:f,HeroImage:p,HeroHeader:j});function OverriddenDefaultHero_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 OverriddenDefaultHero_objectSpread(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?OverriddenDefaultHero_ownKeys(Object(r),!0).forEach(function(t){var n;n=r[t],t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):OverriddenDefaultHero_ownKeys(Object(r)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))})}return e}let g=(0,n.v)(OverriddenDefaultHero_objectSpread(OverriddenDefaultHero_objectSpread({},{section:"Hero"}),{},{Section:y}))},7242:(e,t,r)=>{"use strict";r.d(t,{Z:()=>__WEBPACK_DEFAULT_EXPORT__});var n=r(7332),o=r(9089),i=r(4890),c=r.n(i),a=r(997);let __WEBPACK_DEFAULT_EXPORT__=function({incentives:e}){return a.jsx(o.Z,{className:`${c().section} section-incentives layout__section`,children:a.jsx(n.Z,{incentives:e,colored:!0})})}},9158:(e,t,r)=>{"use strict";r.d(t,{B:()=>c});var n=r(6737),o=r(6068),i=r(8314);let c={ProductShelf:n.Z,__experimentalCarousel:i.Z,__experimentalProductCard:o.Z}},1087:(e,t,r)=>{"use strict";r.a(e,async(e,n)=>{try{r.d(t,{T:()=>s});var o=r(5783),i=r(7296),c=r(1017),a=e([c]);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){var n;n=r[t],t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):ownKeys(Object(r)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))})}return e}c=(a.then?(await a)():a)[0];let s=(0,i.v)(_objectSpread(_objectSpread({},o.K),{},{Section:c.Z}));n()}catch(e){n(e)}})},1017:(e,t,r)=>{"use strict";r.a(e,async(e,n)=>{try{r.d(t,{Z:()=>b});var o=r(9785),i=r(9089),c=r(6369),a=r(1958),s=r.n(a),l=r(9158),d=r(7296),u=r(997),f=e([c]);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}c=(f.then?(await f)():f)[0];let p=(0,d.B)("ProductShelf",function(e){let t=Object.assign({},e),{ref:r,inView:n}=(0,o.useInView)();return u.jsx(i.Z,{className:`${s().section} section-product-shelf layout__section`,ref:r,children:u.jsx(c.Z,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){var n;n=r[t],t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):ownKeys(Object(r)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))})}return e}({inView:n},t))})},l.B),b=p;n()}catch(e){n(e)}})},6598:(e,t,r)=>{"use strict";r.a(e,async(e,n)=>{try{r.d(t,{Z:()=>__WEBPACK_DEFAULT_EXPORT__});var o=r(6689),i=r(9785),c=r(6068),a=r(3647),s=r(6520),l=r(7901),d=r(6414),u=r(173),f=r(9089),p=r(1301),b=r.n(p),O=r(997),j=e([u]);u=(j.then?(await j)():j)[0];let h=["title"],getRatio=(e,t)=>3===e&&0===t||2===e&&(0===t||1===t)?5/3:3/4,getSizes=(e,t)=>3===e&&0===t||2===e&&(0===t||1===t)?{width:594,height:364}:{width:284,height:364},__WEBPACK_DEFAULT_EXPORT__=e=>{let{title:t}=e,r=function(e,t){if(null==e)return{};var r,n,o=function(e,t){if(null==e)return{};var r,n,o={},i=Object.keys(e);for(n=0;n<i.length;n++)r=i[n],t.indexOf(r)>=0||(o[r]=e[r]);return o}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(n=0;n<i.length;n++)r=i[n],!(t.indexOf(r)>=0)&&Object.prototype.propertyIsEnumerable.call(e,r)&&(o[r]=e[r])}return o}(e,h),n=(0,o.useRef)(!1),{ref:p,inView:j}=(0,i.useInView)(),y=(0,u.k)(r),g=y?.search?.products,v=g?.edges??[],{sendViewItemListEvent:w}=(0,d.m)({products:v,title:t,page:0,pageSize:0});return((0,o.useEffect)(()=>{j&&!n.current&&v.length&&(w(),n.current=!0)},[j,v.length,w]),g?.edges.length===0)?null:(0,O.jsxs)(f.Z,{className:`${b().section} section-product-tiles layout__section`,ref:p,children:[O.jsx("h2",{className:"text__title-section layout__content",children:t}),O.jsx(a.Z,{loading:!g,children:O.jsx(s.Z,{children:v.map((e,t)=>O.jsx(l.Z,{children:O.jsx(c.Z,{"data-testid":"tile-card",product:e.node,index:t+1,variant:"wide",aspectRatio:getRatio(v.length,t),imgProps:getSizes(v.length,t)})},e.node.id))})})]})};n()}catch(e){n(e)}})},3647:(e,t,r)=>{"use strict";r.d(t,{Z:()=>ProductTilesSkeleton_ProductTilesSkeleton});var n=r(6520),o=r(7901),i=r(792),c=r(997);let ProductTileSkeleton_ProductTileSkeleton=function({index:e,aspectRatio:t=1}){return(0,c.jsxs)("div",{"data-fs-product-tile-skeleton":!0,"data-fs-product-tile-skeleton-index":e,children:[c.jsx("div",{"data-fs-product-tile-skeleton-image":!0,"data-fs-product-tile-skeleton-index":e,style:{"--fs-product-tile-skeleton-image-aspect-ratio":t},children:c.jsx(i.Z,{size:{width:"auto",height:"100%"},loading:!0})}),(0,c.jsxs)("div",{"data-fs-product-tile-skeleton-content":!0,"data-fs-product-tile-skeleton-index":e,children:[(0,c.jsxs)("div",{"data-fs-product-tile-skeleton-heading":!0,children:[c.jsx("div",{"data-fs-product-tile-skeleton-text":!0,"data-fs-product-tile-skeleton-index":e,children:c.jsx(i.Z,{size:{width:"70%",height:"1.5rem"}})}),c.jsx("div",{"data-fs-product-tile-skeleton-price":!0,children:c.jsx(i.Z,{size:{width:"60%",height:"1.5rem"}})})]}),c.jsx("div",{"data-fs-product-tile-skeleton-badge":!0,"data-fs-product-tile-skeleton-index":e,children:c.jsx(i.Z,{size:{width:"6rem",height:"2rem"},border:"pill"})})]})]})},getRatio=(e,t)=>3===e&&0===t||2===e&&(0===t||1===t)?5/3:3/4,ProductTilesSkeleton_ProductTilesSkeleton=function({children:e,loading:t=!0}){return t?c.jsx(n.Z,{children:Array.from({length:3},(e,t)=>c.jsx(o.Z,{children:c.jsx(ProductTileSkeleton_ProductTileSkeleton,{index:t+1,aspectRatio:getRatio(3,t)})},String(t)))}):c.jsx(c.Fragment,{children:e})}},6520:(e,t,r)=>{"use strict";r.d(t,{Z:()=>ui_Tiles_Tiles});var n=r(6689),o=r.n(n);let i=(0,n.forwardRef)(function({testId:e="store-tiles",children:t,...r},i){let c=n.Children.count(t);return o().createElement("ul",{ref:i,role:"list","data-fs-tiles":!0,"data-fs-tiles-variant":3===c?"expanded-first":2===c?"expanded-first-two":"","data-fs-content":"tiles","data-testid":e,...r},t)});var c=r(997);let a=["children"];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){var n;n=r[t],t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):ownKeys(Object(r)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))})}return e}let ui_Tiles_Tiles=e=>{let{children:t}=e,r=function(e,t){if(null==e)return{};var r,n,o=function(e,t){if(null==e)return{};var r,n,o={},i=Object.keys(e);for(n=0;n<i.length;n++)r=i[n],t.indexOf(r)>=0||(o[r]=e[r]);return o}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(n=0;n<i.length;n++)r=i[n],!(t.indexOf(r)>=0)&&Object.prototype.propertyIsEnumerable.call(e,r)&&(o[r]=e[r])}return o}(e,a);return c.jsx(i,_objectSpread(_objectSpread({},r),{},{children:t}))}},5783:(e,t,r)=>{"use strict";r.d(t,{K:()=>n});let n={section:"ProductShelf"}},4809:e=>{e.exports={section:"section_section__Pdf2v"}},4890:e=>{e.exports={section:"section_section__jnQ3q"}},1301:e=>{e.exports={section:"section_section__Wwc_y",loading:"section_loading__7M1Dl"}},7901:(e,t,r)=>{"use strict";r.d(t,{Z:()=>c});var n=r(6689),o=r.n(n);let i=(0,n.forwardRef)(function({testId:e="store-tile",children:t,...r},n){return o().createElement("li",{ref:n,role:"listitem","data-fs-tile":!0,"data-testid":e,...r},t)}),c=i}};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
exports.id=12,exports.ids=[12],exports.modules={7187:(e,t)=>{"use strict";function isInAmpMode(e){let{ampFirst:t=!1,hybrid:n=!1,hasQuery:r=!1}=void 0===e?{}:e;return t||n&&r}Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"isInAmpMode",{enumerable:!0,get:function(){return isInAmpMode}})},2268:(e,t,n)=>{"use strict";function ownKeys(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,r)}return n}Object.defineProperty(t,"__esModule",{value:!0}),function(e,t){for(var n in t)Object.defineProperty(e,n,{enumerable:!0,get:t[n]})}(t,{defaultHead:function(){return defaultHead},default:function(){return _default}});let r=n(7083),o=n(5570),u=o._(n(6689)),a=r._(n(8959)),i=n(8039),l=n(1988),c=n(7187);function defaultHead(e){void 0===e&&(e=!1);let t=[u.default.createElement("meta",{charSet:"utf-8"})];return e||t.push(u.default.createElement("meta",{name:"viewport",content:"width=device-width"})),t}function onlyReactElement(e,t){return"string"==typeof t||"number"==typeof t?e:t.type===u.default.Fragment?e.concat(u.default.Children.toArray(t.props.children).reduce((e,t)=>"string"==typeof t||"number"==typeof t?e:e.concat(t),[])):e.concat(t)}n(9067);let d=["name","httpEquiv","charSet","itemProp"];function reduceComponents(e,t){let{inAmpMode:n}=t;return e.reduce(onlyReactElement,[]).reverse().concat(defaultHead(n).reverse()).filter(function(){let e=new Set,t=new Set,n=new Set,r={};return o=>{let u=!0,a=!1;if(o.key&&"number"!=typeof o.key&&o.key.indexOf("$")>0){a=!0;let t=o.key.slice(o.key.indexOf("$")+1);e.has(t)?u=!1:e.add(t)}switch(o.type){case"title":case"base":t.has(o.type)?u=!1:t.add(o.type);break;case"meta":for(let e=0,t=d.length;e<t;e++){let t=d[e];if(o.props.hasOwnProperty(t)){if("charSet"===t)n.has(t)?u=!1:n.add(t);else{let e=o.props[t],n=r[t]||new Set;("name"!==t||!a)&&n.has(e)?u=!1:(n.add(e),r[t]=n)}}}}return u}}()).reverse().map((e,t)=>{let r=e.key||t;if(!n&&"link"===e.type&&e.props.href&&["https://fonts.googleapis.com/css","https://use.typekit.net/"].some(t=>e.props.href.startsWith(t))){let t=function(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?ownKeys(Object(n),!0).forEach(function(t){var r;r=n[t],t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):ownKeys(Object(n)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))})}return e}({},e.props||{});return t["data-href"]=t.href,t.href=void 0,t["data-optimized-fonts"]=!0,u.default.cloneElement(e,t)}return u.default.cloneElement(e,{key:r})})}let _default=function(e){let{children:t}=e,n=(0,u.useContext)(i.AmpStateContext),r=(0,u.useContext)(l.HeadManagerContext);return u.default.createElement(a.default,{reduceComponentsToState:reduceComponents,headManager:r,inAmpMode:(0,c.isInAmpMode)(n)},t)};("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},8959:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"default",{enumerable:!0,get:function(){return SideEffect}});let r=n(6689),useClientOnlyLayoutEffect=()=>{},useClientOnlyEffect=()=>{};function SideEffect(e){var t;let{headManager:n,reduceComponentsToState:o}=e;function emitChange(){if(n&&n.mountedInstances){let t=r.Children.toArray(Array.from(n.mountedInstances).filter(Boolean));n.updateHead(o(t,e))}}return null==n||null==(t=n.mountedInstances)||t.add(e.children),emitChange(),useClientOnlyLayoutEffect(()=>{var t;return null==n||null==(t=n.mountedInstances)||t.add(e.children),()=>{var t;null==n||null==(t=n.mountedInstances)||t.delete(e.children)}}),useClientOnlyLayoutEffect(()=>(n&&(n._pendingUpdate=emitChange),()=>{n&&(n._pendingUpdate=emitChange)})),useClientOnlyEffect(()=>(n&&n._pendingUpdate&&(n._pendingUpdate(),n._pendingUpdate=null),()=>{n&&n._pendingUpdate&&(n._pendingUpdate(),n._pendingUpdate=null)})),null}},9067:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"warnOnce",{enumerable:!0,get:function(){return warnOnce}});let warnOnce=e=>{}},1323:(e,t)=>{"use strict";Object.defineProperty(t,"l",{enumerable:!0,get:function(){return function hoist(e,t){return t in e?e[t]:"then"in e&&"function"==typeof e.then?e.then(e=>hoist(e,t)):"function"==typeof e&&"default"===t?e:void 0}}})},5244:(e,t)=>{"use strict";var n;Object.defineProperty(t,"x",{enumerable:!0,get:function(){return n}}),function(e){e.PAGES="PAGES",e.PAGES_API="PAGES_API",e.APP_PAGE="APP_PAGE",e.APP_ROUTE="APP_ROUTE"}(n||(n={}))},8039:(e,t,n)=>{"use strict";e.exports=n(7093).vendored.contexts.AmpContext},1988:(e,t,n)=>{"use strict";e.exports=n(7093).vendored.contexts.HeadManagerContext},5570:(e,t)=>{"use strict";function _getRequireWildcardCache(e){if("function"!=typeof WeakMap)return null;var t=new WeakMap,n=new WeakMap;return(_getRequireWildcardCache=function(e){return e?n:t})(e)}t._=t._interop_require_wildcard=function(e,t){if(!t&&e&&e.__esModule)return e;if(null===e||"object"!=typeof e&&"function"!=typeof e)return{default:e};var n=_getRequireWildcardCache(t);if(n&&n.has(e))return n.get(e);var r={},o=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var u in e)if("default"!==u&&Object.prototype.hasOwnProperty.call(e,u)){var a=o?Object.getOwnPropertyDescriptor(e,u):null;a&&(a.get||a.set)?Object.defineProperty(r,u,a):r[u]=e[u]}return r.default=e,n&&n.set(e,r),r}}};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
exports.id=187,exports.ids=[187],exports.modules={6652:(e,t,r)=>{"use strict";r.d(t,{Z:()=>__WEBPACK_DEFAULT_EXPORT__,l:()=>useUI});var o=r(6689),a=r.n(o);let reducer=(e,t)=>{let{type:r}=t;switch(r){case"open":{let{payload:r}=t;return document.body.classList.add("no-scroll"),{...e,[r]:!0}}case"close":{let{payload:r}=t;return document.body.classList.remove("no-scroll"),{...e,[r]:!1}}case"pushToast":{let r=e.toasts.some(e=>e.message===t.payload.message&&e.status===t.payload.status);if(r)return e;return{...e,toasts:[...e.toasts,t.payload]}}case"popToast":return{...e,toasts:e.toasts.slice(1)};default:throw Error(`Action ${r} not implemented`)}},initializer=()=>({cart:!1,modal:!1,navbar:!1,filter:!1,toasts:[]}),n=(0,o.createContext)(void 0);function useUI(){let e=(0,o.useContext)(n);if(void 0===e)throw Error("Missing UI context on React tree");return e}let __WEBPACK_DEFAULT_EXPORT__=function({children:e}){let[t,r]=(0,o.useReducer)(reducer,void 0,initializer),s=(0,o.useMemo)(()=>({openFilter:()=>r({type:"open",payload:"filter"}),closeFilter:()=>r({type:"close",payload:"filter"}),openNavbar:()=>r({type:"open",payload:"navbar"}),closeNavbar:()=>r({type:"close",payload:"navbar"}),openCart:()=>r({type:"open",payload:"cart"}),closeCart:()=>r({type:"close",payload:"cart"}),openModal:()=>r({type:"open",payload:"modal"}),closeModal:()=>r({type:"close",payload:"modal"}),pushToast:e=>r({type:"pushToast",payload:e}),popToast:()=>r({type:"popToast"})}),[]),l=(0,o.useMemo)(()=>({...t,...s}),[s,t]);return a().createElement(n.Provider,{value:l},e)}},8187:(e,t,r)=>{"use strict";r.r(t),r.d(t,{default:()=>_app}),r(6968),r(1071);var o=r(8890),a=r.n(o),n=r(6652),s=r(997);let src_Layout=function({children:e}){return s.jsx(s.Fragment,{children:e})};var l=r(6689),c=r(4950);let useAnalyticsEvent=e=>{let t=(0,l.useCallback)(t=>{try{if(t.data.name!==c.vi)return;e((0,c.Wg)(t.data))}catch(e){console.error("Something went wrong while running Analytics handler")}},[e]);(0,l.useEffect)(()=>(window.addEventListener("message",t),()=>window.removeEventListener("message",t)),[t])};var i=r(7997),p=r.n(i);let analytics=()=>(useAnalyticsEvent(e=>{window.dataLayer.push({ecommerce:null}),window.dataLayer.push({event:e.name,ecommerce:e.params}),r(3982)(`./${p().platform}`).then(({default:t})=>{t(e)})}),null),getReloads=()=>Number(window.sessionStorage.getItem("store:reloads")??"0"),setReloads=e=>window.sessionStorage.setItem("store:reloads",`${e}`),canRecover=()=>2>getReloads(),isFrameworkLevelError=e=>e?.name==="ChunkLoadError";let ErrorBoundary=class ErrorBoundary extends l.Component{constructor(...e){super(...e),function(e,t,r){t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r}(this,"state",{hasError:!1,error:null})}static getDerivedStateFromError(e){return{hasError:!0,error:e}}componentDidCatch(e,t){if(console.error(`React Error: ${e.message} ${t.componentStack}`),window.location.pathname.startsWith("/404")||window.location.pathname.startsWith("/500"))return;let r=encodeURIComponent(window.location.pathname),o=e?.extensions?.exception?.status===404;isFrameworkLevelError(e)&&canRecover()?(setReloads(getReloads()+1),window.location.reload()):o?window.location.href=`/404?from=${r}`:window.location.href=`/500?from=${r}&errorId=unknown`}render(){return this.state.hasError?null:this.props.children}};var d=r(6641);function ownKeys(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);t&&(o=o.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),r.push.apply(r,o)}return r}let _app=function({Component:e,pageProps:t}){return(0,s.jsxs)(ErrorBoundary,{children:[s.jsx(a(),{color:"var(--fs-color-primary-bkg);",showOnShallow:!1,options:{showSpinner:!1}}),s.jsx(d.DefaultSeo,{norobots:p().experimental.noRobots}),s.jsx(analytics,{}),s.jsx(n.Z,{children:s.jsx(src_Layout,{children:s.jsx(e,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){var o;o=r[t],t in e?Object.defineProperty(e,t,{value:o,enumerable:!0,configurable:!0,writable:!0}):e[t]=o}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):ownKeys(Object(r)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))})}return e}({},t))})})]})}},1071:()=>{},6968:()=>{},3982:(e,t,r)=>{var o={"./vtex":[3202,202],"./vtex/":[3202,202],"./vtex/index":[3202,202],"./vtex/index.ts":[3202,202],"./vtex/search":[5484,484],"./vtex/search.ts":[5484,484]};function webpackAsyncContext(e){if(!r.o(o,e))return Promise.resolve().then(()=>{var t=Error("Cannot find module '"+e+"'");throw t.code="MODULE_NOT_FOUND",t});var t=o[e],a=t[0];return r.e(t[1]).then(()=>r(a))}webpackAsyncContext.keys=()=>Object.keys(o),webpackAsyncContext.id=3982,e.exports=webpackAsyncContext},4950:(e,t,r)=>{"use strict";r.d(t,{Wg:()=>unwrap,re:()=>wrap,vi:()=>a});let o="store:",a="AnalyticsEvent",wrap=e=>({name:a,params:{...e,name:`${o}${e.name}`}}),unwrap=e=>({...e.params,name:e.params.name.slice(o.length,e.params.name.length)})}};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
"use strict";exports.id=202,exports.ids=[202,484],exports.modules={3202:(e,t,r)=>{r.r(t),r.d(t,{default:()=>sendEvent});var o=r(5484);function sendEvent(e){window?.sendrc?.(e.name,e.params),(0,o.default)(e)}},5484:(e,t,r)=>{r.r(t),r.d(t,{default:()=>search});var o=r(7997),n=r.n(o);function getCookie(e){let t=decodeURIComponent(document.cookie),r=t.split(";");for(let t of r){let[r,o]=t.trim().split("=");if(r===e)return o}}function ownKeys(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);t&&(o=o.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),r.push.apply(r,o)}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){var o;o=r[t],t in e?Object.defineProperty(e,t,{value:o,enumerable:!0,configurable:!0,writable:!0}):e[t]=o}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):ownKeys(Object(r)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))})}return e}let randomUUID=()=>"function"==typeof crypto.randomUUID?crypto.randomUUID():(1e6*Math.random()).toFixed(0),createCookie=(e,t)=>{let r=`.${new URL(n().storeUrl).hostname}`;return()=>{let o=void 0===getCookie(e);if(o){let o=randomUUID();return document.cookie=`${e}=${o}; max-age=${t}; domain=${r}; path=/;`,o}return getCookie(e)}},s={anonymous:createCookie("vtex-faststore-anonymous",31536e3),session:createCookie("vtex-faststore-session",1800)},sendEvent=e=>fetch(`https://sp.vtex.com/event-api/v1/${n().api.storeId}/event`,{method:"POST",body:JSON.stringify(_objectSpread(_objectSpread({},e),{},{userAgent:navigator.userAgent,anonymous:s.anonymous(),session:s.session()})),headers:{"content-type":"application/json"}}),isFullTextSearch=e=>"string"==typeof e.searchParams.get("q")&&/^\/s(\/)?$/g.test(e.pathname);setInterval(()=>sendEvent({type:"session.ping"}),6e4);let search=e=>{switch(e.name){case"search_select_item":{let t=new URL(e.params.url);if(!isFullTextSearch(t))return;for(let r of e.params.items??[]){let e=r.item_id??r.item_variant,o=r.index;e&&o&&sendEvent({type:"search.click",productId:e,position:o,url:t.href,text:t.searchParams.get("q")??"<empty>"})}break}case"intelligent_search_query":sendEvent({type:"search.query",url:e.params.url,text:e.params.term,misspelled:e.params.isTermMisspelled,match:e.params.totalCount,operator:e.params.logicalOperator,locale:e.params.locale})}}}};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
exports.id=24,exports.ids=[24],exports.modules={6133:(e,t,r)=>{"use strict";r.d(t,{Z:()=>__WEBPACK_DEFAULT_EXPORT__});var a=r(6689),n=r.n(a);let __WEBPACK_DEFAULT_EXPORT__=function({testId:e="fs-empty-state",title:t,titleIcon:r,variant:a="default",bkgColor:l="default",children:o,...s}){return n().createElement("section",{"data-fs-empty-state":!0,"data-fs-empty-state-variant":a,"data-fs-empty-state-bkg-color":l,"data-fs-content":"empty-state","data-testid":e,...s},t&&n().createElement("header",{"data-fs-empty-state-title":!0},r&&n().createElement(n().Fragment,null,r),n().createElement("p",null,t)),o)}},5699:(e,t,r)=>{"use strict";r.d(t,{Z:()=>__WEBPACK_DEFAULT_EXPORT__});var a=r(6689),n=r.n(a),l=r(1516);let __WEBPACK_DEFAULT_EXPORT__=function({testId:e,title:t,indicesExpanded:r,onAccordionChange:a,children:o}){return n().createElement("div",{"data-fs-filter":!0,"data-testid":e},n().createElement("h2",{"data-fs-filter-title":!0},t),n().createElement(l.Z,{indices:r,onChange:a,"data-fs-filter-accordion":!0},o))}},2815:(e,t,r)=>{"use strict";r.d(t,{Z:()=>__WEBPACK_DEFAULT_EXPORT__});var a=r(6689),n=r.n(a),l=r(4564);let __WEBPACK_DEFAULT_EXPORT__=function({children:e}){return n().createElement(l.Z,{"data-fs-filter-list":!0},e)}},1305:(e,t,r)=>{"use strict";r.d(t,{Z:()=>Filter_FilterFacetBooleanItem});var a=r(6689),n=r.n(a);let l=(0,a.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),s=r(276);let Filter_FilterFacetBooleanItem=function({testId:e,id:t,selected:r,value:a,quantity:i,facetKey:c,label:u,onFacetChange:d}){return n().createElement("li",{key:t,"data-fs-filter-list-item":!0},n().createElement(l,{id:t,checked:r,onChange:()=>d({key:c,value:a},"BOOLEAN"),"data-fs-filter-list-item-checkbox":!0,"data-testid":`${e}-accordion-panel-checkbox`,"data-value":a,"data-quantity":i}),n().createElement(o.Z,{htmlFor:t,className:"text__title-mini-alt","data-fs-filter-list-item-label":!0},u," ",n().createElement(s.Z,{"data-fs-filter-list-item-badge":!0},i)))}},1355:(e,t,r)=>{"use strict";r.d(t,{Z:()=>Filter_FilterFacetRange});var a=r(6689),n=r.n(a);let percent=(e,t,r)=>Math.round((e-t)/(r-t)*100),l=(0,a.forwardRef)(function({min:e,max:t,absoluteValuesLabel:r,onChange:l,onEnd:o,testId:s="fs-slider",getAriaValueText:i,step:c,minValueLabelComponent:u,maxValueLabelComponent:d,...p},f){let b=(0,a.useMemo)(()=>(t.absolute-e.absolute)/100,[t.absolute,e.absolute]),[m,y]=(0,a.useState)(()=>percent(e.selected,e.absolute,t.absolute)),[h,g]=(0,a.useState)(()=>percent(t.selected,e.absolute,t.absolute)),[j,O]=(0,a.useState)(()=>Math.floor(e.absolute+m*b)),[_,v]=(0,a.useState)(()=>Math.round(e.absolute+h*b));return(0,a.useImperativeHandle)(f,()=>({setSliderValues:r=>{let a=Math.min(Number(r.min),_);if(O(a),y(percent(a,e.absolute,t.absolute)),r.max>t.absolute){v(t.absolute),g(percent(t.absolute,e.absolute,t.absolute));return}let n=Math.max(Number(r.max),j);v(n),g(percent(n,e.absolute,t.absolute))}})),n().createElement("div",{"data-fs-slider":!0,"data-testid":s,...p},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:`${h-m}%`}}),n().createElement("input",{type:"range",min:Math.floor(e.absolute),max:Math.round(t.absolute),value:j,step:c,onMouseUp:()=>o?.({min:j,max:_}),onTouchEnd:()=>o?.({min:j,max:_}),onChange:r=>{let a=Math.min(Number(r.target.value),_);O(a),y(percent(a,e.absolute,t.absolute)),l?.({min:a,max:_})},"data-fs-slider-thumb":"left","aria-valuemin":e.absolute,"aria-valuemax":t.absolute,"aria-valuenow":j,"aria-label":String(j),"aria-labelledby":i?.(j,"min")}),u&&n().createElement("span",{"data-fs-slider-value-label":"min",style:{left:`calc(${j/t.absolute*100}% + (${8-.2*(j/t.absolute*100)}px))`}},u(j)),n().createElement("input",{type:"range",min:Math.floor(e.absolute),max:Math.round(t.absolute),value:_,step:c,onMouseUp:()=>o?.({min:j,max:_}),onTouchEnd:()=>o?.({min:j,max:_}),onChange:r=>{let a=Math.max(Number(r.target.value),j);v(a),g(percent(a,e.absolute,t.absolute)),l?.({min:j,max:a})},"data-fs-slider-thumb":"right","aria-valuemin":e.absolute,"aria-valuemax":t.absolute,"aria-valuenow":_,"aria-label":String(_),"aria-labelledby":i?.(_,"max")}),d&&n().createElement("span",{"data-fs-slider-value-label":"max",style:{left:`calc(${_/t.absolute*100}% + (${8-.2*(_/t.absolute*100)}px))`}},d(_))))});var o=r(9767),s=r(3779);let i=(0,a.forwardRef)(function({formatter:e,max:t,min:r,step:i=1,onChange:c,onEnd:u,testId:d="fs-price-range",variant:p,"aria-label":f,...b},m){let y=(0,a.useRef)();(0,a.useImperativeHandle)(m,()=>({setPriceRangeValues:e=>{c?.(e),y.current?.setSliderValues(e)}}));let h=(0,a.useRef)(null),g=(0,a.useRef)(null),[j,O]=(0,a.useState)(),[_,v]=(0,a.useState)(),[P,w]=(0,a.useState)({min:Math.floor(r.selected),max:Math.round(t.selected)});return n().createElement("div",{"data-fs-price-range":!0,"data-testid":d,...b},n().createElement(l,{ref:y,min:r,max:t,step:i,onEnd:e=>{u?.(e),O(void 0),v(void 0),w({min:e.min,max:e.max}),h.current?.value&&(h.current.value=String(e.min)),g.current?.value&&(g.current.value=String(e.max))},"aria-label":f,onChange:e=>c?.(e),absoluteValuesLabel:{min:n().createElement(o.Z,{value:Math.floor(r.absolute),variant:p,formatter:e}),max:n().createElement(o.Z,{value:Math.round(t.absolute),variant:p,formatter:e})},minValueLabelComponent:t=>n().createElement(o.Z,{value:t,variant:p,formatter:e}),maxValueLabelComponent:t=>n().createElement(o.Z,{value:t,variant:p,formatter:e})}),n().createElement("div",{"data-fs-price-range-inputs":!0},n().createElement(s.Z,{id:"price-range-min",step:i,label:"Min",type:"number",inputMode:"numeric",error:j,inputRef:h,min:Math.floor(r.absolute),max:P.max,value:P.min,onChange:e=>{var t;return t=e.target.value,void(O(void 0),Number(t)<Math.floor(r.absolute)||(Number(t)>Math.floor(P.max)&&O("Min price can't be greater than max"),w({...P,min:Number(t)}),y.current?.setSliderValues({...P,min:Number(t)})))},onBlur:()=>!j&&u?.(P)}),n().createElement(s.Z,{id:"price-range-max",label:"Max",step:i,type:"number",inputMode:"numeric",error:_,inputRef:g,max:Math.round(t.absolute),min:P.min,value:P.max,onChange:e=>{var r;return r=e.target.value,void(v(void 0),Number(r)>Math.round(t.absolute)||(Number(r)<Math.round(P.min)&&v("Max price can't be smaller than min"),w({...P,max:Number(r)}),y.current?.setSliderValues({...P,max:Number(r)})))},onBlur:()=>!_&&u?.(P)})))}),formatRange=(e,t)=>`${e.toFixed(2)}-to-${t.toFixed(2)}`,Filter_FilterFacetRange=function({min:e,max:t,formatter:r,facetKey:a,onFacetChange:l}){return n().createElement(i,{"data-fs-filter-facet-range":!0,min:e,max:t,formatter:r,step:1,onEnd:e=>l({key:a,value:formatRange(e.min,e.max)},"RANGE")})}},4199:(e,t,r)=>{"use strict";r.d(t,{Z:()=>__WEBPACK_DEFAULT_EXPORT__});var a=r(6689),n=r.n(a),l=r(783),o=r(7734),s=r(7583);let __WEBPACK_DEFAULT_EXPORT__=function({testId:e,label:t,index:r,children:a,type:i}){return n().createElement(l.Z,{key:`${t}-${r}`,prefixId:e,testId:`${e}-accordion`,index:r,"data-type":i,"data-fs-filter-accordion-item":!0},n().createElement(o.Z,{testId:`${e}-accordion-button`},t),n().createElement(s.Z,null,a))}},6522:(e,t,r)=>{"use strict";r.d(t,{Z:()=>Filter_Filter});var a=r(6652),n=r(6689),l=r(4329),o=r(8492),s=r(3221);let i=["value"];function ownKeys(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),r.push.apply(r,a)}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){var a;a=r[t],t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):ownKeys(Object(r)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))})}return e}let reducer=(e,t)=>{let{expanded:r,selected:a}=e,{type:n,payload:l}=t;switch(n){case"toggleExpanded":return r.has(l)?r.delete(l):r.add(l),_objectSpread(_objectSpread({},e),{},{expanded:new Set(r)});case"selectFacets":if(l!==a)return _objectSpread(_objectSpread({},e),{},{selected:l});break;case"toggleFacet":return _objectSpread(_objectSpread({},e),{},{selected:(0,o.wB)(e.selected,l)});case"setFacet":return _objectSpread(_objectSpread({},e),{},{selected:(0,o.uL)(e.selected,l.facet,l.unique)});default:throw Error(`Action ${n} not implemented`)}return e},useFilter=e=>{let{state:{selectedFacets:t}}=(0,s.R)(),{0:{selected:r,expanded:a},1:l}=(0,n.useReducer)(reducer,null,()=>({expanded:new Set([]),selected:t})),o=(0,n.useMemo)(()=>r.reduce((e,t)=>(e.has(t.key)||e.set(t.key,new Map),e.get(t.key)?.set(t.value,t),e),new Map),[r]),c=(0,n.useMemo)(()=>e.map(e=>"StoreFacetBoolean"===e.__typename?_objectSpread(_objectSpread({},e),{},{values:e.values.map(t=>{let{value:r}=t;return _objectSpread(_objectSpread({},function(e,t){if(null==e)return{};var r,a,n=function(e,t){if(null==e)return{};var r,a,n={},l=Object.keys(e);for(a=0;a<l.length;a++)r=l[a],t.indexOf(r)>=0||(n[r]=e[r]);return n}(e,t);if(Object.getOwnPropertySymbols){var l=Object.getOwnPropertySymbols(e);for(a=0;a<l.length;a++)r=l[a],!(t.indexOf(r)>=0)&&Object.prototype.propertyIsEnumerable.call(e,r)&&(n[r]=e[r])}return n}(t,i)),{},{value:r,selected:!!o.get(e.key)?.has(r)})})}):e),[e,o]);return(0,n.useEffect)(()=>{l({type:"selectFacets",payload:t})},[t]),{facets:c,selected:r,expanded:a,dispatch:l}};var c=r(997);function Filter_ownKeys(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),r.push.apply(r,a)}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){var a;a=r[t],t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a}):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}let Filter_Filter=function({facets:e,testId:t="fs-filter",filter:r}){let{__experimentalFilterDesktop:o,__experimentalFilterSlider:s}=(0,l.r3)(),i=useFilter(e),{filter:u}=(0,a.l)();return(0,c.jsxs)(c.Fragment,{children:[c.jsx("div",{className:"hidden-mobile",children:c.jsx(o.Component,Filter_objectSpread(Filter_objectSpread(Filter_objectSpread({},o.props),i),{},{testId:t,title:r?.title}))}),u&&c.jsx(n.Suspense,{fallback:null,children:c.jsx(s.Component,Filter_objectSpread(Filter_objectSpread(Filter_objectSpread({},s.props),i),{},{testId:t,title:r?.title,clearButtonLabel:r?.mobileOnly?.clearButtonLabel,applyButtonLabel:r?.mobileOnly?.applyButtonLabel}))})]})}},1582:(e,t,r)=>{"use strict";r.d(t,{Z:()=>Sort_Sort});var a=r(3221),n=r(6689),l=r.n(n),o=r(1953),s=r(2614);let i=(0,n.forwardRef)(function({options:e,id:t,testId:r="fs-select",...a},n){return l().createElement("div",{"data-fs-select":!0},l().createElement("select",{ref:n,id:t,"data-testid":r,...a},Object.keys(e).map(t=>l().createElement("option",{key:t,value:t},e[t]))),l().createElement(s.Z,{"data-fs-select-icon":!0,name:"CaretDown"}))}),c=(0,n.forwardRef)(function({id:e,label:t,options:r,testId:a="fs-select-field",...n},s){return l().createElement("div",{ref:s,"data-fs-select-field":!0},l().createElement(o.Z,{"data-fs-select-field-label":!0,htmlFor:e},t),l().createElement(i,{id:e,options:r,"data-testid":a,...n}))});var u=r(997);function ownKeys(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),r.push.apply(r,a)}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){var a;a=r[t],t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):ownKeys(Object(r)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))})}return e}let d={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"},p=Object.keys(d),Sort_Sort=function({label:e="Sort by",options:t=d}){let{state:r,setState:n}=(0,a.R)(),l=Object.keys(t).reduce((e,r)=>(e[r]=t[r]??d[r],e),{});return u.jsx(c,{id:"sort-select",className:"sort / text__title-mini-alt",label:e,options:l,onChange:e=>{let t=p[e.target.selectedIndex];n(_objectSpread(_objectSpread({},r),{},{sort:t,page:0}))},value:r.sort,testId:"search-sort"})}},594:(e,t,r)=>{"use strict";r.d(t,{h:()=>O});var a=r(6689),n=r(3339),l=r(2614),o=r(792),s=r(3922),i=r(6068),c=r(3221),u=r(8492),d=r(5699),p=r(4199),f=r(2815),b=r(1305),m=r(1355),y=r(113),h=r(997);function ownKeys(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),r.push.apply(r,a)}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){var a;a=r[t],t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a}):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 g=r(6133);let j=(0,a.lazy)(()=>r.e(624).then(r.bind(r,7624))),O={MobileFilterButton:n.Z,FilterIcon:l.Z,PrevIcon:l.Z,ResultsCountSkeleton:o.Z,SortSkeleton:o.Z,FilterButtonSkeleton:o.Z,LinkButtonPrev:s.Z,LinkButtonNext:s.Z,__experimentalFilterDesktop:function({facets:e,testId:t,dispatch:r,expanded:a,title:n}){let{resetInfiniteScroll:l,state:o,setState:s}=(0,c.R)();return h.jsx(d.Z,{testId:`desktop-${t}`,title:n,indicesExpanded:a,onAccordionChange:e=>r({type:"toggleExpanded",payload:e}),children:e.map((e,r)=>{let{__typename:n,label:i}=e,c=a.has(r);return(0,h.jsxs)(p.Z,{testId:t,index:r,type:n,label:i,children:["StoreFacetBoolean"===n&&c&&h.jsx(f.Z,{children:e.values.map(r=>h.jsx(b.Z,{id:`${t}-${e.label}-${r.label}`,testId:t,onFacetChange:e=>{s(_objectSpread(_objectSpread({},o),{},{selectedFacets:(0,u.wB)(o.selectedFacets,e),page:0})),l(0)},selected:r.selected,value:r.value,quantity:r.quantity,facetKey:e.key,label:r.label},`${t}-${e.label}-${r.label}`))}),"StoreFacetRange"===n&&c&&h.jsx(m.Z,{facetKey:e.key,min:e.min,max:e.max,formatter:"price"===e.key.toLowerCase()?y.P:void 0,onFacetChange:e=>{s(_objectSpread(_objectSpread({},o),{},{selectedFacets:(0,u.uL)(o.selectedFacets,e,!0),page:0})),l(0)}})]},`${t}-${i}-${r}`)})})},__experimentalFilterSlider:j,__experimentalProductCard:i.Z,__experimentalEmptyGallery:function({title:e,firstButton:t,secondButton:r}){return(0,h.jsxs)(g.Z,{variant:"rounded",title:e??"Nothing matches with your search",titleIcon:h.jsx(l.Z,{name:"CircleWavyWarning",width:56,height:56,weight:"thin"}),children:[h.jsx(s.Z,{href:t?.url??"/office",variant:"secondary",icon:h.jsx(l.Z,{name:t?.icon??"CircleWavyWarning",width:18,height:18,weight:"bold"}),iconPosition:"left",children:t?.label??"Browse Offers"}),h.jsx(s.Z,{href:r?.url??"/technology",variant:"secondary",icon:h.jsx(l.Z,{name:r?.icon??"RocketLaunch",width:18,height:18,weight:"bold"}),iconPosition:"left",children:r?.label??"Just Arrived"})]})}}},3853:(e,t,r)=>{"use strict";r.a(e,async(e,a)=>{try{r.d(t,{f:()=>i});var n=r(6592),l=r(7296),o=r(6679),s=e([o]);function ownKeys(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),r.push.apply(r,a)}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){var a;a=r[t],t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):ownKeys(Object(r)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))})}return e}o=(s.then?(await s)():s)[0];let i=(0,l.v)(_objectSpread(_objectSpread({},n.K),{},{Section:o.Z}));a()}catch(e){a(e)}})},6679:(e,t,r)=>{"use strict";r.a(e,async(e,a)=>{try{r.d(t,{Z:()=>g});var n=r(2718),l=r(9959),o=r(9089),s=r(8624),i=r.n(s),c=r(4960),u=r(4329),d=r(7296),p=r(594),f=r(997),b=e([l]);l=(b.then?(await b)():b)[0];let m=["emptyGallery"];function ownKeys(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),r.push.apply(r,a)}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){var a;a=r[t],t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):ownKeys(Object(r)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))})}return e}function ProductGallerySection(e){let{emptyGallery:t}=e,r=function(e,t){if(null==e)return{};var r,a,n=function(e,t){if(null==e)return{};var r,a,n={},l=Object.keys(e);for(a=0;a<l.length;a++)r=l[a],t.indexOf(r)>=0||(n[r]=e[r]);return n}(e,t);if(Object.getOwnPropertySymbols){var l=Object.getOwnPropertySymbols(e);for(a=0;a<l.length;a++)r=l[a],!(t.indexOf(r)>=0)&&Object.prototype.propertyIsEnumerable.call(e,r)&&(n[r]=e[r])}return n}(e,m),{__experimentalEmptyGallery:a}=(0,u.r3)(),n=(0,c.qt)(),[s,d]=(0,c.En)(n)?[n?.data?.title,n?.data?.searchTerm]:(0,c.OJ)(n)?[n?.data?.collection?.seo?.title]:[""],p=n?.data?.search?.products?.pageInfo?.totalCount??0;return n?.data?.search?.products&&0===p?f.jsx(o.Z,{className:`${i().section} section-product-gallery`,children:f.jsx("section",{"data-testid":"product-gallery","data-fs-product-listing":!0,children:f.jsx(a.Component,_objectSpread({},t))})}):f.jsx(o.Z,{className:`${i().section} section-product-gallery layout__section`,children:f.jsx(l.Z,_objectSpread({title:s,searchTerm:d,totalCount:p},r))})}ProductGallerySection.displayName="ProductGallery";let y=(0,n.B)(ProductGallerySection),h=(0,d.B)("ProductGallery",y,p.h),g=h;a()}catch(e){a(e)}})},9491:(e,t,r)=>{"use strict";r.d(t,{Z:()=>__WEBPACK_DEFAULT_EXPORT__});var a=r(792),n=r(997);let __WEBPACK_DEFAULT_EXPORT__=function({children:e,loading:t=!0}){return t?(0,n.jsxs)("div",{"data-fs-filter-skeleton":!0,children:[n.jsx(a.Z,{"data-fs-filter-skeleton-text":!0,size:{width:"100%",height:"1.5rem"}}),(0,n.jsxs)("div",{"data-fs-filter-skeleton-content":!0,children:[n.jsx(a.Z,{"data-fs-filter-skeleton-text":!0,size:{width:"100%",height:"1.5rem"},shimmer:!1}),n.jsx(a.Z,{"data-fs-filter-skeleton-text":!0,size:{width:"100%",height:"1.5rem"},shimmer:!1}),n.jsx(a.Z,{"data-fs-filter-skeleton-text":!0,size:{width:"100%",height:"1.5rem"},shimmer:!1})]})]}):n.jsx(n.Fragment,{children:e})}},4548:(e,t,r)=>{"use strict";r.d(t,{Z:()=>__WEBPACK_DEFAULT_EXPORT__});var a=r(1023),n=r(5476),l=r(997);let __WEBPACK_DEFAULT_EXPORT__=function({children:e,aspectRatio:t,loading:r=!0}){return r?l.jsx("ul",{"data-fs-product-grid":!0,children:Array.from({length:a.g},(e,r)=>l.jsx("li",{children:l.jsx(n.Z,{aspectRatio:t,bordered:!0})},String(r)))}):l.jsx(l.Fragment,{children:e})}},9959:(e,t,r)=>{"use strict";r.a(e,async(e,a)=>{try{r.d(t,{Z:()=>__WEBPACK_DEFAULT_EXPORT__});var n=r(3221),l=r(6641),o=r(6689),s=r(6652),i=r(6522),c=r(1582),u=r(9491),d=r(4548),p=r(7364),f=r(7452),b=r(4960),m=r(3139),y=r(4329),h=r(997),g=e([m]);function ownKeys(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),r.push.apply(r,a)}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){var a;a=r[t],t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):ownKeys(Object(r)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))})}return e}m=(g.then?(await g)():g)[0];let j=(0,o.lazy)(()=>Promise.all([r.e(414),r.e(96)]).then(r.bind(r,8096))),O=h.jsx(d.Z,{loading:!0}),__WEBPACK_DEFAULT_EXPORT__=function({title:e,searchTerm:t,totalCount:r,searchTermLabel:a,totalCountLabel:d,filter:g,previousPageButton:_,loadMorePageButton:v,sortBySelector:P,productCard:w}){let{FilterButtonSkeleton:x,FilterIcon:S,LinkButtonNext:E,LinkButtonPrev:F,MobileFilterButton:k,PrevIcon:C,ResultsCountSkeleton:Z,SortSkeleton:D}=(0,y.r3)(),{openFilter:R}=(0,s.l)(),{pages:K,addNextPage:M,addPrevPage:A,itemsPerPage:B}=(0,n.R)(),T=(0,b.qt)(),N=T?.data,$=(0,p.u)(N)??[],{next:L,prev:I}=(0,f.g)(r);(0,m.Fl)(I?I.cursor:null),(0,m.Fl)(L?L.cursor:null);let U=!!N?.search?.facets,W=!!N?.search?.products;return(0,h.jsxs)("section",{"data-testid":"product-gallery","data-fs-product-listing":!0,children:[t&&h.jsx("header",{"data-fs-product-listing-search-term":!0,"data-fs-content":"product-gallery",children:(0,h.jsxs)("h1",{children:[a," ",h.jsx("span",{children:t})]})}),(0,h.jsxs)("div",{"data-fs-product-listing-content-grid":!0,"data-fs-content":"product-gallery",children:[h.jsx("div",{"data-fs-product-listing-filters":!0,children:h.jsx(u.Z,{loading:!U,children:U&&$?.length>0&&h.jsx(i.Z,{facets:$,filter:g})})}),h.jsx("div",{"data-fs-product-listing-results-count":!0,"data-count":r,children:h.jsx(Z.Component,_objectSpread(_objectSpread({"data-fs-product-listing-results-count-skeleton":!0,size:{width:"100%",height:"1.5rem"}},Z.props),{},{loading:!W,children:(0,h.jsxs)("h2",{"data-testid":"total-product-count",children:[r," ",d]})}))}),(0,h.jsxs)("div",{"data-fs-product-listing-sort":!0,children:[h.jsx(D.Component,_objectSpread(_objectSpread({"data-fs-product-listing-sort-skeleton":!0,size:{width:"auto",height:"1.5rem"}},D.props),{},{loading:!W,children:h.jsx(c.Z,{label:P?.label,options:P?.options})})),h.jsx(x.Component,_objectSpread(_objectSpread({"data-fs-product-listing-filter-button-skeleton":!0,size:{width:"6rem",height:"1.5rem"}},x.props),{},{loading:!U,children:U&&$?.length>0&&h.jsx(k.Component,_objectSpread(_objectSpread({variant:"tertiary","data-testid":"open-filter-button",icon:h.jsx(S.Component,_objectSpread(_objectSpread({width:16,height:16},S.props),{},{name:g?.mobileOnly?.filterButton?.icon?.icon??S.props.name,"aria-label":g?.mobileOnly?.filterButton?.icon?.alt??S.props["aria-label"]})),iconPosition:"left"},k.props),{},{onClick:R,children:g?.mobileOnly?.filterButton?.label}))}))]}),(0,h.jsxs)("div",{"data-fs-product-listing-results":!0,children:[!1!==I&&(0,h.jsxs)("div",{"data-fs-product-listing-pagination":"top",children:[h.jsx(l.NextSeo,{additionalLinkTags:[{rel:"prev",href:I.link}]}),h.jsx(F.Component,_objectSpread(_objectSpread({rel:"prev",variant:"secondary",iconPosition:"left",icon:h.jsx(C.Component,_objectSpread(_objectSpread({width:16,height:16,weight:"bold"},C.props),{},{name:_?.icon?.icon??C.props.name,"aria-label":_?.icon?.alt??_?.label??C.props["aria-label"]}))},F.props),{},{onClick:e=>{e.currentTarget.blur(),e.preventDefault(),A()},href:I.link,children:_?.label}))]}),W?h.jsx(o.Suspense,{fallback:O,children:K.map(t=>h.jsx(j,{page:t,title:e,productCard:w,itemsPerPage:B},`gallery-page-${t}`))}):O,!1!==L&&(0,h.jsxs)("div",{"data-fs-product-listing-pagination":"bottom",children:[h.jsx(l.NextSeo,{additionalLinkTags:[{rel:"next",href:L.link}]}),h.jsx(E.Component,_objectSpread(_objectSpread({testId:"show-more",rel:"next",variant:"secondary"},E.props),{},{onClick:e=>{e.currentTarget.blur(),e.preventDefault(),M()},href:L.link,children:v?.label}))]})]})]})]})};a()}catch(e){a(e)}})},6592:(e,t,r)=>{"use strict";r.d(t,{K:()=>a});let a={section:"ProductGallery"}},6227:(e,t,r)=>{"use strict";r.a(e,async(e,a)=>{try{r.d(t,{p:()=>prefetchQuery});var n=r(5941),l=r(2495),o=r(7553),s=e([n,o]);[n,o]=s.then?(await s)():s;let i=["cache"],prefetchQuery=(e,t,r)=>{let{cache:a}=r,s=function(e,t){if(null==e)return{};var r,a,n=function(e,t){if(null==e)return{};var r,a,n={},l=Object.keys(e);for(a=0;a<l.length;a++)r=l[a],t.indexOf(r)>=0||(n[r]=e[r]);return n}(e,t);if(Object.getOwnPropertySymbols){var l=Object.getOwnPropertySymbols(e);for(a=0;a<l.length;a++)r=l[a],!(t.indexOf(r)>=0)&&Object.prototype.propertyIsEnumerable.call(e,r)&&(n[r]=e[r])}return n}(r,i),c=(0,o.km)(e.__meta__.operationName,t);a.get(c)||(0,n.mutate)(c,(0,l.W)(e,t,s))};a()}catch(e){a(e)}})},7171:(e,t,r)=>{"use strict";r.a(e,async(e,a)=>{try{r.d(t,{Bj:()=>u,Y_:()=>useCreateUseGalleryPage,__:()=>useGalleryPage});var n=r(3523),l=r(3221),o=r(6689),s=r(7553),i=r(5081),c=e([s]);s=(c.then?(await c)():c)[0];let u=(0,o.createContext)(e=>({data:null})),useGalleryPage=e=>{let t=(0,o.useContext)(u);if(!t)throw Error("Missing UseGalleryPageContext on React tree");return t(e)},d=n.gU,getKey=e=>JSON.stringify(e),useCreateUseGalleryPage=()=>{let{0:e,1:t}=(0,o.useState)([]),r=(0,o.useRef)([]),a=(0,o.useRef)([]),n=(0,o.useCallback)(function(e){let{state:{sort:n,term:c,selectedFacets:u},itemsPerPage:p}=(0,l.R)(),f=(0,i.y)({first:p,after:(p*e).toString(),sort:n,term:c??"",selectedFacets:u}),b=a.current[e]===getKey(f),{data:m}=(0,s.aM)(d,f,{fallbackData:null,suspense:!0,doNotRun:b}),y=!b&&null!==m;if(y){a.current[e]=getKey(f);let t=[...r.current];t[e]=m,r.current=t}return(0,o.useEffect)(()=>{y&&t(t=>{let r=[...t];return r[e]=m,r})},[m,e,y]),(0,o.useMemo)(()=>b?{data:r.current[e]}:{data:m},[b,m,e])},[]);return(0,o.useMemo)(()=>({pages:e,useGalleryPage:n}),[e,n])};a()}catch(e){a(e)}})},7921:(e,t,r)=>{"use strict";r.a(e,async(e,a)=>{try{r.d(t,{UO:()=>useProductGalleryQuery});var n=r(3523),l=r(1072),o=r(3221),s=r(7553),i=r(5081),c=r(1868),u=e([s]);function ownKeys(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),r.push.apply(r,a)}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){var a;a=r[t],t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):ownKeys(Object(r)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))})}return e}s=(u.then?(await u)():u)[0];let d=n.VA,useProductGalleryQuery=({term:e,sort:t,selectedFacets:r,itemsPerPage:a})=>{let{locale:n}=(0,c.kP)(),{state:u,setState:p}=(0,o.R)(),f=(0,i.y)({first:a,after:"0",sort:t,term:e??"",selectedFacets:r}),findFacetValue=(e,t)=>{let r=e.find(({key:e})=>e===t);return r?.value??null};return(0,s.aM)(d,f,{onSuccess:t=>{if(t){let a=findFacetValue(r,"fuzzy"),o=findFacetValue(r,"operator");a||o||p(_objectSpread(_objectSpread({},u),{},{selectedFacets:[...r,{key:"fuzzy",value:t.search.metadata?.fuzzy},{key:"operator",value:t.search.metadata?.logicalOperator}]})),e&&(0,l._)({name:"intelligent_search_query",params:{locale:n,term:e,url:window.location.href,logicalOperator:t.search.metadata?.logicalOperator??"and",isTermMisspelled:t.search.metadata?.isTermMisspelled??!1,totalCount:t.search.products.pageInfo.totalCount}})}}})};a()}catch(e){a(e)}})},3139:(e,t,r)=>{"use strict";r.a(e,async(e,a)=>{try{r.d(t,{Fl:()=>useProductsPrefetch});var n=r(3523),l=r(3221),o=r(6689),s=r(5941),i=r(6227),c=r(5081),u=e([s,i]);function ownKeys(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),r.push.apply(r,a)}return r}[s,i]=u.then?(await u)():u;let d=n.gU,useProductsQueryPrefetch=(e,t)=>{let r=(0,c.y)(e),{cache:a}=(0,s.useSWRConfig)();return(0,o.useCallback)(()=>(0,i.p)(d,r,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){var a;a=r[t],t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):ownKeys(Object(r)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))})}return e}({cache:a},t)),[r,a,t])},useProductsPrefetch=e=>{let{itemsPerPage:t,state:{sort:r,term:a,selectedFacets:n}}=(0,l.R)(),s=useProductsQueryPrefetch({first:t,after:(t*(e??0)).toString(),sort:r,term:a??"",selectedFacets:n});(0,o.useEffect)(()=>{null!==e&&s()},[e,s])};a()}catch(e){a(e)}})},5403:(e,t,r)=>{"use strict";r.d(t,{j:()=>useApplySearchState});var a=r(6689),n=r(1163);let useApplySearchState=()=>{let e=(0,n.useRouter)();return(0,a.useCallback)(t=>e.push(`${t.pathname}${t.search}`),[e])}},7364:(e,t,r)=>{"use strict";r.d(t,{u:()=>useDelayedFacets});var a=r(6689);let useDelayedFacets=e=>{let t=(0,a.useRef)([]);return(0,a.useMemo)(()=>(e&&(t.current=e.search?.facets),t.current),[e,t])}},7452:(e,t,r)=>{"use strict";r.d(t,{g:()=>useDelayedPagination});var a=r(6689),n=r(2339),l=r(3221);let getLink=e=>{let{pathname:t,search:r}=(0,n.Z)(e);return`${t}${r}`},usePagination=e=>{let{pages:t,itemsPerPage:r,state:n}=(0,l.R)(),o=Math.ceil(e/r),s=Number(t[t.length-1])+1,i=t[0]-1;return(0,a.useMemo)(()=>({next:s<o&&{cursor:s,link:getLink({...n,page:s})},prev:i>-1&&{cursor:i,link:getLink({...n,page:i})}}),[s,i,n,o])},useDelayedPagination=e=>{let t=usePagination(e),{0:r,1:n}=(0,a.useState)(()=>({next:!1,prev:!1}));return(0,a.useEffect)(()=>{n(t)},[t]),r}},8624:e=>{e.exports={section:"section_section__4Hqa8",loading:"section_loading__GPzvE"}},1197:(e,t,r)=>{"use strict";r.d(t,{_:()=>s,z:()=>Provider});var a=r(6689),n=r.n(a),l=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 l.q("Unknown action for infinite search")}},useSearchInfiniteState=e=>{let[t,r]=(0,a.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]),n=(0,a.useMemo)(()=>({addPrevPage:()=>r({type:"addPrev"}),addNextPage:()=>r({type:"addNext"}),resetInfiniteScroll:e=>r({type:"reset",payload:e})}),[]);return{pages:t,...n}};var o=r(2524);let s=(0,a.createContext)(void 0),Provider=({children:e,itemsPerPage:t,onChange:r,...l})=>{let{state:i,...c}=(0,o.X)(l,r),{pages:u,...d}=useSearchInfiniteState(i.page),p=(0,a.useMemo)(()=>({state:i,...c,pages:u,...d,itemsPerPage:t}),[d,t,u,c,i]);return n().createElement(s.Provider,{value:p},e)}},8492:(e,t,r)=>{"use strict";r.d(t,{uL:()=>setFacet,wB:()=>toggleFacet,wb:()=>isSearchSort});var a=r(2254);let n=new Set(["price_desc","price_asc","orders_desc","name_desc","name_asc","release_desc","discount_desc","score_desc"]),isSearchSort=e=>n.has(e),removeFacet=(e,t)=>{let{value:r}=t,n=e.findIndex(e=>e.value===r);if(n<0)throw new a.q(`Cannot remove ${r} from search params`);return e.filter((e,t)=>t!==n)},setFacet=(e,t,r)=>{if(!0===r){let r=e.findIndex(e=>e.key===t.key);if(r>-1)return e.map((e,a)=>a===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:(e,t,r)=>{"use strict";r.d(t,{Q:()=>parse});var a=r(2254),n=r(8492),l=r(2524);let parse=({pathname:e,searchParams:t})=>{let r=(0,l.j)({base:e,term:t.get("q")??null,sort:t.get("sort")??void 0,page:Number(t.get("page")??0)});if(!(0,n.wb)(r.sort))throw new a.q(`Uknown sorting option ${r.sort}`);let o=t.get("facets")?.split(",")??[];for(let e of o){let a=t.getAll(e);for(let t of a)r.selectedFacets=(0,n.uL)(r.selectedFacets,{key:e,value:t})}return r}},3221:(e,t,r)=>{"use strict";r.d(t,{R:()=>useSearch});var a=r(1197),n=r(6689),l=r(2254);let useContext=e=>{let t=(0,n.useContext)(e);if(void 0===t)throw new l.q(`${e.displayName??"Context"} needs to be on the React tree`);return t},useSearch=()=>useContext(a._)}};
|