@faststore/core 3.0.55 → 3.0.57

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 (199) hide show
  1. package/.next/BUILD_ID +1 -1
  2. package/.next/app-build-manifest.json +13 -13
  3. package/.next/build-manifest.json +62 -62
  4. package/.next/cache/.tsbuildinfo +1 -1
  5. package/.next/cache/config.json +3 -3
  6. package/.next/cache/eslint/.cache_1gneedd +1 -1
  7. package/.next/cache/fetch-cache/50912854cb7c781522a6ff8792d714e549515fcbbbfd660761961b06afe01c07 +1 -1
  8. package/.next/cache/webpack/client-production/0.pack +0 -0
  9. package/.next/cache/webpack/client-production/index.pack +0 -0
  10. package/.next/cache/webpack/server-production/0.pack +0 -0
  11. package/.next/cache/webpack/server-production/index.pack +0 -0
  12. package/.next/next-minimal-server.js.nft.json +1 -1
  13. package/.next/next-server.js.nft.json +1 -1
  14. package/.next/prerender-manifest.js +1 -1
  15. package/.next/prerender-manifest.json +1 -1
  16. package/.next/react-loadable-manifest.json +10 -22
  17. package/.next/routes-manifest.json +1 -1
  18. package/.next/server/app/_not-found.html +2 -2
  19. package/.next/server/app/_not-found.js +1 -1
  20. package/.next/server/app/_not-found.js.nft.json +1 -1
  21. package/.next/server/app/_not-found.rsc +10 -9
  22. package/.next/server/app/_not-found_client-reference-manifest.js +1 -1
  23. package/.next/server/app/fs-next-update/page.js +1 -1
  24. package/.next/server/app/fs-next-update/page.js.nft.json +1 -1
  25. package/.next/server/app/fs-next-update/page_client-reference-manifest.js +1 -1
  26. package/.next/server/app/fs-next-update.html +2 -2
  27. package/.next/server/app/fs-next-update.rsc +10 -9
  28. package/.next/server/chunks/1481.js +413 -0
  29. package/.next/server/chunks/1889.js +8 -0
  30. package/.next/server/chunks/2133.js +88 -0
  31. package/.next/server/chunks/223.js +1 -0
  32. package/.next/server/chunks/{3992.js → 2534.js} +1 -1
  33. package/.next/server/chunks/{7143.js → 2957.js} +1 -1
  34. package/.next/server/chunks/3383.js +123 -0
  35. package/.next/server/chunks/3993.js +1 -0
  36. package/.next/server/chunks/4222.js +1 -1
  37. package/.next/server/chunks/4520.js +1 -0
  38. package/.next/server/chunks/4930.js +1 -0
  39. package/.next/server/chunks/5640.js +2 -2
  40. package/.next/server/chunks/5950.js +1 -0
  41. package/.next/server/chunks/6058.js +1 -0
  42. package/.next/server/chunks/6102.js +1 -0
  43. package/.next/server/chunks/6112.js +1 -0
  44. package/.next/server/chunks/6305.js +15 -0
  45. package/.next/server/chunks/6374.js +8 -0
  46. package/.next/server/chunks/6859.js +4 -4
  47. package/.next/server/chunks/7035.js +1 -0
  48. package/.next/server/chunks/7267.js +1 -0
  49. package/.next/server/chunks/8158.js +1 -0
  50. package/.next/server/chunks/8245.js +1 -0
  51. package/.next/server/chunks/8635.js +1 -0
  52. package/.next/server/chunks/8640.js +1 -0
  53. package/.next/server/chunks/9679.js +1 -0
  54. package/.next/server/chunks/{6090.js → 9812.js} +1 -1
  55. package/.next/server/middleware-build-manifest.js +1 -1
  56. package/.next/server/middleware-react-loadable-manifest.js +1 -1
  57. package/.next/server/next-font-manifest.js +1 -1
  58. package/.next/server/next-font-manifest.json +1 -1
  59. package/.next/server/pages/404.html +2 -2
  60. package/.next/server/pages/404.js +1 -1
  61. package/.next/server/pages/404.js.nft.json +1 -1
  62. package/.next/server/pages/500.js +1 -1
  63. package/.next/server/pages/500.js.nft.json +1 -1
  64. package/.next/server/pages/[...slug].js +24 -1
  65. package/.next/server/pages/[...slug].js.nft.json +1 -1
  66. package/.next/server/pages/[slug]/p.js +144 -1
  67. package/.next/server/pages/[slug]/p.js.nft.json +1 -1
  68. package/.next/server/pages/_app.js +1 -1
  69. package/.next/server/pages/_app.js.nft.json +1 -1
  70. package/.next/server/pages/_document.js +1 -1
  71. package/.next/server/pages/_document.js.nft.json +1 -1
  72. package/.next/server/pages/_error.js +1 -1
  73. package/.next/server/pages/_error.js.nft.json +1 -1
  74. package/.next/server/pages/account.js +1 -1
  75. package/.next/server/pages/account.js.nft.json +1 -1
  76. package/.next/server/pages/api/graphql.js +1 -1
  77. package/.next/server/pages/api/graphql.js.nft.json +1 -1
  78. package/.next/server/pages/api/health/live.js +1 -1
  79. package/.next/server/pages/api/health/live.js.nft.json +1 -1
  80. package/.next/server/pages/api/health/ready.js +1 -1
  81. package/.next/server/pages/api/health/ready.js.nft.json +1 -1
  82. package/.next/server/pages/api/preview.js +1 -1
  83. package/.next/server/pages/api/preview.js.nft.json +1 -1
  84. package/.next/server/pages/checkout.js +1 -1
  85. package/.next/server/pages/checkout.js.nft.json +1 -1
  86. package/.next/server/pages/en-US/404.html +2 -2
  87. package/.next/server/pages/en-US/500.html +2 -2
  88. package/.next/server/pages/en-US/account.html +2 -2
  89. package/.next/server/pages/en-US/checkout.html +2 -2
  90. package/.next/server/pages/en-US/login.html +2 -2
  91. package/.next/server/pages/en-US/s.html +2 -2
  92. package/.next/server/pages/en-US.html +2 -2
  93. package/.next/server/pages/index.js +1 -1
  94. package/.next/server/pages/index.js.nft.json +1 -1
  95. package/.next/server/pages/login.js +1 -1
  96. package/.next/server/pages/login.js.nft.json +1 -1
  97. package/.next/server/pages/s.js +1 -1
  98. package/.next/server/pages/s.js.nft.json +1 -1
  99. package/.next/server/pages-manifest.json +1 -1
  100. package/.next/static/Gw5UNkUm8jxR5nsCDzVnx/_buildManifest.js +1 -0
  101. package/.next/static/chunks/227.a9d04217946d7d58.js +1 -0
  102. package/.next/static/chunks/230.e7c7462771519885.js +1 -0
  103. package/.next/static/chunks/264.3982cc7738281385.js +1 -0
  104. package/.next/static/chunks/393.5ae42882b3e35756.js +1 -0
  105. package/.next/static/chunks/432-687f6ce5bc27dcf1.js +1 -0
  106. package/.next/static/chunks/470-a762f2bf2d218abf.js +14 -0
  107. package/.next/static/chunks/472-369461a1f39981d5.js +25 -0
  108. package/.next/static/chunks/590-a0b6f16148203bf2.js +1 -0
  109. package/.next/static/chunks/667.83389641ca332aef.js +1 -0
  110. package/.next/static/chunks/722-ed59bc6f32bb342f.js +1 -0
  111. package/.next/static/chunks/724.78d40a7affe1d40b.js +1 -0
  112. package/.next/static/chunks/853.a3933410052d23c8.js +1 -0
  113. package/.next/static/chunks/app/{_not-found-2d32d7476da44280.js → _not-found-ad3969cc0223f63a.js} +1 -1
  114. package/.next/static/chunks/app/fs-next-update/page-ba9e117d148aa548.js +1 -0
  115. package/.next/static/chunks/app/layout-91b2430897aac937.js +9 -0
  116. package/.next/static/chunks/main-9c9c62c368c0a47e.js +1 -0
  117. package/.next/static/chunks/main-app-e13fa67c2c3ceca5.js +1 -0
  118. package/.next/static/chunks/pages/404-be2217109dab18cf.js +1 -0
  119. package/.next/static/chunks/pages/500-64a07a16830e129c.js +1 -0
  120. package/.next/static/chunks/pages/[...slug]-12c6dd879f1da8e0.js +1 -0
  121. package/.next/static/chunks/pages/[slug]/p-542d088f5d009ce8.js +1 -0
  122. package/.next/static/chunks/pages/{_app-ddcbec71774555c4.js → _app-1930798899758fda.js} +2 -2
  123. package/.next/static/chunks/pages/_error-65ac7445167ddb62.js +1 -0
  124. package/.next/static/chunks/pages/account-70e52900601fc5eb.js +1 -0
  125. package/.next/static/chunks/pages/checkout-fe8c38b138ddecef.js +1 -0
  126. package/.next/static/chunks/pages/index-86dd2dba6f6f1621.js +1 -0
  127. package/.next/static/chunks/pages/login-258e5b7ecec36481.js +1 -0
  128. package/.next/static/chunks/pages/s-53cc10ba9aa8331e.js +1 -0
  129. package/.next/static/chunks/webpack-a45dc84c9a0ef3fd.js +1 -0
  130. package/.next/static/css/5ed3f7794f0deb5a.css +1 -0
  131. package/.next/static/media/05a31a2ca4975f99-s.woff2 +0 -0
  132. package/.next/static/media/513657b02c5c193f-s.woff2 +0 -0
  133. package/.next/static/media/51ed15f9841b9f9d-s.woff2 +0 -0
  134. package/.next/static/media/c9a5bc6a7c948fb0-s.p.woff2 +0 -0
  135. package/.next/static/media/d6b16ce4a6175f26-s.woff2 +0 -0
  136. package/.next/static/media/ec159349637c90ad-s.woff2 +0 -0
  137. package/.next/static/media/fd4db3eb5472fc27-s.woff2 +0 -0
  138. package/.next/trace +62 -132
  139. package/.turbo/turbo-build.log +24 -26
  140. package/.turbo/turbo-test.log +5 -19
  141. package/README.md +0 -1
  142. package/app/layout.tsx +9 -6
  143. package/app/styles/fonts/index.tsx +10 -0
  144. package/package.json +3 -3
  145. package/src/server/cms/index.ts +70 -4
  146. package/test/server/cms/index.test.ts +95 -0
  147. package/.babelrc.js +0 -12
  148. package/.next/server/chunks/1259.js +0 -1
  149. package/.next/server/chunks/1408.js +0 -1
  150. package/.next/server/chunks/2074.js +0 -9
  151. package/.next/server/chunks/210.js +0 -1
  152. package/.next/server/chunks/2827.js +0 -8
  153. package/.next/server/chunks/3068.js +0 -1
  154. package/.next/server/chunks/334.js +0 -8
  155. package/.next/server/chunks/3607.js +0 -1
  156. package/.next/server/chunks/4314.js +0 -1
  157. package/.next/server/chunks/466.js +0 -1
  158. package/.next/server/chunks/513.js +0 -1
  159. package/.next/server/chunks/522.js +0 -1
  160. package/.next/server/chunks/5634.js +0 -1
  161. package/.next/server/chunks/5686.js +0 -1
  162. package/.next/server/chunks/647.js +0 -296
  163. package/.next/server/chunks/6535.js +0 -1
  164. package/.next/server/chunks/6942.js +0 -1
  165. package/.next/server/chunks/7982.js +0 -1
  166. package/.next/server/chunks/8360.js +0 -1
  167. package/.next/server/chunks/8653.js +0 -1
  168. package/.next/server/chunks/9740.js +0 -1
  169. package/.next/static/chunks/207-38bb75a9dc261947.js +0 -1
  170. package/.next/static/chunks/319.8d30e9ffafb22a7b.js +0 -1
  171. package/.next/static/chunks/439.db1fe827fd6839bb.js +0 -1
  172. package/.next/static/chunks/461.74f76bc649cb0446.js +0 -1
  173. package/.next/static/chunks/503-c781fed990b2a19d.js +0 -25
  174. package/.next/static/chunks/515.e66ca5426460f9b5.js +0 -1
  175. package/.next/static/chunks/551-162bba2358b63a62.js +0 -1
  176. package/.next/static/chunks/575-cdcaf62ab25bbfca.js +0 -14
  177. package/.next/static/chunks/641.e663ec37da787600.js +0 -1
  178. package/.next/static/chunks/661.adc1ee6bb386048a.js +0 -1
  179. package/.next/static/chunks/680.355e4fc032bd559f.js +0 -1
  180. package/.next/static/chunks/799.b2681e75eb83b9bf.js +0 -1
  181. package/.next/static/chunks/907.c323825210f93a2f.js +0 -1
  182. package/.next/static/chunks/913-f29dc656b7bffacd.js +0 -1
  183. package/.next/static/chunks/app/fs-next-update/page-c0b2bfde3e62e7be.js +0 -1
  184. package/.next/static/chunks/app/layout-2191e8eb7903521a.js +0 -9
  185. package/.next/static/chunks/main-5e45f8a409e3ce1c.js +0 -1
  186. package/.next/static/chunks/main-app-7b31a9960d0fa675.js +0 -1
  187. package/.next/static/chunks/pages/404-28a52b92a626978b.js +0 -1
  188. package/.next/static/chunks/pages/500-0d28b814be7b9731.js +0 -1
  189. package/.next/static/chunks/pages/[...slug]-76e3ceb9ed46e5fd.js +0 -1
  190. package/.next/static/chunks/pages/[slug]/p-da3c9dc487f407ce.js +0 -1
  191. package/.next/static/chunks/pages/_error-5a3e12f364a20272.js +0 -1
  192. package/.next/static/chunks/pages/account-9e4bcc3ab5b88353.js +0 -1
  193. package/.next/static/chunks/pages/checkout-7c95e252d2cbfd75.js +0 -1
  194. package/.next/static/chunks/pages/index-607f33d0ca51003b.js +0 -1
  195. package/.next/static/chunks/pages/login-cf8e5aafcae9efd5.js +0 -1
  196. package/.next/static/chunks/pages/s-56162ba83c7754f3.js +0 -1
  197. package/.next/static/chunks/webpack-d9b9091082069dd3.js +0 -1
  198. package/.next/static/ev69SrA0-5oAtBFWXupNm/_buildManifest.js +0 -1
  199. /package/.next/static/{ev69SrA0-5oAtBFWXupNm → Gw5UNkUm8jxR5nsCDzVnx}/_ssgManifest.js +0 -0
