@faststore/core 2.2.78 → 3.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (252) hide show
  1. package/.babelrc.js +12 -0
  2. package/.next/BUILD_ID +1 -1
  3. package/.next/build-manifest.json +89 -89
  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/webpack/client-production/0.pack +0 -0
  8. package/.next/cache/webpack/client-production/index.pack +0 -0
  9. package/.next/cache/webpack/server-production/0.pack +0 -0
  10. package/.next/cache/webpack/server-production/index.pack +0 -0
  11. package/.next/images-manifest.json +1 -1
  12. package/.next/next-minimal-server.js.nft.json +1 -0
  13. package/.next/next-server.js.nft.json +1 -1
  14. package/.next/prerender-manifest.js +1 -0
  15. package/.next/prerender-manifest.json +1 -1
  16. package/.next/react-loadable-manifest.json +17 -17
  17. package/.next/required-server-files.json +1 -1
  18. package/.next/routes-manifest.json +1 -1
  19. package/.next/server/chunks/119.js +1 -0
  20. package/.next/server/chunks/12.js +1 -0
  21. package/.next/server/chunks/187.js +1 -0
  22. package/.next/server/chunks/202.js +1 -0
  23. package/.next/server/chunks/24.js +1 -0
  24. package/.next/server/chunks/242.js +1 -0
  25. package/.next/server/chunks/247.js +1 -0
  26. package/.next/server/chunks/344.js +1 -0
  27. package/.next/server/chunks/404.js +1 -434
  28. package/.next/server/chunks/414.js +1 -0
  29. package/.next/server/chunks/484.js +1 -0
  30. package/.next/server/chunks/493.js +1 -0
  31. package/.next/server/chunks/498.js +1 -0
  32. package/.next/server/chunks/540.js +1 -0
  33. package/.next/server/chunks/57.js +1 -434
  34. package/.next/server/chunks/624.js +1 -0
  35. package/.next/server/chunks/640.js +6 -0
  36. package/.next/server/chunks/646.js +279 -0
  37. package/.next/server/chunks/659.js +9 -0
  38. package/.next/server/chunks/679.js +1 -0
  39. package/.next/server/chunks/693.js +1 -58
  40. package/.next/server/chunks/694.js +1 -0
  41. package/.next/server/chunks/779.js +1 -58
  42. package/.next/server/chunks/82.js +8 -0
  43. package/.next/server/chunks/857.js +1 -0
  44. package/.next/server/chunks/859.js +4 -957
  45. package/.next/server/chunks/881.js +1 -0
  46. package/.next/server/chunks/917.js +1 -0
  47. package/.next/server/chunks/936.js +1 -0
  48. package/.next/server/chunks/96.js +1 -0
  49. package/.next/server/chunks/997.js +1 -0
  50. package/.next/server/functions-config-manifest.json +1 -0
  51. package/.next/server/middleware-build-manifest.js +1 -1
  52. package/.next/server/middleware-react-loadable-manifest.js +1 -1
  53. package/.next/server/next-font-manifest.js +1 -0
  54. package/.next/server/next-font-manifest.json +1 -0
  55. package/.next/server/pages/404.js +1 -391
  56. package/.next/server/pages/404.js.nft.json +1 -1
  57. package/.next/server/pages/500.js +1 -395
  58. package/.next/server/pages/500.js.nft.json +1 -1
  59. package/.next/server/pages/[...slug].js +1 -1071
  60. package/.next/server/pages/[...slug].js.nft.json +1 -1
  61. package/.next/server/pages/[slug]/p.js +1 -2315
  62. package/.next/server/pages/[slug]/p.js.nft.json +1 -1
  63. package/.next/server/pages/_app.js +1 -301
  64. package/.next/server/pages/_app.js.nft.json +1 -1
  65. package/.next/server/pages/_document.js +1 -363
  66. package/.next/server/pages/_document.js.nft.json +1 -1
  67. package/.next/server/pages/_error.js +1 -164
  68. package/.next/server/pages/_error.js.nft.json +1 -1
  69. package/.next/server/pages/account.js +1 -370
  70. package/.next/server/pages/account.js.nft.json +1 -1
  71. package/.next/server/pages/api/graphql.js +1 -3085
  72. package/.next/server/pages/api/graphql.js.nft.json +1 -1
  73. package/.next/server/pages/api/health/live.js +1 -31
  74. package/.next/server/pages/api/health/live.js.nft.json +1 -1
  75. package/.next/server/pages/api/health/ready.js +1 -31
  76. package/.next/server/pages/api/health/ready.js.nft.json +1 -1
  77. package/.next/server/pages/api/preview.js +1 -137
  78. package/.next/server/pages/api/preview.js.nft.json +1 -1
  79. package/.next/server/pages/checkout.js +1 -370
  80. package/.next/server/pages/checkout.js.nft.json +1 -1
  81. package/.next/server/pages/en-US/404.html +2 -2
  82. package/.next/server/pages/en-US/404.json +1 -1
  83. package/.next/server/pages/en-US/500.html +2 -2
  84. package/.next/server/pages/en-US/500.json +1 -1
  85. package/.next/server/pages/en-US/account.html +2 -2
  86. package/.next/server/pages/en-US/checkout.html +2 -2
  87. package/.next/server/pages/en-US/login.html +2 -2
  88. package/.next/server/pages/en-US/login.json +1 -1
  89. package/.next/server/pages/en-US/s.html +2 -2
  90. package/.next/server/pages/en-US.html +4 -4
  91. package/.next/server/pages/en-US.json +1 -1
  92. package/.next/server/pages/index.js +1 -439
  93. package/.next/server/pages/index.js.nft.json +1 -1
  94. package/.next/server/pages/login.js +1 -382
  95. package/.next/server/pages/login.js.nft.json +1 -1
  96. package/.next/server/pages/s.js +1 -554
  97. package/.next/server/pages/s.js.nft.json +1 -1
  98. package/.next/server/pages-manifest.json +1 -18
  99. package/.next/server/webpack-api-runtime.js +1 -229
  100. package/.next/server/webpack-runtime.js +1 -229
  101. package/.next/static/Xf_-r26LvSZnfqjpm_a71/_buildManifest.js +1 -0
  102. package/.next/static/chunks/104-d42a7ff6c8b8dd89.js +1 -0
  103. package/.next/static/chunks/161-b39fe2f79ff7bc85.js +1 -0
  104. package/.next/static/chunks/202.c7d8a71173edecfb.js +1 -0
  105. package/.next/static/chunks/217.01bc0ad07edd6f1b.js +1 -0
  106. package/.next/static/chunks/247.52b3924429a474c6.js +1 -0
  107. package/.next/static/chunks/484.b82b73b1d8c37e02.js +1 -0
  108. package/.next/static/chunks/540.6c62d2536d42a1e0.js +1 -0
  109. package/.next/static/chunks/575-853fb8b1ba4ce8c4.js +14 -0
  110. package/.next/static/chunks/624.d3de62b4562a33f3.js +1 -0
  111. package/.next/static/chunks/629-b7b5ef6f15ecba9d.js +1 -0
  112. package/.next/static/chunks/65.da22595d53beae76.js +1 -0
  113. package/.next/static/chunks/758.b53ee01b506973e0.js +1 -0
  114. package/.next/static/chunks/857.d2299cfe995af21d.js +1 -0
  115. package/.next/static/chunks/framework-8e279965036b6169.js +33 -0
  116. package/.next/static/chunks/main-6f63f6746cc029db.js +1 -0
  117. package/.next/static/chunks/pages/404-1334d11ab8467b3d.js +1 -0
  118. package/.next/static/chunks/pages/500-449c5bd51f98423f.js +1 -0
  119. package/.next/static/chunks/pages/[...slug]-7c8ec664c28eca52.js +1 -0
  120. package/.next/static/chunks/pages/[slug]/p-a4f7d7c00fdf4157.js +1 -0
  121. package/.next/static/chunks/pages/_app-6516d0c2c7e0e686.js +68 -0
  122. package/.next/static/chunks/pages/_error-fbf331a03642b495.js +1 -0
  123. package/.next/static/chunks/pages/account-dbc5c028225cd1ac.js +1 -0
  124. package/.next/static/chunks/pages/checkout-29ae2c37eaf172e1.js +1 -0
  125. package/.next/static/chunks/pages/index-00798cca3b47590d.js +1 -0
  126. package/.next/static/chunks/pages/login-c4d2c856008df5ac.js +1 -0
  127. package/.next/static/chunks/pages/s-dacaed02ad104d73.js +1 -0
  128. package/.next/static/chunks/webpack-1c08d77cfe1b8585.js +1 -0
  129. package/.next/static/css/{021de9c7b050d301.css → 0d45c82d8887a269.css} +1 -1
  130. package/.next/static/css/{e772e7786bb4dee9.css → 211c7542af66d8b4.css} +1 -1
  131. package/.next/static/css/{df588bb98c0b0ca6.css → 2980acad3f8e1028.css} +1 -1
  132. package/.next/static/css/{510895065f32ed2f.css → 4c4d90eb8cb1d2b7.css} +1 -1
  133. package/.next/static/css/{938781cdc945862e.css → 821a5219786be653.css} +1 -1
  134. package/.next/static/css/{def381bf7c69fa2e.css → 96e3fddf695d6aa9.css} +1 -1
  135. package/.next/static/css/{6a7fdc5a21fbead5.css → b9d9ba1b04f3160d.css} +1 -1
  136. package/.next/static/css/{9558da13053ac066.css → cff9aafa16fccc9c.css} +1 -1
  137. package/.next/static/css/{7e897ebb936fac09.css → d586715f4f707df4.css} +1 -1
  138. package/.next/static/css/{cb7d1fcea42fab9c.css → e32410b31c666cb2.css} +1 -1
  139. package/.next/trace +91 -82
  140. package/.turbo/turbo-build.log +37 -42
  141. package/.turbo/turbo-lint.log +0 -3
  142. package/.turbo/turbo-test.log +9 -9
  143. package/@generated/gql.ts +196 -0
  144. package/@generated/{graphql/index.ts → graphql.ts} +718 -252
  145. package/@generated/index.ts +1 -0
  146. package/@generated/persisted-documents.json +13 -0
  147. package/api/index.ts +1 -1
  148. package/cms/faststore/content-types.json +18 -0
  149. package/cms/faststore/sections.json +73 -0
  150. package/codegen.ts +61 -0
  151. package/index.ts +1 -0
  152. package/jest.config.js +9 -1
  153. package/next.config.js +2 -0
  154. package/package.json +14 -10
  155. package/src/components/product/ProductCard/ProductCard.tsx +4 -4
  156. package/src/components/search/Filter/Filter.tsx +4 -3
  157. package/src/components/sections/EmptyState/DefaultComponents.ts +5 -0
  158. package/src/components/sections/EmptyState/EmptyState.tsx +91 -8
  159. package/src/components/sections/EmptyState/OverriddenDefaultEmptyState.ts +15 -0
  160. package/src/components/sections/ProductDetails/ProductDetails.tsx +6 -6
  161. package/src/components/ui/Image/Image.tsx +1 -1
  162. package/src/customizations/src/fragments/ClientManyProducts.ts +3 -3
  163. package/src/customizations/src/fragments/ClientProduct.ts +3 -3
  164. package/src/customizations/src/fragments/ClientProductGallery.ts +3 -3
  165. package/src/customizations/src/fragments/ClientSearchSuggestions.ts +3 -3
  166. package/src/customizations/src/fragments/ClientShippingSimulation.ts +3 -3
  167. package/src/customizations/src/fragments/ClientTopSearchSuggestions.ts +3 -3
  168. package/src/customizations/src/fragments/ServerCollectionPage.ts +3 -3
  169. package/src/customizations/src/fragments/ServerProduct.ts +3 -3
  170. package/src/pages/404.tsx +32 -30
  171. package/src/pages/500.tsx +32 -34
  172. package/src/pages/[...slug].tsx +4 -4
  173. package/src/pages/[slug]/p.tsx +7 -7
  174. package/src/pages/api/graphql.ts +10 -4
  175. package/src/pages/login.tsx +31 -8
  176. package/src/sdk/cart/index.ts +3 -3
  177. package/src/sdk/graphql/prefetchQuery.ts +4 -3
  178. package/src/sdk/graphql/request.ts +67 -8
  179. package/src/sdk/graphql/useLazyQuery.ts +4 -3
  180. package/src/sdk/graphql/useQuery.ts +7 -3
  181. package/src/sdk/newsletter/useNewsletter.ts +4 -4
  182. package/src/sdk/product/usePageProductsQuery.ts +3 -3
  183. package/src/sdk/product/useProductGalleryQuery.ts +10 -8
  184. package/src/sdk/product/useProductQuery.ts +3 -3
  185. package/src/sdk/product/useProductsPrefetch.ts +5 -3
  186. package/src/sdk/product/useProductsQuery.ts +3 -4
  187. package/src/sdk/search/useSuggestions.ts +3 -3
  188. package/src/sdk/search/useTopSearch.ts +3 -4
  189. package/src/sdk/session/index.ts +4 -4
  190. package/src/sdk/shipping/index.ts +3 -3
  191. package/src/server/generator/schema.ts +1 -1
  192. package/src/server/index.ts +11 -6
  193. package/src/typings/overrides.ts +3 -2
  194. package/test/server/index.test.ts +6 -1
  195. package/.babelrc +0 -4
  196. package/.next/cache/next-server.js.nft.json +0 -1
  197. package/.next/server/chunks/117.js +0 -427
  198. package/.next/server/chunks/177.js +0 -125
  199. package/.next/server/chunks/183.js +0 -122
  200. package/.next/server/chunks/184.js +0 -61
  201. package/.next/server/chunks/289.js +0 -243
  202. package/.next/server/chunks/312.js +0 -676
  203. package/.next/server/chunks/350.js +0 -2898
  204. package/.next/server/chunks/386.js +0 -200
  205. package/.next/server/chunks/574.js +0 -145
  206. package/.next/server/chunks/576.js +0 -122
  207. package/.next/server/chunks/585.js +0 -639
  208. package/.next/server/chunks/632.js +0 -514
  209. package/.next/server/chunks/661.js +0 -1451
  210. package/.next/server/chunks/676.js +0 -32
  211. package/.next/server/chunks/719.js +0 -84
  212. package/.next/server/chunks/74.js +0 -4152
  213. package/.next/server/chunks/825.js +0 -4074
  214. package/.next/server/chunks/854.js +0 -72
  215. package/.next/server/chunks/863.js +0 -111
  216. package/.next/server/chunks/898.js +0 -711
  217. package/.next/server/chunks/903.js +0 -1926
  218. package/.next/server/chunks/98.js +0 -163
  219. package/.next/server/chunks/988.js +0 -211
  220. package/.next/static/JJRI44e-3F3WVhD-DxmO2/_buildManifest.js +0 -1
  221. package/.next/static/chunks/223-cb77217cce52d45c.js +0 -1
  222. package/.next/static/chunks/251.11f5198fc8bef3a4.js +0 -1
  223. package/.next/static/chunks/386.d01e0db26c523f0f.js +0 -1
  224. package/.next/static/chunks/397-0d3aada1012cd78b.js +0 -1
  225. package/.next/static/chunks/574.70612be06fd1365f.js +0 -1
  226. package/.next/static/chunks/585.6561778b7763b79e.js +0 -1
  227. package/.next/static/chunks/651.7142f31ce1e052b3.js +0 -1
  228. package/.next/static/chunks/675-479a97aecebead97.js +0 -1
  229. package/.next/static/chunks/741.52f7fb873418346f.js +0 -1
  230. package/.next/static/chunks/800.5d92de2974baf641.js +0 -1
  231. package/.next/static/chunks/881-57643fb90f59e576.js +0 -1
  232. package/.next/static/chunks/98.40c7e17d9de4eb8f.js +0 -1
  233. package/.next/static/chunks/988.afda042dd9ba11d1.js +0 -1
  234. package/.next/static/chunks/framework-dfd14d7ce6600b03.js +0 -1
  235. package/.next/static/chunks/main-e4e873ee741162eb.js +0 -1
  236. package/.next/static/chunks/pages/404-e106cb9a78182f5f.js +0 -1
  237. package/.next/static/chunks/pages/500-d28aa4a8ce88bddd.js +0 -1
  238. package/.next/static/chunks/pages/[...slug]-c4abcc133f85d9d0.js +0 -1
  239. package/.next/static/chunks/pages/[slug]/p-4a75b11857b82b5c.js +0 -1
  240. package/.next/static/chunks/pages/_app-30b9666307e4b3b1.js +0 -1
  241. package/.next/static/chunks/pages/_error-319451dea77827a6.js +0 -1
  242. package/.next/static/chunks/pages/account-bf9c88a9cac80d8a.js +0 -1
  243. package/.next/static/chunks/pages/checkout-6ca76c1e88a28ac4.js +0 -1
  244. package/.next/static/chunks/pages/index-629ba146ae5f0ecf.js +0 -1
  245. package/.next/static/chunks/pages/login-d2af0de13ea75848.js +0 -1
  246. package/.next/static/chunks/pages/s-d729254b91430d1c.js +0 -1
  247. package/.next/static/chunks/webpack-54ce04ec11860b0b.js +0 -1
  248. package/@generated/graphql/persisted.json +0 -13
  249. package/codegen.yml +0 -23
  250. package/src/components/sections/EmptyState/Overrides.tsx +0 -14
  251. package/.next/static/{JJRI44e-3F3WVhD-DxmO2 → Xf_-r26LvSZnfqjpm_a71}/_ssgManifest.js +0 -0
  252. package/@generated/{graphql/schema.graphql → schema.graphql} +508 -508
