@faststore/core 3.32.0 → 3.33.0

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.
Files changed (86) hide show
  1. package/.next/BUILD_ID +1 -1
  2. package/.next/build-manifest.json +27 -27
  3. package/.next/cache/.tsbuildinfo +1 -1
  4. package/.next/cache/config.json +3 -3
  5. package/.next/cache/webpack/client-production/0.pack +0 -0
  6. package/.next/cache/webpack/client-production/index.pack +0 -0
  7. package/.next/cache/webpack/server-production/0.pack +0 -0
  8. package/.next/cache/webpack/server-production/index.pack +0 -0
  9. package/.next/prerender-manifest.js +1 -1
  10. package/.next/prerender-manifest.json +1 -1
  11. package/.next/react-loadable-manifest.json +3 -3
  12. package/.next/routes-manifest.json +1 -1
  13. package/.next/server/chunks/{2409.js → 1650.js} +2 -2
  14. package/.next/server/chunks/3117.js +2 -2
  15. package/.next/server/chunks/4289.js +3 -3
  16. package/.next/server/chunks/{3080.js → 7819.js} +2 -2
  17. package/.next/server/chunks/9594.js +1 -0
  18. package/.next/server/middleware-build-manifest.js +1 -1
  19. package/.next/server/middleware-react-loadable-manifest.js +1 -1
  20. package/.next/server/pages/404.js +1 -1
  21. package/.next/server/pages/404.js.nft.json +1 -1
  22. package/.next/server/pages/500.js +1 -1
  23. package/.next/server/pages/500.js.nft.json +1 -1
  24. package/.next/server/pages/[...slug].js +1 -1
  25. package/.next/server/pages/[...slug].js.nft.json +1 -1
  26. package/.next/server/pages/[slug]/p.js +1 -1
  27. package/.next/server/pages/[slug]/p.js.nft.json +1 -1
  28. package/.next/server/pages/_app.js +1 -1
  29. package/.next/server/pages/_app.js.nft.json +1 -1
  30. package/.next/server/pages/_document.js.nft.json +1 -1
  31. package/.next/server/pages/_error.js +1 -1
  32. package/.next/server/pages/_error.js.nft.json +1 -1
  33. package/.next/server/pages/account.js +1 -1
  34. package/.next/server/pages/account.js.nft.json +1 -1
  35. package/.next/server/pages/api/graphql.js +1 -1
  36. package/.next/server/pages/api/graphql.js.nft.json +1 -1
  37. package/.next/server/pages/api/health/live.js.nft.json +1 -1
  38. package/.next/server/pages/api/health/ready.js.nft.json +1 -1
  39. package/.next/server/pages/api/preview.js.nft.json +1 -1
  40. package/.next/server/pages/checkout.js +1 -1
  41. package/.next/server/pages/checkout.js.nft.json +1 -1
  42. package/.next/server/pages/en-US/404.html +2 -2
  43. package/.next/server/pages/en-US/500.html +2 -2
  44. package/.next/server/pages/en-US/account.html +2 -2
  45. package/.next/server/pages/en-US/checkout.html +2 -2
  46. package/.next/server/pages/en-US/login.html +2 -2
  47. package/.next/server/pages/en-US/s.html +2 -2
  48. package/.next/server/pages/en-US.html +2 -2
  49. package/.next/server/pages/en-US.json +1 -1
  50. package/.next/server/pages/index.js +1 -1
  51. package/.next/server/pages/index.js.nft.json +1 -1
  52. package/.next/server/pages/login.js +1 -1
  53. package/.next/server/pages/login.js.nft.json +1 -1
  54. package/.next/server/pages/s.js +1 -1
  55. package/.next/server/pages/s.js.nft.json +1 -1
  56. package/.next/server/pages-manifest.json +1 -1
  57. package/.next/static/{gfAtPTIXPKnCvUoAN_678 → a8pMv59FUKRCJcUKLEXkQ}/_buildManifest.js +1 -1
  58. package/.next/static/chunks/{3143.42eed67e0a406af4.js → 3143.1aaec7f4a9e83b8d.js} +1 -1
  59. package/.next/static/chunks/4625-4befc256b42bee75.js +1 -0
  60. package/.next/static/chunks/{6335-204d54a0bbb62580.js → 6335-2bf379c0870c440e.js} +1 -1
  61. package/.next/static/chunks/{CartSidebar.b92033a45cbd5b1e.js → CartSidebar.11e73132b1647eec.js} +1 -1
  62. package/.next/static/chunks/pages/[...slug]-f4fd6c8d7dc53f8f.js +1 -0
  63. package/.next/static/chunks/pages/{_app-ac95c1e9f24267d5.js → _app-e03902a5f8bdaf99.js} +1 -1
  64. package/.next/static/chunks/pages/{s-3d8b314cdd548782.js → s-ffb46af7067b79b1.js} +1 -1
  65. package/.next/static/chunks/{webpack-505ab169c34dcfac.js → webpack-1965210fb17803bd.js} +1 -1
  66. package/.next/trace +122 -121
  67. package/.turbo/turbo-build.log +11 -12
  68. package/.turbo/turbo-test.log +5 -6
  69. package/@generated/gql.ts +8 -0
  70. package/@generated/graphql.ts +62 -0
  71. package/@generated/persisted-documents.json +2 -1
  72. package/CHANGELOG.md +12 -0
  73. package/next-seo.config.ts +3 -0
  74. package/package.json +3 -2
  75. package/src/components/templates/ProductListingPage/ProductListing.tsx +24 -7
  76. package/src/components/templates/ProductListingPage/ProductListingPage.tsx +23 -3
  77. package/src/pages/[...slug].tsx +20 -2
  78. package/src/sdk/product/usePageProductsQuery.ts +36 -11
  79. package/src/sdk/product/useProductGalleryQuery.ts +75 -33
  80. package/src/sdk/product/useShouldFetchFirstPage.ts +60 -0
  81. package/src/sdk/redirects/index.ts +8 -0
  82. package/src/utils/fetchProductGallerySSR.ts +121 -0
  83. package/.next/server/chunks/1168.js +0 -1
  84. package/.next/static/chunks/5018-4af021881b60619a.js +0 -1
  85. package/.next/static/chunks/pages/[...slug]-fdede686dea7b909.js +0 -1
  86. /package/.next/static/{gfAtPTIXPKnCvUoAN_678 → a8pMv59FUKRCJcUKLEXkQ}/_ssgManifest.js +0 -0
@@ -3,7 +3,7 @@ import { useQuery } from 'src/sdk/graphql/useQuery'
3
3
  import { useSession } from 'src/sdk/session'
4
4
  import { useLocalizedVariables } from './useLocalizedVariables'
5
5
 
6
- import { useSearch } from '@faststore/sdk'
6
+ import { type SearchState, useSearch } from '@faststore/sdk'
7
7
  import type { Facet } from '@faststore/sdk/dist/types'