@@ -13,8 +13,6 @@ Browserslist: caniuse-lite is outdated. Please run:
13
13
  npx browserslist@latest --update-db
14
14
  Why you should do it regularly: https://github.com/browserslist/browserslist#browsers-data-updating
15
15
  Creating an optimized production build ...
16
- Disabled SWC as replacement for Babel because of custom Babel configuration ".babelrc.js" https://nextjs.org/docs/messages/swc-disabled
17
- Using external babel configuration from /home/runner/work/faststore/faststore/packages/core/.babelrc.js
18
16
  Browserslist: caniuse-lite is outdated. Please run:
19
17
  npx update-browserslist-db@latest
20
18
  Why you should do it regularly: https://github.com/browserslist/update-db#readme
@@ -34,37 +32,37 @@ Warning: Dynamic Content not found for the page: home. Refer to the Dynamic Cont
34
32
  Collecting build traces ...
35
33
 
36
34
  Route (app) Size First Load JS
37
- ┌ ○ /_not-found 875 B 83 kB
38
- └ ○ /fs-next-update 138 B 82.3 kB
39
- + First Load JS shared by all 82.2 kB
40
- ├ chunks/503-c781fed990b2a19d.js 28.4 kB
35
+ ┌ ○ /_not-found 876 B 83 kB
36
+ └ ○ /fs-next-update 138 B 82.2 kB
37
+ + First Load JS shared by all 82.1 kB
38
+ ├ chunks/472-369461a1f39981d5.js 28.4 kB
41
39
  ├ chunks/fd9d1056-43c43818840d7811.js 51.1 kB
42
- ├ chunks/main-app-7b31a9960d0fa675.js 232 B
43
- └ chunks/webpack-d9b9091082069dd3.js 2.45 kB
40
+ ├ chunks/main-app-e13fa67c2c3ceca5.js 230 B
41
+ └ chunks/webpack-a45dc84c9a0ef3fd.js 2.43 kB
44
42
 
45
43
  Route (pages) Size First Load JS
46
- ┌ ● / 1.26 kB 143 kB
44
+ ┌ ● / 1.04 kB 148 kB
47
45
  ├ └ css/fa6d43e3c11a59dc.css 755 B
48
- ├ /_app 0 B 93.5 kB
49
- ├ ● /[...slug] 2.79 kB 156 kB
46
+ ├ /_app 0 B 93.8 kB
47
+ ├ ● /[...slug] 2.66 kB 160 kB
50
48
  ├ └ css/3eed8d7ed5000eb8.css 2.4 kB
51
- ├ ● /[slug]/p 10.9 kB 153 kB
49
+ ├ ● /[slug]/p 10.8 kB 158 kB
52
50
  ├ └ css/65f6dd6d16812461.css 9.49 kB
53
- ├ ○ /404 1.47 kB 127 kB
54
- ├ ● /500 1.47 kB 127 kB
55
- ├ ● /account 675 B 126 kB
56
- ├ λ /api/graphql 0 B 93.5 kB
57
- ├ λ /api/health/live 0 B 93.5 kB
58
- ├ λ /api/health/ready 0 B 93.5 kB
59
- ├ λ /api/preview 0 B 93.5 kB
60
- ├ ● /checkout 660 B 126 kB
61
- ├ ● /login 1.59 kB 127 kB
62
- └ ● /s 1.49 kB 155 kB
63
- + First Load JS shared by all 96.5 kB
51
+ ├ ○ /404 1.17 kB 131 kB
52
+ ├ ● /500 1.17 kB 131 kB
53
+ ├ ● /account 447 B 130 kB
54
+ ├ λ /api/graphql 0 B 93.8 kB
55
+ ├ λ /api/health/live 0 B 93.8 kB
56
+ ├ λ /api/health/ready 0 B 93.8 kB
57
+ ├ λ /api/preview 0 B 93.8 kB
58
+ ├ ● /checkout 432 B 130 kB
59
+ ├ ● /login 1.29 kB 131 kB
60
+ └ ● /s 1.22 kB 159 kB
61
+ + First Load JS shared by all 96.9 kB
64
62
  ├ chunks/framework-21e9365486ba23a6.js 45.4 kB
65
- ├ chunks/main-5e45f8a409e3ce1c.js 33.1 kB
66
- ├ chunks/pages/_app-ddcbec71774555c4.js 12.6 kB
67
- ├ chunks/webpack-d9b9091082069dd3.js 2.45 kB
63
+ ├ chunks/main-9c9c62c368c0a47e.js 34.8 kB
64
+ ├ chunks/pages/_app-1930798899758fda.js 11.2 kB
65
+ ├ chunks/webpack-a45dc84c9a0ef3fd.js 2.43 kB
68
66
  └ css/5d1f64b61ea581f4.css 3.05 kB
69
67
 
70
68
  λ (Server) server-side renders at runtime (uses getInitialProps or getServerSideProps)
@@ -1,23 +1,9 @@
1
1
  $ jest