@@ -1,2315 +1 @@
1
- (() => {
2
- var exports = {};
3
- exports.id = 103;
4
- exports.ids = [103];
5
- exports.modules = {
6
-
7
- /***/ 2951:
8
- /***/ ((module, __webpack_exports__, __webpack_require__) => {
9
-
10
- "use strict";
11
- __webpack_require__.a(module, async (__webpack_handle_async_dependencies__, __webpack_async_result__) => { try {
12
- /* harmony export */ __webpack_require__.d(__webpack_exports__, {
13
- /* harmony export */ "Z": () => (__WEBPACK_DEFAULT_EXPORT__)
14
- /* harmony export */ });
15
- /* harmony import */ var src_components_sections_BannerText_OverriddenDefaultBannerText__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(7127);
16
- /* harmony import */ var src_components_sections_Newsletter_OverriddenDefaultNewsletter__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(3122);
17
- /* harmony import */ var _Section__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(3271);
18
- /* harmony import */ var _section_module_scss__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(5411);
19
- /* harmony import */ var _section_module_scss__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_section_module_scss__WEBPACK_IMPORTED_MODULE_2__);
20
- /* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(997);
21
- /* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__);
22
- var __webpack_async_dependencies__ = __webpack_handle_async_dependencies__([src_components_sections_Newsletter_OverriddenDefaultNewsletter__WEBPACK_IMPORTED_MODULE_4__]);
23
- src_components_sections_Newsletter_OverriddenDefaultNewsletter__WEBPACK_IMPORTED_MODULE_4__ = (__webpack_async_dependencies__.then ? (await __webpack_async_dependencies__)() : __webpack_async_dependencies__)[0];
24
-
25
-
26
-
27
-
28
-
29
-
30
-
31
- function BannerNewsletter({
32
- banner,
33
- newsletter
34
- }) {
35
- return /*#__PURE__*/react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx(_Section__WEBPACK_IMPORTED_MODULE_1__/* ["default"] */ .Z, {
36
- className: `${(_section_module_scss__WEBPACK_IMPORTED_MODULE_2___default().section)} section-banner-newsletter`,
37
- children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("div", {
38
- "data-fs-banner-text-newsletter": true,
39
- "data-fs-content": "banner-newsletter",
40
- children: [/*#__PURE__*/react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx(src_components_sections_BannerText_OverriddenDefaultBannerText__WEBPACK_IMPORTED_MODULE_3__/* .OverriddenDefaultBannerText */ .i, {
41
- title: banner.title,
42
- caption: banner.caption,
43
- link: banner?.link,
44
- variant: banner.variant,
45
- colorVariant: banner.colorVariant
46
- }), /*#__PURE__*/react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx(src_components_sections_Newsletter_OverriddenDefaultNewsletter__WEBPACK_IMPORTED_MODULE_4__/* .OverriddenDefaultNewsletter */ .O, {
47
- card: true,
48
- colorVariant: newsletter.colorVariant,
49
- title: newsletter.title,
50
- description: newsletter.description,
51
- icon: newsletter.icon,
52
- privacyPolicy: newsletter.privacyPolicy,
53
- emailInputLabel: newsletter.emailInputLabel,
54
- displayNameInput: newsletter.displayNameInput,
55
- nameInputLabel: newsletter.nameInputLabel,
56
- subscribeButtonLabel: newsletter.subscribeButtonLabel,
57
- subscribeButtonLoadingLabel: newsletter.subscribeButtonLoadingLabel,
58
- toastSubscribe: newsletter.toastSubscribe,
59
- toastSubscribeError: newsletter.toastSubscribeError
60
- })]
61
- })
62
- });
63
- }
64
-
65
- /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (BannerNewsletter);
66
- __webpack_async_result__();
67
- } catch(e) { __webpack_async_result__(e); } });
68
-
69
- /***/ }),
70
-
71
- /***/ 994:
72
- /***/ ((module, __webpack_exports__, __webpack_require__) => {
73
-
74
- "use strict";
75
- __webpack_require__.a(module, async (__webpack_handle_async_dependencies__, __webpack_async_result__) => { try {
76
- /* harmony export */ __webpack_require__.d(__webpack_exports__, {
77
- /* harmony export */ "Z": () => (__WEBPACK_DEFAULT_EXPORT__)
78
- /* harmony export */ });
79
- /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(6689);
80
- /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);
81
- /* harmony import */ var _components_ui_ProductShelf__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(7691);
82
- /* harmony import */ var react_intersection_observer__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(9785);
83
- /* harmony import */ var react_intersection_observer__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react_intersection_observer__WEBPACK_IMPORTED_MODULE_1__);
84
- /* harmony import */ var src_sdk_overrides_PageProvider__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(5953);
85
- /* harmony import */ var _ProductShelf_section_module_scss__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(6627);
86
- /* harmony import */ var _ProductShelf_section_module_scss__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_ProductShelf_section_module_scss__WEBPACK_IMPORTED_MODULE_5__);
87
- /* harmony import */ var _Section__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(3271);
88
- /* harmony import */ var _DefaultComponents__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(8435);
89
- /* harmony import */ var _sdk_overrides_getOverriddenSection__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(8788);
90
- /* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(997);
91
- /* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_2__);
92
- var __webpack_async_dependencies__ = __webpack_handle_async_dependencies__([_components_ui_ProductShelf__WEBPACK_IMPORTED_MODULE_6__]);
93
- _components_ui_ProductShelf__WEBPACK_IMPORTED_MODULE_6__ = (__webpack_async_dependencies__.then ? (await __webpack_async_dependencies__)() : __webpack_async_dependencies__)[0];
94
-
95
-
96
-
97
-
98
-
99
-
100
-
101
-
102
-
103
-
104
- const CrossSellingShelf = ({
105
- numberOfItems,
106
- itemsPerPage,
107
- title,
108
- kind
109
- }) => {
110
- const {
111
- ref,
112
- inView
113
- } = (0,react_intersection_observer__WEBPACK_IMPORTED_MODULE_1__.useInView)();
114
- const context = (0,src_sdk_overrides_PageProvider__WEBPACK_IMPORTED_MODULE_3__/* .usePDP */ .al)();
115
- const productGroupID = context?.data?.product?.isVariantOf?.productGroupID;
116
- const selectedFacets = (0,react__WEBPACK_IMPORTED_MODULE_0__.useMemo)(() => [{
117
- key: kind,
118
- value: productGroupID
119
- }], [kind, productGroupID]);
120
- return /*#__PURE__*/react_jsx_runtime__WEBPACK_IMPORTED_MODULE_2__.jsx(_Section__WEBPACK_IMPORTED_MODULE_4__/* ["default"] */ .Z, {
121
- className: `${(_ProductShelf_section_module_scss__WEBPACK_IMPORTED_MODULE_5___default().section)} section-product-shelf layout__section`,
122
- ref: ref,
123
- children: /*#__PURE__*/react_jsx_runtime__WEBPACK_IMPORTED_MODULE_2__.jsx(_components_ui_ProductShelf__WEBPACK_IMPORTED_MODULE_6__/* ["default"] */ .Z, {
124
- inView: inView,
125
- numberOfItems: numberOfItems,
126
- itemsPerPage: itemsPerPage,
127
- title: title,
128
- selectedFacets: selectedFacets
129
- })
130
- });
131
- };
132
-
133
- const OverridableCrossSellingShelf = (0,_sdk_overrides_getOverriddenSection__WEBPACK_IMPORTED_MODULE_7__/* .getOverridableSection */ .B)('CrossSellingShelf', CrossSellingShelf, _DefaultComponents__WEBPACK_IMPORTED_MODULE_8__/* .CrossSellingShelfDefaultComponents */ .q);
134
- /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (OverridableCrossSellingShelf);
135
- __webpack_async_result__();
136
- } catch(e) { __webpack_async_result__(e); } });
137
-
138
- /***/ }),
139
-
140
- /***/ 8435:
141
- /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
142
-
143
- "use strict";
144
- /* harmony export */ __webpack_require__.d(__webpack_exports__, {
145
- /* harmony export */ "q": () => (/* binding */ CrossSellingShelfDefaultComponents)
146
- /* harmony export */ });
147
- /* harmony import */ var _faststore_ui__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(6737);
148
- /* harmony import */ var src_components_product_ProductCard__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(8553);
149
- /* harmony import */ var src_components_ui_Carousel__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(8619);
150
-
151
-
152
-
153
- const CrossSellingShelfDefaultComponents = {
154
- ProductShelf: _faststore_ui__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */ .Z,
155
- __experimentalCarousel: src_components_ui_Carousel__WEBPACK_IMPORTED_MODULE_1__/* ["default"] */ .Z,
156
- __experimentalProductCard: src_components_product_ProductCard__WEBPACK_IMPORTED_MODULE_2__/* ["default"] */ .Z
157
- };
158
-
159
- /***/ }),
160
-
161
- /***/ 4474:
162
- /***/ ((module, __webpack_exports__, __webpack_require__) => {
163
-
164
- "use strict";
165
- __webpack_require__.a(module, async (__webpack_handle_async_dependencies__, __webpack_async_result__) => { try {
166
- /* harmony export */ __webpack_require__.d(__webpack_exports__, {
167
- /* harmony export */ "Z": () => (/* binding */ OverriddenDefaultCrossSellingShelf)
168
- /* harmony export */ });
169
- /* harmony import */ var src_sdk_overrides_getOverriddenSection__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(8788);
170
- /* harmony import */ var ___WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(994);
171
- var __webpack_async_dependencies__ = __webpack_handle_async_dependencies__([___WEBPACK_IMPORTED_MODULE_1__]);
172
- ___WEBPACK_IMPORTED_MODULE_1__ = (__webpack_async_dependencies__.then ? (await __webpack_async_dependencies__)() : __webpack_async_dependencies__)[0];
173
-
174
-
175
- const OverriddenDefaultCrossSellingShelf = (0,src_sdk_overrides_getOverriddenSection__WEBPACK_IMPORTED_MODULE_0__/* .getOverriddenSection */ .v)({
176
- Section: ___WEBPACK_IMPORTED_MODULE_1__/* ["default"] */ .Z
177
- });
178
- __webpack_async_result__();
179
- } catch(e) { __webpack_async_result__(e); } });
180
-
181
- /***/ }),
182
-
183
- /***/ 8655:
184
- /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
185
-
186
- "use strict";
187
-
188
- // EXPORTS
189
- __webpack_require__.d(__webpack_exports__, {
190
- "L": () => (/* binding */ OverriddenDefaultProductDetails)
191
- });
192
-
193
- ;// CONCATENATED MODULE: ./src/customizations/src/components/overrides/ProductDetails.tsx
194
- // This is an example of how it can be used on the starter.
195
- const SECTION = 'ProductDetails';
196
- const override = {
197
- section: SECTION
198
- };
199
-
200
- // EXTERNAL MODULE: ./src/sdk/overrides/getOverriddenSection.tsx
201
- var getOverriddenSection = __webpack_require__(8788);
202
- // EXTERNAL MODULE: external "react"
203
- var external_react_ = __webpack_require__(6689);
204
- var external_react_default = /*#__PURE__*/__webpack_require__.n(external_react_);
205
- // EXTERNAL MODULE: ../sdk/dist/analytics/sendAnalyticsEvent.js
206
- var sendAnalyticsEvent = __webpack_require__(1072);
207
- // EXTERNAL MODULE: ./src/sdk/product/useFormattedPrice.ts
208
- var useFormattedPrice = __webpack_require__(5346);
209
- // EXTERNAL MODULE: ./src/sdk/session/index.ts + 1 modules
210
- var session = __webpack_require__(7295);
211
- // EXTERNAL MODULE: ./src/components/sections/Section/Section.tsx
212
- var Section = __webpack_require__(3271);
213
- // EXTERNAL MODULE: ../components/dist/esm/molecules/Accordion/Accordion.js
214
- var Accordion = __webpack_require__(1516);
215
- // EXTERNAL MODULE: ../components/dist/esm/molecules/Accordion/AccordionItem.js
216
- var AccordionItem = __webpack_require__(783);
217
- // EXTERNAL MODULE: ../components/dist/esm/molecules/Accordion/AccordionButton.js
218
- var AccordionButton = __webpack_require__(7734);
219
- // EXTERNAL MODULE: ../components/dist/esm/molecules/Accordion/AccordionPanel.js
220
- var AccordionPanel = __webpack_require__(7583);
221
- // EXTERNAL MODULE: external "react/jsx-runtime"
222
- var jsx_runtime_ = __webpack_require__(997);
223
- ;// CONCATENATED MODULE: ./src/components/ui/ProductDescription/ProductDescription.tsx
224
-
225
-
226
-
227
-
228
-
229
- function ProductDescription({
230
- descriptionData,
231
- initiallyExpanded = 'first'
232
- }) {
233
- /**
234
- * Maps 'initiallyExpanded' prop values to indices
235
- */
236
- const INITIALLY_EXPANDED_MAP = (0,external_react_.useMemo)(() => ({
237
- none: [],
238
- first: [0],
239
- all: [0, 1, 2, 3]
240
- }), []);
241
- const {
242
- 0: indices,
243
- 1: setIndices
244
- } = (0,external_react_.useState)(new Set(INITIALLY_EXPANDED_MAP[initiallyExpanded]));
245
-
246
- const onChange = index => {
247
- setIndices(currentIndices => {
248
- const newIndices = new Set(currentIndices);
249
-
250
- if (currentIndices.has(index)) {
251
- newIndices.delete(index);
252
- } else {
253
- newIndices.add(index);
254
- }
255
-
256
- return newIndices;
257
- });
258
- };
259
-
260
- return /*#__PURE__*/jsx_runtime_.jsx("section", {
261
- "data-fs-product-description": true,
262
- children: /*#__PURE__*/jsx_runtime_.jsx(Accordion/* default */.Z, {
263
- indices: indices,
264
- onChange: onChange,
265
- "aria-label": "Product Details Content",
266
- children: descriptionData.map(({
267
- title,
268
- content
269
- }, index) => /*#__PURE__*/(0,jsx_runtime_.jsxs)(AccordionItem/* default */.Z, {
270
- as: "article",
271
- index: index,
272
- prefixId: "product-description",
273
- "data-fs-product-details-description": true,
274
- children: [/*#__PURE__*/jsx_runtime_.jsx(AccordionButton/* default */.Z, {
275
- children: title
276
- }), /*#__PURE__*/jsx_runtime_.jsx(AccordionPanel/* default */.Z, {
277
- children: /*#__PURE__*/jsx_runtime_.jsx("div", {
278
- // Applies display: contents through FastStore UI
279
- "data-fs-product-details-description-content": true // The content is already sanitized by FastStore API
280
- ,
281
- dangerouslySetInnerHTML: {
282
- __html: content
283
- }
284
- })
285
- })]
286
- }, String(index)))
287
- })
288
- });
289
- }
290
-
291
- /* harmony default export */ const ProductDescription_ProductDescription = (ProductDescription);
292
- // EXTERNAL MODULE: ../components/dist/esm/hooks/UIProvider.js
293
- var UIProvider = __webpack_require__(6652);
294
- // EXTERNAL MODULE: ./src/sdk/cart/index.ts + 1 modules
295
- var cart = __webpack_require__(6073);
296
- ;// CONCATENATED MODULE: ./src/sdk/cart/useBuyButton.ts
297
-
298
-
299
-
300
-
301
-
302
- const useBuyButton = item => {
303
- const {
304
- openCart
305
- } = (0,UIProvider/* useUI */.l)();
306
- const {
307
- currency: {
308
- code
309
- }
310
- } = (0,session/* useSession */.kP)();
311
- const onClick = (0,external_react_.useCallback)(e => {
312
- e.preventDefault();
313
-
314
- if (!item) {
315
- return;
316
- }
317
-
318
- (0,sendAnalyticsEvent/* sendAnalyticsEvent */._)({
319
- name: 'add_to_cart',
320
- params: {
321
- currency: code,
322
- // TODO: In the future, we can explore more robust ways of
323
- // calculating the value (gift items, discounts, etc.).
324
- value: item.price * item.quantity,
325
- items: [{
326
- item_id: item.itemOffered.isVariantOf.productGroupID,
327
- item_name: item.itemOffered.isVariantOf.name,
328
- item_brand: item.itemOffered.brand.name,
329
- item_variant: item.itemOffered.sku,
330
- quantity: item.quantity,
331
- price: item.price,
332
- discount: item.listPrice - item.price,
333
- currency: code,
334
- item_variant_name: item.itemOffered.name,
335
- product_reference_id: item.itemOffered.gtin
336
- }]
337
- }
338
- });
339
- cart/* cartStore.addItem */.i8.addItem(item);
340
- openCart();
341
- }, [code, item, openCart]);
342
- return {
343
- onClick,
344
- 'data-testid': 'buy-button',
345
- 'data-sku': item?.itemOffered.sku,
346
- 'data-seller': item?.seller.identifier
347
- };
348
- };
349
- // EXTERNAL MODULE: ./node_modules/next/link.js
350
- var next_link = __webpack_require__(1664);
351
- var link_default = /*#__PURE__*/__webpack_require__.n(next_link);
352
- // EXTERNAL MODULE: ./src/components/ui/Image/Image.tsx + 1 modules
353
- var Image = __webpack_require__(5731);
354
- // EXTERNAL MODULE: ./src/sdk/overrides/OverrideContext.tsx
355
- var OverrideContext = __webpack_require__(5522);
356
- ;// CONCATENATED MODULE: ./src/components/ui/SkuSelector/Selectors.tsx
357
- const _excluded = ["src", "alt"],
358
- _excluded2 = ["slugsMap", "activeVariations", "availableVariations"];
359
-
360
- function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
361
-
362
- function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
363
-
364
- function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
365
-
366
- function _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }
367
-
368
- function _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }
369
-
370
-
371
-
372
-
373
-
374
-
375
-
376
- const ImageComponent = _ref => {
377
- let {
378
- src,
379
- alt
380
- } = _ref,
381
- otherProps = _objectWithoutProperties(_ref, _excluded);
382
-
383
- return /*#__PURE__*/jsx_runtime_.jsx(Image/* default */.Z, _objectSpread({
384
- src: src,
385
- alt: alt,
386
- width: 34,
387
- height: 34
388
- }, otherProps));
389
- };
390
-
391
- function Selectors(_ref2) {
392
- let {
393
- slugsMap,
394
- activeVariations,
395
- availableVariations
396
- } = _ref2,
397
- otherProps = _objectWithoutProperties(_ref2, _excluded2);
398
-
399
- const {
400
- SkuSelector
401
- } = (0,OverrideContext/* useOverrideComponents */.r3)();
402
- return /*#__PURE__*/jsx_runtime_.jsx("section", _objectSpread(_objectSpread({}, otherProps), {}, {
403
- children: availableVariations && Object.keys(availableVariations).map(skuVariant => /*#__PURE__*/(0,external_react_.createElement)(SkuSelector.Component, _objectSpread(_objectSpread({
404
- ImageComponent: ImageComponent
405
- }, SkuSelector.props), {}, {
406
- key: skuVariant,
407
- skuPropertyName: skuVariant,
408
- availableVariations: availableVariations,
409
- activeVariations: activeVariations,
410
- slugsMap: slugsMap,
411
- linkProps: _objectSpread(_objectSpread({}, SkuSelector.props.linkProps ?? {}), {}, {
412
- as: SkuSelector.props.linkProps?.as ?? (link_default()),
413
- legacyBehavior: SkuSelector.props.linkProps?.legacyBehavior ?? false
414
- })
415
- })))
416
- }));
417
- }
418
-
419
- /* harmony default export */ const SkuSelector_Selectors = (Selectors);
420
- ;// CONCATENATED MODULE: ./src/components/ui/ProductDetails/AddToCartLoadingSkeleton.tsx
421
-
422
-
423
- function AddToCartLoadingSkeleton() {
424
- return (
425
- /*#__PURE__*/
426
- // Generated via https://skeletonreact.com/.
427
- (0,jsx_runtime_.jsxs)("svg", {
428
- role: "img",
429
- width: "100%",
430
- height: "48",
431
- "aria-labelledby": "loading-aria",
432
- viewBox: "0 0 112 48",
433
- preserveAspectRatio: "none",
434
- children: [/*#__PURE__*/jsx_runtime_.jsx("title", {
435
- id: "loading-aria",
436
- children: "Loading..."
437
- }), /*#__PURE__*/jsx_runtime_.jsx("rect", {
438
- x: "0",
439
- y: "0",
440
- width: "100%",
441
- height: "100%",
442
- clipPath: "url(#clip-path)",
443
- style: {
444
- fill: 'url("#fill")'
445
- }
446
- }), /*#__PURE__*/(0,jsx_runtime_.jsxs)("defs", {
447
- children: [/*#__PURE__*/jsx_runtime_.jsx("clipPath", {
448
- id: "clip-path",
449
- children: /*#__PURE__*/jsx_runtime_.jsx("rect", {
450
- x: "0",
451
- y: "0",
452
- rx: "2",
453
- ry: "2",
454
- width: "112",
455
- height: "48"
456
- })
457
- }), /*#__PURE__*/(0,jsx_runtime_.jsxs)("linearGradient", {
458
- id: "fill",
459
- children: [/*#__PURE__*/jsx_runtime_.jsx("stop", {
460
- offset: "0.599964",
461
- stopColor: "#f3f3f3",
462
- stopOpacity: "1",
463
- children: /*#__PURE__*/jsx_runtime_.jsx("animate", {
464
- attributeName: "offset",
465
- values: "-2; -2; 1",
466
- keyTimes: "0; 0.25; 1",
467
- dur: "2s",
468
- repeatCount: "indefinite"
469
- })
470
- }), /*#__PURE__*/jsx_runtime_.jsx("stop", {
471
- offset: "1.59996",
472
- stopColor: "#ecebeb",
473
- stopOpacity: "1",
474
- children: /*#__PURE__*/jsx_runtime_.jsx("animate", {
475
- attributeName: "offset",
476
- values: "-1; -1; 2",
477
- keyTimes: "0; 0.25; 1",
478
- dur: "2s",
479
- repeatCount: "indefinite"
480
- })
481
- }), /*#__PURE__*/jsx_runtime_.jsx("stop", {
482
- offset: "2.59996",
483
- stopColor: "#f3f3f3",
484
- stopOpacity: "1",
485
- children: /*#__PURE__*/jsx_runtime_.jsx("animate", {
486
- attributeName: "offset",
487
- values: "0; 0; 3",
488
- keyTimes: "0; 0.25; 1",
489
- dur: "2s",
490
- repeatCount: "indefinite"
491
- })
492
- })]
493
- })]
494
- })]
495
- })
496
- );
497
- }
498
- ;// CONCATENATED MODULE: ./src/components/ui/ProductDetails/ProductDetailsSettings.tsx
499
- function ProductDetailsSettings_ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
500
-
501
- function ProductDetailsSettings_objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ProductDetailsSettings_ownKeys(Object(source), !0).forEach(function (key) { ProductDetailsSettings_defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ProductDetailsSettings_ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
502
-
503
- function ProductDetailsSettings_defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
504
-
505
-
506
-
507
-
508
-
509
-
510
-
511
-
512
-
513
-
514
-
515
- function ProductDetailsSettings({
516
- product,
517
- buyButtonTitle,
518
- isValidating,
519
- quantity,
520
- setQuantity,
521
- buyButtonIcon: {
522
- icon: buyButtonIconName,
523
- alt: buyButtonIconAlt
524
- },
525
- notAvailableButtonTitle
526
- }) {
527
- const {
528
- BuyButton,
529
- Icon,
530
- ProductPrice,
531
- QuantitySelector,
532
- __experimentalNotAvailableButton: NotAvailableButton
533
- } = (0,OverrideContext/* useOverrideComponents */.r3)();
534
- const {
535
- id,
536
- sku,
537
- gtin,
538
- name: variantName,
539
- brand,
540
- isVariantOf,
541
- isVariantOf: {
542
- skuVariants
543
- },
544
- image: productImages,
545
- additionalProperty,
546
- offers: {
547
- offers: [{
548
- availability,
549
- price,
550
- listPrice,
551
- seller
552
- }]
553
- }
554
- } = product;
555
- const buyProps = useBuyButton({
556
- id,
557
- price,
558
- listPrice,
559
- seller,
560
- quantity,
561
- itemOffered: {
562
- sku,
563
- name: variantName,
564
- gtin,
565
- image: productImages,
566
- brand,
567
- isVariantOf,
568
- additionalProperty
569
- }
570
- });
571
- const outOfStock = (0,external_react_.useMemo)(() => availability === 'https://schema.org/OutOfStock', [availability]);
572
-
573
- const AddToCartButton = () => {
574
- return outOfStock ?
575
- /*#__PURE__*/
576
- // TODO: Adds <OutOfStock /> when component is ready to use
577
- jsx_runtime_.jsx(NotAvailableButton.Component, {
578
- children: notAvailableButtonTitle
579
- }) : /*#__PURE__*/jsx_runtime_.jsx(BuyButton.Component, ProductDetailsSettings_objectSpread(ProductDetailsSettings_objectSpread(ProductDetailsSettings_objectSpread({}, BuyButton.props), {}, {
580
- icon: /*#__PURE__*/jsx_runtime_.jsx(Icon.Component, ProductDetailsSettings_objectSpread(ProductDetailsSettings_objectSpread({}, Icon.props), {}, {
581
- name: buyButtonIconName ?? Icon.props.name,
582
- "aria-label": buyButtonIconAlt ?? Icon.props['aria-label']
583
- }))
584
- }, buyProps), {}, {
585
- children: buyButtonTitle || 'Add to Cart'
586
- }));
587
- };
588
-
589
- return /*#__PURE__*/(0,jsx_runtime_.jsxs)(jsx_runtime_.Fragment, {
590
- children: [!outOfStock && /*#__PURE__*/(0,jsx_runtime_.jsxs)("section", {
591
- "data-fs-product-details-values": true,
592
- children: [/*#__PURE__*/jsx_runtime_.jsx(ProductPrice.Component, ProductDetailsSettings_objectSpread({
593
- "data-fs-product-details-prices": true,
594
- value: price,
595
- listPrice: listPrice,
596
- formatter: useFormattedPrice/* useFormattedPrice */.P
597
- }, ProductPrice.props)), /*#__PURE__*/jsx_runtime_.jsx(QuantitySelector.Component, ProductDetailsSettings_objectSpread(ProductDetailsSettings_objectSpread({
598
- min: 1,
599
- max: 10
600
- }, QuantitySelector.props), {}, {
601
- // Dynamic props shouldn't be overridable
602
- // This decision can be reviewed later if needed
603
- onChange: setQuantity
604
- }))]
605
- }), skuVariants && /*#__PURE__*/jsx_runtime_.jsx(SkuSelector_Selectors, {
606
- slugsMap: skuVariants.slugsMap,
607
- availableVariations: skuVariants.availableVariations,
608
- activeVariations: skuVariants.activeVariations,
609
- "data-fs-product-details-selectors": true
610
- }), isValidating ?
611
- /*#__PURE__*/
612
-
613
- /* NOTE:
614
- A loading skeleton had to be used to avoid a Lighthouse's
615
- non-composited animation violation due to the button transitioning its
616
- background color when changing from its initial disabled to active state.
617
- See full explanation on commit https://git.io/JyXV5. */
618
- jsx_runtime_.jsx(AddToCartLoadingSkeleton, {}) : /*#__PURE__*/jsx_runtime_.jsx(AddToCartButton, {})]
619
- });
620
- }
621
-
622
- /* harmony default export */ const ProductDetails_ProductDetailsSettings = (ProductDetailsSettings);
623
- // EXTERNAL MODULE: ./src/components/sections/ProductDetails/section.module.scss
624
- var section_module = __webpack_require__(9034);
625
- var section_module_default = /*#__PURE__*/__webpack_require__.n(section_module);
626
- // EXTERNAL MODULE: ./src/sdk/overrides/PageProvider.tsx
627
- var PageProvider = __webpack_require__(5953);
628
- // EXTERNAL MODULE: ../components/dist/esm/molecules/Rating/Rating.js
629
- var Rating = __webpack_require__(3024);
630
- ;// CONCATENATED MODULE: ../components/dist/esm/molecules/ProductTitle/ProductTitle.js
631
-
632
-
633
- const ProductTitle = (0,external_react_.forwardRef)(function ProductTitle({ title, label, refTag = 'Ref.: ', refNumber, testId = 'fs-product-title', ratingValue, ...otherProps }, ref) {
634
- return (external_react_default().createElement("header", { ref: ref, "data-fs-product-title": true, "data-testid": testId, ...otherProps },
635
- external_react_default().createElement("div", { "data-fs-product-title-header": true },
636
- title,
637
- !!label && label),
638
- (refNumber || ratingValue) && (external_react_default().createElement("div", { "data-fs-product-title-addendum": true },
639
- ratingValue && external_react_default().createElement(Rating/* default */.Z, { value: ratingValue }),
640
- refNumber && (external_react_default().createElement((external_react_default()).Fragment, null,
641
- refTag,
642
- " ",
643
- refNumber))))));
644
- });
645
- /* harmony default export */ const ProductTitle_ProductTitle = (ProductTitle);
646
- //# sourceMappingURL=ProductTitle.js.map
647
- // EXTERNAL MODULE: ../components/dist/esm/molecules/DiscountBadge/DiscountBadge.js + 1 modules
648
- var DiscountBadge = __webpack_require__(2946);
649
- // EXTERNAL MODULE: ../components/dist/esm/atoms/Button/Button.js
650
- var Button = __webpack_require__(3339);
651
- ;// CONCATENATED MODULE: ../components/dist/esm/molecules/BuyButton/BuyButton.js
652
-
653
-
654
- function BuyButton({ testId = 'fs-buy-button', icon, children, ...otherProps }) {
655
- return (external_react_default().createElement(Button/* default */.Z, { "data-fs-buy-button": true, icon: icon, iconPosition: "left", "data-testid": testId, ...otherProps }, children));
656
- }
657
- /* harmony default export */ const BuyButton_BuyButton = (BuyButton);
658
- //# sourceMappingURL=BuyButton.js.map
659
- // EXTERNAL MODULE: ../components/dist/esm/atoms/Icon/Icon.js
660
- var Icon = __webpack_require__(2614);
661
- // EXTERNAL MODULE: ../components/dist/esm/molecules/ProductPrice/ProductPrice.js
662
- var ProductPrice = __webpack_require__(9088);
663
- // EXTERNAL MODULE: ../components/dist/esm/molecules/QuantitySelector/QuantitySelector.js
664
- var QuantitySelector = __webpack_require__(6693);
665
- // EXTERNAL MODULE: ../components/dist/esm/atoms/Label/Label.js
666
- var Label = __webpack_require__(1953);
667
- // EXTERNAL MODULE: ../components/dist/esm/atoms/Link/Link.js
668
- var Link = __webpack_require__(727);
669
- // EXTERNAL MODULE: ../components/dist/esm/atoms/SROnly/SROnly.js
670
- var SROnly = __webpack_require__(5450);
671
- ;// CONCATENATED MODULE: ../components/dist/esm/molecules/SkuSelector/useDefineVariant.js
672
-
673
- const getImageName = (src) => {
674
- const sourcePath = new URL(src).pathname;
675
- const imageName = sourcePath.split('/').slice(-1)[0];
676
- return imageName;
677
- };
678
- const useDefineVariant = (options, variant) => (0,external_react_.useMemo)(() => {
679
- if (variant)
680
- return variant;
681
- const allOptionsHaveHexColor = options.every((option) => option.hexColor);
682
- if (allOptionsHaveHexColor) {
683
- return 'color';
684
- }
685
- const firstImageName = options[0]?.src && getImageName(options[0].src);
686
- const areSourcesEqualsOrNull = options.every((option) => {
687
- if (!option.src) {
688
- return true;
689
- }
690
- const optionImageName = getImageName(option.src);
691
- return optionImageName === firstImageName;
692
- });
693
- if (!areSourcesEqualsOrNull) {
694
- return 'image';
695
- }
696
- return 'label';
697
- }, [options, variant]);
698
- //# sourceMappingURL=useDefineVariant.js.map
699
- ;// CONCATENATED MODULE: ../components/dist/esm/molecules/SkuSelector/useSkuSlug.js
700
-
701
- function getSkuSlug(slugsMap, selectedVariations, dominantVariation) {
702
- const slugsMapKey = Object.entries(selectedVariations).flat().join('-');
703
- if (slugsMapKey in slugsMap) {
704
- return slugsMap[slugsMapKey];
705
- }
706
- const possibleVariants = Object.keys(slugsMap);
707
- const firstVariationForDominantValue = possibleVariants.find((slug) => slug.includes(`${dominantVariation}-${selectedVariations[dominantVariation]}`));
708
- return slugsMap[firstVariationForDominantValue ?? possibleVariants[0]];
709
- }
710
- const useSkuSlug = (activeVariations, slugsMap, skuPropertyName, getItemHrefProp) => {
711
- const getItemHref = (0,external_react_.useCallback)((option) => {
712
- if (getItemHrefProp)
713
- return { getItemHrefProp };
714
- const currentItemHref = `/${getSkuSlug(slugsMap, {
715
- ...activeVariations,
716
- [skuPropertyName]: option.value,
717
- }, skuPropertyName)}/p`;
718
- return currentItemHref;
719
- }, [activeVariations, getItemHrefProp, slugsMap, skuPropertyName]);
720
- return { getItemHref };
721
- };
722
- //# sourceMappingURL=useSkuSlug.js.map
723
- ;// CONCATENATED MODULE: ../components/dist/esm/molecules/SkuSelector/SkuSelector.js
724
-
725
-
726
-
727
-
728
- // TODO: Change by ImageComponent when it be right
729
- const ImageComponentFallback = ({ src, alt, ...otherProps }) => external_react_default().createElement("img", { src: src, alt: alt, ...otherProps });
730
- const SkuSelector = (0,external_react_.forwardRef)(function SkuSelector({ availableVariations, skuPropertyName, testId, activeVariations, linkProps, slugsMap, getItemHref: getItemHrefProp, ImageComponent = ImageComponentFallback, variant: variantProp, ...otherProps }, ref) {
731
- const activeSelectorValue = activeVariations[skuPropertyName];
732
- const options = availableVariations[skuPropertyName];
733
- const variant = useDefineVariant(options, variantProp);
734
- const { getItemHref } = useSkuSlug(activeVariations, slugsMap, skuPropertyName, getItemHrefProp);
735
- return (external_react_default().createElement("div", { ref: ref, "data-fs-sku-selector": true, "data-testid": testId, "data-fs-sku-selector-variant": variant, ...otherProps },
736
- skuPropertyName && (external_react_default().createElement(Label/* default */.Z, { "data-fs-sku-selector-title": true },
737
- skuPropertyName,
738
- ": ",
739
- external_react_default().createElement("strong", null, activeSelectorValue))),
740
- external_react_default().createElement("ul", { "data-fs-sku-selector-list": true }, options.map((option, index) => {
741
- return (external_react_default().createElement("li", { key: String(index), title: option.label, "data-fs-sku-selector-option": true, "data-fs-sku-selector-disabled": option.disabled, "data-fs-sku-selector-checked": option.value === activeVariations[skuPropertyName] },
742
- external_react_default().createElement(Link/* default */.Z, { "data-fs-sku-selector-option-link": true, href: getItemHref(option), ...linkProps },
743
- external_react_default().createElement(SROnly/* default */.Z, { text: option.label })),
744
- variant === 'label' && external_react_default().createElement("span", null, option.value),
745
- variant === 'image' && ImageComponent && (external_react_default().createElement("span", null,
746
- external_react_default().createElement(ImageComponent, { src: option.src ?? '', alt: option.alt ?? '', "data-fs-sku-selector-option-image": true }))),
747
- variant === 'color' && (external_react_default().createElement("span", null,
748
- external_react_default().createElement("div", { "data-fs-sku-selector-option-color": true, title: option.value, style: {
749
- '--data-fs-sku-selector-option-color-bkg-color': option.hexColor,
750
- } })))));
751
- }))));
752
- });
753
- /* harmony default export */ const SkuSelector_SkuSelector = (SkuSelector);
754
- //# sourceMappingURL=SkuSelector.js.map
755
- // EXTERNAL MODULE: ../components/dist/esm/molecules/InputField/InputField.js
756
- var InputField = __webpack_require__(3779);
757
- ;// CONCATENATED MODULE: ../components/dist/esm/molecules/Table/Table.js
758
-
759
- const Table = (0,external_react_.forwardRef)(function Table({ children, variant = 'colored', testId = 'fs-table', ...otherProps }, ref) {
760
- return (external_react_default().createElement("div", { "data-fs-table": true },
761
- external_react_default().createElement("table", { ref: ref, "data-fs-table-content": true, "data-fs-table-variant": variant, "data-testid": testId, ...otherProps }, children)));
762
- });
763
- /* harmony default export */ const Table_Table = (Table);
764
- //# sourceMappingURL=Table.js.map
765
- ;// CONCATENATED MODULE: ../components/dist/esm/molecules/Table/TableBody.js
766
-
767
- const TableBody = (0,external_react_.forwardRef)(function TableBody({ children, testId = 'fs-table-body', ...otherProps }, ref) {
768
- return (external_react_default().createElement("tbody", { ref: ref, "data-testid": testId, "data-fs-table-body": true, ...otherProps }, children));
769
- });
770
- /* harmony default export */ const Table_TableBody = (TableBody);
771
- //# sourceMappingURL=TableBody.js.map
772
- ;// CONCATENATED MODULE: ../components/dist/esm/molecules/Table/TableRow.js
773
-
774
- const TableRow = (0,external_react_.forwardRef)(function TableRow({ children, testId = 'fs-table-row', ...otherProps }, ref) {
775
- return (external_react_default().createElement("tr", { ref: ref, "data-fs-table-row": true, "data-testid": testId, ...otherProps }, children));
776
- });
777
- /* harmony default export */ const Table_TableRow = (TableRow);
778
- //# sourceMappingURL=TableRow.js.map
779
- ;// CONCATENATED MODULE: ../components/dist/esm/molecules/Table/TableCell.js
780
-
781
- const TableCell = (0,external_react_.forwardRef)(function TableCell({ scope, align, children, variant = 'data', testId = 'fs-table-cell', ...otherProps }, ref) {
782
- const Cell = variant === 'header' ? 'th' : 'td';
783
- return (external_react_default().createElement(Cell, { ref: ref, "data-fs-table-cell": variant, "data-fs-table-cell-align": align, "data-testid": testId, scope: scope, ...otherProps }, children));
784
- });
785
- /* harmony default export */ const Table_TableCell = (TableCell);
786
- //# sourceMappingURL=TableCell.js.map
787
- // EXTERNAL MODULE: ../components/dist/esm/atoms/Price/Price.js
788
- var Price = __webpack_require__(9767);
789
- ;// CONCATENATED MODULE: ../components/dist/esm/organisms/ShippingSimulation/ShippingSimulation.js
790
-
791
-
792
- function ShippingSimulation({ testId = 'fs-shipping-simulation', formatter, title = 'Shipping', inputLabel = 'Postal Code', optionsLabel = 'Shipping options', idkPostalCodeLinkProps, onInput, onSubmit, onClear, location, options = [], displayClearButton = false, errorMessage, postalCode, ...otherProps }) {
793
- const hasShippingOptions = !!options && options.length > 0;
794
- return (external_react_default().createElement("section", { "data-fs-shipping-simulation": true, "data-fs-shipping-simulation-empty": !hasShippingOptions ? 'true' : 'false', "data-testid": testId, ...otherProps },
795
- external_react_default().createElement("h2", { "data-fs-shipping-simulation-title": true }, title),
796
- external_react_default().createElement(InputField/* default */.Z, { actionable: true, error: errorMessage, id: `${testId}-input-field`, label: inputLabel, value: postalCode, onInput: (event) => onInput?.(event), onSubmit: () => onSubmit?.(), onClear: () => onClear?.(), displayClearButton: displayClearButton }),
797
- external_react_default().createElement(Link/* default */.Z, { href: "/", "data-fs-shipping-simulation-link": true, size: "small", ...idkPostalCodeLinkProps }, idkPostalCodeLinkProps?.children ?? (external_react_default().createElement((external_react_default()).Fragment, null,
798
- "I don't know my Postal Code",
799
- external_react_default().createElement(Icon/* default */.Z, { name: "ArrowSquareOut", width: 20, height: 20 })))),
800
- hasShippingOptions && (external_react_default().createElement((external_react_default()).Fragment, null,
801
- external_react_default().createElement("header", { "data-fs-shipping-simulation-header": true },
802
- external_react_default().createElement("h3", { "data-fs-shipping-simulation-subtitle": true }, optionsLabel),
803
- external_react_default().createElement("p", { "data-fs-shipping-simulation-location": true }, location)),
804
- external_react_default().createElement(Table_Table, null,
805
- external_react_default().createElement(Table_TableBody, null, options.map((option) => (external_react_default().createElement(Table_TableRow, { key: option.carrier },
806
- external_react_default().createElement(Table_TableCell, { align: "left" }, option.carrier),
807
- external_react_default().createElement(Table_TableCell, null, option.localizedEstimates),
808
- external_react_default().createElement(Table_TableCell, { align: "right" }, option.price && (external_react_default().createElement(Price/* default */.Z, { formatter: formatter, value: option.price, SRText: "price" }))))))))))));
809
- }
810
- /* harmony default export */ const ShippingSimulation_ShippingSimulation = (ShippingSimulation);
811
- //# sourceMappingURL=ShippingSimulation.js.map
812
- // EXTERNAL MODULE: external "react-intersection-observer"
813
- var external_react_intersection_observer_ = __webpack_require__(9785);
814
- // EXTERNAL MODULE: ../components/dist/esm/molecules/IconButton/IconButton.js
815
- var IconButton = __webpack_require__(7041);
816
- ;// CONCATENATED MODULE: ../components/dist/esm/organisms/ImageGallery/ImageGallerySelector.js
817
-
818
-
819
-
820
- const SCROLL_MARGIN_VALUE = 400;
821
- const moveScroll = (container, value) => {
822
- if (container) {
823
- if (container.scrollHeight > container.clientHeight) {
824
- // TODO: Temporary workaround for scroll-behavior with scrollTop – Safari 15.4) https://developer.apple.com/forums/thread/703294
825
- container.style.overflow = 'auto';
826
- window.requestAnimationFrame(() => container.scrollTo({ top: value, behavior: 'smooth' }));
827
- setTimeout(() => (container.style.overflow = 'hidden'), 2000);
828
- }
829
- else {
830
- container.scrollLeft += value;
831
- }
832
- }
833
- };
834
- const hasScroll = (container) => {
835
- if (container) {
836
- return (container.scrollHeight > container.clientHeight ||
837
- container.scrollWidth > container.clientWidth);
838
- }
839
- return false;
840
- };
841
- function ImageGallerySelector({ images, onSelect, ImageComponent, currentImageIdx, testId = 'fs-image-gallery-selector', 'aria-label': ariaLabel = 'Product Images', navigationButtonLeftAriaLabel = 'Backward slide image selector', navigationButtonRightAriaLabel = 'Forward slide image selector', }) {
842
- const elementsRef = (0,external_react_.useRef)(null);
843
- const elementHasScroll = hasScroll(elementsRef.current);
844
- const [firstImageInView, setFirstImageInView] = (0,external_react_.useState)(true);
845
- const [lastImageInView, setLastImageInView] = (0,external_react_.useState)(true);
846
- const inViewChange = (0,external_react_.useCallback)((idx, inView) => {
847
- idx === 0 && setFirstImageInView(inView);
848
- idx === images.length - 1 && setLastImageInView(inView);
849
- }, [images.length]);
850
- return (external_react_default().createElement("section", { "data-fs-image-gallery-selector": true, "data-testid": testId, "aria-label": ariaLabel },
851
- elementHasScroll && !firstImageInView && (external_react_default().createElement("div", { "data-fs-image-gallery-selector-control": true },
852
- external_react_default().createElement(IconButton/* default */.Z, { "data-fs-image-gallery-selector-control-button": true, "aria-label": navigationButtonLeftAriaLabel, icon: external_react_default().createElement(Icon/* default */.Z, { name: "ArrowLeft" }), onClick: () => moveScroll(elementsRef.current, -SCROLL_MARGIN_VALUE) }))),
853
- external_react_default().createElement("div", { "data-fs-image-gallery-selector-elements": true, ref: elementsRef }, images.map((image, idx) => {
854
- return (external_react_default().createElement(external_react_intersection_observer_.InView, { key: idx, onChange: (inView) => inViewChange(idx, inView) },
855
- external_react_default().createElement(Button/* default */.Z, { key: idx, "aria-label": `${image.alternateName} - Image ${idx + 1} of ${images.length}`, onClick: () => onSelect(idx), "data-fs-image-gallery-selector-thumbnail": idx === currentImageIdx ? 'selected' : 'true' },
856
- external_react_default().createElement(ImageComponent, { url: image.url ?? '', loading: idx === 0 ? 'eager' : 'lazy', alternateName: image.alternateName ?? '' }))));
857
- })),
858
- elementHasScroll && !lastImageInView && (external_react_default().createElement("div", { "data-fs-image-gallery-selector-control": true },
859
- external_react_default().createElement(IconButton/* default */.Z, { "data-fs-image-gallery-selector-control-button": true, "aria-label": navigationButtonRightAriaLabel, icon: external_react_default().createElement(Icon/* default */.Z, { name: "ArrowLeft" }), onClick: () => moveScroll(elementsRef.current, +SCROLL_MARGIN_VALUE) })))));
860
- }
861
- /* harmony default export */ const ImageGallery_ImageGallerySelector = (ImageGallerySelector);
862
- //# sourceMappingURL=ImageGallerySelector.js.map
863
- ;// CONCATENATED MODULE: ../components/dist/esm/organisms/ImageGallery/ImageGallery.js
864
-
865
-
866
- const ImageGallery = (0,external_react_.forwardRef)(function ImageGallery({ images, children, ImageComponent, selectedImageIdx, setSelectedImageIdx, testId = 'fs-image-gallery', ...otherProps }, ref) {
867
- const hasSelector = images.length > 1;
868
- return (external_react_default().createElement("section", { ref: ref, "data-fs-image-gallery": hasSelector ? 'with-selector' : 'without-selector', "data-testid": testId, ...otherProps },
869
- children,
870
- hasSelector && (external_react_default().createElement(ImageGallery_ImageGallerySelector, { images: images, onSelect: setSelectedImageIdx, currentImageIdx: selectedImageIdx, ImageComponent: ImageComponent }))));
871
- });
872
- /* harmony default export */ const ImageGallery_ImageGallery = (ImageGallery);
873
- //# sourceMappingURL=ImageGallery.js.map
874
- ;// CONCATENATED MODULE: ../components/dist/esm/organisms/ImageGallery/ImageGalleryViewer.js
875
-
876
- const ImageGalleryViewer = ({ children, }) => {
877
- return external_react_default().createElement((external_react_default()).Fragment, null, children);
878
- };
879
- /* harmony default export */ const ImageGallery_ImageGalleryViewer = (ImageGalleryViewer);
880
- //# sourceMappingURL=ImageGalleryViewer.js.map
881
- // EXTERNAL MODULE: external "next/router"
882
- var router_ = __webpack_require__(1853);
883
- ;// CONCATENATED MODULE: ./src/components/ui/ImageGallery/ImageGallery.tsx
884
- const ImageGallery_excluded = ["images"];
885
-
886
- function ImageGallery_ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
887
-
888
- function ImageGallery_objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ImageGallery_ownKeys(Object(source), !0).forEach(function (key) { ImageGallery_defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ImageGallery_ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
889
-
890
- function ImageGallery_defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
891
-
892
- function ImageGallery_objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = ImageGallery_objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }
893
-
894
- function ImageGallery_objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }
895
-
896
-
897
-
898
-
899
-
900
-
901
- const ImageGallery_ImageComponent = ({
902
- url,
903
- alternateName
904
- }) => {
905
- const {
906
- __experimentalImageGalleryImage: Image
907
- } = (0,OverrideContext/* useOverrideComponents */.r3)();
908
- return /*#__PURE__*/jsx_runtime_.jsx(Image.Component, {
909
- src: url,
910
- alt: alternateName,
911
- width: 68,
912
- height: 68
913
- });
914
- };
915
-
916
- const ImageGallery_ImageGallery_ImageGallery = _ref => {
917
- let {
918
- images
919
- } = _ref,
920
- otherProps = ImageGallery_objectWithoutProperties(_ref, ImageGallery_excluded);
921
-
922
- const {
923
- ImageGallery: ImageGalleryWrapper,
924
- ImageGalleryViewer,
925
- __experimentalImageGalleryImage: Image
926
- } = (0,OverrideContext/* useOverrideComponents */.r3)();
927
- const {
928
- 0: selectedImageIdx,
929
- 1: setSelectedImageIdx
930
- } = (0,external_react_.useState)(0);
931
- const currentImage = images[selectedImageIdx] ?? images[0];
932
- const dynamicRoute = (0,router_.useRouter)().asPath;
933
- (0,external_react_.useEffect)(() => setSelectedImageIdx(0), [dynamicRoute]);
934
- return /*#__PURE__*/jsx_runtime_.jsx(ImageGalleryWrapper.Component, ImageGallery_objectSpread(ImageGallery_objectSpread(ImageGallery_objectSpread({}, ImageGalleryWrapper.props), {}, {
935
- images: images,
936
- ImageComponent: ImageGallery_ImageComponent,
937
- selectedImageIdx: selectedImageIdx,
938
- setSelectedImageIdx: setSelectedImageIdx
939
- }, otherProps), {}, {
940
- children: /*#__PURE__*/jsx_runtime_.jsx(ImageGalleryViewer.Component, ImageGallery_objectSpread(ImageGallery_objectSpread({}, ImageGalleryViewer.props), {}, {
941
- children: /*#__PURE__*/jsx_runtime_.jsx(Image.Component, ImageGallery_objectSpread(ImageGallery_objectSpread({
942
- sizes: "(max-width: 360px) 50vw, (max-width: 768px) 90vw, 50vw",
943
- width: 691,
944
- height: 691 * (3 / 4),
945
- loading: "eager"
946
- }, Image.props), {}, {
947
- src: currentImage.url,
948
- alt: currentImage.alternateName
949
- }))
950
- }))
951
- }));
952
- };
953
-
954
- /* harmony default export */ const ui_ImageGallery_ImageGallery = (ImageGallery_ImageGallery_ImageGallery);
955
- // EXTERNAL MODULE: ./src/sdk/graphql/request.ts
956
- var request = __webpack_require__(180);
957
- ;// CONCATENATED MODULE: ./src/sdk/shipping/index.ts
958
-
959
- const query = "ClientShippingSimulationQuery";
960
- const getShippingSimulation = async ({
961
- items,
962
- postalCode,
963
- country
964
- }) => {
965
- const data = await (0,request/* request */.W)(query, {
966
- items,
967
- postalCode,
968
- country
969
- });
970
- return data;
971
- };
972
- /* harmony default export */ const shipping = (getShippingSimulation);
973
- ;// CONCATENATED MODULE: ./src/sdk/shipping/useShippingSimulation.ts
974
- function useShippingSimulation_ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
975
-
976
- function useShippingSimulation_objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? useShippingSimulation_ownKeys(Object(source), !0).forEach(function (key) { useShippingSimulation_defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : useShippingSimulation_ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
977
-
978
- function useShippingSimulation_defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
979
-
980
-
981
-
982
-
983
-
984
- const createEmptySimulation = () => ({
985
- input: {
986
- postalCode: '',
987
- displayClearButton: false,
988
- errorMessage: ''
989
- },
990
- shippingSimulation: undefined
991
- });
992
-
993
- const reducer = (state, action) => {
994
- const {
995
- type
996
- } = action;
997
-
998
- switch (type) {
999
- case 'clear':
1000
- {
1001
- return createEmptySimulation();
1002
- }
1003
-
1004
- case 'update':
1005
- {
1006
- const {
1007
- payload
1008
- } = action;
1009
- return {
1010
- input: useShippingSimulation_objectSpread(useShippingSimulation_objectSpread({}, state.input), payload.input),
1011
- shippingSimulation: useShippingSimulation_objectSpread(useShippingSimulation_objectSpread({}, state.shippingSimulation), payload.shippingSimulation)
1012
- };
1013
- }
1014
-
1015
- case 'onInput':
1016
- {
1017
- const {
1018
- payload
1019
- } = action;
1020
- return useShippingSimulation_objectSpread(useShippingSimulation_objectSpread({}, state), {}, {
1021
- input: useShippingSimulation_objectSpread({}, payload)
1022
- });
1023
- }
1024
-
1025
- case 'onError':
1026
- {
1027
- const {
1028
- payload
1029
- } = action;
1030
- return useShippingSimulation_objectSpread(useShippingSimulation_objectSpread({}, state), {}, {
1031
- input: useShippingSimulation_objectSpread(useShippingSimulation_objectSpread({}, state.input), payload)
1032
- });
1033
- }
1034
-
1035
- default:
1036
- throw new Error(`Action ${type} not implemented`);
1037
- }
1038
- };
1039
-
1040
- const useShippingSimulation = shippingItem => {
1041
- const {
1042
- 0: {
1043
- input,
1044
- shippingSimulation
1045
- },
1046
- 1: dispatch
1047
- } = (0,external_react_.useReducer)(reducer, null, createEmptySimulation);
1048
- const {
1049
- country,
1050
- postalCode: sessionPostalCode
1051
- } = (0,session/* useSession */.kP)();
1052
- const {
1053
- postalCode: shippingPostalCode
1054
- } = input;
1055
- const shippingPostalCodeRef = (0,external_react_.useRef)(shippingPostalCode);
1056
- (0,external_react_.useEffect)(() => {
1057
- const shouldFetch = sessionPostalCode && !shippingPostalCodeRef.current;
1058
-
1059
- if (!shouldFetch) {
1060
- return;
1061
- } // Use sessionPostalCode if there is no shippingPostalCode
1062
-
1063
-
1064
- async function fetchShipping() {
1065
- const data = await shipping({
1066
- country,
1067
- postalCode: sessionPostalCode ?? '',
1068
- items: [shippingItem]
1069
- });
1070
- const shippingSimulation = data.shipping;
1071
- dispatch({
1072
- type: 'update',
1073
- payload: {
1074
- input: {
1075
- postalCode: sessionPostalCode ?? '',
1076
- displayClearButton: true,
1077
- errorMessage: ''
1078
- },
1079
- shippingSimulation
1080
- }
1081
- });
1082
- }
1083
-
1084
- fetchShipping();
1085
- }, [country, sessionPostalCode, shippingItem]);
1086
- const handleSubmit = (0,external_react_.useCallback)(async () => {
1087
- try {
1088
- const data = await shipping({
1089
- country,
1090
- postalCode: shippingPostalCode ?? '',
1091
- items: [shippingItem]
1092
- });
1093
- const shippingSimulation = data.shipping;
1094
- dispatch({
1095
- type: 'update',
1096
- payload: {
1097
- input: {
1098
- displayClearButton: true,
1099
- errorMessage: ''
1100
- },
1101
- shippingSimulation
1102
- }
1103
- });
1104
- } catch (error) {
1105
- dispatch({
1106
- type: 'onError',
1107
- payload: {
1108
- displayClearButton: true,
1109
- errorMessage: 'You entered an invalid Postal Code'
1110
- }
1111
- });
1112
- }
1113
- }, [country, shippingItem, shippingPostalCode]);
1114
- const handleOnInput = (0,external_react_.useCallback)(e => {
1115
- const currentValue = e.currentTarget.value;
1116
-
1117
- if (currentValue) {
1118
- dispatch({
1119
- type: 'onInput',
1120
- payload: {
1121
- postalCode: currentValue,
1122
- displayClearButton: false,
1123
- errorMessage: ''
1124
- }
1125
- });
1126
- } else {
1127
- dispatch({
1128
- type: 'clear'
1129
- });
1130
- }
1131
- }, []);
1132
- return {
1133
- input,
1134
- shippingSimulation,
1135
- handleOnClear: () => {
1136
- dispatch({
1137
- type: 'clear'
1138
- });
1139
- },
1140
- handleSubmit,
1141
- handleOnInput
1142
- };
1143
- };
1144
- ;// CONCATENATED MODULE: ./src/components/ui/ShippingSimulation/ShippingSimulation.tsx
1145
- const ShippingSimulation_excluded = ["productShippingInfo", "formatter", "inputLabel", "title", "idkPostalCodeLinkProps"];
1146
-
1147
- function ShippingSimulation_ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
1148
-
1149
- function ShippingSimulation_objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ShippingSimulation_ownKeys(Object(source), !0).forEach(function (key) { ShippingSimulation_defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ShippingSimulation_ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
1150
-
1151
- function ShippingSimulation_defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
1152
-
1153
- function ShippingSimulation_objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = ShippingSimulation_objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }
1154
-
1155
- function ShippingSimulation_objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }
1156
-
1157
-
1158
-
1159
-
1160
- function ShippingSimulation_ShippingSimulation_ShippingSimulation(_ref) {
1161
- let {
1162
- productShippingInfo,
1163
- formatter,
1164
- inputLabel,
1165
- title,
1166
- idkPostalCodeLinkProps
1167
- } = _ref,
1168
- otherProps = ShippingSimulation_objectWithoutProperties(_ref, ShippingSimulation_excluded);
1169
-
1170
- const {
1171
- ShippingSimulation: ShippingSimulationWrapper
1172
- } = (0,OverrideContext/* useOverrideComponents */.r3)();
1173
- const {
1174
- input,
1175
- shippingSimulation,
1176
- handleSubmit,
1177
- handleOnInput,
1178
- handleOnClear
1179
- } = useShippingSimulation(productShippingInfo);
1180
- const {
1181
- postalCode,
1182
- displayClearButton,
1183
- errorMessage
1184
- } = input;
1185
- const location = [shippingSimulation?.address?.neighborhood, shippingSimulation?.address?.city].filter(Boolean).join(' / ') ?? '';
1186
- const options = shippingSimulation?.logisticsInfo?.[0]?.slas ?? [];
1187
- return /*#__PURE__*/jsx_runtime_.jsx(ShippingSimulationWrapper.Component, ShippingSimulation_objectSpread({
1188
- formatter: formatter,
1189
- onInput: handleOnInput,
1190
- onSubmit: handleSubmit,
1191
- onClear: handleOnClear,
1192
- location: location,
1193
- options: options,
1194
- address: shippingSimulation?.address,
1195
- displayClearButton: displayClearButton,
1196
- errorMessage: errorMessage,
1197
- postalCode: postalCode,
1198
- inputLabel: inputLabel,
1199
- title: title,
1200
- idkPostalCodeLinkProps: idkPostalCodeLinkProps
1201
- }, otherProps));
1202
- }
1203
- ;// CONCATENATED MODULE: ./src/components/product/NotAvailableButton/NotAvailableButton.tsx
1204
- // TODO: Remove this component when <OutOfStock /> is ready to use
1205
-
1206
-
1207
-
1208
- function NotAvailableButton({
1209
- children
1210
- }) {
1211
- return /*#__PURE__*/jsx_runtime_.jsx(Button/* default */.Z, {
1212
- variant: "primary",
1213
- disabled: true,
1214
- "data-fs-buy-button": true,
1215
- children: children
1216
- });
1217
- }
1218
-
1219
- /* harmony default export */ const NotAvailableButton_NotAvailableButton = (NotAvailableButton);
1220
- ;// CONCATENATED MODULE: ./src/components/sections/ProductDetails/DefaultComponents.ts
1221
-
1222
-
1223
-
1224
-
1225
-
1226
- const ProductDetailsDefaultComponents = {
1227
- ProductTitle: ProductTitle_ProductTitle,
1228
- DiscountBadge: DiscountBadge/* default */.Z,
1229
- BuyButton: BuyButton_BuyButton,
1230
- Icon: Icon/* default */.Z,
1231
- ProductPrice: ProductPrice/* default */.Z,
1232
- QuantitySelector: QuantitySelector/* default */.Z,
1233
- SkuSelector: SkuSelector_SkuSelector,
1234
- ShippingSimulation: ShippingSimulation_ShippingSimulation,
1235
- ImageGallery: ImageGallery_ImageGallery,
1236
- ImageGalleryViewer: ImageGallery_ImageGalleryViewer,
1237
- __experimentalImageGalleryImage: Image/* default */.Z,
1238
- __experimentalImageGallery: ui_ImageGallery_ImageGallery,
1239
- __experimentalShippingSimulation: ShippingSimulation_ShippingSimulation_ShippingSimulation,
1240
- __experimentalNotAvailableButton: NotAvailableButton_NotAvailableButton
1241
- };
1242
- ;// CONCATENATED MODULE: ./src/components/sections/ProductDetails/ProductDetails.tsx
1243
- function ProductDetails_ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
1244
-
1245
- function ProductDetails_objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ProductDetails_ownKeys(Object(source), !0).forEach(function (key) { ProductDetails_defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ProductDetails_ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
1246
-
1247
- function ProductDetails_defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
1248
-
1249
-
1250
-
1251
-
1252
-
1253
-
1254
-
1255
-
1256
-
1257
-
1258
-
1259
-
1260
-
1261
-
1262
-
1263
-
1264
- function ProductDetails({
1265
- productTitle: {
1266
- refNumber: showRefNumber,
1267
- discountBadge: {
1268
- showDiscountBadge,
1269
- size: discountBadgeSize
1270
- }
1271
- },
1272
- buyButton: {
1273
- icon: buyButtonIcon,
1274
- title: buyButtonTitle
1275
- },
1276
- shippingSimulator: {
1277
- title: shippingSimulatorTitle,
1278
- inputLabel: shippingSimulatorInputLabel,
1279
- shippingOptionsTableTitle: shippingSimulatorOptionsTableTitle,
1280
- link: {
1281
- to: shippingSimulatorLinkUrl,
1282
- text: shippingSimulatorLinkText
1283
- }
1284
- },
1285
- productDescription: {
1286
- title: productDescriptionDetailsTitle,
1287
- initiallyExpanded: productDescriptionInitiallyExpanded,
1288
- displayDescription: shouldDisplayProductDescription
1289
- },
1290
- notAvailableButton: {
1291
- title: notAvailableButtonTitle
1292
- }
1293
- }) {
1294
- const {
1295
- DiscountBadge,
1296
- ProductTitle,
1297
- __experimentalImageGallery: ImageGallery,
1298
- __experimentalShippingSimulation: ShippingSimulation,
1299
- __experimentalNotAvailableButton: NotAvailableButton
1300
- } = (0,OverrideContext/* useOverrideComponents */.r3)();
1301
- const {
1302
- currency
1303
- } = (0,session/* useSession */.kP)();
1304
- const {
1305
- 0: quantity,
1306
- 1: setQuantity
1307
- } = (0,external_react_.useState)(1);
1308
- const context = (0,PageProvider/* usePDP */.al)();
1309
- const {
1310
- product,
1311
- isValidating
1312
- } = context?.data;
1313
-
1314
- if (!product) {
1315
- throw new Error('NotFound');
1316
- }
1317
-
1318
- const {
1319
- id,
1320
- sku,
1321
- gtin,
1322
- name: variantName,
1323
- brand,
1324
- isVariantOf,
1325
- description,
1326
- isVariantOf: {
1327
- name,
1328
- productGroupID: productId
1329
- },
1330
- image: productImages,
1331
- offers: {
1332
- offers: [{
1333
- availability,
1334
- price,
1335
- listPrice,
1336
- seller
1337
- }],
1338
- lowPrice
1339
- }
1340
- } = product;
1341
- (0,external_react_.useEffect)(() => {
1342
- (0,sendAnalyticsEvent/* sendAnalyticsEvent */._)({
1343
- name: 'view_item',
1344
- params: {
1345
- currency: currency.code,
1346
- value: price,
1347
- items: [{
1348
- item_id: isVariantOf.productGroupID,
1349
- item_name: isVariantOf.name,
1350
- item_brand: brand.name,
1351
- item_variant: sku,
1352
- price,
1353
- discount: listPrice - price,
1354
- currency: currency.code,
1355
- item_variant_name: variantName,
1356
- product_reference_id: gtin
1357
- }]
1358
- }
1359
- });
1360
- }, [isVariantOf.productGroupID, isVariantOf.name, brand.name, sku, price, listPrice, currency.code, variantName, gtin]);
1361
- const outOfStock = (0,external_react_.useMemo)(() => availability === 'https://schema.org/OutOfStock', [availability]);
1362
- return /*#__PURE__*/jsx_runtime_.jsx(Section/* default */.Z, {
1363
- className: `${(section_module_default()).section} section-product-details`,
1364
- children: /*#__PURE__*/jsx_runtime_.jsx("section", {
1365
- "data-fs-product-details": true,
1366
- children: /*#__PURE__*/(0,jsx_runtime_.jsxs)("section", {
1367
- "data-fs-product-details-body": true,
1368
- "data-fs-content": "product-details",
1369
- children: [/*#__PURE__*/jsx_runtime_.jsx("header", {
1370
- "data-fs-product-details-title": true,
1371
- "data-fs-product-details-section": true,
1372
- children: /*#__PURE__*/jsx_runtime_.jsx(ProductTitle.Component, ProductDetails_objectSpread(ProductDetails_objectSpread({
1373
- // TODO: We should review this prop. There's now way to override the title and use the dynamic name value.
1374
- // Maybe passing a ProductTitleHeader component as a prop would be better, as it would be overridable.
1375
- // Maybe now it's worth to make title always a h1 and receive only the name, as it would be easier for users to override.
1376
- title: /*#__PURE__*/jsx_runtime_.jsx("h1", {
1377
- children: name
1378
- })
1379
- }, ProductTitle.props), {}, {
1380
- label: showDiscountBadge && /*#__PURE__*/jsx_runtime_.jsx(DiscountBadge.Component, ProductDetails_objectSpread(ProductDetails_objectSpread({}, DiscountBadge.props), {}, {
1381
- size: discountBadgeSize ?? DiscountBadge.props.size // Dynamic props shouldn't be overridable
1382
- // This decision can be reviewed later if needed
1383
- ,
1384
- listPrice: listPrice,
1385
- spotPrice: lowPrice
1386
- })),
1387
- refNumber: showRefNumber && productId
1388
- }))
1389
- }), /*#__PURE__*/jsx_runtime_.jsx(ImageGallery.Component, ProductDetails_objectSpread(ProductDetails_objectSpread({
1390
- "data-fs-product-details-gallery": true
1391
- }, ImageGallery.props), {}, {
1392
- images: productImages
1393
- })), /*#__PURE__*/(0,jsx_runtime_.jsxs)("section", {
1394
- "data-fs-product-details-info": true,
1395
- children: [/*#__PURE__*/jsx_runtime_.jsx("section", {
1396
- "data-fs-product-details-settings": true,
1397
- "data-fs-product-details-section": true,
1398
- children: /*#__PURE__*/jsx_runtime_.jsx(ProductDetails_ProductDetailsSettings, {
1399
- product: product,
1400
- isValidating: isValidating,
1401
- buyButtonTitle: buyButtonTitle,
1402
- quantity: quantity,
1403
- setQuantity: setQuantity,
1404
- buyButtonIcon: buyButtonIcon,
1405
- notAvailableButtonTitle: notAvailableButtonTitle ?? NotAvailableButton.props.title
1406
- })
1407
- }), !outOfStock && /*#__PURE__*/jsx_runtime_.jsx(ShippingSimulation.Component, ProductDetails_objectSpread(ProductDetails_objectSpread({
1408
- "data-fs-product-details-section": true,
1409
- "data-fs-product-details-shipping": true,
1410
- formatter: useFormattedPrice/* useFormattedPrice */.P
1411
- }, ShippingSimulation.props), {}, {
1412
- idkPostalCodeLinkProps: ProductDetails_objectSpread(ProductDetails_objectSpread({}, ShippingSimulation.props.idkPostalCodeLinkProps), {}, {
1413
- href: shippingSimulatorLinkUrl ?? ShippingSimulation.props.idkPostalCodeLinkProps?.href,
1414
- children: shippingSimulatorLinkText ?? ShippingSimulation.props.idkPostalCodeLinkProps?.children
1415
- }),
1416
- productShippingInfo: {
1417
- id,
1418
- quantity,
1419
- seller: seller.identifier
1420
- },
1421
- title: shippingSimulatorTitle ?? ShippingSimulation.props.title,
1422
- inputLabel: shippingSimulatorInputLabel ?? ShippingSimulation.props.inputLabel,
1423
- optionsLabel: shippingSimulatorOptionsTableTitle ?? ShippingSimulation.props.optionsLabel
1424
- }))]
1425
- }), shouldDisplayProductDescription && /*#__PURE__*/jsx_runtime_.jsx(ProductDescription_ProductDescription, {
1426
- initiallyExpanded: productDescriptionInitiallyExpanded,
1427
- descriptionData: [{
1428
- title: productDescriptionDetailsTitle,
1429
- content: description
1430
- }]
1431
- })]
1432
- })
1433
- })
1434
- });
1435
- }
1436
-
1437
- const fragment = "unknown";
1438
- const OverridableProductDetails = (0,getOverriddenSection/* getOverridableSection */.B)('ProductDetails', ProductDetails, ProductDetailsDefaultComponents);
1439
- /* harmony default export */ const ProductDetails_ProductDetails = (OverridableProductDetails);
1440
- ;// CONCATENATED MODULE: ./src/components/sections/ProductDetails/OverriddenDefaultProductDetails.ts
1441
- function OverriddenDefaultProductDetails_ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
1442
-
1443
- function OverriddenDefaultProductDetails_objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? OverriddenDefaultProductDetails_ownKeys(Object(source), !0).forEach(function (key) { OverriddenDefaultProductDetails_defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : OverriddenDefaultProductDetails_ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
1444
-
1445
- function OverriddenDefaultProductDetails_defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
1446
-
1447
-
1448
-
1449
-
1450
-
1451
- /**
1452
- * This component exists to support overrides 1.0
1453
- *
1454
- * This allows users to override the default ProductDetails section present in the Headless CMS
1455
- */
1456
- const OverriddenDefaultProductDetails = (0,getOverriddenSection/* getOverriddenSection */.v)(OverriddenDefaultProductDetails_objectSpread(OverriddenDefaultProductDetails_objectSpread({}, override), {}, {
1457
- Section: ProductDetails_ProductDetails
1458
- }));
1459
-
1460
- /***/ }),
1461
-
1462
- /***/ 5779:
1463
- /***/ ((module, __webpack_exports__, __webpack_require__) => {
1464
-
1465
- "use strict";
1466
- __webpack_require__.a(module, async (__webpack_handle_async_dependencies__, __webpack_async_result__) => { try {
1467
- __webpack_require__.r(__webpack_exports__);
1468
- /* harmony export */ __webpack_require__.d(__webpack_exports__, {
1469
- /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__),
1470
- /* harmony export */ "getStaticPaths": () => (/* binding */ getStaticPaths),
1471
- /* harmony export */ "getStaticProps": () => (/* binding */ getStaticProps)
1472
- /* harmony export */ });
1473
- /* harmony import */ var _faststore_api__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(7397);
1474
- /* harmony import */ var next_seo__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(6641);
1475
- /* harmony import */ var next_seo__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(next_seo__WEBPACK_IMPORTED_MODULE_1__);
1476
- /* harmony import */ var deepmerge__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(6330);
1477
- /* harmony import */ var deepmerge__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(deepmerge__WEBPACK_IMPORTED_MODULE_2__);
1478
- /* harmony import */ var src_components_cms_RenderSections__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(2224);
1479
- /* harmony import */ var src_components_sections_BannerNewsletter_BannerNewsletter__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(2951);
1480
- /* harmony import */ var src_components_sections_BannerText_OverriddenDefaultBannerText__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(7127);
1481
- /* harmony import */ var src_components_sections_Breadcrumb_OverriddenDefaultBreadcrumb__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(5632);
1482
- /* harmony import */ var src_components_sections_CrossSellingShelf_OverriddenDefaultCrossSellingShelf__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(4474);
1483
- /* harmony import */ var src_components_sections_ProductDetails_OverriddenDefaultProductDetails__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(8655);
1484
- /* harmony import */ var src_customizations_src_components__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(3276);
1485
- /* harmony import */ var src_sdk_session__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(7295);
1486
- /* harmony import */ var src_sdk_tests_mark__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(2541);
1487
- /* harmony import */ var src_server__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(9685);
1488
- /* harmony import */ var src_server_cms__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(9497);
1489
- /* harmony import */ var src_components_cms_GlobalSections__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(4074);
1490
- /* harmony import */ var _faststore_config__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(7183);
1491
- /* harmony import */ var _faststore_config__WEBPACK_IMPORTED_MODULE_17___default = /*#__PURE__*/__webpack_require__.n(_faststore_config__WEBPACK_IMPORTED_MODULE_17__);
1492
- /* harmony import */ var src_sdk_product_useProductQuery__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(7853);
1493
- /* harmony import */ var src_sdk_overrides_PageProvider__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(5953);
1494
- /* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(997);
1495
- /* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__);
1496
- var __webpack_async_dependencies__ = __webpack_handle_async_dependencies__([_faststore_api__WEBPACK_IMPORTED_MODULE_0__, src_components_sections_CrossSellingShelf_OverriddenDefaultCrossSellingShelf__WEBPACK_IMPORTED_MODULE_6__, src_components_sections_BannerNewsletter_BannerNewsletter__WEBPACK_IMPORTED_MODULE_7__, src_sdk_product_useProductQuery__WEBPACK_IMPORTED_MODULE_11__, src_components_cms_GlobalSections__WEBPACK_IMPORTED_MODULE_12__, src_components_cms_RenderSections__WEBPACK_IMPORTED_MODULE_14__, src_server__WEBPACK_IMPORTED_MODULE_15__]);
1497
- ([_faststore_api__WEBPACK_IMPORTED_MODULE_0__, src_components_sections_CrossSellingShelf_OverriddenDefaultCrossSellingShelf__WEBPACK_IMPORTED_MODULE_6__, src_components_sections_BannerNewsletter_BannerNewsletter__WEBPACK_IMPORTED_MODULE_7__, src_sdk_product_useProductQuery__WEBPACK_IMPORTED_MODULE_11__, src_components_cms_GlobalSections__WEBPACK_IMPORTED_MODULE_12__, src_components_cms_RenderSections__WEBPACK_IMPORTED_MODULE_14__, src_server__WEBPACK_IMPORTED_MODULE_15__] = __webpack_async_dependencies__.then ? (await __webpack_async_dependencies__)() : __webpack_async_dependencies__);
1498
- const _excluded = ["listPrice"];
1499
-
1500
- function _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }
1501
-
1502
- function _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }
1503
-
1504
- function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
1505
-
1506
- function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
1507
-
1508
- function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
1509
-
1510
-
1511
-
1512
-
1513
-
1514
-
1515
-
1516
-
1517
-
1518
-
1519
-
1520
-
1521
-
1522
-
1523
-
1524
-
1525
-
1526
-
1527
-
1528
- /**
1529
- * Sections: Components imported from each store's custom components and '../components/sections' only.
1530
- * Do not import or render components from any other folder in here.
1531
- */
1532
-
1533
-
1534
-
1535
-
1536
- const COMPONENTS = _objectSpread({
1537
- Breadcrumb: src_components_sections_Breadcrumb_OverriddenDefaultBreadcrumb__WEBPACK_IMPORTED_MODULE_4__/* .OverriddenDefaultBreadcrumb */ .j,
1538
- ProductDetails: src_components_sections_ProductDetails_OverriddenDefaultProductDetails__WEBPACK_IMPORTED_MODULE_5__/* .OverriddenDefaultProductDetails */ .L,
1539
- CrossSellingShelf: src_components_sections_CrossSellingShelf_OverriddenDefaultCrossSellingShelf__WEBPACK_IMPORTED_MODULE_6__/* .OverriddenDefaultCrossSellingShelf */ .Z,
1540
- BannerNewsletter: src_components_sections_BannerNewsletter_BannerNewsletter__WEBPACK_IMPORTED_MODULE_7__/* ["default"] */ .Z,
1541
- BannerText: src_components_sections_BannerText_OverriddenDefaultBannerText__WEBPACK_IMPORTED_MODULE_8__/* .OverriddenDefaultBannerText */ .i
1542
- }, src_customizations_src_components__WEBPACK_IMPORTED_MODULE_9__/* ["default"] */ .Z);
1543
-
1544
- // Array merging strategy from deepmerge that makes client arrays overwrite server array
1545
- // https://www.npmjs.com/package/deepmerge
1546
- const overwriteMerge = (_, sourceArray) => sourceArray;
1547
-
1548
- function Page({
1549
- data: server,
1550
- sections,
1551
- globalSections,
1552
- offers,
1553
- meta
1554
- }) {
1555
- const {
1556
- product
1557
- } = server;
1558
- const {
1559
- currency
1560
- } = (0,src_sdk_session__WEBPACK_IMPORTED_MODULE_10__/* .useSession */ .kP)(); // Stale while revalidate the product for fetching the new price etc
1561
-
1562
- const {
1563
- data: client,
1564
- isValidating
1565
- } = (0,src_sdk_product_useProductQuery__WEBPACK_IMPORTED_MODULE_11__/* .useProductQuery */ .F)(product.id, {
1566
- product: product
1567
- });
1568
- const context = {
1569
- data: _objectSpread(_objectSpread({}, deepmerge__WEBPACK_IMPORTED_MODULE_2___default()(server, client, {
1570
- arrayMerge: overwriteMerge
1571
- })), {}, {
1572
- isValidating
1573
- })
1574
- };
1575
- return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsxs)(src_components_cms_GlobalSections__WEBPACK_IMPORTED_MODULE_12__/* ["default"] */ .ZP, _objectSpread(_objectSpread({}, globalSections), {}, {
1576
- children: [/*#__PURE__*/react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsx(next_seo__WEBPACK_IMPORTED_MODULE_1__.NextSeo, {
1577
- title: meta.title,
1578
- description: meta.description,
1579
- canonical: meta.canonical,
1580
- openGraph: {
1581
- type: 'og:product',
1582
- url: meta.canonical,
1583
- title: meta.title,
1584
- description: meta.description,
1585
- images: product.image.map(img => ({
1586
- url: img.url,
1587
- alt: img.alternateName
1588
- }))
1589
- },
1590
- additionalMetaTags: [{
1591
- property: 'product:price:amount',
1592
- content: product.offers.lowPrice?.toString() ?? undefined
1593
- }, {
1594
- property: 'product:price:currency',
1595
- content: currency.code
1596
- }]
1597
- }), /*#__PURE__*/react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsx(next_seo__WEBPACK_IMPORTED_MODULE_1__.BreadcrumbJsonLd, {
1598
- itemListElements: product.breadcrumbList.itemListElement
1599
- }), /*#__PURE__*/react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsx(next_seo__WEBPACK_IMPORTED_MODULE_1__.ProductJsonLd, {
1600
- productName: product.name,
1601
- description: product.description,
1602
- brand: product.brand.name,
1603
- sku: product.sku,
1604
- gtin: product.gtin,
1605
- releaseDate: product.releaseDate,
1606
- images: product.image.map(img => img.url) // Somehow, Google does not understand this valid Schema.org schema, so we need to do conversions
1607
- ,
1608
- offers: offers
1609
- }), /*#__PURE__*/react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsx(src_sdk_overrides_PageProvider__WEBPACK_IMPORTED_MODULE_13__/* ["default"] */ .ZP, {
1610
- context: context,
1611
- children: /*#__PURE__*/react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsx(src_components_cms_RenderSections__WEBPACK_IMPORTED_MODULE_14__/* ["default"] */ .Z, {
1612
- sections: sections,
1613
- components: COMPONENTS
1614
- })
1615
- })]
1616
- }));
1617
- }
1618
-
1619
- const query = "ServerProductQuery";
1620
- const getStaticProps = async ({
1621
- params,
1622
- previewData
1623
- }) => {
1624
- const slug = params?.slug ?? '';
1625
- const [searchResult, cmsPage, globalSections] = await Promise.all([(0,src_server__WEBPACK_IMPORTED_MODULE_15__/* .execute */ .h)({
1626
- variables: {
1627
- locator: [{
1628
- key: 'slug',
1629
- value: slug
1630
- }]
1631
- },
1632
- operationName: query
1633
- }), (0,src_server_cms__WEBPACK_IMPORTED_MODULE_16__/* .getPage */ .f)(_objectSpread(_objectSpread({}, previewData?.contentType === 'pdp' ? previewData : null), {}, {
1634
- contentType: 'pdp'
1635
- })), (0,src_components_cms_GlobalSections__WEBPACK_IMPORTED_MODULE_12__/* .getGlobalSectionsData */ .Tc)(previewData)]);
1636
- const {
1637
- data,
1638
- errors = []
1639
- } = searchResult;
1640
- const notFound = errors.find(_faststore_api__WEBPACK_IMPORTED_MODULE_0__/* .isNotFoundError */ .XD);
1641
-
1642
- if (notFound) {
1643
- return {
1644
- notFound: true
1645
- };
1646
- }
1647
-
1648
- if (errors.length > 0) {
1649
- throw errors[0];
1650
- }
1651
-
1652
- const {
1653
- seo
1654
- } = data.product;
1655
- const title = seo.title || (_faststore_config__WEBPACK_IMPORTED_MODULE_17___default().seo.title);
1656
- const description = seo.description || (_faststore_config__WEBPACK_IMPORTED_MODULE_17___default().seo.description);
1657
- const canonical = `${(_faststore_config__WEBPACK_IMPORTED_MODULE_17___default().storeUrl)}${seo.canonical}`;
1658
- const meta = {
1659
- title,
1660
- description,
1661
- canonical
1662
- };
1663
- let offer = {};
1664
-
1665
- if (data.product.offers.offers.length > 0) {
1666
- const _data$product$offers$ = data.product.offers.offers[0],
1667
- {
1668
- listPrice
1669
- } = _data$product$offers$,
1670
- offerData = _objectWithoutProperties(_data$product$offers$, _excluded);
1671
-
1672
- offer = offerData;
1673
- }
1674
-
1675
- const offers = _objectSpread(_objectSpread({}, offer), {}, {
1676
- priceCurrency: data.product.offers.priceCurrency,
1677
- url: canonical
1678
- });
1679
-
1680
- return {
1681
- props: _objectSpread(_objectSpread({
1682
- data
1683
- }, cmsPage), {}, {
1684
- meta,
1685
- offers,
1686
- globalSections,
1687
- key: seo.canonical
1688
- })
1689
- };
1690
- };
1691
- const getStaticPaths = async () => {
1692
- return {
1693
- paths: [],
1694
- fallback: 'blocking'
1695
- };
1696
- };
1697
- Page.displayName = 'Page';
1698
- /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ((0,src_sdk_tests_mark__WEBPACK_IMPORTED_MODULE_18__/* .mark */ .B)(Page));
1699
- __webpack_async_result__();
1700
- } catch(e) { __webpack_async_result__(e); } });
1701
-
1702
- /***/ }),
1703
-
1704
- /***/ 7853:
1705
- /***/ ((module, __webpack_exports__, __webpack_require__) => {
1706
-
1707
- "use strict";
1708
- __webpack_require__.a(module, async (__webpack_handle_async_dependencies__, __webpack_async_result__) => { try {
1709
- /* harmony export */ __webpack_require__.d(__webpack_exports__, {
1710
- /* harmony export */ "F": () => (/* binding */ useProductQuery)
1711
- /* harmony export */ });
1712
- /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(6689);
1713
- /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);
1714
- /* harmony import */ var _graphql_useQuery__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(7732);
1715
- /* harmony import */ var _session__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(7295);
1716
- var __webpack_async_dependencies__ = __webpack_handle_async_dependencies__([_graphql_useQuery__WEBPACK_IMPORTED_MODULE_2__]);
1717
- _graphql_useQuery__WEBPACK_IMPORTED_MODULE_2__ = (__webpack_async_dependencies__.then ? (await __webpack_async_dependencies__)() : __webpack_async_dependencies__)[0];
1718
-
1719
-
1720
-
1721
- const query = "ClientProductQuery";
1722
- const useProductQuery = (productID, fallbackData) => {
1723
- const {
1724
- channel,
1725
- locale
1726
- } = (0,_session__WEBPACK_IMPORTED_MODULE_1__/* .useSession */ .kP)();
1727
- const variables = (0,react__WEBPACK_IMPORTED_MODULE_0__.useMemo)(() => {
1728
- if (!channel) {
1729
- throw new Error(`useProductQuery: 'channel' from session is an empty string.`);
1730
- }
1731
-
1732
- return {
1733
- locator: [{
1734
- key: 'id',
1735
- value: productID
1736
- }, {
1737
- key: 'channel',
1738
- value: channel
1739
- }, {
1740
- key: 'locale',
1741
- value: locale
1742
- }]
1743
- };
1744
- }, [channel, locale, productID]);
1745
- return (0,_graphql_useQuery__WEBPACK_IMPORTED_MODULE_2__/* .useQuery */ .aM)(query, variables, {
1746
- fallbackData,
1747
- revalidateOnMount: true
1748
- });
1749
- };
1750
- __webpack_async_result__();
1751
- } catch(e) { __webpack_async_result__(e); } });
1752
-
1753
- /***/ }),
1754
-
1755
- /***/ 5411:
1756
- /***/ ((module) => {
1757
-
1758
- // Exports
1759
- module.exports = {
1760
- "section": "section_section__pVnFl"
1761
- };
1762
-
1763
-
1764
- /***/ }),
1765
-
1766
- /***/ 9034:
1767
- /***/ ((module) => {
1768
-
1769
- // Exports
1770
- module.exports = {
1771
- "section": "section_section__XsOoR"
1772
- };
1773
-
1774
-
1775
- /***/ }),
1776
-
1777
- /***/ 4691:
1778
- /***/ ((module) => {
1779
-
1780
- "use strict";
1781
- module.exports = require("@opentelemetry/api");
1782
-
1783
- /***/ }),
1784
-
1785
- /***/ 8973:
1786
- /***/ ((module) => {
1787
-
1788
- "use strict";
1789
- module.exports = require("@opentelemetry/api-logs");
1790
-
1791
- /***/ }),
1792
-
1793
- /***/ 6969:
1794
- /***/ ((module) => {
1795
-
1796
- "use strict";
1797
- module.exports = require("@opentelemetry/exporter-logs-otlp-grpc");
1798
-
1799
- /***/ }),
1800
-
1801
- /***/ 5196:
1802
- /***/ ((module) => {
1803
-
1804
- "use strict";
1805
- module.exports = require("@opentelemetry/exporter-trace-otlp-grpc");
1806
-
1807
- /***/ }),
1808
-
1809
- /***/ 4161:
1810
- /***/ ((module) => {
1811
-
1812
- "use strict";
1813
- module.exports = require("@opentelemetry/resources");
1814
-
1815
- /***/ }),
1816
-
1817
- /***/ 2793:
1818
- /***/ ((module) => {
1819
-
1820
- "use strict";
1821
- module.exports = require("@opentelemetry/sdk-logs");
1822
-
1823
- /***/ }),
1824
-
1825
- /***/ 1283:
1826
- /***/ ((module) => {
1827
-
1828
- "use strict";
1829
- module.exports = require("@opentelemetry/sdk-trace-base");
1830
-
1831
- /***/ }),
1832
-
1833
- /***/ 6676:
1834
- /***/ ((module) => {
1835
-
1836
- "use strict";
1837
- module.exports = require("@vtex/client-cms");
1838
-
1839
- /***/ }),
1840
-
1841
- /***/ 6330:
1842
- /***/ ((module) => {
1843
-
1844
- "use strict";
1845
- module.exports = require("deepmerge");
1846
-
1847
- /***/ }),
1848
-
1849
- /***/ 8641:
1850
- /***/ ((module) => {
1851
-
1852
- "use strict";
1853
- module.exports = require("draftjs-to-html");
1854
-
1855
- /***/ }),
1856
-
1857
- /***/ 2404:
1858
- /***/ ((module) => {
1859
-
1860
- "use strict";
1861
- module.exports = require("fast-deep-equal");
1862
-
1863
- /***/ }),
1864
-
1865
- /***/ 7343:
1866
- /***/ ((module) => {
1867
-
1868
- "use strict";
1869
- module.exports = require("graphql");
1870
-
1871
- /***/ }),
1872
-
1873
- /***/ 6548:
1874
- /***/ ((module) => {
1875
-
1876
- "use strict";
1877
- module.exports = require("graphql/language");
1878
-
1879
- /***/ }),
1880
-
1881
- /***/ 3430:
1882
- /***/ ((module) => {
1883
-
1884
- "use strict";
1885
- module.exports = require("idb-keyval");
1886
-
1887
- /***/ }),
1888
-
1889
- /***/ 7881:
1890
- /***/ ((module) => {
1891
-
1892
- "use strict";
1893
- module.exports = require("isomorphic-unfetch");
1894
-
1895
- /***/ }),
1896
-
1897
- /***/ 6641:
1898
- /***/ ((module) => {
1899
-
1900
- "use strict";
1901
- module.exports = require("next-seo");
1902
-
1903
- /***/ }),
1904
-
1905
- /***/ 3280:
1906
- /***/ ((module) => {
1907
-
1908
- "use strict";
1909
- module.exports = require("next/dist/shared/lib/app-router-context.js");
1910
-
1911
- /***/ }),
1912
-
1913
- /***/ 2796:
1914
- /***/ ((module) => {
1915
-
1916
- "use strict";
1917
- module.exports = require("next/dist/shared/lib/head-manager-context.js");
1918
-
1919
- /***/ }),
1920
-
1921
- /***/ 4957:
1922
- /***/ ((module) => {
1923
-
1924
- "use strict";
1925
- module.exports = require("next/dist/shared/lib/head.js");
1926
-
1927
- /***/ }),
1928
-
1929
- /***/ 3539:
1930
- /***/ ((module) => {
1931
-
1932
- "use strict";
1933
- module.exports = require("next/dist/shared/lib/i18n/detect-domain-locale.js");
1934
-
1935
- /***/ }),
1936
-
1937
- /***/ 4014:
1938
- /***/ ((module) => {
1939
-
1940
- "use strict";
1941
- module.exports = require("next/dist/shared/lib/i18n/normalize-locale-path.js");
1942
-
1943
- /***/ }),
1944
-
1945
- /***/ 4486:
1946
- /***/ ((module) => {
1947
-
1948
- "use strict";
1949
- module.exports = require("next/dist/shared/lib/image-blur-svg.js");
1950
-
1951
- /***/ }),
1952
-
1953
- /***/ 744:
1954
- /***/ ((module) => {
1955
-
1956
- "use strict";
1957
- module.exports = require("next/dist/shared/lib/image-config-context.js");
1958
-
1959
- /***/ }),
1960
-
1961
- /***/ 5843:
1962
- /***/ ((module) => {
1963
-
1964
- "use strict";
1965
- module.exports = require("next/dist/shared/lib/image-config.js");
1966
-
1967
- /***/ }),
1968
-
1969
- /***/ 8524:
1970
- /***/ ((module) => {
1971
-
1972
- "use strict";
1973
- module.exports = require("next/dist/shared/lib/is-plain-object.js");
1974
-
1975
- /***/ }),
1976
-
1977
- /***/ 8020:
1978
- /***/ ((module) => {
1979
-
1980
- "use strict";
1981
- module.exports = require("next/dist/shared/lib/mitt.js");
1982
-
1983
- /***/ }),
1984
-
1985
- /***/ 4406:
1986
- /***/ ((module) => {
1987
-
1988
- "use strict";
1989
- module.exports = require("next/dist/shared/lib/page-path/denormalize-page-path.js");
1990
-
1991
- /***/ }),
1992
-
1993
- /***/ 4964:
1994
- /***/ ((module) => {
1995
-
1996
- "use strict";
1997
- module.exports = require("next/dist/shared/lib/router-context.js");
1998
-
1999
- /***/ }),
2000
-
2001
- /***/ 3431:
2002
- /***/ ((module) => {
2003
-
2004
- "use strict";
2005
- module.exports = require("next/dist/shared/lib/router/utils/add-locale.js");
2006
-
2007
- /***/ }),
2008
-
2009
- /***/ 1751:
2010
- /***/ ((module) => {
2011
-
2012
- "use strict";
2013
- module.exports = require("next/dist/shared/lib/router/utils/add-path-prefix.js");
2014
-
2015
- /***/ }),
2016
-
2017
- /***/ 6220:
2018
- /***/ ((module) => {
2019
-
2020
- "use strict";
2021
- module.exports = require("next/dist/shared/lib/router/utils/compare-states.js");
2022
-
2023
- /***/ }),
2024
-
2025
- /***/ 299:
2026
- /***/ ((module) => {
2027
-
2028
- "use strict";
2029
- module.exports = require("next/dist/shared/lib/router/utils/format-next-pathname-info.js");
2030
-
2031
- /***/ }),
2032
-
2033
- /***/ 3938:
2034
- /***/ ((module) => {
2035
-
2036
- "use strict";
2037
- module.exports = require("next/dist/shared/lib/router/utils/format-url.js");
2038
-
2039
- /***/ }),
2040
-
2041
- /***/ 9565:
2042
- /***/ ((module) => {
2043
-
2044
- "use strict";
2045
- module.exports = require("next/dist/shared/lib/router/utils/get-asset-path-from-route.js");
2046
-
2047
- /***/ }),
2048
-
2049
- /***/ 5789:
2050
- /***/ ((module) => {
2051
-
2052
- "use strict";
2053
- module.exports = require("next/dist/shared/lib/router/utils/get-next-pathname-info.js");
2054
-
2055
- /***/ }),
2056
-
2057
- /***/ 1897:
2058
- /***/ ((module) => {
2059
-
2060
- "use strict";
2061
- module.exports = require("next/dist/shared/lib/router/utils/is-bot.js");
2062
-
2063
- /***/ }),
2064
-
2065
- /***/ 1428:
2066
- /***/ ((module) => {
2067
-
2068
- "use strict";
2069
- module.exports = require("next/dist/shared/lib/router/utils/is-dynamic.js");
2070
-
2071
- /***/ }),
2072
-
2073
- /***/ 8854:
2074
- /***/ ((module) => {
2075
-
2076
- "use strict";
2077
- module.exports = require("next/dist/shared/lib/router/utils/parse-path.js");
2078
-
2079
- /***/ }),
2080
-
2081
- /***/ 1292:
2082
- /***/ ((module) => {
2083
-
2084
- "use strict";
2085
- module.exports = require("next/dist/shared/lib/router/utils/parse-relative-url.js");
2086
-
2087
- /***/ }),
2088
-
2089
- /***/ 4567:
2090
- /***/ ((module) => {
2091
-
2092
- "use strict";
2093
- module.exports = require("next/dist/shared/lib/router/utils/path-has-prefix.js");
2094
-
2095
- /***/ }),
2096
-
2097
- /***/ 979:
2098
- /***/ ((module) => {
2099
-
2100
- "use strict";
2101
- module.exports = require("next/dist/shared/lib/router/utils/querystring.js");
2102
-
2103
- /***/ }),
2104
-
2105
- /***/ 3297:
2106
- /***/ ((module) => {
2107
-
2108
- "use strict";
2109
- module.exports = require("next/dist/shared/lib/router/utils/remove-trailing-slash.js");
2110
-
2111
- /***/ }),
2112
-
2113
- /***/ 6052:
2114
- /***/ ((module) => {
2115
-
2116
- "use strict";
2117
- module.exports = require("next/dist/shared/lib/router/utils/resolve-rewrites.js");
2118
-
2119
- /***/ }),
2120
-
2121
- /***/ 4226:
2122
- /***/ ((module) => {
2123
-
2124
- "use strict";
2125
- module.exports = require("next/dist/shared/lib/router/utils/route-matcher.js");
2126
-
2127
- /***/ }),
2128
-
2129
- /***/ 5052:
2130
- /***/ ((module) => {
2131
-
2132
- "use strict";
2133
- module.exports = require("next/dist/shared/lib/router/utils/route-regex.js");
2134
-
2135
- /***/ }),
2136
-
2137
- /***/ 9232:
2138
- /***/ ((module) => {
2139
-
2140
- "use strict";
2141
- module.exports = require("next/dist/shared/lib/utils.js");
2142
-
2143
- /***/ }),
2144
-
2145
- /***/ 1853:
2146
- /***/ ((module) => {
2147
-
2148
- "use strict";
2149
- module.exports = require("next/router");
2150
-
2151
- /***/ }),
2152
-
2153
- /***/ 5471:
2154
- /***/ ((module) => {
2155
-
2156
- "use strict";
2157
- module.exports = require("p-limit");
2158
-
2159
- /***/ }),
2160
-
2161
- /***/ 1423:
2162
- /***/ ((module) => {
2163
-
2164
- "use strict";
2165
- module.exports = require("path");
2166
-
2167
- /***/ }),
2168
-
2169
- /***/ 6689:
2170
- /***/ ((module) => {
2171
-
2172
- "use strict";
2173
- module.exports = require("react");
2174
-
2175
- /***/ }),
2176
-
2177
- /***/ 6405:
2178
- /***/ ((module) => {
2179
-
2180
- "use strict";
2181
- module.exports = require("react-dom");
2182
-
2183
- /***/ }),
2184
-
2185
- /***/ 9785:
2186
- /***/ ((module) => {
2187
-
2188
- "use strict";
2189
- module.exports = require("react-intersection-observer");
2190
-
2191
- /***/ }),
2192
-
2193
- /***/ 3789:
2194
- /***/ ((module) => {
2195
-
2196
- "use strict";
2197
- module.exports = require("react-swipeable");
2198
-
2199
- /***/ }),
2200
-
2201
- /***/ 997:
2202
- /***/ ((module) => {
2203
-
2204
- "use strict";
2205
- module.exports = require("react/jsx-runtime");
2206
-
2207
- /***/ }),
2208
-
2209
- /***/ 6109:
2210
- /***/ ((module) => {
2211
-
2212
- "use strict";
2213
- module.exports = require("sanitize-html");
2214
-
2215
- /***/ }),
2216
-
2217
- /***/ 3823:
2218
- /***/ ((module) => {
2219
-
2220
- "use strict";
2221
- module.exports = require("tabbable");
2222
-
2223
- /***/ }),
2224
-
2225
- /***/ 9664:
2226
- /***/ ((module) => {
2227
-
2228
- "use strict";
2229
- module.exports = import("@envelop/core");;
2230
-
2231
- /***/ }),
2232
-
2233
- /***/ 7886:
2234
- /***/ ((module) => {
2235
-
2236
- "use strict";
2237
- module.exports = import("@envelop/graphql-jit");;
2238
-
2239
- /***/ }),
2240
-
2241
- /***/ 4656:
2242
- /***/ ((module) => {
2243
-
2244
- "use strict";
2245
- module.exports = import("@envelop/parser-cache");;
2246
-
2247
- /***/ }),
2248
-
2249
- /***/ 6093:
2250
- /***/ ((module) => {
2251
-
2252
- "use strict";
2253
- module.exports = import("@envelop/validation-cache");;
2254
-
2255
- /***/ }),
2256
-
2257
- /***/ 5774:
2258
- /***/ ((module) => {
2259
-
2260
- "use strict";
2261
- module.exports = import("@graphql-tools/load-files");;
2262
-
2263
- /***/ }),
2264
-
2265
- /***/ 6550:
2266
- /***/ ((module) => {
2267
-
2268
- "use strict";
2269
- module.exports = import("@graphql-tools/schema");;
2270
-
2271
- /***/ }),
2272
-
2273
- /***/ 8722:
2274
- /***/ ((module) => {
2275
-
2276
- "use strict";
2277
- module.exports = import("@graphql-tools/utils");;
2278
-
2279
- /***/ }),
2280
-
2281
- /***/ 7564:
2282
- /***/ ((module) => {
2283
-
2284
- "use strict";
2285
- module.exports = import("chalk");;
2286
-
2287
- /***/ }),
2288
-
2289
- /***/ 5941:
2290
- /***/ ((module) => {
2291
-
2292
- "use strict";
2293
- module.exports = import("swr");;
2294
-
2295
- /***/ }),
2296
-
2297
- /***/ 6113:
2298
- /***/ ((module) => {
2299
-
2300
- "use strict";
2301
- module.exports = require("crypto");
2302
-
2303
- /***/ })
2304
-
2305
- };
2306
- ;
2307
-
2308
- // load runtime
2309
- var __webpack_require__ = require("../../webpack-runtime.js");
2310
- __webpack_require__.C(exports);
2311
- var __webpack_exec__ = (moduleId) => (__webpack_require__(__webpack_require__.s = moduleId))
2312
- var __webpack_exports__ = __webpack_require__.X(0, [676,825,404,183,177,74,719,779,854,117,184,661,632,350,693], () => (__webpack_exec__(5779)));
2313
- module.exports = __webpack_exports__;
2314
-
2315
- })();
1
+ (()=>{var e={};e.id=103,e.ids=[103,888,660],e.modules={8545:(e,t,r)=>{"use strict";r.a(e,async(e,a)=>{try{r.d(t,{Z:()=>__WEBPACK_DEFAULT_EXPORT__});var i=r(7542),n=r(9856),o=r(9089),s=r(8907),l=r.n(s),c=r(997),p=e([n]);n=(p.then?(await p)():p)[0];let __WEBPACK_DEFAULT_EXPORT__=function({banner:e,newsletter:t}){return c.jsx(o.Z,{className:`${l().section} section-banner-newsletter`,children:(0,c.jsxs)("div",{"data-fs-banner-text-newsletter":!0,"data-fs-content":"banner-newsletter",children:[c.jsx(i.i,{title:e.title,caption:e.caption,link:e?.link,variant:e.variant,colorVariant:e.colorVariant}),c.jsx(n.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})]})})};a()}catch(e){a(e)}})},989:(e,t,r)=>{"use strict";r.a(e,async(e,a)=>{try{r.d(t,{Z:()=>g});var i=r(6689),n=r(6369),o=r(9785),s=r(4960),l=r(1958),c=r.n(l),p=r(9089),u=r(2758),d=r(7296),m=r(997),f=e([n]);n=(f.then?(await f)():f)[0];let b=(0,d.B)("CrossSellingShelf",({numberOfItems:e,itemsPerPage:t,title:r,kind:a})=>{let{ref:l,inView:u}=(0,o.useInView)(),d=(0,s.al)(),f=d?.data?.product?.isVariantOf?.productGroupID,b=(0,i.useMemo)(()=>[{key:a,value:f}],[a,f]);return m.jsx(p.Z,{className:`${c().section} section-product-shelf layout__section`,ref:l,children:m.jsx(n.Z,{inView:u,numberOfItems:e,itemsPerPage:t,title:r,selectedFacets:b})})},u.q),g=b;a()}catch(e){a(e)}})},2758:(e,t,r)=>{"use strict";r.d(t,{q:()=>o});var a=r(6737),i=r(6068),n=r(8314);let o={ProductShelf:a.Z,__experimentalCarousel:n.Z,__experimentalProductCard:i.Z}},2563:(e,t,r)=>{"use strict";r.a(e,async(e,a)=>{try{r.d(t,{Z:()=>s});var i=r(7296),n=r(989),o=e([n]);n=(o.then?(await o)():o)[0];let s=(0,i.v)({Section:n.Z});a()}catch(e){a(e)}})},2015:(e,t,r)=>{"use strict";r.d(t,{L:()=>ee});var a=r(7296),i=r(6689),n=r.n(i),o=r(1072),s=r(113),l=r(1868),c=r(9089),p=r(1516),u=r(783),d=r(7734),m=r(7583),f=r(997);let ProductDescription_ProductDescription=function({descriptionData:e,initiallyExpanded:t="first"}){let r=(0,i.useMemo)(()=>({none:[],first:[0],all:[0,1,2,3]}),[]),{0:a,1:n}=(0,i.useState)(new Set(r[t]));return f.jsx("section",{"data-fs-product-description":!0,children:f.jsx(p.Z,{indices:a,onChange:e=>{n(t=>{let r=new Set(t);return t.has(e)?r.delete(e):r.add(e),r})},"aria-label":"Product Details Content",children:e.map(({title:e,content:t},r)=>(0,f.jsxs)(u.Z,{as:"article",index:r,prefixId:"product-description","data-fs-product-details-description":!0,children:[f.jsx(d.Z,{children:e}),f.jsx(m.Z,{children:f.jsx("div",{"data-fs-product-details-description-content":!0,dangerouslySetInnerHTML:{__html:t}})})]},String(r)))})})};var b=r(6652),g=r(3218);let useBuyButton=e=>{let{openCart:t}=(0,b.l)(),{currency:{code:r}}=(0,l.kP)(),a=(0,i.useCallback)(a=>{a.preventDefault(),e&&((0,o._)({name:"add_to_cart",params:{currency:r,value:e.price*e.quantity,items:[{item_id:e.itemOffered.isVariantOf.productGroupID,item_name:e.itemOffered.isVariantOf.name,item_brand:e.itemOffered.brand.name,item_variant:e.itemOffered.sku,quantity:e.quantity,price:e.price,discount:e.listPrice-e.price,currency:r,item_variant_name:e.itemOffered.name,product_reference_id:e.itemOffered.gtin}]}}),g.i8.addItem(e),t())},[r,e,t]);return{onClick:a,"data-testid":"buy-button","data-sku":e?.itemOffered.sku,"data-seller":e?.seller.identifier}};var y=r(1664),h=r.n(y),j=r(8918),S=r(4329);let P=["src","alt"],O=["slugsMap","activeVariations","availableVariations"];function ownKeys(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),r.push.apply(r,a)}return r}function _objectSpread(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?ownKeys(Object(r),!0).forEach(function(t){var a;a=r[t],t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):ownKeys(Object(r)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))})}return e}function _objectWithoutProperties(e,t){if(null==e)return{};var r,a,i=function(e,t){if(null==e)return{};var r,a,i={},n=Object.keys(e);for(a=0;a<n.length;a++)r=n[a],t.indexOf(r)>=0||(i[r]=e[r]);return i}(e,t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);for(a=0;a<n.length;a++)r=n[a],!(t.indexOf(r)>=0)&&Object.prototype.propertyIsEnumerable.call(e,r)&&(i[r]=e[r])}return i}let ImageComponent=e=>{let{src:t,alt:r}=e,a=_objectWithoutProperties(e,P);return f.jsx(j.Z,_objectSpread({src:t,alt:r,width:34,height:34},a))},SkuSelector_Selectors=function(e){let{slugsMap:t,activeVariations:r,availableVariations:a}=e,n=_objectWithoutProperties(e,O),{SkuSelector:o}=(0,S.r3)();return f.jsx("section",_objectSpread(_objectSpread({},n),{},{children:a&&Object.keys(a).map(e=>(0,i.createElement)(o.Component,_objectSpread(_objectSpread({ImageComponent:ImageComponent},o.props),{},{key:e,skuPropertyName:e,availableVariations:a,activeVariations:r,slugsMap:t,linkProps:_objectSpread(_objectSpread({},o.props.linkProps??{}),{},{as:o.props.linkProps?.as??h(),legacyBehavior:o.props.linkProps?.legacyBehavior??!1})})))}))};function AddToCartLoadingSkeleton(){return(0,f.jsxs)("svg",{role:"img",width:"100%",height:"48","aria-labelledby":"loading-aria",viewBox:"0 0 112 48",preserveAspectRatio:"none",children:[f.jsx("title",{id:"loading-aria",children:"Loading..."}),f.jsx("rect",{x:"0",y:"0",width:"100%",height:"100%",clipPath:"url(#clip-path)",style:{fill:'url("#fill")'}}),(0,f.jsxs)("defs",{children:[f.jsx("clipPath",{id:"clip-path",children:f.jsx("rect",{x:"0",y:"0",rx:"2",ry:"2",width:"112",height:"48"})}),(0,f.jsxs)("linearGradient",{id:"fill",children:[f.jsx("stop",{offset:"0.599964",stopColor:"#f3f3f3",stopOpacity:"1",children:f.jsx("animate",{attributeName:"offset",values:"-2; -2; 1",keyTimes:"0; 0.25; 1",dur:"2s",repeatCount:"indefinite"})}),f.jsx("stop",{offset:"1.59996",stopColor:"#ecebeb",stopOpacity:"1",children:f.jsx("animate",{attributeName:"offset",values:"-1; -1; 2",keyTimes:"0; 0.25; 1",dur:"2s",repeatCount:"indefinite"})}),f.jsx("stop",{offset:"2.59996",stopColor:"#f3f3f3",stopOpacity:"1",children:f.jsx("animate",{attributeName:"offset",values:"0; 0; 3",keyTimes:"0; 0.25; 1",dur:"2s",repeatCount:"indefinite"})})]})]})]})}function ProductDetailsSettings_ownKeys(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),r.push.apply(r,a)}return r}function ProductDetailsSettings_objectSpread(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?ProductDetailsSettings_ownKeys(Object(r),!0).forEach(function(t){var a;a=r[t],t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):ProductDetailsSettings_ownKeys(Object(r)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))})}return e}let ProductDetails_ProductDetailsSettings=function({product:e,buyButtonTitle:t,isValidating:r,quantity:a,setQuantity:n,buyButtonIcon:{icon:o,alt:l},notAvailableButtonTitle:c}){let{BuyButton:p,Icon:u,ProductPrice:d,QuantitySelector:m,__experimentalNotAvailableButton:b}=(0,S.r3)(),{id:g,sku:y,gtin:h,name:j,brand:P,isVariantOf:O,isVariantOf:{skuVariants:v},image:_,additionalProperty:x,offers:{offers:[{availability:w,price:k,listPrice:E,seller:D}]}}=e,C=useBuyButton({id:g,price:k,listPrice:E,seller:D,quantity:a,itemOffered:{sku:y,name:j,gtin:h,image:_,brand:P,isVariantOf:O,additionalProperty:x}}),I=(0,i.useMemo)(()=>"https://schema.org/OutOfStock"===w,[w]);return(0,f.jsxs)(f.Fragment,{children:[!I&&(0,f.jsxs)("section",{"data-fs-product-details-values":!0,children:[f.jsx(d.Component,ProductDetailsSettings_objectSpread({"data-fs-product-details-prices":!0,value:k,listPrice:E,formatter:s.P},d.props)),f.jsx(m.Component,ProductDetailsSettings_objectSpread(ProductDetailsSettings_objectSpread({min:1,max:10},m.props),{},{onChange:n}))]}),v&&f.jsx(SkuSelector_Selectors,{slugsMap:v.slugsMap,availableVariations:v.availableVariations,activeVariations:v.activeVariations,"data-fs-product-details-selectors":!0}),r?f.jsx(AddToCartLoadingSkeleton,{}):f.jsx(()=>I?f.jsx(b.Component,{children:c}):f.jsx(p.Component,ProductDetailsSettings_objectSpread(ProductDetailsSettings_objectSpread(ProductDetailsSettings_objectSpread({},p.props),{},{icon:f.jsx(u.Component,ProductDetailsSettings_objectSpread(ProductDetailsSettings_objectSpread({},u.props),{},{name:o??u.props.name,"aria-label":l??u.props["aria-label"]}))},C),{},{children:t||"Add to Cart"})),{})]})};var v=r(5397),_=r.n(v),x=r(4960),w=r(3024);let k=(0,i.forwardRef)(function({title:e,label:t,refTag:r="Ref.: ",refNumber:a,testId:i="fs-product-title",ratingValue:o,...s},l){return n().createElement("header",{ref:l,"data-fs-product-title":!0,"data-testid":i,...s},n().createElement("div",{"data-fs-product-title-header":!0},e,!!t&&t),(a||o)&&n().createElement("div",{"data-fs-product-title-addendum":!0},o&&n().createElement(w.Z,{value:o}),a&&n().createElement(n().Fragment,null,r," ",a)))});var E=r(2946),D=r(3339),C=r(2614),I=r(9088),q=r(6693),B=r(1953),Z=r(727),L=r(5450);let getImageName=e=>{let t=new URL(e).pathname,r=t.split("/").slice(-1)[0];return r},useDefineVariant=(e,t)=>(0,i.useMemo)(()=>{if(t)return t;let r=e.every(e=>e.hexColor);if(r)return"color";let a=e[0]?.src&&getImageName(e[0].src),i=e.every(e=>{if(!e.src)return!0;let t=getImageName(e.src);return t===a});return i?"label":"image"},[e,t]),useSkuSlug=(e,t,r,a)=>{let n=(0,i.useCallback)(i=>{if(a)return{getItemHrefProp:a};let n=`/${function(e,t,r){let a=Object.entries(t).flat().join("-");if(a in e)return e[a];let i=Object.keys(e),n=i.find(e=>e.includes(`${r}-${t[r]}`));return e[n??i[0]]}(t,{...e,[r]:i.value},r)}/p`;return n},[e,a,t,r]);return{getItemHref:n}},ImageComponentFallback=({src:e,alt:t,...r})=>n().createElement("img",{src:e,alt:t,...r}),G=(0,i.forwardRef)(function({availableVariations:e,skuPropertyName:t,testId:r,activeVariations:a,linkProps:i,slugsMap:o,getItemHref:s,ImageComponent:l=ImageComponentFallback,variant:c,...p},u){let d=a[t],m=e[t],f=useDefineVariant(m,c),{getItemHref:b}=useSkuSlug(a,o,t,s);return n().createElement("div",{ref:u,"data-fs-sku-selector":!0,"data-testid":r,"data-fs-sku-selector-variant":f,...p},t&&n().createElement(B.Z,{"data-fs-sku-selector-title":!0},t,": ",n().createElement("strong",null,d)),n().createElement("ul",{"data-fs-sku-selector-list":!0},m.map((e,r)=>n().createElement("li",{key:String(r),title:e.label,"data-fs-sku-selector-option":!0,"data-fs-sku-selector-disabled":e.disabled,"data-fs-sku-selector-checked":e.value===a[t]},n().createElement(Z.Z,{"data-fs-sku-selector-option-link":!0,href:b(e),...i},n().createElement(L.Z,{text:e.label})),"label"===f&&n().createElement("span",null,e.value),"image"===f&&l&&n().createElement("span",null,n().createElement(l,{src:e.src??"",alt:e.alt??"","data-fs-sku-selector-option-image":!0})),"color"===f&&n().createElement("span",null,n().createElement("div",{"data-fs-sku-selector-option-color":!0,title:e.value,style:{"--data-fs-sku-selector-option-color-bkg-color":e.hexColor}}))))))});var V=r(3779);let N=(0,i.forwardRef)(function({children:e,variant:t="colored",testId:r="fs-table",...a},i){return n().createElement("div",{"data-fs-table":!0},n().createElement("table",{ref:i,"data-fs-table-content":!0,"data-fs-table-variant":t,"data-testid":r,...a},e))}),K=(0,i.forwardRef)(function({children:e,testId:t="fs-table-body",...r},a){return n().createElement("tbody",{ref:a,"data-testid":t,"data-fs-table-body":!0,...r},e)}),M=(0,i.forwardRef)(function({children:e,testId:t="fs-table-row",...r},a){return n().createElement("tr",{ref:a,"data-fs-table-row":!0,"data-testid":t,...r},e)}),T=(0,i.forwardRef)(function({scope:e,align:t,children:r,variant:a="data",testId:i="fs-table-cell",...o},s){return n().createElement("header"===a?"th":"td",{ref:s,"data-fs-table-cell":a,"data-fs-table-cell-align":t,"data-testid":i,scope:e,...o},r)});var A=r(9767),R=r(9785),F=r(7041);let moveScroll=(e,t)=>{e&&(e.scrollHeight>e.clientHeight?(e.style.overflow="auto",window.requestAnimationFrame(()=>e.scrollTo({top:t,behavior:"smooth"})),setTimeout(()=>e.style.overflow="hidden",2e3)):e.scrollLeft+=t)},hasScroll=e=>!!e&&(e.scrollHeight>e.clientHeight||e.scrollWidth>e.clientWidth),ImageGallery_ImageGallerySelector=function({images:e,onSelect:t,ImageComponent:r,currentImageIdx:a,testId:o="fs-image-gallery-selector","aria-label":s="Product Images",navigationButtonLeftAriaLabel:l="Backward slide image selector",navigationButtonRightAriaLabel:c="Forward slide image selector"}){let p=(0,i.useRef)(null),u=hasScroll(p.current),[d,m]=(0,i.useState)(!0),[f,b]=(0,i.useState)(!0),g=(0,i.useCallback)((t,r)=>{0===t&&m(r),t===e.length-1&&b(r)},[e.length]);return n().createElement("section",{"data-fs-image-gallery-selector":!0,"data-testid":o,"aria-label":s},u&&!d&&n().createElement("div",{"data-fs-image-gallery-selector-control":!0},n().createElement(F.Z,{"data-fs-image-gallery-selector-control-button":!0,"aria-label":l,icon:n().createElement(C.Z,{name:"ArrowLeft"}),onClick:()=>moveScroll(p.current,-400)})),n().createElement("div",{"data-fs-image-gallery-selector-elements":!0,ref:p},e.map((i,o)=>n().createElement(R.InView,{key:o,onChange:e=>g(o,e)},n().createElement(D.Z,{key:o,"aria-label":`${i.alternateName} - Image ${o+1} of ${e.length}`,onClick:()=>t(o),"data-fs-image-gallery-selector-thumbnail":o===a?"selected":"true"},n().createElement(r,{url:i.url??"",loading:0===o?"eager":"lazy",alternateName:i.alternateName??""}))))),u&&!f&&n().createElement("div",{"data-fs-image-gallery-selector-control":!0},n().createElement(F.Z,{"data-fs-image-gallery-selector-control-button":!0,"aria-label":c,icon:n().createElement(C.Z,{name:"ArrowLeft"}),onClick:()=>moveScroll(p.current,400)})))},$=(0,i.forwardRef)(function({images:e,children:t,ImageComponent:r,selectedImageIdx:a,setSelectedImageIdx:i,testId:o="fs-image-gallery",...s},l){let c=e.length>1;return n().createElement("section",{ref:l,"data-fs-image-gallery":c?"with-selector":"without-selector","data-testid":o,...s},t,c&&n().createElement(ImageGallery_ImageGallerySelector,{images:e,onSelect:i,currentImageIdx:a,ImageComponent:r}))});var W=r(1163);let z=["images"];function ImageGallery_ownKeys(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),r.push.apply(r,a)}return r}function ImageGallery_objectSpread(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?ImageGallery_ownKeys(Object(r),!0).forEach(function(t){var a;a=r[t],t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):ImageGallery_ownKeys(Object(r)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))})}return e}let ImageGallery_ImageComponent=({url:e,alternateName:t})=>{let{__experimentalImageGalleryImage:r}=(0,S.r3)();return f.jsx(r.Component,{src:e,alt:t,width:68,height:68})};var H=r(3523),Q=r(2495);let U=H.Pq,getShippingSimulation=async({items:e,postalCode:t,country:r})=>{let a=await (0,Q.W)(U,{items:e,postalCode:t,country:r});return a};function useShippingSimulation_ownKeys(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),r.push.apply(r,a)}return r}function useShippingSimulation_objectSpread(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?useShippingSimulation_ownKeys(Object(r),!0).forEach(function(t){var a;a=r[t],t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):useShippingSimulation_ownKeys(Object(r)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))})}return e}let createEmptySimulation=()=>({input:{postalCode:"",displayClearButton:!1,errorMessage:""},shippingSimulation:void 0}),reducer=(e,t)=>{let{type:r}=t;switch(r){case"clear":return createEmptySimulation();case"update":{let{payload:r}=t;return{input:useShippingSimulation_objectSpread(useShippingSimulation_objectSpread({},e.input),r.input),shippingSimulation:useShippingSimulation_objectSpread(useShippingSimulation_objectSpread({},e.shippingSimulation),r.shippingSimulation)}}case"onInput":{let{payload:r}=t;return useShippingSimulation_objectSpread(useShippingSimulation_objectSpread({},e),{},{input:useShippingSimulation_objectSpread({},r)})}case"onError":{let{payload:r}=t;return useShippingSimulation_objectSpread(useShippingSimulation_objectSpread({},e),{},{input:useShippingSimulation_objectSpread(useShippingSimulation_objectSpread({},e.input),r)})}default:throw Error(`Action ${r} not implemented`)}},useShippingSimulation=e=>{let{0:{input:t,shippingSimulation:r},1:a}=(0,i.useReducer)(reducer,null,createEmptySimulation),{country:n,postalCode:o}=(0,l.kP)(),{postalCode:s}=t,c=(0,i.useRef)(s);(0,i.useEffect)(()=>{let t=o&&!c.current;t&&async function(){let t=await getShippingSimulation({country:n,postalCode:o??"",items:[e]}),r=t.shipping;a({type:"update",payload:{input:{postalCode:o??"",displayClearButton:!0,errorMessage:""},shippingSimulation:r}})}()},[n,o,e]);let p=(0,i.useCallback)(async()=>{try{let t=await getShippingSimulation({country:n,postalCode:s??"",items:[e]}),r=t.shipping;a({type:"update",payload:{input:{displayClearButton:!0,errorMessage:""},shippingSimulation:r}})}catch(e){a({type:"onError",payload:{displayClearButton:!0,errorMessage:"You entered an invalid Postal Code"}})}},[n,e,s]),u=(0,i.useCallback)(e=>{let t=e.currentTarget.value;t?a({type:"onInput",payload:{postalCode:t,displayClearButton:!1,errorMessage:""}}):a({type:"clear"})},[]);return{input:t,shippingSimulation:r,handleOnClear:()=>{a({type:"clear"})},handleSubmit:p,handleOnInput:u}},X=["productShippingInfo","formatter","inputLabel","title","idkPostalCodeLinkProps"];function ShippingSimulation_ownKeys(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),r.push.apply(r,a)}return r}let J={ProductTitle:k,DiscountBadge:E.Z,BuyButton:function({testId:e="fs-buy-button",icon:t,children:r,...a}){return n().createElement(D.Z,{"data-fs-buy-button":!0,icon:t,iconPosition:"left","data-testid":e,...a},r)},Icon:C.Z,ProductPrice:I.Z,QuantitySelector:q.Z,SkuSelector:G,ShippingSimulation:function({testId:e="fs-shipping-simulation",formatter:t,title:r="Shipping",inputLabel:a="Postal Code",optionsLabel:i="Shipping options",idkPostalCodeLinkProps:o,onInput:s,onSubmit:l,onClear:c,location:p,options:u=[],displayClearButton:d=!1,errorMessage:m,postalCode:f,...b}){let g=!!u&&u.length>0;return n().createElement("section",{"data-fs-shipping-simulation":!0,"data-fs-shipping-simulation-empty":g?"false":"true","data-testid":e,...b},n().createElement("h2",{"data-fs-shipping-simulation-title":!0},r),n().createElement(V.Z,{actionable:!0,error:m,id:`${e}-input-field`,label:a,value:f,onInput:e=>s?.(e),onSubmit:()=>l?.(),onClear:()=>c?.(),displayClearButton:d}),n().createElement(Z.Z,{href:"/","data-fs-shipping-simulation-link":!0,size:"small",...o},o?.children??n().createElement(n().Fragment,null,"I don't know my Postal Code",n().createElement(C.Z,{name:"ArrowSquareOut",width:20,height:20}))),g&&n().createElement(n().Fragment,null,n().createElement("header",{"data-fs-shipping-simulation-header":!0},n().createElement("h3",{"data-fs-shipping-simulation-subtitle":!0},i),n().createElement("p",{"data-fs-shipping-simulation-location":!0},p)),n().createElement(N,null,n().createElement(K,null,u.map(e=>n().createElement(M,{key:e.carrier},n().createElement(T,{align:"left"},e.carrier),n().createElement(T,null,e.localizedEstimates),n().createElement(T,{align:"right"},e.price&&n().createElement(A.Z,{formatter:t,value:e.price,SRText:"price"}))))))))},ImageGallery:$,ImageGalleryViewer:({children:e})=>n().createElement(n().Fragment,null,e),__experimentalImageGalleryImage:j.Z,__experimentalImageGallery:e=>{let{images:t}=e,r=function(e,t){if(null==e)return{};var r,a,i=function(e,t){if(null==e)return{};var r,a,i={},n=Object.keys(e);for(a=0;a<n.length;a++)r=n[a],t.indexOf(r)>=0||(i[r]=e[r]);return i}(e,t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);for(a=0;a<n.length;a++)r=n[a],!(t.indexOf(r)>=0)&&Object.prototype.propertyIsEnumerable.call(e,r)&&(i[r]=e[r])}return i}(e,z),{ImageGallery:a,ImageGalleryViewer:n,__experimentalImageGalleryImage:o}=(0,S.r3)(),{0:s,1:l}=(0,i.useState)(0),c=t[s]??t[0],p=(0,W.useRouter)().asPath;return(0,i.useEffect)(()=>l(0),[p]),f.jsx(a.Component,ImageGallery_objectSpread(ImageGallery_objectSpread(ImageGallery_objectSpread({},a.props),{},{images:t,ImageComponent:ImageGallery_ImageComponent,selectedImageIdx:s,setSelectedImageIdx:l},r),{},{children:f.jsx(n.Component,ImageGallery_objectSpread(ImageGallery_objectSpread({},n.props),{},{children:f.jsx(o.Component,ImageGallery_objectSpread(ImageGallery_objectSpread({sizes:"(max-width: 360px) 50vw, (max-width: 768px) 90vw, 50vw",width:691,height:691*(3/4),loading:"eager"},o.props),{},{src:c.url,alt:c.alternateName}))}))}))},__experimentalShippingSimulation:function(e){let{productShippingInfo:t,formatter:r,inputLabel:a,title:i,idkPostalCodeLinkProps:n}=e,o=function(e,t){if(null==e)return{};var r,a,i=function(e,t){if(null==e)return{};var r,a,i={},n=Object.keys(e);for(a=0;a<n.length;a++)r=n[a],t.indexOf(r)>=0||(i[r]=e[r]);return i}(e,t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);for(a=0;a<n.length;a++)r=n[a],!(t.indexOf(r)>=0)&&Object.prototype.propertyIsEnumerable.call(e,r)&&(i[r]=e[r])}return i}(e,X),{ShippingSimulation:s}=(0,S.r3)(),{input:l,shippingSimulation:c,handleSubmit:p,handleOnInput:u,handleOnClear:d}=useShippingSimulation(t),{postalCode:m,displayClearButton:b,errorMessage:g}=l,y=[c?.address?.neighborhood,c?.address?.city].filter(Boolean).join(" / ")??"",h=c?.logisticsInfo?.[0]?.slas??[];return f.jsx(s.Component,function(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?ShippingSimulation_ownKeys(Object(r),!0).forEach(function(t){var a;a=r[t],t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):ShippingSimulation_ownKeys(Object(r)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))})}return e}({formatter:r,onInput:u,onSubmit:p,onClear:d,location:y,options:h,address:c?.address,displayClearButton:b,errorMessage:g,postalCode:m,inputLabel:a,title:i,idkPostalCodeLinkProps:n},o))},__experimentalNotAvailableButton:function({children:e}){return f.jsx(D.Z,{variant:"primary",disabled:!0,"data-fs-buy-button":!0,children:e})}};function ProductDetails_ownKeys(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),r.push.apply(r,a)}return r}function ProductDetails_objectSpread(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?ProductDetails_ownKeys(Object(r),!0).forEach(function(t){var a;a=r[t],t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):ProductDetails_ownKeys(Object(r)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))})}return e}let Y=(0,a.B)("ProductDetails",function({productTitle:{refNumber:e,discountBadge:{showDiscountBadge:t,size:r}},buyButton:{icon:a,title:n},shippingSimulator:{title:p,inputLabel:u,shippingOptionsTableTitle:d,link:{to:m,text:b}},productDescription:{title:g,initiallyExpanded:y,displayDescription:h},notAvailableButton:{title:j}}){let{DiscountBadge:P,ProductTitle:O,__experimentalImageGallery:v,__experimentalShippingSimulation:w,__experimentalNotAvailableButton:k}=(0,S.r3)(),{currency:E}=(0,l.kP)(),{0:D,1:C}=(0,i.useState)(1),I=(0,x.al)(),{product:q,isValidating:B}=I?.data;if(!q)throw Error("NotFound");let{id:Z,sku:L,gtin:G,name:V,brand:N,isVariantOf:K,description:M,isVariantOf:{name:T,productGroupID:A},image:R,offers:{offers:[{availability:F,price:$,listPrice:W,seller:z}],lowPrice:H}}=q;(0,i.useEffect)(()=>{(0,o._)({name:"view_item",params:{currency:E.code,value:$,items:[{item_id:K.productGroupID,item_name:K.name,item_brand:N.name,item_variant:L,price:$,discount:W-$,currency:E.code,item_variant_name:V,product_reference_id:G}]}})},[K.productGroupID,K.name,N.name,L,$,W,E.code,V,G]);let Q=(0,i.useMemo)(()=>"https://schema.org/OutOfStock"===F,[F]);return f.jsx(c.Z,{className:`${_().section} section-product-details`,children:f.jsx("section",{"data-fs-product-details":!0,children:(0,f.jsxs)("section",{"data-fs-product-details-body":!0,"data-fs-content":"product-details",children:[f.jsx("header",{"data-fs-product-details-title":!0,"data-fs-product-details-section":!0,children:f.jsx(O.Component,ProductDetails_objectSpread(ProductDetails_objectSpread({title:f.jsx("h1",{children:T})},O.props),{},{label:t&&f.jsx(P.Component,ProductDetails_objectSpread(ProductDetails_objectSpread({},P.props),{},{size:r??P.props.size,listPrice:W,spotPrice:H})),refNumber:e&&A}))}),f.jsx(v.Component,ProductDetails_objectSpread(ProductDetails_objectSpread({"data-fs-product-details-gallery":!0},v.props),{},{images:R})),(0,f.jsxs)("section",{"data-fs-product-details-info":!0,children:[f.jsx("section",{"data-fs-product-details-settings":!0,"data-fs-product-details-section":!0,children:f.jsx(ProductDetails_ProductDetailsSettings,{product:q,isValidating:B,buyButtonTitle:n,quantity:D,setQuantity:C,buyButtonIcon:a,notAvailableButtonTitle:j??k.props.title})}),!Q&&f.jsx(w.Component,ProductDetails_objectSpread(ProductDetails_objectSpread({"data-fs-product-details-section":!0,"data-fs-product-details-shipping":!0,formatter:s.P},w.props),{},{idkPostalCodeLinkProps:ProductDetails_objectSpread(ProductDetails_objectSpread({},w.props.idkPostalCodeLinkProps),{},{href:m??w.props.idkPostalCodeLinkProps?.href,children:b??w.props.idkPostalCodeLinkProps?.children}),productShippingInfo:{id:Z,quantity:D,seller:z.identifier},title:p??w.props.title,inputLabel:u??w.props.inputLabel,optionsLabel:d??w.props.optionsLabel}))]}),h&&f.jsx(ProductDescription_ProductDescription,{initiallyExpanded:y,descriptionData:[{title:g,content:M}]})]})})})},J);function OverriddenDefaultProductDetails_ownKeys(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),r.push.apply(r,a)}return r}function OverriddenDefaultProductDetails_objectSpread(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?OverriddenDefaultProductDetails_ownKeys(Object(r),!0).forEach(function(t){var a;a=r[t],t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):OverriddenDefaultProductDetails_ownKeys(Object(r)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))})}return e}let ee=(0,a.v)(OverriddenDefaultProductDetails_objectSpread(OverriddenDefaultProductDetails_objectSpread({},{section:"ProductDetails"}),{},{Section:Y}))},5929:(e,t,r)=>{"use strict";r.a(e,async(e,a)=>{try{r.r(t),r.d(t,{default:()=>C,getStaticPaths:()=>getStaticPaths,getStaticProps:()=>getStaticProps});var i=r(3523),n=r(7397),o=r(6641),s=r(6330),l=r.n(s),c=r(4232),p=r(8545),u=r(7542),d=r(7936),m=r(2563),f=r(2015),b=r(4439),g=r(1868),y=r(2718),h=r(6242),j=r(2904),S=r(5426),P=r(7997),O=r.n(P),v=r(791),_=r(4960),x=r(997),w=e([n,m,p,v,S,c,h]);[n,m,p,v,S,c,h]=w.then?(await w)():w;let k=["listPrice"];function ownKeys(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),r.push.apply(r,a)}return r}function _objectSpread(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?ownKeys(Object(r),!0).forEach(function(t){var a;a=r[t],t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):ownKeys(Object(r)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))})}return e}let E=_objectSpread({Breadcrumb:d.j,ProductDetails:f.L,CrossSellingShelf:m.Z,BannerNewsletter:p.Z,BannerText:u.i},b.Z),overwriteMerge=(e,t)=>t;function Page({data:e,sections:t,globalSections:r,offers:a,meta:i}){let{product:n}=e,{currency:s}=(0,g.kP)(),{data:p,isValidating:u}=(0,v.F)(n.id,{product:n}),d={data:_objectSpread(_objectSpread({},l()(e,p,{arrayMerge:overwriteMerge})),{},{isValidating:u})};return(0,x.jsxs)(S.ZP,_objectSpread(_objectSpread({},r),{},{children:[x.jsx(o.NextSeo,{title:i.title,description:i.description,canonical:i.canonical,openGraph:{type:"og:product",url:i.canonical,title:i.title,description:i.description,images:n.image.map(e=>({url:e.url,alt:e.alternateName}))},additionalMetaTags:[{property:"product:price:amount",content:n.offers.lowPrice?.toString()??void 0},{property:"product:price:currency",content:s.code}]}),x.jsx(o.BreadcrumbJsonLd,{itemListElements:n.breadcrumbList.itemListElement}),x.jsx(o.ProductJsonLd,{productName:n.name,description:n.description,brand:n.brand.name,sku:n.sku,gtin:n.gtin,releaseDate:n.releaseDate,images:n.image.map(e=>e.url),offers:a}),x.jsx(_.ZP,{context:d,children:x.jsx(c.Z,{sections:t,components:E})})]}))}let D=i.hM,getStaticProps=async({params:e,previewData:t})=>{let r=e?.slug??"",[a,i,o]=await Promise.all([(0,h.h)({variables:{locator:[{key:"slug",value:r}]},operation:D}),(0,j.f)(_objectSpread(_objectSpread({},t?.contentType==="pdp"?t:null),{},{contentType:"pdp"})),(0,S.Tc)(t)]),{data:s,errors:l=[]}=a,c=l.find(n.XD);if(c)return{notFound:!0};if(l.length>0)throw l[0];let{seo:p}=s.product,u=p.title||O().seo.title,d=p.description||O().seo.description,m=`${O().storeUrl}${p.canonical}`,f={};if(s.product.offers.offers.length>0){let e=s.product.offers.offers[0],{listPrice:t}=e,r=function(e,t){if(null==e)return{};var r,a,i=function(e,t){if(null==e)return{};var r,a,i={},n=Object.keys(e);for(a=0;a<n.length;a++)r=n[a],t.indexOf(r)>=0||(i[r]=e[r]);return i}(e,t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);for(a=0;a<n.length;a++)r=n[a],!(t.indexOf(r)>=0)&&Object.prototype.propertyIsEnumerable.call(e,r)&&(i[r]=e[r])}return i}(e,k);f=r}let b=_objectSpread(_objectSpread({},f),{},{priceCurrency:s.product.offers.priceCurrency,url:m});return{props:_objectSpread(_objectSpread({data:s},i),{},{meta:{title:u,description:d,canonical:m},offers:b,globalSections:o,key:p.canonical})}},getStaticPaths=async()=>({paths:[],fallback:"blocking"});Page.displayName="Page";let C=(0,y.B)(Page);a()}catch(e){a(e)}})},791:(e,t,r)=>{"use strict";r.a(e,async(e,a)=>{try{r.d(t,{F:()=>useProductQuery});var i=r(3523),n=r(6689),o=r(7553),s=r(1868),l=e([o]);o=(l.then?(await l)():l)[0];let c=i.wA,useProductQuery=(e,t)=>{let{channel:r,locale:a}=(0,s.kP)(),i=(0,n.useMemo)(()=>{if(!r)throw Error("useProductQuery: 'channel' from session is an empty string.");return{locator:[{key:"id",value:e},{key:"channel",value:r},{key:"locale",value:a}]}},[r,a,e]);return(0,o.aM)(c,i,{fallbackData:t,revalidateOnMount:!0})};a()}catch(e){a(e)}})},8907:e=>{e.exports={section:"section_section__YBgvV"}},5397:e=>{e.exports={section:"section_section__VI73U"}},6351:(e,t,r)=>{"use strict";r.a(e,async(e,a)=>{try{r.r(t),r.d(t,{config:()=>b,default:()=>u,getServerSideProps:()=>f,getStaticPaths:()=>m,getStaticProps:()=>d,reportWebVitals:()=>g,routeModule:()=>O,unstable_getServerProps:()=>S,unstable_getServerSideProps:()=>P,unstable_getStaticParams:()=>j,unstable_getStaticPaths:()=>h,unstable_getStaticProps:()=>y});var i=r(7093),n=r(5244),o=r(1323),s=r(2082),l=r(8187),c=r(5929),p=e([c,s]);[c,s]=p.then?(await p)():p;let u=(0,o.l)(c,"default"),d=(0,o.l)(c,"getStaticProps"),m=(0,o.l)(c,"getStaticPaths"),f=(0,o.l)(c,"getServerSideProps"),b=(0,o.l)(c,"config"),g=(0,o.l)(c,"reportWebVitals"),y=(0,o.l)(c,"unstable_getStaticProps"),h=(0,o.l)(c,"unstable_getStaticPaths"),j=(0,o.l)(c,"unstable_getStaticParams"),S=(0,o.l)(c,"unstable_getServerProps"),P=(0,o.l)(c,"unstable_getServerSideProps"),O=new i.PagesRouteModule({definition:{kind:n.x.PAGES,page:"/[slug]/p",pathname:"/[slug]/p",bundlePath:"",filename:""},components:{App:l.default,Document:s.default},userland:c});a()}catch(e){a(e)}})},4691:e=>{"use strict";e.exports=require("@opentelemetry/api")},8973:e=>{"use strict";e.exports=require("@opentelemetry/api-logs")},6969:e=>{"use strict";e.exports=require("@opentelemetry/exporter-logs-otlp-grpc")},5196:e=>{"use strict";e.exports=require("@opentelemetry/exporter-trace-otlp-grpc")},4161:e=>{"use strict";e.exports=require("@opentelemetry/resources")},2793:e=>{"use strict";e.exports=require("@opentelemetry/sdk-logs")},1283:e=>{"use strict";e.exports=require("@opentelemetry/sdk-trace-base")},6676:e=>{"use strict";e.exports=require("@vtex/client-cms")},6330:e=>{"use strict";e.exports=require("deepmerge")},8641:e=>{"use strict";e.exports=require("draftjs-to-html")},2404:e=>{"use strict";e.exports=require("fast-deep-equal")},7343:e=>{"use strict";e.exports=require("graphql")},6548:e=>{"use strict";e.exports=require("graphql/language")},3430:e=>{"use strict";e.exports=require("idb-keyval")},7881:e=>{"use strict";e.exports=require("isomorphic-unfetch")},6641:e=>{"use strict";e.exports=require("next-seo")},2785:e=>{"use strict";e.exports=require("next/dist/compiled/next-server/pages.runtime.prod.js")},8890:e=>{"use strict";e.exports=require("nextjs-progressbar")},5471:e=>{"use strict";e.exports=require("p-limit")},1423:e=>{"use strict";e.exports=require("path")},6689:e=>{"use strict";e.exports=require("react")},6405:e=>{"use strict";e.exports=require("react-dom")},9785:e=>{"use strict";e.exports=require("react-intersection-observer")},3789:e=>{"use strict";e.exports=require("react-swipeable")},997:e=>{"use strict";e.exports=require("react/jsx-runtime")},6109:e=>{"use strict";e.exports=require("sanitize-html")},3823:e=>{"use strict";e.exports=require("tabbable")},4037:e=>{"use strict";e.exports=import("@builder.io/partytown/react")},9664:e=>{"use strict";e.exports=import("@envelop/core")},7886:e=>{"use strict";e.exports=import("@envelop/graphql-jit")},4656:e=>{"use strict";e.exports=import("@envelop/parser-cache")},6093:e=>{"use strict";e.exports=import("@envelop/validation-cache")},5774:e=>{"use strict";e.exports=import("@graphql-tools/load-files")},6550:e=>{"use strict";e.exports=import("@graphql-tools/schema")},8722:e=>{"use strict";e.exports=import("@graphql-tools/utils")},7564:e=>{"use strict";e.exports=import("chalk")},5941:e=>{"use strict";e.exports=import("swr")},6113:e=>{"use strict";e.exports=require("crypto")},7147:e=>{"use strict";e.exports=require("fs")},2781:e=>{"use strict";e.exports=require("stream")},9796:e=>{"use strict";e.exports=require("zlib")}};var t=require("../../webpack-runtime.js");t.C(e);var __webpack_exec__=e=>t(t.s=e),r=t.X(0,[859,12,640,404,997,187,82,646,344,779,679,694,414,659,936,242,693],()=>__webpack_exec__(6351));module.exports=r})();