8
8
  import type {
9
9
  ClientManyProductsQueryQueryVariables,
@@ -65,6 +65,65 @@ type ProductGalleryQueryOptions = {
65
65
  term: ClientManyProductsQueryQueryVariables['term']
66
66
  }
67
67
 
68
+ type UpdateSearchParamsType = {
69
+ selectedFacets: Facet[]
70
+ updatedFuzzyFacetValue?: string | null
71
+ updatedOperatorFacetValue?: string | null
72
+ setState: (newState: SearchState) => false | void
73
+ state: SearchState
74
+ }
75
+
76
+ /**
77
+ * This function updates the search params state with the new fuzzy and operator values when they change
78
+ *
79
+ * @param selectedFacets - The current selected facets
80
+ * @param updatedFuzzyFacetValue - The new fuzzy value
81
+ * @param updatedOperatorFacetValue - The new operator value
82
+ * @param setState - The function to update the search state
83
+ * @param state - The current search state
84
+ *
85
+ * @returns void
86
+ *
87
+ */
88
+ function updateSearchParamsState({
89
+ selectedFacets,
90
+ updatedFuzzyFacetValue,
91
+ updatedOperatorFacetValue,
92
+ setState,
93
+ state,
94
+ }: UpdateSearchParamsType) {
95
+ const oldFuzzyFacetValue = findFacetValue(selectedFacets, 'fuzzy')
96
+ const oldOperatorFacetValue = findFacetValue(selectedFacets, 'operator')
97
+
98
+ const shouldUpdateFuzzyFacetValue =
99
+ updatedFuzzyFacetValue && updatedFuzzyFacetValue !== oldFuzzyFacetValue
100
+
101
+ const shouldUpdateOperatorFacetValue =
102
+ updatedOperatorFacetValue &&
103
+ updatedOperatorFacetValue !== oldOperatorFacetValue
104
+
105
+ if (shouldUpdateFuzzyFacetValue || shouldUpdateOperatorFacetValue) {
106
+ // prevents duplicate old facets
107
+ const filteredFacets = selectedFacets.filter(
108
+ (facet) => facet.key !== 'fuzzy' && facet.key !== 'operator'
109
+ )
110
+ setState({
111
+ ...state,
112
+ selectedFacets: [
113
+ ...filteredFacets,
114
+ {
115
+ key: 'fuzzy',
116
+ value: updatedFuzzyFacetValue ?? oldFuzzyFacetValue ?? 'auto',
117
+ },
118
+ {
119
+ key: 'operator',
120
+ value: updatedOperatorFacetValue ?? oldOperatorFacetValue ?? 'and',
121
+ },
122
+ ],
123
+ })
124
+ }
125
+ }
126
+
68
127
  export const findFacetValue = (
69
128
  facets: Facet[],
70
129
  searchParam: string
@@ -89,12 +148,12 @@ export const useProductGalleryQuery = ({
89
148
  selectedFacets,
90
149
  })
91
150
 
92
- const fuzzyFacetValue = findFacetValue(selectedFacets, 'fuzzy')
93
- const operatorFacetValue = findFacetValue(selectedFacets, 'operator')
94
-
95
151
  const queryResult = useQuery<Query, Variables>(query, localizedVariables, {
96
- onSuccess: (data) => {
97
- if (data && term && fuzzyFacetValue && operatorFacetValue) {
152
+ onSuccess: (data: Query) => {
153
+ const updatedFuzzyFacetValue = data.search.metadata?.fuzzy
154
+ const updatedOperatorFacetValue = data.search.metadata?.logicalOperator
155
+
156
+ if (data && term && updatedFuzzyFacetValue && updatedOperatorFacetValue) {
98
157
  import('@faststore/sdk').then(({ sendAnalyticsEvent }) => {
99
158
  sendAnalyticsEvent<IntelligentSearchQueryEvent>({
100
159
  name: 'intelligent_search_query',
@@ -102,41 +161,24 @@ export const useProductGalleryQuery = ({
102
161
  locale,
103
162
  term,
104
163
  url: window.location.href,
105
- logicalOperator: data.search.metadata?.logicalOperator ?? 'and',
164
+ logicalOperator: updatedOperatorFacetValue ?? 'and',
106
165
  isTermMisspelled: data.search.metadata?.isTermMisspelled ?? false,
107
166
  totalCount: data.search.products.pageInfo.totalCount,
108
167
  },
109
168
  })
110
169
  })
111
170
  }
112
- },
113
- })
114
171
 
115
- // If there is no fuzzy or operator facet, we need to add them to the selectedFacets and re-fetch the query
116
- const shouldRefetchQuery =
117
- !queryResult.error && (!fuzzyFacetValue || !operatorFacetValue)
118
-
119
- if (shouldRefetchQuery) {
120
- if (queryResult.data) {
121
- setState({
122
- ...state,
123
- selectedFacets: [
124
- ...selectedFacets,
125
- {
126
- key: 'fuzzy',
127
- value: queryResult.data.search.metadata?.fuzzy ?? 'auto',
128
- },
129
- {
130
- key: 'operator',
131
- value: queryResult.data.search.metadata?.logicalOperator ?? 'and',
132
- },
133
- ],
172
+ // Update the Search state (and URL) only if the values from fuzzy and operator changes
173
+ updateSearchParamsState({
174
+ selectedFacets,
175
+ updatedFuzzyFacetValue,
176
+ updatedOperatorFacetValue,
177
+ setState,
178
+ state,
134
179
  })
135
- }
136
-
137
- // The first result is not relevant, return null data to avoid rendering the page while the query is being re-fetched
138
- return { ...queryResult, isValidating: true, data: null }
139
- }
180
+ },
181
+ })
140
182
 
141
183
  return queryResult
142
184
  }
@@ -0,0 +1,60 @@
1
+ import { useRef } from 'react'
2
+
3
+ const FIVE_MINUTES = 5 * 60 * 1000
4
+
5
+ function hasTimeElapsed({
6
+ timestamp,
7
+ period = FIVE_MINUTES,
8
+ }: { timestamp: number; period: number }): boolean {
9
+ return Date.now() - timestamp > period
10
+ }
11
+
12
+ interface UseShouldFetchFirstPageParams {
13
+ page: number
14
+ generatedBuildTime: number
15
+ }
16
+
17
+ /**
18
+ * This hook determines if the first page (page 0) should be fetched.
19
+ * This is because the first page is initially fetched from the server side and injected into the cache for performance and SEO reasons.
20
+ * So this hook checks if the first page should be fetched again on the client side
21
+ * after 5 minutes since the build time (last fetch from the server side) or the last fetch time from the client side.
22
+ *
23
+ * @param page The page number
24
+ * @param generatedBuildTime The time the page was generated
25
+ * @returns boolean
26
+ *
27
+ **/
28
+ export function useShouldFetchFirstPage({
29
+ page,
30
+ generatedBuildTime,
31
+ }: UseShouldFetchFirstPageParams): boolean {
32
+ if (page !== 0) return false
33
+
34
+ const lastFetchTime = useRef<number | undefined>()
35
+
36
+ const passedFiveMinutesAfterBuild = hasTimeElapsed({
37
+ timestamp: generatedBuildTime,
38
+ period: FIVE_MINUTES,
39
+ })
40
+
41
+ const isFirstClientSideFetchFromFirstPage =
42
+ lastFetchTime.current === undefined
43
+
44
+ const passedFiveMinutesSinceLastFetch =
45
+ !isFirstClientSideFetchFromFirstPage &&
46
+ hasTimeElapsed({
47
+ timestamp: lastFetchTime.current!,
48
+ period: FIVE_MINUTES,
49
+ })
50
+
51
+ if (
52
+ passedFiveMinutesAfterBuild &&
53
+ (isFirstClientSideFetchFromFirstPage || passedFiveMinutesSinceLastFetch)
54
+ ) {
55
+ lastFetchTime.current = Date.now()
56
+ return true
57
+ }
58
+
59
+ return false
60
+ }
@@ -17,9 +17,17 @@ type RewriterResponse = {
17
17
 
18
18
  const PERMANENT_STATUS = 308
19
19
 
20
+ const ASSET_FILE_REGEX = /\.(js|css|png|jpg|jpeg|svg|gif|webp|ico|json|map)$/i
21
+
20
22
  export async function getRedirect({
21
23
  pathname,
22
24
  }: GetRedirectArgs): Promise<GetRedirectReturn> {
25
+ const isValidPath = !ASSET_FILE_REGEX.test(pathname)
26
+
27
+ if (!isValidPath) {
28
+ return null
29
+ }
30
+
23
31
  try {
24
32
  const redirectMatch = matcher({ pathname })
25
33
  if (redirectMatch) {
@@ -0,0 +1,121 @@
1
+ import type { SearchState } from '@faststore/sdk'
2
+ import { gql } from '@generated/gql'
3
+ import type {
4
+ ServerManyProductsQueryQuery,
5
+ ServerManyProductsQueryQueryVariables,
6
+ } from '@generated/graphql'
7
+ import { ITEMS_PER_PAGE } from 'src/constants'
8
+ import { execute } from 'src/server'
9
+ import storeConfig from '../../discovery.config'
10
+
11
+ export const query = gql(`
12
+ query ServerManyProductsQuery(
13
+ $first: Int!
14
+ $after: String
15
+ $sort: StoreSort!
16
+ $term: String!
17
+ $selectedFacets: [IStoreSelectedFacet!]!
18
+ $sponsoredCount: Int
19
+ ) {
20
+ ...ClientManyProducts
21
+ search(
22
+ first: $first
23
+ after: $after
24
+ sort: $sort
25
+ term: $term
26
+ selectedFacets: $selectedFacets
27
+ sponsoredCount: $sponsoredCount
28
+ ) {
29
+ products {
30
+ pageInfo {
31
+ totalCount
32
+ }
33
+ edges {
34
+ node {
35
+ ...ProductSummary_product
36
+ }
37
+ }
38
+ }
39
+ metadata {
40
+ ...SearchEvent_metadata
41
+ }
42
+ }
43
+ }
44
+ `)
45
+
46
+ export async function fetchServerManyProducts({
47
+ itemsPerPage = ITEMS_PER_PAGE,
48
+ sort = 'score_desc',
49
+ term = '',
50
+ selectedFacets = [],
51
+ sponsoredCount = 3,
52
+ filter = true,
53
+ }: {
54
+ itemsPerPage: number
55
+ sort: SearchState['sort']
56
+ term: string
57
+ selectedFacets?: {
58
+ key: string
59
+ value: string
60
+ }[]
61
+ sponsoredCount?: number
62
+ filter?: boolean
63
+ }) {
64
+ let { channel, locale } = storeConfig.session
65
+
66
+ if (filter) {
67
+ const { hasOnlyDefaultSalesChannel, ...filteredChannel } =
68
+ JSON.parse(channel)
69
+ channel = JSON.stringify(filteredChannel)
70
+ }
71
+
72
+ try {
73
+ const variables: ServerManyProductsQueryQueryVariables = {
74
+ first: itemsPerPage,
75
+ after: (itemsPerPage * 0).toString(),
76
+ sort,
77
+ term,
78
+ selectedFacets: [
79
+ ...selectedFacets,
80
+ { key: 'channel', value: channel ?? '' },
81
+ { key: 'locale', value: locale },
82
+ ],
83
+ sponsoredCount,
84
+ }
85
+
86
+ const result = await execute<
87
+ ServerManyProductsQueryQueryVariables,
88
+ ServerManyProductsQueryQuery
89
+ >({
90
+ variables,
91
+ operation: query,
92
+ })
93
+
94
+ // The resultVariables is used as cache key in useCreateUseGalleryPage hook of frontend, that's why it is passed to the front as props.
95
+ // The facets order here is important, although we use deepEquals in frontend, this order can influence the key of the cache mechanism.
96
+ const resultVariables = {
97
+ ...variables,
98
+ selectedFacets: [
99
+ ...selectedFacets,
100
+ {
101
+ key: 'fuzzy',
102
+ value: result.data.search.metadata?.fuzzy ?? 'auto',
103
+ },
104
+ {
105
+ key: 'operator',
106
+ value: result.data.search.metadata?.logicalOperator ?? 'and',
107
+ },
108
+ { key: 'channel', value: channel ?? '' },
109
+ { key: 'locale', value: locale },
110
+ ],
111
+ sponsoredCount,
112
+ }
113
+
114
+ return [result.data, resultVariables] as [
115
+ ServerManyProductsQueryQuery,
116
+ ServerManyProductsQueryQueryVariables,
117
+ ]
118
+ } catch (error) {
119
+ console.error(error)
120
+ }
121
+ }
@@ -1 +0,0 @@
1
- exports.id=1168,exports.ids=[1168],exports.modules={21168:(e,t,r)=>{"use strict";r.r(t),r.d(t,{default:()=>_app});var o=r(16652),a=r(74444),n=r(16689);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 usePageViewEvent=e=>{let t=(0,n.useCallback)(()=>{Promise.all([r.e(7337),r.e(7675),r.e(2880),r.e(1153)]).then(r.bind(r,81153)).then(({sendAnalyticsEvent:t})=>{t({name:"page_view",params: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}({page_title:document.title,page_location:location.href,send_page_view:!0},e)})})},[e]),o=(0,a.useRouter)();return(0,n.useEffect)(()=>{t()},[o,t]),{sendPageViewEvent:t}};var s=r(20997);let src_Layout=function({children:e}){return usePageViewEvent(e?.props),s.jsx(s.Fragment,{children:e})};var l=r(28529),c=r(11506),i=r.n(c);let analytics=()=>((0,l.W)(e=>{window.dataLayer.push({ecommerce:null}),window.dataLayer.push({event:e.name,ecommerce:e.params}),r(73982)(`./${i().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 n.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}};let p=new Date().toISOString(),u={norobots:i().experimental.noRobots,dangerouslySetAllPagesToNoFollow:i().experimental.nofollow,dangerouslySetAllPagesToNoIndex:i().experimental.noindex,additionalMetaTags:[{name:"generated-at",content:p}]};r(7940),r(24832),r(96699);var d=r(16641);function _app_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 _app_objectSpread(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?_app_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)):_app_ownKeys(Object(r)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))})}return e}let _app=function({Component:e,pageProps:t}){return(0,s.jsxs)(ErrorBoundary,{children:[s.jsx(d.DefaultSeo,_app_objectSpread({},u)),s.jsx(analytics,{}),s.jsx(o.Z,{children:s.jsx(src_Layout,{children:s.jsx(e,_app_objectSpread({},t))})})]})}},96699:()=>{},24832:()=>{},7940:()=>{},16652:(e,t,r)=>{"use strict";r.d(t,{Z:()=>__WEBPACK_DEFAULT_EXPORT__,l:()=>useUI});var o=r(16689),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)}},73982:(e,t,r)=>{var o={"./vtex":[63675,3979,3675],"./vtex/":[63675,3979,3675],"./vtex/index":[63675,3979,3675],"./vtex/index.ts":[63675,3979,3675],"./vtex/rc":[15146,5146],"./vtex/rc.ts":[15146,5146],"./vtex/search":[43979,3979],"./vtex/search.ts":[43979,3979]};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 Promise.all(t.slice(1).map(r.e)).then(()=>r(a))}webpackAsyncContext.keys=()=>Object.keys(o),webpackAsyncContext.id=73982,e.exports=webpackAsyncContext},28529:(e,t,r)=>{"use strict";r.d(t,{W:()=>useAnalyticsEvent});var o=r(16689),a=r(14950);let useAnalyticsEvent=e=>{let t=(0,o.useCallback)(t=>{try{if(t.data.name!==a.vi)return;e((0,a.Wg)(t.data))}catch(e){console.error("Something went wrong while running Analytics handler")}},[e]);(0,o.useEffect)(()=>(window.addEventListener("message",t),()=>window.removeEventListener("message",t)),[t])}},14950:(e,t,r)=>{"use strict";r.d(t,{Mi:()=>o,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
- (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[5018],{6305:function(e,t,r){"use strict";r.d(t,{j:function(){return O}});var n=r(4424),o={section:"Breadcrumb"},a=r(7264),l=r(4194),i=r(9836),c=r(6220),s=r(6999),d=r(2614),u=r(6349),p=r(1972),f=r(6519),b=r(1549),v=["icon","alt"];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 y={Breadcrumb:(0,l.memo)(e=>{var t,{icon:r,alt:n="Go to homepage"}=e,o=(0,u.Z)(e,v),{Breadcrumb:a,Icon:l}=(0,c.r3)();return(0,b.jsx)(p.Z,_objectSpread(_objectSpread({homeLink:(0,b.jsx)(f.Z,{"data-fs-breadcrumb-link":!0,"data-fs-breadcrumb-link-home":!0,"aria-label":n,href:"/",prefetch:!1,children:(0,b.jsx)(l.Component,_objectSpread(_objectSpread({width:18,height:18,weight:"bold"},l.props),{},{name:null!==(t=null!=r?r:l.props.name)&&void 0!==t?t:"Home"}))}),renderLink:e=>{var{itemProps:{item:t,name:r}}=e;return(0,b.jsx)(f.Z,{"data-fs-breadcrumb-link":!0,href:t,prefetch:!1,children:r})}},a.props),o))}),Icon:d.Z},m=r(3747),h=r.n(m);function Breadcrumb_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 j=(0,a.B)("Breadcrumb",function(e){var t,r,o,a,l,d,u,p,f,v=Object.assign({},e),{Breadcrumb:y}=(0,c.r3)(),m=(0,s.qt)(),j=(0,s.OJ)(m)?null==m?void 0:null===(t=m.data)||void 0===t?void 0:null===(r=t.collection)||void 0===r?void 0:null===(o=r.seo)||void 0===o?void 0:o.title:"All Products",g=(0,s.tS)(m)?null==m?void 0:null===(a=m.data)||void 0===a?void 0:null===(l=a.product)||void 0===l?void 0:null===(d=l.breadcrumbList)||void 0===d?void 0:d.itemListElement:(0,s.OJ)(m)?null==m?void 0:null===(u=m.data)||void 0===u?void 0:null===(p=u.collection)||void 0===p?void 0:null===(f=p.breadcrumbList)||void 0===f?void 0:f.itemListElement:[{item:"/",name:j,position:1}];return(0,b.jsx)(i.Z,{className:"".concat(h().section," section-breadcrumb"),children:(0,b.jsx)(y.Component,function(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?Breadcrumb_ownKeys(Object(r),!0).forEach(function(t){(0,n.Z)(e,t,r[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):Breadcrumb_ownKeys(Object(r)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))})}return e}({breadcrumbList:g},v))})},y),g=(0,l.memo)(j);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 O=(0,a.v)(OverriddenDefaultBreadcrumb_objectSpread(OverriddenDefaultBreadcrumb_objectSpread(OverriddenDefaultBreadcrumb_objectSpread({},o),o),{},{Section:g}))},4816:function(e,t,r){"use strict";r.d(t,{V:function(){return m}});var n=r(4424),o={section:"Hero"},a=r(7264),l=r(6659),i=r(6220),c=r(9836),s=r(3767),d=r.n(s),u=r(8957),p=r(6035),f=r(7154),b={Hero:u.Z,HeroImage:p.Z,HeroHeader:f.Z},v=r(1549);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 y=(0,a.B)("Hero",e=>{var t,r,{link:n,title:o,subtitle:a,image:s,variant:u,colorVariant:p,icon:f}=e,{Hero:b,HeroImage:y,HeroHeader:m}=(0,i.r3)();return(0,v.jsx)(c.Z,{className:"".concat(d().section," section-hero"),children:(0,v.jsxs)(b.Component,_objectSpread(_objectSpread({},b.props),{},{variant:null!==(t=null!=u?u:b.props.variant)&&void 0!==t?t:"primary",colorVariant:null!==(r=null!=p?p:b.props.colorVariant)&&void 0!==r?r:"main",children:[(0,v.jsx)(y.Component,_objectSpread(_objectSpread({},y.props),{},{children:(0,v.jsx)(l.Z,{loading:"eager",src:s.src,alt:s.alt,width:360,height:240,sizes:"(max-width: 412px) 40vw, (max-width: 768px) 90vw, 50vw",priority:!0})})),(0,v.jsx)(m.Component,_objectSpread({title:o,subtitle:a,link:null==n?void 0:n.url,linkText:null==n?void 0:n.text,linkTargetBlank:null==n?void 0:n.linkTargetBlank,icon:f},m.props))]}))})},b);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){(0,n.Z)(e,t,r[t])}):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}var m=(0,a.v)(OverriddenDefaultHero_objectSpread(OverriddenDefaultHero_objectSpread(OverriddenDefaultHero_objectSpread({},o),o),{},{Section:y}))},396:function(e,t,r){"use strict";r.d(t,{f:function(){return J}});var n=r(4424),o={section:"ProductGallery"},a=r(7264),l=r(6349),i=r(9029),c=r(7292),s=r(4194),d=r(6652),u=r(6202),p=r(1549);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 f={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"},b=Object.keys(f),Sort_Sort=function(e){var{label:t="Sort by",options:r=f}=e,{state:n,setState:o}=(0,i.R)(),a=Object.keys(r).reduce((e,t)=>{var n;return e[t]=null!==(n=r[t])&&void 0!==n?n:f[t],e},{});return(0,p.jsx)(u.Z,{id:"sort-select",className:"sort / text__title-mini-alt",label:t,options:a,onChange:e=>{var t=b[e.target.selectedIndex];o(_objectSpread(_objectSpread({},n),{},{sort:t,page:0}))},value:n.sort,testId:"search-sort"})},v=r(3125),y=r(7281),m=r.n(y),h=r(6220),j=r(6999),g=r(1921),O=r(4174),P=r(431),w=r(4750),_=r(8385),S=["cache"],prefetchQuery=(e,t,r)=>{var{cache:n}=r,o=(0,l.Z)(r,S),a=(0,_.km)(e.__meta__.operationName,t);n.get(a)||(0,P.j)(a,(0,w.W)(e,t,o))},k=r(6616);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 x=g.gU,useProductsQueryPrefetch=(e,t)=>{var r=(0,k.y)(e),{cache:o}=(0,O.kY)();return(0,s.useCallback)(()=>prefetchQuery(x,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:o},t)),[r,o,t])},useProductsPrefetch=e=>{var{itemsPerPage:t,state:{sort:r,term:n,selectedFacets:o}}=(0,i.R)(),a=useProductsQueryPrefetch({first:t,after:(t*(null!=e?e:0)).toString(),sort:r,term:null!=n?n:"",selectedFacets:o});(0,s.useEffect)(()=>{null!==e&&a()},[e,a])},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])},E=r(1341),useDelayedPagination=e=>{var t=(0,E.h)(e),{0:r,1:n}=(0,s.useState)(()=>({next:!1,prev:!1}));return(0,s.useEffect)(()=>{n(t)},[t]),r},D=r(9664),Z=["value"];function useFilter_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 useFilter_objectSpread(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?useFilter_ownKeys(Object(r),!0).forEach(function(t){(0,n.Z)(e,t,r[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):useFilter_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:o,payload:a}=t;switch(o){case"toggleExpanded":return r.has(a)?r.delete(a):r.add(a),useFilter_objectSpread(useFilter_objectSpread({},e),{},{expanded:new Set(r)});case"selectFacets":if(a!==n)return useFilter_objectSpread(useFilter_objectSpread({},e),{},{selected:a});break;case"toggleFacet":return useFilter_objectSpread(useFilter_objectSpread({},e),{},{selected:(0,D.wB)(e.selected,a)});case"setFacet":return useFilter_objectSpread(useFilter_objectSpread({},e),{},{selected:(0,D.uL)(e.selected,a.facet,a.unique)});default:throw Error("Action ".concat(o," not implemented"))}return e},useFilter=e=>{var{state:{selectedFacets:t}}=(0,i.R)(),{0:{selected:r,expanded:n},1:o}=(0,s.useReducer)(reducer,null,()=>({expanded:new Set([]),selected:t})),a=(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?useFilter_objectSpread(useFilter_objectSpread({},e),{},{values:e.values.map(t=>{var r,{value:n}=t;return useFilter_objectSpread(useFilter_objectSpread({},(0,l.Z)(t,Z)),{},{value:n,selected:!!(null===(r=a.get(e.key))||void 0===r?void 0:r.has(n))})})}):e),[e,a]);return(0,s.useEffect)(()=>{o({type:"selectFacets",payload:t})},[t]),{facets:c,selected:r,expanded:n,dispatch:o}},G=r(6259);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 F=(0,s.lazy)(()=>r.e(3143).then(r.bind(r,3143))),C=m()(()=>r.e(866).then(r.bind(r,2316)),{loadableGenerated:{webpack:()=>[2316]}}),B=(0,p.jsx)(v.Z,{loading:!0}),ProductGallery_ProductGallery=function(e){var t,r,n,o,a,l,u,f,b,v,y,m,g,O,P,w,_,S,k,x,{title:E,searchTerm:D,totalCount:Z,searchTermLabel:K,totalCountLabel:R,filter:L,previousPageButton:z,loadMorePageButton:N,sortBySelector:I,productCard:M}=e,{FilterButtonSkeleton:H,FilterIcon:A,LinkButtonNext:q,LinkButtonPrev:T,MobileFilterButton:V,PrevIcon:$,ResultsCountSkeleton:U,SortSkeleton:J,__experimentalFilterDesktop:Q,__experimentalFilterSlider:Y}=(0,h.r3)(),{openFilter:W,filter:X}=(0,d.l)(),{pages:ee,addNextPage:et,addPrevPage:er,itemsPerPage:en}=(0,i.R)(),eo=(0,j.qt)(),ea=null==eo?void 0:eo.data,el=null!==(t=useDelayedFacets(ea))&&void 0!==t?t:[],{next:ei,prev:ec}=useDelayedPagination(Z),{isDesktop:es}=(0,G.Z)();useProductsPrefetch(ec?ec.cursor:null),useProductsPrefetch(ei?ei.cursor:null);var ed=!!(null==ea?void 0:null===(r=ea.search)||void 0===r?void 0:r.facets),eu=!!(null==ea?void 0:null===(n=ea.search)||void 0===n?void 0:n.products),ep=useFilter(el);return(0,p.jsxs)("section",{"data-testid":"product-gallery","data-fs-product-listing":!0,children:[D&&(0,p.jsx)("header",{"data-fs-product-listing-search-term":!0,"data-fs-content":"product-gallery",children:(0,p.jsxs)("h1",{children:[K," ",(0,p.jsx)("span",{children:D})]})}),(0,p.jsxs)("div",{"data-fs-product-listing-content-grid":!0,"data-fs-content":"product-gallery",children:[es&&(0,p.jsx)("div",{"data-fs-product-listing-filters":!0,children:(0,p.jsx)(C,{loading:!ed,children:ed&&(null==el?void 0:el.length)>0&&(0,p.jsx)("div",{className:"hidden-mobile",children:(0,p.jsx)(Q.Component,ProductGallery_objectSpread(ProductGallery_objectSpread(ProductGallery_objectSpread({},Q.props),ep),{},{title:null==L?void 0:L.title}))})})}),!es&&X&&(0,p.jsx)("div",{"data-fs-product-listing-filters":!0,children:(0,p.jsx)(Y.Component,ProductGallery_objectSpread(ProductGallery_objectSpread(ProductGallery_objectSpread({},Y.props),ep),{},{title:null==L?void 0:L.title,clearButtonLabel:null==L?void 0:null===(o=L.mobileOnly)||void 0===o?void 0:o.clearButtonLabel,applyButtonLabel:null==L?void 0:null===(a=L.mobileOnly)||void 0===a?void 0:a.applyButtonLabel}))}),(0,p.jsx)("div",{"data-fs-product-listing-results-count":!0,"data-count":Z,children:(0,p.jsx)(U.Component,ProductGallery_objectSpread(ProductGallery_objectSpread({"data-fs-product-listing-results-count-skeleton":!0,size:{width:"100%",height:"1.5rem"}},U.props),{},{loading:!eu,children:(0,p.jsxs)("h2",{"data-testid":"total-product-count",children:[Z," ",R]})}))}),(0,p.jsxs)("div",{"data-fs-product-listing-sort":!0,children:[(0,p.jsx)(J.Component,ProductGallery_objectSpread(ProductGallery_objectSpread({"data-fs-product-listing-sort-skeleton":!0,size:{width:"auto",height:"1.5rem"}},J.props),{},{loading:!eu,children:(0,p.jsx)(Sort_Sort,{label:null==I?void 0:I.label,options:null==I?void 0:I.options})})),(0,p.jsx)(H.Component,ProductGallery_objectSpread(ProductGallery_objectSpread({"data-fs-product-listing-filter-button-skeleton":!0,size:{width:"6rem",height:"1.5rem"}},H.props),{},{loading:!ed,children:ed&&(null==el?void 0:el.length)>0&&(0,p.jsx)(V.Component,ProductGallery_objectSpread(ProductGallery_objectSpread({variant:"tertiary","data-testid":"open-filter-button",icon:(0,p.jsx)(A.Component,ProductGallery_objectSpread(ProductGallery_objectSpread({width:16,height:16},A.props),{},{name:null!==(l=null==L?void 0:null===(u=L.mobileOnly)||void 0===u?void 0:null===(f=u.filterButton)||void 0===f?void 0:null===(b=f.icon)||void 0===b?void 0:b.icon)&&void 0!==l?l:A.props.name,"aria-label":null!==(v=null==L?void 0:null===(y=L.mobileOnly)||void 0===y?void 0:null===(m=y.filterButton)||void 0===m?void 0:null===(g=m.icon)||void 0===g?void 0:g.alt)&&void 0!==v?v:A.props["aria-label"]})),iconPosition:"left"},V.props),{},{onClick:W,children:null==L?void 0:null===(O=L.mobileOnly)||void 0===O?void 0:null===(P=O.filterButton)||void 0===P?void 0:P.label}))}))]}),(0,p.jsxs)("div",{"data-fs-product-listing-results":!0,children:[!1!==ec&&(0,p.jsxs)("div",{"data-fs-product-listing-pagination":"top",children:[(0,p.jsx)(c.PB,{additionalLinkTags:[{rel:"prev",href:ec.link}]}),(0,p.jsx)(T.Component,ProductGallery_objectSpread(ProductGallery_objectSpread({rel:"prev",variant:"secondary",iconPosition:"left",icon:(0,p.jsx)($.Component,ProductGallery_objectSpread(ProductGallery_objectSpread({width:16,height:16,weight:"bold"},$.props),{},{name:null!==(w=null==z?void 0:null===(_=z.icon)||void 0===_?void 0:_.icon)&&void 0!==w?w:$.props.name,"aria-label":null!==(S=null!==(k=null==z?void 0:null===(x=z.icon)||void 0===x?void 0:x.alt)&&void 0!==k?k:null==z?void 0:z.label)&&void 0!==S?S:$.props["aria-label"]}))},T.props),{},{onClick:e=>{e.currentTarget.blur(),e.preventDefault(),er()},href:ec.link,children:null==z?void 0:z.label}))]}),eu?(0,p.jsx)(s.Suspense,{fallback:B,children:ee.map(e=>(0,p.jsx)(F,{page:e,title:E,productCard:M,itemsPerPage:en,firstPage:ee[0]},"gallery-page-".concat(e)))}):B,!1!==ei&&(0,p.jsxs)("div",{"data-fs-product-listing-pagination":"bottom",children:[(0,p.jsx)(c.PB,{additionalLinkTags:[{rel:"next",href:ei.link}]}),(0,p.jsx)(q.Component,ProductGallery_objectSpread(ProductGallery_objectSpread({testId:"show-more",rel:"next",variant:"secondary"},q.props),{},{onClick:e=>{e.currentTarget.blur(),e.preventDefault(),et()},href:ei.link,children:null==N?void 0:N.label}))]})]})]})]})},K=r(9836),R=r(5739),L=r.n(R),z=r(3339),N=r(2614),I=r(792),M=r(3922),H=m()(()=>r.e(6076).then(r.bind(r,3684)),{loadableGenerated:{webpack:()=>[3684]}}),A=m()(()=>r.e(9130).then(r.bind(r,9130)),{loadableGenerated:{webpack:()=>[9130]}}),q=m()(()=>r.e(9).then(r.bind(r,9)),{loadableGenerated:{webpack:()=>[9]}}),T=m()(()=>r.e(4746).then(r.bind(r,4746)),{loadableGenerated:{webpack:()=>[4746]}}),V={MobileFilterButton:z.Z,FilterIcon:N.Z,PrevIcon:N.Z,ResultsCountSkeleton:I.Z,SortSkeleton:I.Z,FilterButtonSkeleton:I.Z,LinkButtonPrev:M.Z,LinkButtonNext:M.Z,__experimentalFilterDesktop:q,__experimentalFilterSlider:T,__experimentalProductCard:H,__experimentalEmptyGallery:A},$=["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}var U=(0,a.B)("ProductGallery",function(e){var t,r,n,o,a,i,c,s,d,u,f,b,{emptyGallery:v}=e,y=(0,l.Z)(e,$),{__experimentalEmptyGallery:m}=(0,h.r3)(),g=(0,j.qt)(),[O,P]=(0,j.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,j.OJ)(g)?[null==g?void 0:null===(n=g.data)||void 0===n?void 0:null===(o=n.collection)||void 0===o?void 0:null===(a=o.seo)||void 0===a?void 0:a.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===(d=s.products)||void 0===d?void 0:null===(u=d.pageInfo)||void 0===u?void 0:u.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,p.jsx)(K.Z,{className:"".concat(L().section," section-product-gallery"),children:(0,p.jsx)("section",{"data-testid":"product-gallery","data-fs-product-listing":!0,children:(0,p.jsx)(m.Component,ProductGallery_ProductGallery_objectSpread({},v))})}):(0,p.jsx)(K.Z,{className:"".concat(L().section," section-product-gallery layout__section"),children:(0,p.jsx)(ProductGallery_ProductGallery,ProductGallery_ProductGallery_objectSpread({title:O,searchTerm:P,totalCount:w},y))})},V);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 J=(0,a.v)(OverriddenDefaultProductGallery_objectSpread(OverriddenDefaultProductGallery_objectSpread(OverriddenDefaultProductGallery_objectSpread({},o),o),{},{Section:U}))},938:function(e,t,r){"use strict";var n=r(792),o=r(1549);t.Z=function(e){var{bordered:t,sectioned:r,displayButton:a,aspectRatio:l=1,variant:i="default"}=e;return(0,o.jsxs)("div",{"data-fs-product-card-skeleton":!0,"data-fs-product-card-skeleton-variant":i,"data-fs-product-card-skeleton-bordered":t,"data-fs-product-card-skeleton-sectioned":r,children:[(0,o.jsx)("div",{"data-fs-product-card-skeleton-image":!0,style:{"--fs-product-card-skeleton-image-aspect-ratio":l},children:(0,o.jsx)(n.Z,{size:{width:"100%",height:"100%"}})}),(0,o.jsxs)("div",{"data-fs-product-card-skeleton-content":!0,children:[(0,o.jsx)(n.Z,{"data-fs-product-card-skeleton-text":!0,size:{width:"90%",height:"1.5rem"}}),(0,o.jsx)(n.Z,{"data-fs-product-card-skeleton-text":!0,size:{width:"70%",height:"1.5rem"}}),(0,o.jsx)(n.Z,{"data-fs-product-card-skeleton-badge":!0,size:{width:"6rem",height:"2rem"},border:"pill"}),a&&(0,o.jsx)(n.Z,{"data-fs-product-card-skeleton-button":!0,size:{width:"6rem",height:"2rem"},style:{columnGap:".75rem"}})]})]})}},3125:function(e,t,r){"use strict";var n=r(2218),o=r(938),a=r(1549);t.Z=function(e){var{children:t,aspectRatio:r,loading:l=!0}=e;return l?(0,a.jsx)("ul",{"data-fs-product-grid":!0,children:Array.from({length:n.g},(e,t)=>(0,a.jsx)("li",{children:(0,a.jsx)(o.Z,{aspectRatio:r,bordered:!0})},String(t)))}):(0,a.jsx)(a.Fragment,{children:t})}},2218:function(e,t,r){"use strict";r.d(t,{K:function(){return o},g:function(){return n}});var n=12,o=5},6999:function(e,t,r){"use strict";r.d(t,{En:function(){return isSearchPage},OJ:function(){return isPLP},al:function(){return usePDP},qt:function(){return usePage},tS:function(){return isPDP}});var n=r(4194),o=r(1549),isPDP=e=>{var t,r,n,o;return(null==e?void 0:null===(t=e.data)||void 0===t?void 0:null===(r=t.product)||void 0===r?void 0:r.sku)!=void 0&&(null==e?void 0:null===(n=e.data)||void 0===n?void 0:null===(o=n.product)||void 0===o?void 0:o.sku)!=null},isPLP=e=>{var t,r,n,o,a,l;return(null==e?void 0:null===(t=e.data)||void 0===t?void 0:null===(r=t.collection)||void 0===r?void 0:r.seo)!=void 0&&(null==e?void 0:null===(n=e.data)||void 0===n?void 0:null===(o=n.collection)||void 0===o?void 0:o.seo)!=null&&(null==e?void 0:null===(a=e.data)||void 0===a?void 0:null===(l=a.collection)||void 0===l?void 0:l.sku)==void 0},isSearchPage=e=>{var t,r;return void 0===e||(null==e?void 0:null===(t=e.data)||void 0===t?void 0:t.title)!=void 0||(null==e?void 0:null===(r=e.data)||void 0===r?void 0:r.searchTerm)!=void 0},a=(0,n.createContext)(null);function usePage(){var{context:e}=(0,n.useContext)(a);if(null==e)throw Error("Missing Overrides context on React tree");return e}var usePDP=()=>usePage();t.ZP=function(e){var{context:t,children:r}=e,l=(0,n.useMemo)(()=>({context:t}),[t]);return(0,o.jsx)(a.Provider,{value:l,children:r})}},6616:function(e,t,r){"use strict";r.d(t,{y:function(){return useLocalizedVariables}});var n=r(4194),o=r(2218),a=r(4355),toArray=e=>Array.isArray(e)?e:e?[e]:[],useLocalizedVariables=e=>{var{first:t,after:r,sort:l,term:i,selectedFacets:c,sponsoredCount:s}=e,{channel:d,locale:u}=(0,a.kP)();return(0,n.useMemo)(()=>{var e=toArray(c);return{first:null!=t?t:o.K,after:null!=r?r:"0",sort:null!=l?l:"score_desc",term:null!=i?i:"",selectedFacets:[...e,{key:"channel",value:null!=d?d:""},{key:"locale",value:u}],sponsoredCount:null!=s?s:3}},[c,t,r,l,i,d,u,s])}},4308:function(e,t,r){"use strict";r.d(t,{Bj:function(){return c},Y_:function(){return useCreateUseGalleryPage},__:function(){return useGalleryPage}});var n=r(1921),o=r(9029),a=r(4194),l=r(8385),i=r(6616),c=(0,a.createContext)(e=>({data:null})),useGalleryPage=e=>{var t=(0,a.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,a.useState)([]),r=(0,a.useRef)([]),n=(0,a.useRef)([]),c=(0,a.useCallback)(function(e){var{state:{sort:c,term:d,selectedFacets:u},itemsPerPage:p}=(0,o.R)(),f=(0,i.y)({first:p,after:(p*e).toString(),sort:c,term:null!=d?d:"",selectedFacets:u}),b=n.current[e]===getKey(f),{data:v}=(0,l.aM)(s,f,{fallbackData:null,suspense:!0,doNotRun:b}),y=!b&&null!==v;if(y){n.current[e]=getKey(f);var m=[...r.current];m[e]=v,r.current=m}return(0,a.useEffect)(()=>{y&&t(t=>{var r=[...t];return r[e]=v,r})},[v,e,y]),(0,a.useMemo)(()=>b?{data:r.current[e]}:{data:v},[b,v,e])},[]);return(0,a.useMemo)(()=>({pages:e,useGalleryPage:c}),[e,c])}},6641:function(e,t,r){"use strict";r.d(t,{UO:function(){return useProductGalleryQuery}});var n=r(4424),o=r(1921),a=r(8385),l=r(4355),i=r(6616),c=r(9029);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 s=o.VA,findFacetValue=(e,t)=>{var r,n=e.find(e=>{var{key:r}=e;return r===t});return null!==(r=null==n?void 0:n.value)&&void 0!==r?r:null},useProductGalleryQuery=e=>{var t,n,o,d,{term:u,sort:p,selectedFacets:f,itemsPerPage:b}=e,{locale:v}=(0,l.kP)(),{state:y,setState:m}=(0,c.R)(),h=(0,i.y)({first:b,after:"0",sort:p,term:null!=u?u:"",selectedFacets:f}),j=findFacetValue(f,"fuzzy"),g=findFacetValue(f,"operator"),O=(0,a.aM)(s,h,{onSuccess:e=>{e&&u&&j&&g&&r.e(1153).then(r.bind(r,1153)).then(t=>{var r,n,o,a,{sendAnalyticsEvent:l}=t;l({name:"intelligent_search_query",params:{locale:v,term:u,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===(a=e.search.metadata)||void 0===a?void 0:a.isTermMisspelled)&&void 0!==o&&o,totalCount:e.search.products.pageInfo.totalCount}})})}});return O.error||j&&g?O:(O.data&&m(_objectSpread(_objectSpread({},y),{},{selectedFacets:[...f,{key:"fuzzy",value:null!==(t=null===(n=O.data.search.metadata)||void 0===n?void 0:n.fuzzy)&&void 0!==t?t:"auto"},{key:"operator",value:null!==(o=null===(d=O.data.search.metadata)||void 0===d?void 0:d.logicalOperator)&&void 0!==o?o:"and"}]})),_objectSpread(_objectSpread({},O),{},{isValidating:!0,data:null}))}},3095:function(e,t,r){"use strict";r.d(t,{j:function(){return useApplySearchState}});var n=r(4194),o=r(4444),useApplySearchState=()=>{var e=(0,o.useRouter)();return(0,n.useCallback)(t=>{var r="".concat(t.pathname).concat(t.search);return t.searchParams.has("fuzzy")&&t.searchParams.has("operator")?e.replace(r):e.push(r)},[e])}},3747:function(e){e.exports={section:"section_section__dvBbv"}},3767:function(e){e.exports={section:"section_section__Pdf2v"}},5739:function(e){e.exports={section:"section_section__4Hqa8",loading:"section_loading__GPzvE"}},1953:function(e,t,r){"use strict";var n=r(4194);let o=(0,n.forwardRef)(function({testId:e="fs-label",children:t,...r},o){return n.createElement("label",{ref:o,"data-fs-label":!0,"data-testid":e,...r},t)});t.Z=o},4873:function(e,t,r){"use strict";var n=r(4194),o=r(2614);let a=(0,n.forwardRef)(function({options:e,id:t,testId:r="fs-select",...a},l){return n.createElement("div",{"data-fs-select":!0},n.createElement("select",{ref:l,id:t,"data-testid":r,...a},Object.keys(e).map(t=>n.createElement("option",{key:t,value:t},e[t]))),n.createElement(o.Z,{"data-fs-select-icon":!0,name:"CaretDown"}))});t.Z=a},792:function(e,t,r){"use strict";var n=r(4194);let o=(0,n.forwardRef)(function({testId:e="fs-skeleton",loading:t=!0,shimmer:r=!0,children:o,size:a,border:l,borderRadius:i,...c},s){let d={width:a.width,height:a.height};return t?n.createElement("div",{ref:s,"data-fs-skeleton":!0,"data-testid":e,"data-fs-skeleton-border":l||null,style:i?{...d,borderRadius:i}:d,...c},r&&n.createElement("div",{"data-fs-skeleton-shimmer":!0})):n.createElement(n.Fragment,null,o)});t.Z=o},1972:function(e,t,r){"use strict";r.d(t,{Z:function(){return Breadcrumb_Breadcrumb}});var n=r(4194),o=r(2614),a=r(727),l=r(6588);let i=(0,n.lazy)(()=>r.e(4983).then(r.bind(r,7169))),c=(0,n.lazy)(()=>r.e(1697).then(r.bind(r,9570))),s=(0,n.lazy)(()=>r.e(4219).then(r.bind(r,5741))),d=(0,n.lazy)(()=>r.e(6621).then(r.bind(r,4451))),u=(0,n.forwardRef)(function({children:e,divider:t="",testId:r="fs-breadcrumb",breadcrumbList:u,isDesktop:p=!1,renderLink:f,homeLink:b,dropdownButtonIcon:v=n.createElement(o.Z,{name:"DotsThree"}),collapsedItemsIcon:y=n.createElement(o.Z,{"data-fs-dropdown-item-icon":!0,name:"ArrowElbowDownRight"}),...m},h){let j=p?u[0]:null,g=p?u.slice(1,-2):u.slice(0,-2),O=u.slice(-2),P=u.length>4,w=(0,n.useCallback)(e=>{let t=f?.(e),r=e.collapsed?{"data-fs-breadcrumb-dropdown-link":!0}:{"data-fs-breadcrumb-link":!0};return t?(0,n.cloneElement)(t,{...r,key:e.itemProps.position}):n.createElement(a.Z,{...r,href:e.itemProps.item,key:e.itemProps.position},e.itemProps.name)},[f]);return n.createElement(l.Z,{ref:h,"data-fs-breadcrumb-is-desktop":p,...m},b,!P&&u.map((e,t)=>u.length===t+1?n.createElement("span",{key:String(e.position)},e.name):w({itemProps:e,collapsed:!1})),P&&j&&w({itemProps:j,collapsed:!1}),P&&n.createElement(n.Suspense,null,n.createElement(i,null,n.createElement(c,{"aria-label":"View More","data-fs-breadcrumb-dropdown-button":!0,size:"small"},v),n.createElement(s,{"data-fs-breadcrumb-dropdown-menu":!0},g.map(e=>n.createElement(d,{"data-fs-breadcrumb-dropdown-item":!0,key:String(e.position),icon:y},w({itemProps:e,collapsed:!0})))))),P&&O.map((e,t)=>O.length===t+1?n.createElement("span",{key:String(e.position)},e.name):w({itemProps:e,collapsed:!1})))});var Breadcrumb_Breadcrumb=({breadcrumbList:e,...t})=>n.createElement(n.Fragment,null,n.createElement(u,{breadcrumbList:e,...t}),n.createElement(u,{breadcrumbList:e,isDesktop:!0,...t}))},6588:function(e,t,r){"use strict";r.d(t,{Z:function(){return l}});var n=r(4194),o=r(4564),Breadcrumb_Divider=({divider:e,testId:t})=>{let r={"data-fs-breadcrumb-divider":!0,"aria-hidden":!0,"data-testid":`${t}-divider`};return n.isValidElement(e)?n.cloneElement(e,r):n.createElement("span",{...r},e??"/")},Breadcrumb_ListItem=({children:e,isLastItem:t,divider:r,testId:o})=>{let a={"data-testid":`${o}-item`,"data-fs-breadcrumb-item":!t||"current","aria-current":t?"page":void 0};return n.isValidElement(e)?n.createElement("li",{"data-fs-breadcrumb-list-item":!0},n.cloneElement(e,a),t?null:n.createElement(Breadcrumb_Divider,{divider:r,testId:o})):n.createElement("li",{"data-fs-breadcrumb-list-item":!0},n.createElement("span",{...a},e,t?null:n.createElement(Breadcrumb_Divider,{divider:r,testId:o})))};let a=(0,n.forwardRef)(function({children:e,divider:t="",testId:r="fs-breadcrumb",...a},l){return n.createElement("nav",{"aria-label":"Breadcrumb",role:"navigation",ref:l,"data-fs-breadcrumb":!0,"data-testid":r,...a},n.createElement(o.Z,{as:"ol","data-fs-breadcrumb-list":!0,"data-fs-content":"breadcrumb"},n.Children.toArray(e).map((e,o,a)=>{let l=o===a.length-1;return n.createElement(Breadcrumb_ListItem,{isLastItem:l,divider:t,key:`breadcrumb-${o}`,testId:r},e)})))});var l=a},3922:function(e,t,r){"use strict";var n=r(4194);t.Z=function({icon:e,inverse:t,children:r,disabled:o,iconPosition:a,size:l="regular",variant:i="primary",testId:c="fs-link-button",...s}){let d=(0,n.useRef)(null);return n.createElement("a",{ref:d,"data-fs-button":!0,"data-fs-link-button":!0,"data-fs-button-size":l,"data-fs-button-variant":i,"data-fs-button-inverse":t,"data-fs-button-disabled":o,onFocus:function(e){e.preventDefault(),o&&d.current?.blur()},"data-testid":c,...s},n.createElement("div",{"data-fs-button-wrapper":!0},!!e&&"left"===a&&n.createElement("span",{"data-fs-button-icon":!0},e),r&&n.createElement("span",null,r),!!e&&"right"===a&&n.createElement("span",{"data-fs-button-icon":!0},e)))}},6202:function(e,t,r){"use strict";var n=r(4194),o=r(1953),a=r(4873);let l=(0,n.forwardRef)(function({id:e,label:t,options:r,testId:l="fs-select-field",...i},c){return n.createElement("div",{ref:c,"data-fs-select-field":!0},n.createElement(o.Z,{"data-fs-select-field-label":!0,htmlFor:e},t),n.createElement(a.Z,{id:e,options:r,"data-testid":l,...i}))});t.Z=l},8957:function(e,t,r){"use strict";r.d(t,{u:function(){return useHero}});var n=r(4194);let o=(0,n.createContext)(void 0),a=(0,n.forwardRef)(function({children:e,testId:t="fs-hero",variant:r="primary",colorVariant:a="main",...l},i){return n.createElement(o.Provider,{value:{variant:r,colorVariant:a}},n.createElement("article",{ref:i,"data-fs-hero":!0,"data-fs-hero-variant":r,"data-fs-hero-color-variant":a,"data-testid":t,...l},e))});function useHero(){let e=(0,n.useContext)(o);if(void 0===e)throw Error("Do not use Hero components outside the Hero context.");return e}t.Z=a},7154:function(e,t,r){"use strict";var n=r(4194),o=r(3922),a=r(2614),l=r(8957);let i=(0,n.forwardRef)(function({icon:e,link:t,title:r,linkText:i,linkTargetBlank:c,subtitle:s,children:d,testId:u="fs-hero-heading",...p},f){let{variant:b,colorVariant:v}=(0,l.u)();return n.createElement("header",{ref:f,"data-fs-hero-heading":!0,"data-testid":u,...p},n.createElement("div",{"data-fs-hero-wrapper":!0,"data-fs-content":"hero"},n.createElement("div",{"data-fs-hero-info":!0},n.createElement("h1",{"data-fs-hero-title":!0},r),n.createElement("p",{"data-fs-hero-subtitle":!0},s),!!t&&n.createElement(o.Z,{href:t,inverse:"main"===v,icon:n.createElement(a.Z,{name:"ArrowRight"}),iconPosition:"right",target:c?"_blank":void 0},i)),!!e&&"secondary"===b&&n.createElement("span",{"data-fs-hero-icon":!0},e)))});t.Z=i},6035:function(e,t,r){"use strict";var n=r(4194);let o=(0,n.forwardRef)(function({children:e,testId:t="fs-hero-image",...r},o){return n.createElement("div",{ref:o,"data-fs-hero-image":!0,"data-testid":t,...r},e)});t.Z=o},1197:function(e,t,r){"use strict";r.d(t,{_:function(){return l},z:function(){return Provider}});var n=r(4194),o=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 o.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]),o=(0,n.useMemo)(()=>({addPrevPage:()=>r({type:"addPrev"}),addNextPage:()=>r({type:"addNext"}),resetInfiniteScroll:e=>r({type:"reset",payload:e})}),[]);return{pages:t,...o}};var a=r(2524);let l=(0,n.createContext)(void 0),Provider=({children:e,itemsPerPage:t,onChange:r,...o})=>{let{state:i,...c}=(0,a.X)(o,r),{pages:s,...d}=useSearchInfiniteState(i.page),u=(0,n.useMemo)(()=>({state:i,...c,pages:s,...d,itemsPerPage:t}),[d,t,s,c,i]);return n.createElement(l.Provider,{value:u},e)}},9664:function(e,t,r){"use strict";r.d(t,{Ru:function(){return removeFacet},a2:function(){return toggleFacets},uL:function(){return setFacet},wB:function(){return toggleFacet},wb:function(){return isSearchSort}});var n=r(2254);let o=new Set(["price_desc","price_asc","orders_desc","name_desc","name_asc","release_desc","discount_desc","score_desc"]),isSearchSort=e=>o.has(e),removeFacet=(e,t)=>{let{value:r}=t,o=e.findIndex(e=>e.value===r);if(o<0)throw new n.q(`Cannot remove ${r} from search params`);return e.filter((e,t)=>t!==o)},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)},toggleFacets=(e,t)=>t.reduce((e,t)=>toggleFacet(e,t),e)},6142:function(e,t,r){"use strict";r.d(t,{Q:function(){return parse}});var n=r(2254),o=r(9664),a=r(2524);let parse=({pathname:e,searchParams:t})=>{let r=(0,a.j)({base:e,term:t.get("q")??null,sort:t.get("sort")??void 0,page:Number(t.get("page")??0)});if(!(0,o.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,o.uL)(r.selectedFacets,{key:e,value:t})}return r.passThrough=function(e,t){let r=new URLSearchParams,n=new Set(t),o=Array.from(e.entries());for(let[e,t]of o)n.has(e)||r.append(e,t);return r}(t,["q","sort","page","facets",...l]),r}},1341:function(e,t,r){"use strict";r.d(t,{h:function(){return usePagination}});var n=r(4194),o=r(2339),a=r(9029);let getLink=e=>{let{pathname:t,search:r}=(0,o.Z)(e);return`${t}${r}`},usePagination=e=>{let{pages:t,itemsPerPage:r,state:o}=(0,a.R)(),l=Math.ceil(e/r),i=Number(t[t.length-1])+1,c=t[0]-1;return(0,n.useMemo)(()=>({next:i<l&&{cursor:i,link:getLink({...o,page:i})},prev:c>-1&&{cursor:c,link:getLink({...o,page:c})}}),[i,c,o,l])}},9029:function(e,t,r){"use strict";r.d(t,{R:function(){return useSearch}});var n=r(1197),o=r(7943);let useSearch=()=>(0,o.q)(n._)},7943:function(e,t,r){"use strict";r.d(t,{q:function(){return useContext}});var n=r(4194),o=r(2254);let useContext=e=>{let t=(0,n.useContext)(e);if(void 0===t)throw new o.q(`${e.displayName??"Context"} needs to be on the React tree`);return t}}}]);
@@ -1 +0,0 @@
1
- (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[330],{3010:function(e,t,r){"use strict";r.r(t),r.d(t,{__N_SSG:function(){return U},default:function(){return _slug_}});var n=r(4424),o=r(6349),c=r(7281),i=r.n(c),s=r(6142),a=r(2339),l=r(1197),u=r(7292),d=r(4444),p=r(4194),b=r(2218),g=r(3095),P=r(1506),j=r.n(P),O=r(9029),f=r(4876),y=r.n(f),v=r(6305),w=r(4816),h=r(396),_=r(6283),m=r(9149),S=r(9617);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 L=i()(()=>Promise.all([r.e(3508),r.e(84)]).then(r.bind(r,5335)).then(e=>e.OverriddenDefaultBannerText),{ssr:!1,loadableGenerated:{webpack:()=>[5335]}}),D=i()(()=>Promise.all([r.e(1417),r.e(6608),r.e(9704)]).then(r.bind(r,2273)).then(e=>e.OverriddenDefaultNewsletter),{ssr:!1,loadableGenerated:{webpack:()=>[2273]}}),x=i()(()=>Promise.all([r.e(7972),r.e(3506)]).then(r.bind(r,4794)).then(e=>e.OverriddenDefaultProductShelf),{ssr:!1,loadableGenerated:{webpack:()=>[4794]}}),E=i()(()=>r.e(7181).then(r.bind(r,1839)),{ssr:!1,loadableGenerated:{webpack:()=>[1839]}}),k=_objectSpread(_objectSpread(_objectSpread({},S.Z),{},{Breadcrumb:v.j,Hero:w.V,ProductGallery:h.f,BannerText:L,Newsletter:D,ProductShelf:x,ProductTiles:E},m.Z),_.Z),G=r(6335),K=r(6999),Z=r(4308),T=r(6641),N=r(1549);function ProductListing_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 ProductListing_objectSpread(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?ProductListing_ownKeys(Object(r),!0).forEach(function(t){(0,n.Z)(e,t,r[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):ProductListing_ownKeys(Object(r)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))})}return e}var B=i()(()=>r.e(6636).then(r.bind(r,6106)),{loadableGenerated:{webpack:()=>[6106]}}),overwriteMerge=(e,t)=>t;function ProductListing(e){var t,r,{page:{sections:n,settings:o},data:c,globalSections:i}=e,{state:{sort:s,term:a,selectedFacets:l}}=(0,O.R)(),u=null!==(t=null==o?void 0:null===(r=o.productGallery)||void 0===r?void 0:r.itemsPerPage)&&void 0!==t?t:b.g,{data:d}=(0,T.UO)({term:a,sort:s,selectedFacets:l,itemsPerPage:u}),{pages:p,useGalleryPage:g}=(0,Z.Y_)(),P={data:ProductListing_objectSpread(ProductListing_objectSpread({},y()(ProductListing_objectSpread({},c),ProductListing_objectSpread({},d),{arrayMerge:overwriteMerge})),{},{pages:p})};return(0,N.jsx)(N.Fragment,{children:(0,N.jsx)(K.ZP,{context:P,children:(0,N.jsx)(Z.Bj.Provider,{value:g,children:(0,N.jsx)(G.Z,{sections:n,globalSections:i,components:k,children:(0,N.jsx)(G.w,{sectionName:"ScrollToTopButton",children:(0,N.jsx)(B,{})})})})})})}var R=["plp"];function ProductListingPage_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 ProductListingPage_objectSpread(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?ProductListingPage_ownKeys(Object(r),!0).forEach(function(t){(0,n.Z)(e,t,r[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):ProductListingPage_ownKeys(Object(r)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))})}return e}var useSearchParams=e=>{var{collection:t,sort:r}=e,n=null==t?void 0:t.meta.selectedFacets,{asPath:o}=(0,d.useRouter)(),c=(0,p.useMemo)(()=>{var e=new URL(o,"http://localhost");r&&!e.searchParams.has("sort")&&e.searchParams.set("sort",r);var t=(0,s.Q)(e);return 0===t.selectedFacets.length&&(t.selectedFacets=n),(0,a.Z)(t).href},[o,n,r]);return(0,p.useMemo)(()=>(0,s.Q)(new URL(c)),[c])};function ProductListingPage(e){var t,r,n,c,i,s,a,{page:p,data:P,globalSections:O}=e,{settings:f}=p,y=P.collection,v=(0,d.useRouter)(),w=(0,g.j)(),h=useSearchParams({collection:y,sort:null==f?void 0:null===(t=f.productGallery)||void 0===t?void 0:t.sortBySelection}),{seo:{plp:_}}=j(),m=(0,o.Z)(j().seo,R),S=null!==(r=null==y?void 0:y.seo.title)&&void 0!==r?r:m.title,L=null!==(n=null==_?void 0:_.titleTemplate)&&void 0!==n?n:m.titleTemplate,D=(null==y?void 0:y.seo.description)||(null==_?void 0:null===(c=_.descriptionTemplate)||void 0===c?void 0:c.replace(/%s/g,()=>S))||m.description,[x]=v.asPath.split("?"),E="".concat(j().storeUrl).concat(x),k=null!==(i=null==f?void 0:null===(s=f.productGallery)||void 0===s?void 0:s.itemsPerPage)&&void 0!==i?i:b.g,G=null!==(a=null==y?void 0:y.breadcrumbList.itemListElement)&&void 0!==a?a:[];return 0!==G.length&&(G=G.map(e=>{var{item:t,name:r,position:n}=e;return{name:r,position:n,item:j().storeUrl+t}})),(0,N.jsxs)(l.z,ProductListingPage_objectSpread(ProductListingPage_objectSpread({onChange:w,itemsPerPage:k},h),{},{children:[(0,N.jsx)(u.PB,{title:S,description:D,titleTemplate:L,canonical:E,openGraph:{type:"website",title:S,description:D}}),(0,N.jsx)(u.gR,{itemListElements:G}),(0,N.jsx)(ProductListing,{globalSections:O,page:p,data:P})]}))}var F=["globalSections","type"];function _slug_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 _slug_objectSpread(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?_slug_ownKeys(Object(r),!0).forEach(function(t){(0,n.Z)(e,t,r[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):_slug_ownKeys(Object(r)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))})}return e}var M=i()(()=>Promise.all([r.e(1417),r.e(1036),r.e(7972),r.e(6608),r.e(3508),r.e(4349),r.e(485)]).then(r.bind(r,8485)),{loadableGenerated:{webpack:()=>[8485]}}),U=!0,_slug_=function(e){var{globalSections:t,type:r}=e,n=(0,o.Z)(e,F);return(0,N.jsxs)(N.Fragment,{children:["plp"===r&&(0,N.jsx)(ProductListingPage,_slug_objectSpread({globalSections:t.sections},n)),"page"===r&&(0,N.jsx)(M,_slug_objectSpread({globalSections:t.sections},n))]})}},3838:function(e,t,r){(window.__NEXT_P=window.__NEXT_P||[]).push(["/[...slug]",function(){return r(3010)}])}},function(e){e.O(0,[6167,6335,5018,9774,2888,179],function(){return e(e.s=3838)}),_N_E=e.O()}]);