2
- PASS test/server/index.test.ts (28.342 s)
3
- FastStore GraphQL Layer
4
- @faststore/api
5
- ✓ should return a valid GraphQL schema (8 ms)
6
- ✓ should return a valid GraphQL schema contain all expected types (9 ms)
7
- ✓ should return a valid GraphQL schema contain all expected queries (1 ms)
8
- ✓ should return a valid GraphQL schema contain all expected mutations (1 ms)
9
- VTEX API Extension
10
- ✓ getTypeDefsFromFolder function should return an Array (9 ms)
11
- Third Party API Extension
12
- ✓ getTypeDefsFromFolder function should return an Array (18 ms)
13
- Final Schema after merging
14
- ✓ should return a valid merged GraphQL schema (81 ms)
15
- Envelop
16
- ✓ should exist with its plugins (44 ms)
17
- ✓ should handle options and execute (614 ms)
2
+ PASS test/server/cms/index.test.ts (28.834 s)
3
+ PASS test/server/index.test.ts (31.603 s)
18
4
 
19
- Test Suites: 1 passed, 1 total
20
- Tests: 9 passed, 9 total
5
+ Test Suites: 2 passed, 2 total
6
+ Tests: 12 passed, 12 total
21
7
  Snapshots: 0 total
22
- Time: 28.502 s
8
+ Time: 32.462 s
23
9
  Ran all test suites.
package/README.md CHANGED
@@ -43,7 +43,6 @@ A quick look at the top-level files and directories you'll see in a this NextJS
43
43
  ├── public
44
44
  ├── src
45
45
  ├── test
46
- ├── .babelrc.js
47
46
  ├── .editorconfig
48
47
  ├── .prettierignore
49
48
  ├── .prettierrrc
package/app/layout.tsx CHANGED
@@ -9,7 +9,9 @@ import ThirdPartyScripts from 'app/components/ThirdPartyScripts'
9
9
  import AnalyticsHandler from 'app/sdk/analytics'
10
10
  import ErrorBoundary from 'app/sdk/error/ErrorBoundary'
11
11
  import UIProvider from 'app/sdk/ui/UIProvider'
12
- import { WebFonts } from 'src/customizations/src/GlobalOverrides'
12
+
13
+ // TODO: The path will probably change when overriding fonts in the future
14
+ import DefaultFont from 'app/styles/fonts'
13
15
 
14
16
  // import GlobalSections from './components/cms/GlobalSections'
15
17
 
@@ -78,11 +80,12 @@ export default async function RootLayout({
78
80
  <AnalyticsHandler />
79
81
 
80
82
  <html>
81
- <head>
82
- {!process.env.DISABLE_3P_SCRIPTS && <ThirdPartyScripts />}
83
- <WebFonts />
84
- </head>
85
- <body className="theme">
83
+ <head>{!process.env.DISABLE_3P_SCRIPTS && <ThirdPartyScripts />}</head>
84
+ {/**
85
+ * TODO: Later when overriding fonts we should use the font variable in CSS files
86
+ * https://nextjs.org/docs/app/api-reference/components/font#css-variables
87
+ */}
88
+ <body className={`theme ${DefaultFont.className}`}>
86
89
  <UIProvider>
87
90
  <>
88
91
  {/* <GlobalSections {...globalSections}>{children}</GlobalSections>*/}
@@ -0,0 +1,10 @@
1
+ import { Inter } from 'next/font/google'
2
+
3
+ const customFont = Inter({
4
+ display: 'swap',
5
+ variable: '--fs-font-inter',
6
+ weight: ['400', '500', '600', '700', '900'],
7
+ subsets: ['latin'], // Either define subsets or set preload to false https://nextjs.org/docs/messages/google-fonts-missing-subsets
8
+ })
9
+
10
+ export default customFont
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@faststore/core",
3
- "version": "3.0.55",
3
+ "version": "3.0.57",
4
4
  "license": "MIT",
5
5
  "repository": "vtex/faststore",
6
6
  "browserslist": "supports es6-module and not dead",
@@ -62,7 +62,7 @@
62
62
  "css-loader": "^6.7.1",
63
63
  "deepmerge": "^4.3.1",
64
64
  "draftjs-to-html": "^0.9.1",
65
- "graphql": "^15.0.0",
65
+ "graphql": "^15.6.0",
66
66
  "include-media": "^1.4.10",
67
67
  "next": "^13.5.6",
68
68
  "next-seo": "^6.4.0",
@@ -125,5 +125,5 @@
125
125
  "node": "18.19.0",
126
126
  "yarn": "1.19.1"
127
127
  },
128
- "gitHead": "2bae747d260a05d7892b7664c029dac358a78e9d"
128
+ "gitHead": "b1790641313ddd75103e6697ecfe4adb3f66fef7"
129
129
  }
@@ -5,6 +5,14 @@ import MissingContentError from 'src/sdk/error/MissingContentError'
5
5
  import MultipleContentError from 'src/sdk/error/MultipleContentError'
6
6
  import config from '../../../faststore.config'
7
7
 
8
+ type Cache<T> = {
9
+ [key: string]: { data: Array<T> }
10
+ }
11
+ type ExtraOptions = {
12
+ cmsClient?: ClientCMS
13
+ cache?: Cache<ContentData>
14
+ }
15
+
8
16
  export type Options =
9
17
  | Locator
10
18
  | {
@@ -45,10 +53,68 @@ export const clientCMS = new ClientCMS({
45
53
  tenant: config.api.storeId,
46
54
  })
47
55
 
48
- export const getCMSPage = async (options: Options) => {
49
- return await (isLocator(options)
50
- ? clientCMS.getCMSPage(options).then((page) => ({ data: [page] }))
51
- : clientCMS.getCMSPagesByContentType(options.contentType, options.filters))
56
+ /*
57
+ * This in memory cache exists because for each page (think category or department)
58
+ * we are fetching all the pages of the same content type from the headless CMS to
59
+ * find the one that matches the slug.
60
+ *
61
+ * So instead of making multiple request for the Headless CMS API for each page we make
62
+ * one for each content-type and reuse the results for the next page.
63
+ *
64
+ * Since we rebuild on a CMS publication the server will go away and will "invalidate"
65
+ * the cache
66
+ */
67
+ const getCMSPageCache = {}
68
+
69
+ export const getCMSPage = async (
70
+ options: Options,
71
+ extraOptions?: ExtraOptions
72
+ ) => {
73
+ const cmsClient = extraOptions?.cmsClient ?? clientCMS
74
+ const cache = extraOptions?.cache ?? getCMSPageCache
75
+
76
+ if (isLocator(options)) {
77
+ return await cmsClient
78
+ .getCMSPage(options)
79
+ .then((page) => ({ data: [page] }))
80
+ }
81
+
82
+ if (!cache[options.contentType]) {
83
+ const pages = []
84
+ let page = 1
85
+ const perPage = 10
86
+ const response = await cmsClient.getCMSPagesByContentType(
87
+ options.contentType,
88
+ { ...options.filters, page: page, perPage }
89
+ )
90
+
91
+ pages.push(...response.data)
92
+
93
+ const totalPagesToFetch = Math.ceil(response.totalItems / perPage) // How many pages have content
94
+ const pagesToFetch = Array.from(
95
+ { length: totalPagesToFetch - 1 }, // We want all those pages minus the first one that we fetched
96
+ (_, i) => i + 2 // + 1 because indices are 0 based, and + 1 because we already fetched the first
97
+ )
98
+
99
+ if (response.totalItems > pages.length) {
100
+ const restOfPages = await Promise.all(
101
+ pagesToFetch.map((i) =>
102
+ cmsClient.getCMSPagesByContentType(options.contentType, {
103
+ ...options.filters,
104
+ page: i,
105
+ perPage,
106
+ })
107
+ )
108
+ )
109
+
110
+ restOfPages.forEach((response) => {
111
+ pages.push(...response.data)
112
+ })
113
+ }
114
+ cache[options.contentType] = { data: pages }
115
+ }
116
+
117
+ return cache[options.contentType]
52
118
  }
53
119
 
54
120
  export const getPage = async <T extends ContentData>(options: Options) => {
@@ -0,0 +1,95 @@
1
+ import { clientCMS, getCMSPage } from '../../../src/server/cms'
2
+ import { jest } from '@jest/globals'
3
+ import { ContentData } from '@vtex/client-cms'
4
+
5
+ describe('CMS Integration', () => {
6
+ const mockData = (count = 1) => {
7
+ const data: ContentData[] = []
8
+ for (let i = 0; i < count; i = i + 1) {
9
+ data.push({
10
+ id: `data-id-${i}`,
11
+ name: `data-name-${i}`,
12
+ status: `data-status-${i}`,
13
+ type: `data-type-${i}`,
14
+ sections: [],
15
+ releaseId: `release-${i}`,
16
+ })
17
+ }
18
+ return data
19
+ }
20
+
21
+ describe('getCMSPage', () => {
22
+ it('returns the first page if there is only one page', async () => {
23
+ const mockFunction = jest.fn(() => {
24
+ return Promise.resolve({
25
+ data: mockData(3),
26
+ hasNextPage: false,
27
+ totalItems: 3,
28
+ })
29
+ })
30
+ clientCMS.getCMSPagesByContentType = mockFunction
31
+
32
+ const result = await getCMSPage(
33
+ { contentType: 'plp' },
34
+ { cmsClient: clientCMS }
35
+ )
36
+
37
+ expect(mockFunction.mock.calls.length).toBe(1)
38
+ expect(result.data.length).toBe(3)
39
+ })
40
+
41
+ it('loads multiple pages', async () => {
42
+ const mockFunction: jest.Mock<typeof clientCMS.getCMSPagesByContentType> =
43
+ jest.fn()
44
+
45
+ mockFunction.mockImplementationOnce(() => {
46
+ return Promise.resolve({
47
+ data: mockData(10),
48
+ hasNextPage: true,
49
+ totalItems: 15,
50
+ })
51
+ })
52
+ mockFunction.mockImplementationOnce(() => {
53
+ return Promise.resolve({
54
+ data: mockData(5),
55
+ hasNextPage: false,
56
+ totalItems: 15,
57
+ })
58
+ })
59
+
60
+ clientCMS.getCMSPagesByContentType = mockFunction
61
+
62
+ const result = await getCMSPage(
63
+ { contentType: 'plp' },
64
+ { cmsClient: clientCMS, cache: {} }
65
+ )
66
+
67
+ expect(mockFunction.mock.calls.length).toBe(2)
68
+ expect(result.data.length).toBe(15)
69
+ })
70
+
71
+ it('it makes no request if the cache is filled', async () => {
72
+ const mockFunction: jest.Mock<typeof clientCMS.getCMSPagesByContentType> =
73
+ jest.fn()
74
+
75
+ mockFunction.mockImplementationOnce(() => {
76
+ return Promise.resolve({
77
+ data: mockData(10),
78
+ hasNextPage: true,
79
+ totalItems: 15,
80
+ })
81
+ })
82
+
83
+ clientCMS.getCMSPagesByContentType = mockFunction
84
+
85
+ const cache = { plp: { data: [] } }
86
+ const result = await getCMSPage(
87
+ { contentType: 'plp' },
88
+ { cmsClient: clientCMS, cache: cache }
89
+ )
90
+
91
+ expect(mockFunction.mock.calls.length).toBe(0)
92
+ expect(result.data.length).toBe(0)
93
+ })
94
+ })
95
+ })
package/.babelrc.js DELETED
@@ -1,12 +0,0 @@
1
- const { babelOptimizerPlugin } = require('@graphql-codegen/client-preset')
2
-
3
- module.exports = {
4
- presets: ['next/babel'],
5
- /** Replaces gql function calls for imports to the document data */
6
- plugins: [
7
- [
8
- babelOptimizerPlugin,
9
- { artifactDirectory: './@generated', gqlTagName: 'gql' },
10
- ],
11
- ],
12
- }
@@ -1 +0,0 @@
1
- "use strict";exports.id=1259,exports.ids=[1259],exports.modules={1259:(e,t,r)=>{r.r(t),r.d(t,{default:()=>search});var o=r(9740),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=1408,exports.ids=[1408],exports.modules={4764:(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}})},7820:(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(5453)),i=n(8039),l=n(1988),c=n(4764);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(9751);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)},5453:(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}},9751:(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,9 +0,0 @@
1
- exports.id=2074,exports.ids=[2074],exports.modules={792:(e,t,r)=>{"use strict";r.d(t,{Z:()=>i});var n=r(6689),a=r.n(n);let o=(0,n.forwardRef)(function({testId:e="fs-skeleton",loading:t=!0,shimmer:r=!0,children:n,size:o,border:i,borderRadius:s,...l},c){let d={width:o.width,height:o.height};return t?a().createElement("div",{ref:c,"data-fs-skeleton":!0,"data-testid":e,"data-fs-skeleton-border":i||null,style:s?{...d,borderRadius:s}:d,...l},r&&a().createElement("div",{"data-fs-skeleton-shimmer":!0})):a().createElement(a().Fragment,null,n)}),i=o},2946:(e,t,r)=>{"use strict";r.d(t,{Z:()=>DiscountBadge_DiscountBadge});var n=r(6689),a=r.n(n),o=r(276);let useDiscountPercent=(e,t)=>(0,n.useMemo)(()=>{let r=e-t,n=100*r/e;return Math.round(n)},[t,e]),DiscountBadge_DiscountBadge=({listPrice:e,spotPrice:t,thresholdLow:r=15,thresholdHigh:n=40,size:i,testId:s="fs-discount-badge"})=>{let l=useDiscountPercent(e,t);if(0===l)return a().createElement(a().Fragment,null);let c=l<=r?"low":l<=n?"medium":"high";return a().createElement(o.Z,{"data-fs-discount-badge":!0,"data-fs-discount-badge-variant":c,size:i,"data-testid":s},l,"% off")}},3024:(e,t,r)=>{"use strict";r.d(t,{Z:()=>c});var n=r(6689),a=r.n(n),o=r(2614),i=r(7041),s=r(4564);let l=(0,n.forwardRef)(function({children:e,testId:t="fs-rating",length:r=5,value:l=0,icon:c,onChange:d,...u},f){let[p,b]=(0,n.useState)(0),m={"data-fs-rating-icon-outline":!0},g=a().isValidElement(c)?c:a().createElement(o.Z,{name:"Star"});return a().createElement(s.Z,{ref:f,"data-fs-rating":!0,"data-fs-rating-actionable":"function"==typeof d,"data-testid":t,...u},Array.from({length:r}).map((e,r)=>{let n=r+1;return a().createElement("li",{key:`rating-${r}`,"data-fs-rating-item":n<=(p||l)?"full":n-l>0&&n-l<1?"partial":"empty","data-testid":`${t}-item`},d?a().createElement(i.Z,{"data-fs-rating-button":!0,icon:g,size:"small","aria-label":"rate",onClick:()=>{d(n)},onMouseEnter:()=>b(n),onMouseLeave:()=>b(l)}):a().createElement(a().Fragment,null,a().createElement("div",{"data-fs-rating-icon-wrapper":!0},g),a().isValidElement(c)?a().cloneElement(c,m):a().createElement(o.Z,{name:"Star","data-fs-rating-icon-outline":!0})))}))}),c=l},6737:(e,t,r)=>{"use strict";r.d(t,{Z:()=>i});var n=r(6689),a=r.n(n);let o=(0,n.forwardRef)(function({testId:e="fs-product-shelf",children:t,...r},n){return a().createElement("div",{ref:n,"data-fs-product-shelf":!0,"data-fs-content":"product-shelf","data-testid":e,...r},t)}),i=o},5553:(e,t,r)=>{"use strict";r.d(t,{m:()=>useViewItemListEvent});var n=r(1072),a=r(6689),o=r(5518);let useViewItemListEvent=({products:e,title:t,page:r,pageSize:i})=>{let{currency:{code:s}}=(0,o.kP)(),l=(0,a.useCallback)(()=>{(0,n._)({name:"view_item_list",params:{item_list_name:t,item_list_id:t,items:e.map(({node:e},t)=>({item_id:e.isVariantOf.productGroupID,item_name:e.isVariantOf.name,item_brand:e.brand.name,item_variant:e.sku,price:e.offers.offers[0].price,index:r*i+t+1,discount:e.offers.offers[0].listPrice-e.offers.offers[0].price,currency:s,item_variant_name:e.name,product_reference_id:e.gtin}))}})},[s,e,t,r,i]);return{sendViewItemListEvent:l}}},2440:(e,t,r)=>{"use strict";r.d(t,{Z:()=>v});var n=r(6689),a=r.n(n);let o=(0,n.forwardRef)(function({testId:e="fs-product-card",variant:t="default",bordered:r=!1,outOfStock:n,children:o,...i},s){return a().createElement("article",{ref:s,"data-fs-product-card":n?"out-of-stock":"","data-fs-product-card-variant":t,"data-fs-product-card-bordered":r,"data-testid":e,...i},o)}),i=(0,n.forwardRef)(function({testId:e="fs-product-card-image",aspectRatio:t=1,children:r,...n},o){return a().createElement("div",{ref:o,"data-fs-product-card-image":!0,"data-testid":e,style:{"--fs-product-card-image-aspect-ratio":t},...n},r)});var s=r(727),l=r(9088),c=r(3024),d=r(2614),u=r(2946),f=r(276),p=r(3339);let b=(0,n.forwardRef)(function({testId:e="fs-product-card-content",title:t,linkProps:r,price:n,outOfStock:o,outOfStockLabel:i="Out of stock",ratingValue:b,showDiscountBadge:m,buttonLabel:g="Add",onButtonClick:O,children:y,...P},h){let j=n?.listPrice?n.listPrice:0,v=n?.value?n.value:0;return a().createElement("section",{ref:h,"data-fs-product-card-content":!0,"data-fs-product-card-badge":m,"data-testid":e,...P},a().createElement("div",{"data-fs-product-card-heading":!0},a().createElement("h3",{"data-fs-product-card-title":!0},a().createElement(s.Z,{...r,title:t},a().createElement("span",null,t))),!o&&a().createElement(l.Z,{"data-fs-product-card-prices":!0,value:v,listPrice:j,formatter:n?.formatter}),b&&a().createElement(c.Z,{value:b,icon:a().createElement(d.Z,{name:"Star"})})),m&&!o&&a().createElement(u.Z,{listPrice:j,spotPrice:v}),o&&a().createElement(f.Z,null,i),O&&!o&&a().createElement("div",{"data-fs-product-card-actions":!0},a().createElement(p.Z,{variant:"primary",icon:a().createElement(d.Z,{name:"ShoppingCart"}),iconPosition:"left",size:"small",onClick:O},g)))});var m=r(1664),g=r.n(m),O=r(4410),y=r(5141),P=r(7143),h=r(997);let j=["product","index","bordered","variant","aspectRatio","imgProps","ratingValue","buttonLabel","onButtonClick","showDiscountBadge"];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 v=(0,n.memo)(function(e){let{product:t,index:r,bordered:a=!0,variant:s="default",aspectRatio:l=1,imgProps:c,ratingValue:d,buttonLabel:u="Add",onButtonClick:f,showDiscountBadge:p=!0}=e,m=function(e,t){if(null==e)return{};var r,n,a=function(e,t){if(null==e)return{};var r,n,a={},o=Object.keys(e);for(n=0;n<o.length;n++)r=o[n],t.indexOf(r)>=0||(a[r]=e[r]);return a}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(n=0;n<o.length;n++)r=o[n],!(t.indexOf(r)>=0)&&Object.prototype.propertyIsEnumerable.call(e,r)&&(a[r]=e[r])}return a}(e,j),{sku:v,isVariantOf:{name:w},image:[_],offers:{lowPrice:S,offers:[{listPrice:x,availability:E}]}}=t,k=_objectSpread(_objectSpread({},(0,P.w)({product:t,selectedOffer:0,index:r})),{},{as:g(),passHref:!0,legacyBehavior:!1,prefetch:!1}),D=(0,n.useMemo)(()=>"https://schema.org/InStock"!==E,[E]);return(0,h.jsxs)(o,_objectSpread(_objectSpread({outOfStock:D,bordered:a,variant:s,"data-fs-product-card-sku":v},m),{},{children:[h.jsx(i,{aspectRatio:l,children:h.jsx(O.Z,{src:_.url,alt:_.alternateName,sizes:`${c?.sizes??"(max-width: 768px) 40vw, 30vw"}`,width:c?.width??360,height:Math.round((Number(c?.height)||360)/l),loading:c?.loading})}),h.jsx(b,{title:w,price:{value:S,listPrice:x,formatter:y.P},ratingValue:d,outOfStock:D,onButtonClick:f,linkProps:k,showDiscountBadge:S<=x&&p})]}))})},9715:(e,t,r)=>{"use strict";r.d(t,{Z:()=>__WEBPACK_DEFAULT_EXPORT__});var n=r(6832),a=r(6324),o=r(7473),i=r(9198),s=r.n(i),l=r(997);let __WEBPACK_DEFAULT_EXPORT__=function({banner:e,newsletter:t}){return l.jsx(o.Z,{className:`${s().section} section-banner-newsletter`,children:(0,l.jsxs)("div",{"data-fs-banner-text-newsletter":!0,"data-fs-content":"banner-newsletter",children:[l.jsx(n.i,{title:e.title,caption:e.caption,link:e?.link,variant:e.variant,colorVariant:e.colorVariant}),l.jsx(a.O,{card:!0,colorVariant:t.colorVariant,title:t.title,description:t.description,icon:t.icon,privacyPolicy:t.privacyPolicy,emailInputLabel:t.emailInputLabel,displayNameInput:t.displayNameInput,nameInputLabel:t.nameInputLabel,subscribeButtonLabel:t.subscribeButtonLabel,subscribeButtonLoadingLabel:t.subscribeButtonLoadingLabel,toastSubscribe:t.toastSubscribe,toastSubscribeError:t.toastSubscribeError})]})})}},6832:(e,t,r)=>{"use strict";r.d(t,{i:()=>g});var n=r(9629),a=r(4208),o=r(7473),i=r(6319),s=r.n(i),l=r(6689),c=r.n(l);let d=(0,l.createContext)(void 0),u=(0,l.forwardRef)(function({children:e,testId:t="fs-banner-text",variant:r="primary",colorVariant:n="main",...a},o){return c().createElement(d.Provider,{value:{variant:r,colorVariant:n}},c().createElement("article",{ref:o,"data-fs-banner-text":!0,"data-fs-content":"banner-text","data-fs-banner-text-variant":r,"data-fs-banner-text-color-variant":n,"data-testid":t,...a},e))});var f=r(3922);let p=(0,l.forwardRef)(function({testId:e="fs-banner-text-content",title:t,caption:r,link:n,linkText:a,linkTargetBlank:o,...i},s){let{variant:u,colorVariant:p}=function(){let e=(0,l.useContext)(d);if(void 0===e)throw Error("Do not use BannerText components outside the BannerText context.");return e}();return c().createElement("header",{ref:s,"data-fs-banner-text-content":!0,"data-fs-content":"banner-text","data-testid":e,...i},c().createElement("div",{"data-fs-banner-text-heading":!0,"data-fs-banner-text-color-variant":p},c().createElement("h2",null,t),"secondary"===u&&r&&c().createElement("p",null,r)),c().createElement(f.Z,{"data-fs-banner-text-link":!0,href:n,variant:u,inverse:"main"===p,"aria-label":a,target:o?"_blank":void 0},a))});var b=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 m=(0,n.B)("BannerText",function({title:e,caption:t,link:{url:r,text:n,linkTargetBlank:i},variant:l,colorVariant:c}){let{BannerText:d,BannerTextContent:u}=(0,a.r3)();return b.jsx(o.Z,{className:`${s().section} section-banner layout__section`,children:b.jsx(d.Component,_objectSpread(_objectSpread({},d.props),{},{variant:l??d.props.variant??"primary",colorVariant:c??d.props.colorVariant??"main",children:b.jsx(u.Component,_objectSpread(_objectSpread({},u.props),{},{title:e,caption:t,link:r??u.props.link,linkText:n??u.props.linkText,linkTargetBlank:i??u.props.linkTargetBlank}))}))})},{BannerText:u,BannerTextContent:p});function OverriddenDefaultBannerText_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 OverriddenDefaultBannerText_objectSpread(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?OverriddenDefaultBannerText_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)):OverriddenDefaultBannerText_ownKeys(Object(r)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))})}return e}let g=(0,n.v)(OverriddenDefaultBannerText_objectSpread(OverriddenDefaultBannerText_objectSpread({},{section:"BannerText"}),{},{Section:m}))},7976:(e,t,r)=>{"use strict";r.d(t,{V:()=>P});var n=r(9629),a=r(4410),o=r(4208),i=r(7473),s=r(3215),l=r.n(s),c=r(6689),d=r.n(c);let u=(0,c.createContext)(void 0),f=(0,c.forwardRef)(function({children:e,testId:t="fs-hero",variant:r="primary",colorVariant:n="main",...a},o){return d().createElement(u.Provider,{value:{variant:r,colorVariant:n}},d().createElement("article",{ref:o,"data-fs-hero":!0,"data-fs-hero-variant":r,"data-fs-hero-color-variant":n,"data-testid":t,...a},e))}),p=(0,c.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),m=r(2614);let g=(0,c.forwardRef)(function({icon:e,link:t,title:r,linkText:n,linkTargetBlank:a,subtitle:o,children:i,testId:s="fs-hero-heading",...l},f){let{variant:p,colorVariant:g}=function(){let e=(0,c.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":s,...l},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},o),!!t&&d().createElement(b.Z,{href:t,inverse:"main"===g,icon:d().createElement(m.Z,{name:"ArrowRight"}),iconPosition:"right",target:a?"_blank":void 0},n)),!!e&&"secondary"===p&&d().createElement("span",{"data-fs-hero-icon":!0},e)))});var O=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:s,colorVariant:c,icon:d})=>{let{Hero:u,HeroImage:f,HeroHeader:p}=(0,o.r3)();return O.jsx(i.Z,{className:`${l().section} section-hero`,children:(0,O.jsxs)(u.Component,_objectSpread(_objectSpread({},u.props),{},{variant:s??u.props.variant??"primary",colorVariant:c??u.props.colorVariant??"main",children:[O.jsx(f.Component,_objectSpread(_objectSpread({},f.props),{},{children:O.jsx(a.Z,{loading:"eager",src:n.src,alt:n.alt,width:360,height:240,sizes:"(max-width: 360px) 50vw, (max-width: 768px) 90vw, 50vw"})})),O.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:g});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 P=(0,n.v)(OverriddenDefaultHero_objectSpread(OverriddenDefaultHero_objectSpread({},{section:"Hero"}),{},{Section:y}))},6324:(e,t,r)=>{"use strict";r.d(t,{O:()=>I});var n=r(9629),a=r(6689),o=r.n(a),i=r(6652),s=r(236),l=r(549),c=r.n(l),d=r(3362),u=r(3523);let useLazyQuery=(e,t,r)=>{let n=c()((0,u.km)(e.__meta__.operationName,t),()=>null,u.WN),execute=async t=>{let a=await (0,d.W)(e,t,r);n.mutate(a,!1)};return[execute,n]},f=s.HZ,useNewsletter=()=>{let[e,{data:t,error:r,isValidating:n}]=useLazyQuery(f,{data:{name:"",email:""}});return{subscribeUser:e,data:t,error:r,loading:n}};var p=r(4208),b=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 Newsletter_Newsletter=function({icon:{icon:e,alt:t},title:r,description:n,privacyPolicy:o,emailInputLabel:s,displayNameInput:l,nameInputLabel:c,subscribeButtonLabel:d,subscribeButtonLoadingLabel:u,card:f,toastSubscribe:m,toastSubscribeError:g,colorVariant:O}){let{Button:y,HeaderIcon:P,InputFieldName:h,InputFieldEmail:j,Newsletter:v,NewsletterAddendum:w,NewsletterContent:_,NewsletterForm:S,NewsletterHeader:x,ToastIconError:E,ToastIconSuccess:k}=(0,p.r3)(),{pushToast:D}=(0,i.l)(),{subscribeUser:T,loading:C,data:I}=useNewsletter(),Z=(0,a.useRef)(null),L=(0,a.useRef)(null),R=(0,a.useRef)(null);return b.jsx(v.Component,_objectSpread(_objectSpread({card:f,colorVariant:O},v.props),{},{children:(0,b.jsxs)(S.Component,_objectSpread(_objectSpread({ref:Z,onSubmit:e=>{e.preventDefault(),T({data:{name:L.current?.value??"",email:R.current?.value??""}}),I?.subscribeToNewsletter?.id?D(_objectSpread(_objectSpread({},m),{},{status:"INFO",icon:b.jsx(k.Component,_objectSpread(_objectSpread({width:30,height:30},k.props),{},{name:m.icon??k.props.name}))})):D(_objectSpread(_objectSpread({},g),{},{status:"ERROR",icon:b.jsx(E.Component,_objectSpread(_objectSpread({width:30,height:30},E.props),{},{name:m.icon??E.props.name}))})),Z.current.reset()}},S.props),{},{children:[b.jsx(x.Component,_objectSpread({title:r,description:n,icon:b.jsx(P.Component,_objectSpread(_objectSpread({width:32,height:32},P.props),{},{name:e??P.props.name,"aria-label":t??P.props["aria-label"]}))},x.props)),(0,b.jsxs)(_.Component,_objectSpread(_objectSpread({},_.props),{},{children:[l&&b.jsx(h.Component,_objectSpread(_objectSpread({id:"newsletter-name",required:!0},h.props),{},{label:c??h.props.label,inputRef:L})),b.jsx(j.Component,_objectSpread(_objectSpread({id:"newsletter-email",type:"email",required:!0},j.props),{},{label:s??j.props.label,inputRef:R})),b.jsx(w.Component,_objectSpread({addendum:o},w.props)),b.jsx(y.Component,_objectSpread(_objectSpread({variant:"secondary",inverse:!0,type:"submit"},y.props),{},{children:C?u:d}))]}))]}))}))};var m=r(7473),g=r(9518),O=r.n(g),y=r(3339),P=r(2614),h=r(3779);let j=(0,a.forwardRef)(function({card:e,children:t,colorVariant:r="main",testId:n="fs-newsletter",...a},i){return o().createElement("div",{ref:i,"data-testid":n,"data-fs-content":"newsletter","data-fs-newsletter":e?"card":"","data-fs-newsletter-color-variant":r,...a},t)}),v=(0,a.forwardRef)(function({children:e,testId:t="fs-newsletter-content",...r},n){return o().createElement("div",{ref:n,"data-testid":t,"data-fs-newsletter-content":!0,...r},e)}),w=(0,a.forwardRef)(function({children:e,onSubmit:t,testId:r="fs-newsletter-form",...n},a){return o().createElement("form",{ref:a,"data-testid":r,"data-fs-newsletter-form":!0,onSubmit:t,...n},e)}),_=(0,a.forwardRef)(function({icon:e,title:t,description:r,testId:n="fs-newsletter-header",...a},i){return o().createElement("header",{ref:i,"data-testid":n,"data-fs-newsletter-header":!0,...a},o().createElement("h3",{"data-fs-newsletter-header-title":!0},e,t),r&&o().createElement("span",{"data-fs-newsletter-header-description":!0},r))});var S=r(8641),x=r.n(S);let E=(0,a.forwardRef)(function({addendum:e,testId:t="fs-newsletter-addendum",...r},n){return o().createElement("span",{ref:n,"data-testid":t,"data-fs-newsletter-addendum":!0,...r},e)}),k=["addendum"];function NewsletterAddendum_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}let D={Button:y.Z,HeaderIcon:P.Z,InputFieldEmail:h.Z,InputFieldName:h.Z,Newsletter:j,NewsletterAddendum:function(e){let{addendum:t}=e,r=function(e,t){if(null==e)return{};var r,n,a=function(e,t){if(null==e)return{};var r,n,a={},o=Object.keys(e);for(n=0;n<o.length;n++)r=o[n],t.indexOf(r)>=0||(a[r]=e[r]);return a}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(n=0;n<o.length;n++)r=o[n],!(t.indexOf(r)>=0)&&Object.prototype.propertyIsEnumerable.call(e,r)&&(a[r]=e[r])}return a}(e,k);return b.jsx(E,function(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?NewsletterAddendum_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)):NewsletterAddendum_ownKeys(Object(r)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))})}return e}({dangerouslySetInnerHTML:{__html:function(e){if(!e)return"";let t=null;try{t=JSON.parse(e)}catch(e){throw Error('Newsletter\'s prop "addendum" is not a JSON string. This is happening because the overridden prop is malformed or the CMS is providing malformed content for that prop.',{cause:e})}return t?x()(t,void 0,void 0,(e,t)=>{var r;return"LINK"!==e.type?null:(r=e.data.url,`
2
- <a
3
- data-fs-link="true"
4
- data-fs-link-variant="inline"
5
- data-fs-link-inverse="true"
6
- data-fs-link-size="regular"
7
- data-testid="fs-link"
8
- href="${r}"
9
- >${t}</a>`)}):""}(t)}},r))},NewsletterContent:v,NewsletterForm:w,NewsletterHeader:_,ToastIconError:P.Z,ToastIconSuccess:P.Z},T=["icon","title","description","privacyPolicy","emailInputLabel","displayNameInput","nameInputLabel","subscribeButtonLabel","subscribeButtonLoadingLabel","card","toastSubscribe","toastSubscribeError","colorVariant"];function Newsletter_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}let C=(0,n.B)("Newsletter",function(e){let{icon:t,title:r,description:n,privacyPolicy:a,emailInputLabel:o,displayNameInput:i,nameInputLabel:s,subscribeButtonLabel:l,subscribeButtonLoadingLabel:c,card:d,toastSubscribe:u,toastSubscribeError:f,colorVariant:p}=e,g=function(e,t){if(null==e)return{};var r,n,a=function(e,t){if(null==e)return{};var r,n,a={},o=Object.keys(e);for(n=0;n<o.length;n++)r=o[n],t.indexOf(r)>=0||(a[r]=e[r]);return a}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(n=0;n<o.length;n++)r=o[n],!(t.indexOf(r)>=0)&&Object.prototype.propertyIsEnumerable.call(e,r)&&(a[r]=e[r])}return a}(e,T);return b.jsx(m.Z,{className:`${O().section} section-newsletter layout__section`,children:b.jsx(Newsletter_Newsletter,function(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?Newsletter_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)):Newsletter_ownKeys(Object(r)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))})}return e}({icon:t,title:r,description:n,privacyPolicy:a,emailInputLabel:o,displayNameInput:i,nameInputLabel:s,subscribeButtonLabel:l,subscribeButtonLoadingLabel:c,toastSubscribe:u,toastSubscribeError:f,card:d,colorVariant:p},g))})},D);function OverriddenDefaultNewsletter_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 OverriddenDefaultNewsletter_objectSpread(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?OverriddenDefaultNewsletter_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)):OverriddenDefaultNewsletter_ownKeys(Object(r)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))})}return e}let I=(0,n.v)(OverriddenDefaultNewsletter_objectSpread(OverriddenDefaultNewsletter_objectSpread({},{section:"Newsletter"}),{},{Section:C}))},4657:(e,t,r)=>{"use strict";r.d(t,{T:()=>m});var n=r(9629),a=r(9785),o=r(7473),i=r(8041),s=r(5531),l=r.n(s),c=r(6737),d=r(2440),u=r(7657);let f={ProductShelf:c.Z,__experimentalCarousel:u.Z,__experimentalProductCard:d.Z};var p=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}let b=(0,n.B)("ProductShelf",function(e){let t=Object.assign({},e),{ref:r,inView:n}=(0,a.useInView)();return p.jsx(o.Z,{className:`${l().section} section-product-shelf layout__section`,ref:r,children:p.jsx(i.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))})},f);function OverriddenDefaultProductShelf_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 OverriddenDefaultProductShelf_objectSpread(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?OverriddenDefaultProductShelf_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)):OverriddenDefaultProductShelf_ownKeys(Object(r)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))})}return e}let m=(0,n.v)(OverriddenDefaultProductShelf_objectSpread(OverriddenDefaultProductShelf_objectSpread({},{section:"ProductShelf"}),{},{Section:b}))},8485:(e,t,r)=>{"use strict";r.d(t,{Z:()=>ProductTiles_ProductTiles});var n=r(6689),a=r.n(n),o=r(9785),i=r(5553),s=r(2440);let l=(0,n.forwardRef)(function({testId:e="store-tiles",children:t,...r},o){let i=n.Children.count(t);return a().createElement("ul",{ref:o,role:"list","data-fs-tiles":!0,"data-fs-tiles-variant":3===i?"expanded-first":2===i?"expanded-first-two":"","data-fs-content":"tiles","data-testid":e,...r},t)});var c=r(997);let d=["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,a=function(e,t){if(null==e)return{};var r,n,a={},o=Object.keys(e);for(n=0;n<o.length;n++)r=o[n],t.indexOf(r)>=0||(a[r]=e[r]);return a}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(n=0;n<o.length;n++)r=o[n],!(t.indexOf(r)>=0)&&Object.prototype.propertyIsEnumerable.call(e,r)&&(a[r]=e[r])}return a}(e,d);return c.jsx(l,_objectSpread(_objectSpread({},r),{},{children:t}))},u=(0,n.forwardRef)(function({testId:e="store-tile",children:t,...r},n){return a().createElement("li",{ref:n,role:"listitem","data-fs-tile":!0,"data-testid":e,...r},t)});var f=r(792);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(f.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(f.Z,{size:{width:"70%",height:"1.5rem"}})}),c.jsx("div",{"data-fs-product-tile-skeleton-price":!0,children:c.jsx(f.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(f.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(ui_Tiles_Tiles,{children:Array.from({length:3},(e,t)=>c.jsx(u,{children:c.jsx(ProductTileSkeleton_ProductTileSkeleton,{index:t+1,aspectRatio:getRatio(3,t)})},String(t)))}):c.jsx(c.Fragment,{children:e})};var p=r(7490),b=r(7473),m=r(8348),g=r.n(m);let O=["title"],ProductTiles_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},ProductTiles_ProductTiles=e=>{let{title:t}=e,r=function(e,t){if(null==e)return{};var r,n,a=function(e,t){if(null==e)return{};var r,n,a={},o=Object.keys(e);for(n=0;n<o.length;n++)r=o[n],t.indexOf(r)>=0||(a[r]=e[r]);return a}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(n=0;n<o.length;n++)r=o[n],!(t.indexOf(r)>=0)&&Object.prototype.propertyIsEnumerable.call(e,r)&&(a[r]=e[r])}return a}(e,O),a=(0,n.useRef)(!1),{ref:l,inView:d}=(0,o.useInView)(),f=(0,p.k)(r),m=f?.search?.products,y=m?.edges??[],{sendViewItemListEvent:P}=(0,i.m)({products:y,title:t,page:0,pageSize:0});return((0,n.useEffect)(()=>{d&&!a.current&&y.length&&(P(),a.current=!0)},[d,y.length,P]),m?.edges.length===0)?null:(0,c.jsxs)(b.Z,{className:`${g().section} section-product-tiles layout__section`,ref:l,children:[c.jsx("h2",{className:"text__title-section layout__content",children:t}),c.jsx(ProductTilesSkeleton_ProductTilesSkeleton,{loading:!m,children:c.jsx(ui_Tiles_Tiles,{children:y.map((e,t)=>c.jsx(u,{children:c.jsx(s.Z,{"data-testid":"tile-card",product:e.node,index:t+1,variant:"wide",aspectRatio:ProductTiles_getRatio(y.length,t),imgProps:getSizes(y.length,t)})},e.node.id))})})]})}},5209:(e,t,r)=>{"use strict";r.d(t,{Z:()=>__WEBPACK_DEFAULT_EXPORT__});var n=r(792),a=r(997);let __WEBPACK_DEFAULT_EXPORT__=function({bordered:e,sectioned:t,displayButton:r,aspectRatio:o=1,variant:i="default"}){return(0,a.jsxs)("div",{"data-fs-product-card-skeleton":!0,"data-fs-product-card-skeleton-variant":i,"data-fs-product-card-skeleton-bordered":e,"data-fs-product-card-skeleton-sectioned":t,children:[a.jsx("div",{"data-fs-product-card-skeleton-image":!0,style:{"--fs-product-card-skeleton-image-aspect-ratio":o},children:a.jsx(n.Z,{size:{width:"100%",height:"100%"}})}),(0,a.jsxs)("div",{"data-fs-product-card-skeleton-content":!0,children:[a.jsx(n.Z,{"data-fs-product-card-skeleton-text":!0,size:{width:"90%",height:"1.5rem"}}),a.jsx(n.Z,{"data-fs-product-card-skeleton-text":!0,size:{width:"70%",height:"1.5rem"}}),a.jsx(n.Z,{"data-fs-product-card-skeleton-badge":!0,size:{width:"6rem",height:"2rem"},border:"pill"}),r&&a.jsx(n.Z,{"data-fs-product-card-skeleton-button":!0,size:{width:"6rem",height:"2rem"},style:{columnGap:".75rem"}})]})]})}},7657:(e,t,r)=>{"use strict";r.d(t,{Z:()=>ui_Carousel_Carousel});var n=r(6689),a=r.n(n),o=r(7041),i=r(2614),s=r(3789);let nextPage=(e,t)=>(e+1)%t,previousPage=(e,t)=>(t-(t-e+1)%t)%t;function reducer(e,t){switch(t.type){case"NEXT_PAGE":{let t=e.infinite?e.totalPages+1:e.totalPages,r=nextPage(e.currentPage,t),n=r%t*e.itemsPerPage;return{...e,sliding:!0,slideDirection:"next",currentItem:n,currentPage:r}}case"PREVIOUS_PAGE":{let t=e.infinite?e.totalPages+1:e.totalPages,r=e.infinite&&0===e.currentPage,n=r?-1:previousPage(e.currentPage,e.totalPages);return{...e,sliding:!0,slideDirection:"previous",currentItem:n%t*e.itemsPerPage,currentPage:n}}case"GO_TO_PAGE":if(t.payload.pageIndex===e.currentPage)return e;return{...e,sliding:t.payload.shouldSlide,slideDirection:t.payload.pageIndex>e.currentPage?"next":"previous",currentItem:t.payload.pageIndex%e.totalPages*e.itemsPerPage,currentPage:t.payload.pageIndex};case"STOP_SLIDE":return{...e,sliding:!1};default:return e}}let defaultSliderState=(e,t,r)=>({currentItem:0,currentPage:0,sliding:!1,slideDirection:"next",totalItems:e,itemsPerPage:t,totalPages:Math.ceil(e/t),infinite:r}),slide=(e,t)=>{"next"===e&&t({type:"NEXT_PAGE"}),"previous"===e&&t({type:"PREVIOUS_PAGE"}),"number"==typeof e&&t({type:"GO_TO_PAGE",payload:{pageIndex:e,shouldSlide:!0}})},useSlider=({totalItems:e,itemsPerPage:t=1,infiniteMode:r=!1,shouldSlideOnSwipe:a=!0,...o})=>{let[i,l]=(0,n.useReducer)(reducer,void 0,()=>defaultSliderState(e,t,r)),c=(0,s.useSwipeable)({onSwipedRight:()=>a&&slide("previous",l),onSwipedLeft:()=>a&&slide("next",l),trackMouse:!0,...o});return{handlers:c,slide,sliderState:i,sliderDispatch:l}};var l=r(3339);let defaultAriaLabel=(e,t,r)=>r?`Current page from ${e}`:`Go to page ${t+1} from ${e}`,c=(0,n.forwardRef)(function({id:e,totalQuantity:t,activeBullet:r,onClick:o,testId:i="fs-carousel-bullets",ariaLabelGenerator:s=defaultAriaLabel,ariaControlsGenerator:c,...d},u){let f=(0,n.useMemo)(()=>Array(t).fill(0),[t]);return a().createElement("div",{ref:u,"data-fs-carousel-bullets":!0,"data-testid":i,role:"tablist",...d},f.map((t,n)=>{let d=r===n;return a().createElement(l.Z,{key:`${e}-${n}`,role:"tab",tabIndex:-1,"data-fs-carousel-bullet":!0,testId:`${i}-bullet`,onClick:e=>o(e,n),"aria-label":s(e,n,d),"aria-controls":c?.(n),"aria-selected":d,variant:"tertiary"})}))}),useSlideVisibility=({currentSlide:e,itemsPerPage:t,totalItems:r})=>{let a=(0,n.useRef)(new Set);(0,n.useEffect)(()=>{for(let r=0;r<t;r++)a.current.add(e+r)},[e,t]);let isItemVisible=n=>(function({itemsPerPage:e,currentSlide:t,slideIdx:r,totalItems:n}){return t<0||t>=n||r>=t&&r<t+e})({slideIdx:n,currentSlide:e,itemsPerPage:t,totalItems:r});return{shouldRenderItem:e=>a.current.has(e)||isItemVisible(e),isItemVisible}},Carousel_CarouselItem=function({id:e,index:t,state:r,children:n,totalItems:o,infiniteMode:i,isScrollCarousel:s,marginRightValue:l}){let{isItemVisible:c,shouldRenderItem:d}=useSlideVisibility({totalItems:o,currentSlide:r.currentItem,itemsPerPage:r.itemsPerPage}),u={width:`calc((100% - ${l} * ${r.itemsPerPage-1}) / ${r.itemsPerPage})`},f=s&&r.itemsPerPage>1?{...u}:{width:"100%"},p=s||d(t-Number(i));return a().createElement("li",{style:f,id:`${e}-carousel-item-${t}`,"data-fs-carousel-item":!0,"data-fs-carousel-item-visible":c(t-Number(i))||void 0},p?n:null)},createTransformValues=(e,t)=>{let r={},n=100/t;for(let a=0;a<t;++a){let t=e?a-1:a,o=-(n*a);r[t]=o}return r},Carousel_Carousel=function({children:e,className:t,"aria-label":r,infiniteMode:s=!1,controls:l="complete",testId:d="fs-carousel",transition:u={duration:400,property:"transform"},id:f="fs-carousel",variant:p="scroll",itemsPerPage:b=1,navigationIcons:m,...g}){if(b<1)throw Error("itemsPerPage must be greater than or equal to 1");let O=(0,n.useRef)(null),y="slide"===p,P="scroll"===p,h=a().Children.toArray(e),j=h.length,v=s?j+2:j,w=`${u.property} ${u.duration}ms ${u.timing??""} ${u.delay??""}`,{handlers:_,slide:S,sliderState:x,sliderDispatch:E}=useSlider({itemsPerPage:b,infiniteMode:s,totalItems:j,shouldSlideOnSwipe:y,...g}),k=Math.ceil(j/x.itemsPerPage),[D,T]=(0,n.useState)("16px"),[C,I]=(0,n.useState)(0);(0,n.useEffect)(()=>{let e=O.current?.firstElementChild;e&&(T(getComputedStyle(e).getPropertyValue("margin-right")),I(Number(e.clientWidth)+parseInt(D,10)+1))},[C]);let Z=(0,n.useMemo)(()=>createTransformValues(s,v),[v,s]),L=s&&e?h.slice(0,1):[],R=s&&e?h.slice(j-1):[],B=R.concat(e??[],L),N=(0,n.useMemo)(()=>({width:`${100*v}%`,transition:x.sliding?w:void 0,transform:`translate3d(${Z[x.currentPage]}%, 0, 0)`}),[v,Z,w,x.sliding,x.currentPage]),K=(0,n.useMemo)(()=>({width:"100%",overflowX:"scroll",whiteSpace:"nowrap"}),[]),slidePrevious=()=>{!x.sliding&&(s||0!==x.currentPage)&&S("previous",E)},slideNext=()=>{!x.sliding&&(s||x.currentPage!==j-1)&&S("next",E)},onScrollPagination=async(e,t)=>{if("previous"===t&&0===x.currentPage||"next"===t&&x.currentPage===x.totalPages-1)return;let r=e*C*b;O.current?.scrollTo({left:r,behavior:"smooth"}),S(e,E)};return a().createElement("section",{id:f,"data-fs-carousel":!0,"data-fs-carousel-variant":p,className:t,"data-testid":d,"aria-label":r},a().createElement("div",{"data-fs-carousel-track-container":!0,style:{width:"100%",overflow:"hidden",display:P?"block":void 0},..._},a().createElement("ul",{"aria-live":"polite",ref:O,style:y&&N||P&&K,"data-fs-carousel-track":!0,onScroll:e=>{if(y||b>1)return;let t=Number(e.currentTarget.firstElementChild?.scrollWidth),r=e.currentTarget?.scrollLeft,n=r>t/2?Math.round:Math.floor,a=n(r/t);S(a,E)},onTransitionEnd:()=>{E({type:"STOP_SLIDE"}),s&&x.currentItem>=j&&E({type:"GO_TO_PAGE",payload:{pageIndex:0,shouldSlide:!1}}),s&&x.currentItem<0&&E({type:"GO_TO_PAGE",payload:{pageIndex:x.totalPages-1,shouldSlide:!1}})}},B.map((e,t)=>a().createElement(Carousel_CarouselItem,{id:f,index:t,key:String(t),state:x,totalItems:j,infiniteMode:s,isScrollCarousel:P,marginRightValue:D},e)))),1!==k&&("complete"===l||"navigationArrows"===l)&&a().createElement("div",{"data-fs-carousel-controls":!0},a().createElement(o.Z,{"data-fs-carousel-control":"left","aria-controls":f,disabled:!s&&0===x.currentPage,"aria-label":"previous",icon:m?.left??a().createElement(i.Z,{name:"ArrowLeft",width:20,height:20,weight:"bold"}),onClick:()=>{y&&slidePrevious(),P&&onScrollPagination(x.currentPage-1,"previous")}}),a().createElement(o.Z,{"data-fs-carousel-control":"right","aria-controls":f,disabled:!s&&x.currentPage===x.totalPages-1,"aria-label":"next",icon:m?.right??a().createElement(i.Z,{name:"ArrowRight",width:20,height:20,weight:"bold"}),onClick:()=>{y&&slideNext(),P&&onScrollPagination(x.currentPage+1,"next")}})),1!==k&&("complete"===l||"paginationBullets"===l)&&a().createElement(c,{id:f,tabIndex:0,activeBullet:x.currentPage,totalQuantity:k,onKeyDown:e=>{switch(e.key){case"ArrowLeft":y&&slidePrevious(),P&&onScrollPagination(x.currentPage-1,"previous");break;case"ArrowRight":y&&slideNext(),P&&onScrollPagination(x.currentPage+1,"next");break;case"Home":S(0,E);break;case"End":S(j-1,E)}},onClick:async(e,t)=>{y&&!x.sliding&&S(t,E),P&&onScrollPagination(t)},onFocus:e=>e.currentTarget.focus(),ariaControlsGenerator:e=>`${f}-carousel-item-${e}`}))};var d=r(997);let ui_Carousel_Carousel=function({id:e,testId:t,children:r,itemsPerPage:n,variant:a="scroll",infiniteMode:o=!1}){let i=window.innerWidth<=768;return d.jsx(Carousel_Carousel,{id:e,testId:t,variant:a,infiniteMode:o,itemsPerPage:i?1.6:n,children:r})}},8041:(e,t,r)=>{"use strict";r.d(t,{Z:()=>ui_ProductShelf_ProductShelf});var n=r(6689),a=r.n(n),o=r(5553),i=r(6737);let s=(0,n.forwardRef)(function({testId:e="fs-product-shelf-items",children:t,...r},n){return a().createElement("ul",{role:"list",ref:n,"data-fs-product-shelf-items":!0,"data-fs-content":"product-shelf","data-testid":e,...r},t)}),l=(0,n.forwardRef)(function({testId:e="fs-product-shelf-item",children:t,...r},n){return a().createElement("li",{role:"listitem",ref:n,"data-fs-product-shelf-item":!0,"data-testid":e,...r},t)});var c=r(5209),d=r(997);let ProductShelfSkeleton_ProductShelfSkeleton=function({children:e,aspectRatio:t,itemsPerPage:r,loading:n=!0}){return n?d.jsx(i.Z,{"data-fs-product-shelf-skeleton":!0,children:d.jsx(s,{children:Array.from({length:r},(e,r)=>d.jsx(l,{children:d.jsx(c.Z,{aspectRatio:t,sectioned:!0,bordered:!0})},String(r)))})}):d.jsx(d.Fragment,{children:e})};var u=r(4208),f=r(7490),p=r(1411);let b=["title","inView","productCardConfiguration","numberOfItems","itemsPerPage"];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_ProductShelf_ProductShelf=function(e){let{title:t,inView:r,productCardConfiguration:{bordered:a,showDiscountBadge:i}={},numberOfItems:s,itemsPerPage:l=5}=e,c=function(e,t){if(null==e)return{};var r,n,a=function(e,t){if(null==e)return{};var r,n,a={},o=Object.keys(e);for(n=0;n<o.length;n++)r=o[n],t.indexOf(r)>=0||(a[r]=e[r]);return a}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(n=0;n<o.length;n++)r=o[n],!(t.indexOf(r)>=0)&&Object.prototype.propertyIsEnumerable.call(e,r)&&(a[r]=e[r])}return a}(e,b),{ProductShelf:m,__experimentalCarousel:g,__experimentalProductCard:O}=(0,u.r3)(),y=(0,p.B5)(t),P=(0,n.useId)(),h=(0,n.useRef)(!1),j=(0,f.k)(_objectSpread({first:s},c)),v=j?.search?.products,w=v?.edges??[],{sendViewItemListEvent:_}=(0,o.m)({products:w,title:t,page:0,pageSize:0});return((0,n.useEffect)(()=>{r&&!h.current&&w.length&&(_(),h.current=!0)},[r,w.length,_]),v?.edges.length===0)?null:(0,d.jsxs)(d.Fragment,{children:[d.jsx("h2",{className:"text__title-section layout__content",children:t}),d.jsx(ProductShelfSkeleton_ProductShelfSkeleton,{aspectRatio:1,loading:void 0===v,itemsPerPage:l,children:d.jsx(m.Component,_objectSpread(_objectSpread({},m.props),{},{children:d.jsx(g.Component,_objectSpread(_objectSpread({id:y||P,itemsPerPage:l},g.props),{},{children:w.map((e,t)=>(0,n.createElement)(O.Component,_objectSpread(_objectSpread({aspectRatio:1,imgProps:{width:216,height:216,sizes:"(max-width: 768px) 42vw, 30vw"}},O.props),{},{bordered:a??O.props.bordered,showDiscountBadge:i??O.props.showDiscountBadge,key:`${e.node.id}`,product:e.node,index:t+1})))}))}))})]})}},4259:(e,t,r)=>{"use strict";r.d(t,{K:()=>a,g:()=>n});let n=12,a=5},3304:(e,t,r)=>{"use strict";r.d(t,{En:()=>isSearchPage,OJ:()=>isPLP,ZP:()=>__WEBPACK_DEFAULT_EXPORT__,al:()=>usePDP,qt:()=>usePage,tS:()=>isPDP});var n=r(6689),a=r(997);let isPDP=e=>e?.data?.product?.sku!=void 0&&e?.data?.product?.sku!=null,isPLP=e=>e?.data?.collection?.seo!=void 0&&e?.data?.collection?.seo!=null&&e?.data?.collection?.sku==void 0,isSearchPage=e=>void 0===e||e?.data?.title!=void 0||e?.data?.searchTerm!=void 0,o=(0,n.createContext)(null);function usePage(){let{context:e}=(0,n.useContext)(o);if(null==e)throw Error("Missing Overrides context on React tree");return e}let usePDP=()=>usePage(),__WEBPACK_DEFAULT_EXPORT__=function({context:e,children:t}){let r=(0,n.useMemo)(()=>({context:e}),[e]);return a.jsx(o.Provider,{value:r,children:t})}},2465:(e,t,r)=>{"use strict";r.d(t,{y:()=>useLocalizedVariables});var n=r(6689),a=r(5518),o=r(4259);let toArray=e=>Array.isArray(e)?e:e?[e]:[],useLocalizedVariables=({first:e,after:t,sort:r,term:i,selectedFacets:s})=>{let{channel:l,locale:c}=(0,a.kP)();return(0,n.useMemo)(()=>{let n=toArray(s);return{first:e??o.K,after:t??"0",sort:r??"score_desc",term:i??"",selectedFacets:[...n,{key:"channel",value:l??""},{key:"locale",value:c}]}},[s,e,t,r,i,l,c])}},7490:(e,t,r)=>{"use strict";r.d(t,{k:()=>useProductsQuery});var n=r(236),a=r(3523),o=r(2465);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}let i=n.gU,useProductsQuery=(e,t)=>{let r=(0,o.y)(e),{data:n}=(0,a.aM)(i,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 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}({fallbackData:null,suspense:!0},t));return n}},1411:(e,t,r)=>{"use strict";function textToKebabCase(e){let t=e.replace(/[^\w\s]/gi,"-");return(t=(t=t.replace(/\s+/g,"-")).toLowerCase())??""}function normalizePLPSlug(e){let t=e.replace(/^\/+|\/+$/g,"");return"/"+(t=t.replace(/\/+/g,"/").replace(/\s+/g,"")).toLowerCase()}function findPLPTemplateBySlug(e,t){return e.find(e=>{if(!e.settings?.template?.value)return!1;let r=normalizePLPSlug(e.settings?.template?.value);return r===t})}function findBestPLPTemplate(e,t){let r=normalizePLPSlug(t),n=findPLPTemplateBySlug(e,r);for(;!n&&-1!==r.lastIndexOf("/");)n=findPLPTemplateBySlug(e,r=r.substring(0,r.lastIndexOf("/")));return n||e.find(e=>!e.settings?.template?.value)||e[0]}function findBestPDPTemplate(e,t,r){let n=r?.breadcrumbList?.itemListElement?[...r?.breadcrumbList?.itemListElement].reverse().map(({item:e})=>e):[];for(let r of(n.unshift(t),n))for(let t of e){if(!t.settings?.template?.value)continue;let e=function(e){let t=e.trim().replace(/^\/+|\/+$/g,"");return t.startsWith("/")||(t="/"+t),t.endsWith("/p")||(t+="/"),(t=t.replace(/\/+/g,"/").replace(/\s+/g,"")).toLowerCase()}(t.settings.template.value);if(e===r)return t}return e.find(e=>!e.settings?.template?.value)||e[0]}r.d(t,{$j:()=>findBestPDPTemplate,AQ:()=>findBestPLPTemplate,B5:()=>textToKebabCase})},9198:e=>{e.exports={section:"section_section__YBgvV"}},6319:e=>{e.exports={section:"section_section__p_P_L"}},3215:e=>{e.exports={section:"section_section__Pdf2v"}},9518:e=>{e.exports={section:"section_section__6iqtV"}},5531:e=>{e.exports={section:"section_section__TjtMz",loading:"section_loading__ffSvt"}},8348:e=>{e.exports={section:"section_section__Wwc_y",loading:"section_loading__7M1Dl"}}};