@faststore/core 2.0.120-alpha.0 → 2.0.122-alpha.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (251) hide show
  1. package/.next/BUILD_ID +1 -0
  2. package/.next/build-manifest.json +120 -0
  3. package/.next/cache/.tsbuildinfo +1 -0
  4. package/.next/cache/config.json +7 -0
  5. package/.next/cache/eslint/.cache_1gneedd +1 -0
  6. package/.next/cache/next-server.js.nft.json +1 -0
  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/export-marker.json +1 -0
  12. package/.next/images-manifest.json +1 -0
  13. package/.next/next-server.js.nft.json +1 -0
  14. package/.next/package.json +1 -0
  15. package/.next/prerender-manifest.json +1 -0
  16. package/.next/react-loadable-manifest.json +52 -0
  17. package/.next/required-server-files.json +1 -0
  18. package/.next/routes-manifest.json +1 -0
  19. package/.next/server/chunks/104.js +255 -0
  20. package/.next/server/chunks/120.js +435 -0
  21. package/.next/server/chunks/123.js +58 -0
  22. package/.next/server/chunks/143.js +106 -0
  23. package/.next/server/chunks/154.js +206 -0
  24. package/.next/server/chunks/183.js +80 -0
  25. package/.next/server/chunks/247.js +61 -0
  26. package/.next/server/chunks/254.js +159 -0
  27. package/.next/server/chunks/256.js +1787 -0
  28. package/.next/server/chunks/280.js +322 -0
  29. package/.next/server/chunks/287.js +58 -0
  30. package/.next/server/chunks/312.js +674 -0
  31. package/.next/server/chunks/336.js +820 -0
  32. package/.next/server/chunks/350.js +142 -0
  33. package/.next/server/chunks/398.js +132 -0
  34. package/.next/server/chunks/401.js +7241 -0
  35. package/.next/server/chunks/431.js +7241 -0
  36. package/.next/server/chunks/502.js +603 -0
  37. package/.next/server/chunks/554.js +264 -0
  38. package/.next/server/chunks/557.js +135 -0
  39. package/.next/server/chunks/576.js +80 -0
  40. package/.next/server/chunks/597.js +169 -0
  41. package/.next/server/chunks/608.js +515 -0
  42. package/.next/server/chunks/664.js +3401 -0
  43. package/.next/server/chunks/676.js +32 -0
  44. package/.next/server/chunks/74.js +2606 -0
  45. package/.next/server/chunks/746.js +249 -0
  46. package/.next/server/chunks/82.js +371 -0
  47. package/.next/server/chunks/854.js +72 -0
  48. package/.next/server/chunks/859.js +959 -0
  49. package/.next/server/chunks/872.js +358 -0
  50. package/.next/server/chunks/886.js +120 -0
  51. package/.next/server/chunks/98.js +124 -0
  52. package/.next/server/chunks/font-manifest.json +1 -0
  53. package/.next/server/font-manifest.json +1 -0
  54. package/.next/server/middleware-build-manifest.js +1 -0
  55. package/.next/server/middleware-manifest.json +6 -0
  56. package/.next/server/middleware-react-loadable-manifest.js +1 -0
  57. package/.next/server/pages/404.js +414 -0
  58. package/.next/server/pages/404.js.nft.json +1 -0
  59. package/.next/server/pages/500.js +384 -0
  60. package/.next/server/pages/500.js.nft.json +1 -0
  61. package/.next/server/pages/[...slug].js +700 -0
  62. package/.next/server/pages/[...slug].js.nft.json +1 -0
  63. package/.next/server/pages/[slug]/p.js +2338 -0
  64. package/.next/server/pages/[slug]/p.js.nft.json +1 -0
  65. package/.next/server/pages/_app.js +368 -0
  66. package/.next/server/pages/_app.js.nft.json +1 -0
  67. package/.next/server/pages/_document.js +304 -0
  68. package/.next/server/pages/_document.js.nft.json +1 -0
  69. package/.next/server/pages/_error.js +164 -0
  70. package/.next/server/pages/_error.js.nft.json +1 -0
  71. package/.next/server/pages/account.js +370 -0
  72. package/.next/server/pages/account.js.nft.json +1 -0
  73. package/.next/server/pages/api/graphql.js +315 -0
  74. package/.next/server/pages/api/graphql.js.nft.json +1 -0
  75. package/.next/server/pages/api/preview.js +118 -0
  76. package/.next/server/pages/api/preview.js.nft.json +1 -0
  77. package/.next/server/pages/checkout.js +370 -0
  78. package/.next/server/pages/checkout.js.nft.json +1 -0
  79. package/.next/server/pages/en-US/404.html +81 -0
  80. package/.next/server/pages/en-US/404.json +1 -0
  81. package/.next/server/pages/en-US/500.html +81 -0
  82. package/.next/server/pages/en-US/500.json +1 -0
  83. package/.next/server/pages/en-US/account.html +81 -0
  84. package/.next/server/pages/en-US/account.json +1 -0
  85. package/.next/server/pages/en-US/checkout.html +81 -0
  86. package/.next/server/pages/en-US/checkout.json +1 -0
  87. package/.next/server/pages/en-US/login.html +81 -0
  88. package/.next/server/pages/en-US/login.json +1 -0
  89. package/.next/server/pages/en-US/s.html +81 -0
  90. package/.next/server/pages/en-US/s.json +1 -0
  91. package/.next/server/pages/en-US.html +81 -0
  92. package/.next/server/pages/en-US.json +1 -0
  93. package/.next/server/pages/index.js +580 -0
  94. package/.next/server/pages/index.js.nft.json +1 -0
  95. package/.next/server/pages/login.js +396 -0
  96. package/.next/server/pages/login.js.nft.json +1 -0
  97. package/.next/server/pages/s.js +438 -0
  98. package/.next/server/pages/s.js.nft.json +1 -0
  99. package/.next/server/pages-manifest.json +16 -0
  100. package/.next/server/webpack-api-runtime.js +229 -0
  101. package/.next/server/webpack-runtime.js +229 -0
  102. package/.next/static/chunks/143.dd8a556e6957baa1.js +1 -0
  103. package/.next/static/chunks/170.b45293edb4f089c8.js +1 -0
  104. package/.next/static/chunks/226.b57e10ad9932f88c.js +1 -0
  105. package/.next/static/chunks/336.84e96cd7aa2412bc.js +1 -0
  106. package/.next/static/chunks/419-274b5b8beee8c7b2.js +1 -0
  107. package/.next/static/chunks/495.e6b60941cc3e82e4.js +1 -0
  108. package/.next/static/chunks/54.1d3e6cb43b5b1626.js +1 -0
  109. package/.next/static/chunks/597.d0da2018cc312352.js +1 -0
  110. package/.next/static/chunks/608.59e69b83f35d9c44.js +1 -0
  111. package/.next/static/chunks/651.7142f31ce1e052b3.js +1 -0
  112. package/.next/static/chunks/706-abfba2e18f084aed.js +1 -0
  113. package/.next/static/chunks/741.52f7fb873418346f.js +1 -0
  114. package/.next/static/chunks/832-99f4667bdaf092f8.js +1 -0
  115. package/.next/static/chunks/861-d1a326525092ab9c.js +1 -0
  116. package/.next/static/chunks/98.97381d2021f86cd9.js +1 -0
  117. package/.next/static/chunks/framework-dfd14d7ce6600b03.js +1 -0
  118. package/.next/static/chunks/main-9746772201fe3ac1.js +1 -0
  119. package/.next/static/chunks/pages/404-ac22e12eb22b9c50.js +1 -0
  120. package/.next/static/chunks/pages/500-7b708e8b89389d0e.js +1 -0
  121. package/.next/static/chunks/pages/[...slug]-3aaeeabdb9564d0f.js +1 -0
  122. package/.next/static/chunks/pages/[slug]/p-b269ba68926617dd.js +1 -0
  123. package/.next/static/chunks/pages/_app-b601536188b9a919.js +1 -0
  124. package/.next/static/chunks/pages/_error-a7a0c1d9bfbb4f38.js +1 -0
  125. package/.next/static/chunks/pages/account-04a0a6c07709c50e.js +1 -0
  126. package/.next/static/chunks/pages/checkout-2ed6b828bb6ed7e6.js +1 -0
  127. package/.next/static/chunks/pages/index-c2b6dfd205dc6cc2.js +1 -0
  128. package/.next/static/chunks/pages/login-3bb40d77e6ee120a.js +1 -0
  129. package/.next/static/chunks/pages/s-8fec20c40a2bd7da.js +1 -0
  130. package/.next/static/chunks/polyfills-c67a75d1b6f99dc8.js +1 -0
  131. package/.next/static/chunks/webpack-426a37879992164d.js +1 -0
  132. package/.next/static/css/025f924b9633ecd3.css +1 -0
  133. package/.next/static/css/2253644409b99b98.css +1 -0
  134. package/.next/static/css/364c439adafef5c8.css +1 -0
  135. package/.next/static/css/4b7b7b64ae6afe67.css +1 -0
  136. package/.next/static/css/4e0fc649e912b30f.css +1 -0
  137. package/.next/static/css/501cb58eaa378545.css +1 -0
  138. package/.next/static/css/587c27bbda64e700.css +1 -0
  139. package/.next/static/css/5f1b35b69b2ba1f7.css +1 -0
  140. package/.next/static/css/7a8417de90d11c60.css +1 -0
  141. package/.next/static/css/7df2581c69fe96b4.css +1 -0
  142. package/.next/static/media/brandless-neutral.76ddf63a.png +0 -0
  143. package/.next/static/z81uKE37lBbYBn8W-39Mb/_buildManifest.js +1 -0
  144. package/.next/static/z81uKE37lBbYBn8W-39Mb/_ssgManifest.js +1 -0
  145. package/.next/trace +65 -0
  146. package/.turbo/turbo-build.log +17 -18
  147. package/@generated/graphql/index.ts +22 -2
  148. package/@generated/graphql/persisted.json +1 -1
  149. package/CHANGELOG.md +10 -0
  150. package/faststore.config.js +1 -0
  151. package/package.json +5 -5
  152. package/public/~partytown/debug/partytown-atomics.js +556 -0
  153. package/public/~partytown/debug/partytown-media.js +374 -0
  154. package/public/~partytown/debug/partytown-sandbox-sw.js +543 -0
  155. package/public/~partytown/debug/partytown-sw.js +59 -0
  156. package/public/~partytown/debug/partytown-ww-atomics.js +1789 -0
  157. package/public/~partytown/debug/partytown-ww-sw.js +1781 -0
  158. package/public/~partytown/debug/partytown.js +72 -0
  159. package/public/~partytown/partytown-atomics.js +2 -0
  160. package/public/~partytown/partytown-media.js +2 -0
  161. package/public/~partytown/partytown-sw.js +2 -0
  162. package/public/~partytown/partytown.js +2 -0
  163. package/src/components/cart/CartSidebar/CartSidebar.tsx +6 -2
  164. package/src/components/cart/CartSidebar/section.module.scss +21 -0
  165. package/src/components/cms/GlobalSections.tsx +6 -6
  166. package/src/components/common/Alert/Alert.tsx +8 -3
  167. package/src/components/common/Alert/section.module.scss +9 -0
  168. package/src/components/common/Footer/Footer.tsx +87 -89
  169. package/src/components/common/Footer/FooterLinks.tsx +4 -6
  170. package/src/components/common/Footer/section.module.scss +12 -0
  171. package/src/components/common/RegionBar/RegionBar.tsx +17 -0
  172. package/src/components/common/RegionBar/index.ts +1 -0
  173. package/src/components/common/RegionBar/section.module.scss +8 -0
  174. package/src/components/navigation/Navbar/Navbar.tsx +62 -61
  175. package/src/components/navigation/Navbar/section.module.scss +26 -0
  176. package/src/components/navigation/NavbarLinks/NavbarLinks.tsx +0 -1
  177. package/src/components/navigation/NavbarSlider/NavbarSlider.tsx +11 -7
  178. package/src/components/navigation/NavbarSlider/section.module.scss +26 -0
  179. package/src/components/product/ProductGrid/ProductGrid.tsx +2 -4
  180. package/src/components/region/RegionModal/RegionModal.tsx +6 -1
  181. package/src/components/region/RegionModal/section.module.scss +13 -0
  182. package/src/components/search/Filter/Filter.tsx +6 -3
  183. package/src/components/search/Filter/FilterSlider.tsx +5 -0
  184. package/src/components/search/Filter/section.module.scss +22 -0
  185. package/src/components/sections/BannerNewsletter/BannerNewsletter.tsx +5 -3
  186. package/src/components/sections/BannerNewsletter/section.module.scss +8 -0
  187. package/src/components/sections/BannerText/BannerText.tsx +4 -2
  188. package/src/components/sections/BannerText/section.module.scss +8 -0
  189. package/src/components/sections/Breadcrumb/Breadcrumb.tsx +4 -2
  190. package/src/components/sections/Breadcrumb/section.module.scss +9 -0
  191. package/src/components/sections/Hero/Hero.tsx +5 -9
  192. package/src/components/sections/Hero/section.module.scss +9 -0
  193. package/src/components/sections/{Incentives → IncentivesHeader}/IncentivesHeader.tsx +3 -2
  194. package/src/components/sections/IncentivesHeader/index.ts +1 -0
  195. package/src/components/sections/IncentivesHeader/section.module.scss +8 -0
  196. package/src/components/sections/Newsletter/Newsletter.tsx +68 -69
  197. package/src/components/sections/Newsletter/section.module.scss +11 -0
  198. package/src/components/sections/ProducDetailsContent/ProductDetailsContent.tsx +2 -4
  199. package/src/components/sections/ProductDetails/ProductDetails.tsx +44 -43
  200. package/src/components/sections/ProductDetails/section.module.scss +27 -0
  201. package/src/components/sections/ProductGallery/ProductGallery.tsx +121 -119
  202. package/src/components/sections/ProductGallery/section.module.scss +28 -0
  203. package/src/components/sections/ProductShelf/ProductShelf.tsx +8 -4
  204. package/src/components/sections/ProductShelf/section.module.scss +17 -0
  205. package/src/components/sections/ProductTiles/ProductTiles.tsx +9 -4
  206. package/src/components/sections/ProductTiles/section.module.scss +17 -0
  207. package/src/components/sections/ScrollToTopButton/ScrollToTopButton.tsx +3 -3
  208. package/src/components/sections/ScrollToTopButton/section.module.scss +11 -0
  209. package/src/components/skeletons/FilterSkeleton/FilterSkeleton.tsx +1 -2
  210. package/src/components/skeletons/ProductCardSkeleton/ProductCardSkeleton.tsx +0 -3
  211. package/src/components/skeletons/ProductShelfSkeleton/ProductShelfSkeleton.tsx +2 -2
  212. package/src/components/skeletons/ProductTilesSkeleton/ProductTileSkeleton/ProductTileSkeleton.tsx +0 -3
  213. package/src/components/ui/BannerText/BannerText.tsx +0 -3
  214. package/src/components/ui/Button/ButtonSignIn/ButtonSignIn.tsx +1 -2
  215. package/src/components/{sections → ui}/Incentives/Incentives.tsx +0 -3
  216. package/src/components/ui/Incentives/incentivesMock.ts +27 -0
  217. package/src/components/ui/Logo/Logo.tsx +1 -10
  218. package/src/components/ui/Tiles/Tiles.tsx +1 -6
  219. package/src/pages/[slug]/p.tsx +1 -1
  220. package/src/pages/_app.tsx +2 -2
  221. package/src/pages/index.tsx +2 -2
  222. package/src/sdk/session/index.ts +4 -0
  223. package/src/styles/global/components.scss +8 -0
  224. package/src/styles/themes/midnight.scss +1 -1
  225. package/src/components/common/Footer/Footer.stories.mdx +0 -158
  226. package/src/components/common/Footer/footer.module.scss +0 -220
  227. package/src/components/sections/BannerNewsletter/banner-newsletter.module.scss +0 -23
  228. package/src/components/sections/Incentives/Incentives.stories.mdx +0 -159
  229. package/src/components/sections/Incentives/IncentivesFooter.tsx +0 -8
  230. package/src/components/sections/Incentives/incentives.module.scss +0 -122
  231. package/src/components/sections/Incentives/incentivesMock.ts +0 -55
  232. package/src/components/sections/Newsletter/Newsletter.stories.mdx +0 -139
  233. package/src/components/sections/Newsletter/newsletter.module.scss +0 -135
  234. package/src/components/sections/ProductDetails/product-details.module.scss +0 -185
  235. package/src/components/sections/ProductGallery/product-gallery.module.scss +0 -184
  236. package/src/components/sections/ScrollToTopButton/scroll-to-top-button.module.scss +0 -12
  237. package/src/components/skeletons/FilterSkeleton/FilterSkeleton.stories.mdx +0 -97
  238. package/src/components/skeletons/FilterSkeleton/filter-skeleton.module.scss +0 -51
  239. package/src/components/skeletons/ProductCardSkeleton/ProductCardSkeleton.stories.mdx +0 -113
  240. package/src/components/skeletons/ProductCardSkeleton/product-card-skeleton.module.scss +0 -58
  241. package/src/components/skeletons/ProductTilesSkeleton/ProductTileSkeleton/product-tile-skeleton.module.scss +0 -81
  242. package/src/components/ui/BannerText/BannerText.stories.mdx +0 -270
  243. package/src/components/ui/BannerText/banner-text.module.scss +0 -127
  244. package/src/components/ui/Button/Button.stories.mdx +0 -643
  245. package/src/components/ui/Button/button.module.scss +0 -11
  246. package/src/components/ui/Carousel/Carousel.stories.mdx +0 -201
  247. package/src/components/ui/Carousel/carousel.module.scss +0 -147
  248. package/src/components/ui/Logo/logo.module.scss +0 -12
  249. package/src/components/ui/Tiles/Tiles.stories.mdx +0 -151
  250. package/src/components/ui/Tiles/tiles.module.scss +0 -58
  251. /package/src/components/{sections → ui}/Incentives/index.ts +0 -0
@@ -0,0 +1,1787 @@
1
+ exports.id = 256;
2
+ exports.ids = [256];
3
+ exports.modules = {
4
+
5
+ /***/ 7434:
6
+ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
7
+
8
+ "use strict";
9
+ /* harmony export */ __webpack_require__.d(__webpack_exports__, {
10
+ /* harmony export */ "Z": () => (__WEBPACK_DEFAULT_EXPORT__)
11
+ /* harmony export */ });
12
+ /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(6689);
13
+ /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);
14
+
15
+ function EmptyState({ testId = 'fs-empty-state', title, titleIcon, variant = 'default', bkgColor = 'default', children, ...otherProps }) {
16
+ return (react__WEBPACK_IMPORTED_MODULE_0___default().createElement("section", { "data-fs-empty-state": true, "data-fs-empty-state-variant": variant, "data-fs-empty-state-bkg-color": bkgColor, "data-testid": testId, ...otherProps },
17
+ title && (react__WEBPACK_IMPORTED_MODULE_0___default().createElement("header", { "data-fs-empty-state-title": true },
18
+ titleIcon && react__WEBPACK_IMPORTED_MODULE_0___default().createElement((react__WEBPACK_IMPORTED_MODULE_0___default().Fragment), null, titleIcon),
19
+ react__WEBPACK_IMPORTED_MODULE_0___default().createElement("p", null, title))),
20
+ children));
21
+ }
22
+ /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (EmptyState);
23
+ //# sourceMappingURL=EmptyState.js.map
24
+
25
+ /***/ }),
26
+
27
+ /***/ 939:
28
+ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
29
+
30
+ "use strict";
31
+ /* harmony export */ __webpack_require__.d(__webpack_exports__, {
32
+ /* harmony export */ "Z": () => (__WEBPACK_DEFAULT_EXPORT__)
33
+ /* harmony export */ });
34
+ /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(6689);
35
+ /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);
36
+ /* harmony import */ var ___WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(9739);
37
+
38
+
39
+ function Filter({ testId, title, indicesExpanded, onAccordionChange, children, }) {
40
+ return (react__WEBPACK_IMPORTED_MODULE_0___default().createElement("div", { "data-fs-filter": true, "data-testid": testId },
41
+ react__WEBPACK_IMPORTED_MODULE_0___default().createElement("h2", { "data-fs-filter-title": true }, title),
42
+ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(___WEBPACK_IMPORTED_MODULE_1__/* ["default"] */ .Z, { indices: indicesExpanded, onChange: onAccordionChange, "data-fs-filter-accordion": true }, children)));
43
+ }
44
+ /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (Filter);
45
+ //# sourceMappingURL=Filter.js.map
46
+
47
+ /***/ }),
48
+
49
+ /***/ 6569:
50
+ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
51
+
52
+ "use strict";
53
+ /* harmony export */ __webpack_require__.d(__webpack_exports__, {
54
+ /* harmony export */ "Z": () => (__WEBPACK_DEFAULT_EXPORT__)
55
+ /* harmony export */ });
56
+ /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(6689);
57
+ /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);
58
+ /* harmony import */ var ___WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(1329);
59
+
60
+
61
+ function FilterFacetBoolean({ children }) {
62
+ return react__WEBPACK_IMPORTED_MODULE_0___default().createElement(___WEBPACK_IMPORTED_MODULE_1__/* ["default"] */ .Z, { "data-fs-filter-list": true }, children);
63
+ }
64
+ /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (FilterFacetBoolean);
65
+ //# sourceMappingURL=FilterFacetBoolean.js.map
66
+
67
+ /***/ }),
68
+
69
+ /***/ 6854:
70
+ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
71
+
72
+ "use strict";
73
+
74
+ // EXPORTS
75
+ __webpack_require__.d(__webpack_exports__, {
76
+ "Z": () => (/* binding */ Filter_FilterFacetBooleanItem)
77
+ });
78
+
79
+ // EXTERNAL MODULE: external "react"
80
+ var external_react_ = __webpack_require__(6689);
81
+ var external_react_default = /*#__PURE__*/__webpack_require__.n(external_react_);
82
+ ;// CONCATENATED MODULE: ../components/dist/atoms/Checkbox/Checkbox.js
83
+
84
+ const Checkbox = (0,external_react_.forwardRef)(function Checkbox({ testId = 'fs-checkbox', partial, ...otherProps }, ref) {
85
+ return (external_react_default().createElement("input", { ref: ref, "data-fs-checkbox": true, "data-testid": testId, "data-fs-checkbox-partial": partial, type: "checkbox", ...otherProps }));
86
+ });
87
+ /* harmony default export */ const Checkbox_Checkbox = (Checkbox);
88
+ //# sourceMappingURL=Checkbox.js.map
89
+ // EXTERNAL MODULE: ../components/dist/atoms/Label/Label.js
90
+ var Label = __webpack_require__(7216);
91
+ // EXTERNAL MODULE: ../components/dist/atoms/Badge/Badge.js
92
+ var Badge = __webpack_require__(44);
93
+ ;// CONCATENATED MODULE: ../components/dist/organisms/Filter/FilterFacetBooleanItem.js
94
+
95
+
96
+ function FilterFacetBooleanItem({ testId, id, selected, value, quantity, facetKey, label, onFacetChange, }) {
97
+ return (external_react_default().createElement("li", { key: id, "data-fs-filter-list-item": true },
98
+ external_react_default().createElement(Checkbox_Checkbox, { id: id, checked: selected, onChange: () => onFacetChange({ key: facetKey, value }, 'BOOLEAN'), "data-fs-filter-list-item-checkbox": true, "data-testid": `${testId}-accordion-panel-checkbox`, "data-value": value, "data-quantity": quantity }),
99
+ external_react_default().createElement(Label/* default */.Z, { htmlFor: id, className: "text__title-mini-alt", "data-fs-filter-list-item-label": true },
100
+ label,
101
+ " ",
102
+ external_react_default().createElement(Badge/* default */.Z, { "data-fs-filter-list-item-badge": true }, quantity))));
103
+ }
104
+ /* harmony default export */ const Filter_FilterFacetBooleanItem = (FilterFacetBooleanItem);
105
+ //# sourceMappingURL=FilterFacetBooleanItem.js.map
106
+
107
+ /***/ }),
108
+
109
+ /***/ 7375:
110
+ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
111
+
112
+ "use strict";
113
+
114
+ // EXPORTS
115
+ __webpack_require__.d(__webpack_exports__, {
116
+ "Z": () => (/* binding */ Filter_FilterFacetRange)
117
+ });
118
+
119
+ // EXTERNAL MODULE: external "react"
120
+ var external_react_ = __webpack_require__(6689);
121
+ var external_react_default = /*#__PURE__*/__webpack_require__.n(external_react_);
122
+ ;// CONCATENATED MODULE: ../components/dist/atoms/Slider/Slider.js
123
+ /**
124
+ * This code is inspired by the work of [sandra-lewis](https://codesandbox.io/u/sandra-lewis)
125
+ */
126
+
127
+ const percent = (value, min, max) => Math.round(((value - min) / (max - min)) * 100);
128
+ const Slider = (0,external_react_.forwardRef)(function Slider({ min, max, absoluteValuesLabel, onChange, onEnd, testId = 'fs-slider', getAriaValueText, step, minValueLabelComponent, maxValueLabelComponent, ...otherProps }, ref) {
129
+ const widthPercent = (0,external_react_.useMemo)(() => (max.absolute - min.absolute) / 100, [max.absolute, min.absolute]);
130
+ const [minPercent, setMinPercent] = (0,external_react_.useState)(() => percent(min.selected, min.absolute, max.absolute));
131
+ const [maxPercent, setMaxPercent] = (0,external_react_.useState)(() => percent(max.selected, min.absolute, max.absolute));
132
+ const [minVal, setMinVal] = (0,external_react_.useState)(() => Math.floor(min.absolute + minPercent * widthPercent));
133
+ const [maxVal, setMaxVal] = (0,external_react_.useState)(() => Math.round(min.absolute + maxPercent * widthPercent));
134
+ const percentage = (value) => (value / max.absolute) * 100;
135
+ (0,external_react_.useImperativeHandle)(ref, () => ({
136
+ setSliderValues: (values) => {
137
+ const sliderMinValue = Math.min(Number(values.min), maxVal);
138
+ setMinVal(sliderMinValue);
139
+ setMinPercent(percent(sliderMinValue, min.absolute, max.absolute));
140
+ if (values.max > max.absolute) {
141
+ setMaxVal(max.absolute);
142
+ setMaxPercent(percent(max.absolute, min.absolute, max.absolute));
143
+ return;
144
+ }
145
+ const sliderMaxValue = Math.max(Number(values.max), minVal);
146
+ setMaxVal(sliderMaxValue);
147
+ setMaxPercent(percent(sliderMaxValue, min.absolute, max.absolute));
148
+ },
149
+ }));
150
+ return (external_react_default().createElement("div", { "data-fs-slider": true, "data-testid": testId },
151
+ external_react_default().createElement("div", { "data-fs-slider-absolute-values": true },
152
+ external_react_default().createElement("span", null, absoluteValuesLabel.min),
153
+ external_react_default().createElement("span", null, absoluteValuesLabel.max)),
154
+ external_react_default().createElement("div", { "data-fs-slider-wrapper": true },
155
+ external_react_default().createElement("div", { "data-fs-slider-range": true, style: {
156
+ left: `${minPercent}%`,
157
+ width: `${maxPercent - minPercent}%`,
158
+ } }),
159
+ external_react_default().createElement("input", { type: "range", min: Math.floor(min.absolute), max: Math.round(max.absolute), value: minVal, step: step, onMouseUp: () => onEnd?.({ min: minVal, max: maxVal }), onTouchEnd: () => onEnd?.({ min: minVal, max: maxVal }), onChange: (event) => {
160
+ const minValue = Math.min(Number(event.target.value), maxVal);
161
+ setMinVal(minValue);
162
+ setMinPercent(percent(minValue, min.absolute, max.absolute));
163
+ onChange?.({ min: minValue, max: maxVal });
164
+ }, "data-fs-slider-thumb": "left", "aria-valuemin": min.absolute, "aria-valuemax": max.absolute, "aria-valuenow": minVal, "aria-label": String(minVal), "aria-labelledby": getAriaValueText?.(minVal, 'min'), ...otherProps }),
165
+ minValueLabelComponent && (external_react_default().createElement("span", { "data-fs-slider-value-label": "min", style: {
166
+ left: `calc(${percentage(minVal)}% + (${8 - percentage(minVal) * 0.2}px))`,
167
+ } }, minValueLabelComponent(minVal))),
168
+ external_react_default().createElement("input", { type: "range", min: Math.floor(min.absolute), max: Math.round(max.absolute), value: maxVal, step: step, onMouseUp: () => onEnd?.({ min: minVal, max: maxVal }), onTouchEnd: () => onEnd?.({ min: minVal, max: maxVal }), onChange: (event) => {
169
+ const maxValue = Math.max(Number(event.target.value), minVal);
170
+ setMaxVal(maxValue);
171
+ setMaxPercent(percent(maxValue, min.absolute, max.absolute));
172
+ onChange?.({ min: minVal, max: maxValue });
173
+ }, "data-fs-slider-thumb": "right", "aria-valuemin": min.absolute, "aria-valuemax": max.absolute, "aria-valuenow": maxVal, "aria-label": String(maxVal), "aria-labelledby": getAriaValueText?.(maxVal, 'max') }),
174
+ maxValueLabelComponent && (external_react_default().createElement("span", { "data-fs-slider-value-label": "max", style: {
175
+ left: `calc(${percentage(maxVal)}% + (${8 - percentage(maxVal) * 0.2}px))`,
176
+ } }, maxValueLabelComponent(maxVal))))));
177
+ });
178
+ /* harmony default export */ const Slider_Slider = (Slider);
179
+ //# sourceMappingURL=Slider.js.map
180
+ // EXTERNAL MODULE: ../components/dist/atoms/Price/Price.js
181
+ var Price = __webpack_require__(7549);
182
+ // EXTERNAL MODULE: ../components/dist/molecules/InputField/InputField.js
183
+ var InputField = __webpack_require__(8287);
184
+ ;// CONCATENATED MODULE: ../components/dist/organisms/PriceRange/PriceRange.js
185
+
186
+
187
+ const PriceRange = (0,external_react_.forwardRef)(function PriceRange({ formatter, max, min, step = 1, onChange, onEnd, testId = 'fs-price-range', variant, 'aria-label': ariaLabel, ...otherProps }, ref) {
188
+ const sliderRef = (0,external_react_.useRef)();
189
+ (0,external_react_.useImperativeHandle)(ref, () => ({
190
+ setPriceRangeValues: (values) => {
191
+ onChange?.(values);
192
+ sliderRef.current?.setSliderValues(values);
193
+ },
194
+ }));
195
+ const inputMinRef = (0,external_react_.useRef)(null);
196
+ const inputMaxRef = (0,external_react_.useRef)(null);
197
+ const [inputMinError, setInputMinError] = (0,external_react_.useState)();
198
+ const [inputMaxError, setInputMaxError] = (0,external_react_.useState)();
199
+ const [priceRange, setPriceRange] = (0,external_react_.useState)({
200
+ min: Math.floor(min.selected),
201
+ max: Math.round(max.selected),
202
+ });
203
+ function onChangePriceRange(value) {
204
+ setInputMinError(undefined);
205
+ setInputMaxError(undefined);
206
+ setPriceRange({ min: value.min, max: value.max });
207
+ if (inputMinRef.current?.value) {
208
+ inputMinRef.current.value = String(value.min);
209
+ }
210
+ if (inputMaxRef.current?.value) {
211
+ inputMaxRef.current.value = String(value.max);
212
+ }
213
+ }
214
+ function onChangeInputMin(value) {
215
+ setInputMinError(undefined);
216
+ if (Number(value) < Math.floor(min.absolute)) {
217
+ return;
218
+ }
219
+ if (Number(value) > Math.floor(priceRange.max)) {
220
+ setInputMinError(`Min price can't be greater than max`);
221
+ }
222
+ setPriceRange({ ...priceRange, min: Number(value) });
223
+ sliderRef.current?.setSliderValues({
224
+ ...priceRange,
225
+ min: Number(value),
226
+ });
227
+ }
228
+ function onChangeInputMax(value) {
229
+ setInputMaxError(undefined);
230
+ if (Number(value) > Math.round(max.absolute)) {
231
+ return;
232
+ }
233
+ if (Number(value) < Math.round(priceRange.min)) {
234
+ setInputMaxError(`Max price can't be smaller than min`);
235
+ }
236
+ setPriceRange({ ...priceRange, max: Number(value) });
237
+ sliderRef.current?.setSliderValues({
238
+ ...priceRange,
239
+ max: Number(value),
240
+ });
241
+ }
242
+ return (external_react_default().createElement("div", { "data-fs-price-range": true, "data-testid": testId, ...otherProps },
243
+ external_react_default().createElement(Slider_Slider, { ref: sliderRef, min: min, max: max, step: step, onEnd: (value) => {
244
+ onEnd?.(value);
245
+ onChangePriceRange(value);
246
+ }, "aria-label": ariaLabel, onChange: (value) => onChange?.(value), absoluteValuesLabel: {
247
+ min: (external_react_default().createElement(Price/* default */.Z, { value: Math.floor(min.absolute), variant: variant, formatter: formatter })),
248
+ max: (external_react_default().createElement(Price/* default */.Z, { value: Math.round(max.absolute), variant: variant, formatter: formatter })),
249
+ }, minValueLabelComponent: (minValue) => {
250
+ return (external_react_default().createElement(Price/* default */.Z, { value: minValue, variant: variant, formatter: formatter }));
251
+ }, maxValueLabelComponent: (maxValue) => {
252
+ return (external_react_default().createElement(Price/* default */.Z, { value: maxValue, variant: variant, formatter: formatter }));
253
+ } }),
254
+ external_react_default().createElement("div", { "data-fs-price-range-inputs": true },
255
+ external_react_default().createElement(InputField/* default */.Z, { id: "price-range-min", step: step, label: "Min", type: "number", inputMode: "numeric", error: inputMinError, inputRef: inputMinRef, min: Math.floor(min.absolute), max: priceRange.max, value: priceRange.min, onChange: (e) => onChangeInputMin(e.target.value), onBlur: () => !inputMinError && onEnd?.(priceRange) }),
256
+ external_react_default().createElement(InputField/* default */.Z, { id: "price-range-max", label: "Max", step: step, type: "number", inputMode: "numeric", error: inputMaxError, inputRef: inputMaxRef, max: Math.round(max.absolute), min: priceRange.min, value: priceRange.max, onChange: (e) => onChangeInputMax(e.target.value), onBlur: () => !inputMaxError && onEnd?.(priceRange) }))));
257
+ });
258
+ /* harmony default export */ const PriceRange_PriceRange = (PriceRange);
259
+ //# sourceMappingURL=PriceRange.js.map
260
+ ;// CONCATENATED MODULE: ../components/dist/organisms/Filter/FilterFacetRange.js
261
+
262
+
263
+ const formatRange = (min, max) => `${min.toFixed(2)}-to-${max.toFixed(2)}`;
264
+ function FilterFacetRange({ min, max, formatter, facetKey, onFacetChange, }) {
265
+ return (external_react_default().createElement(PriceRange_PriceRange, { "data-fs-filter-facet-range": true, min: min, max: max, formatter: formatter, step: 1, onEnd: (v) => onFacetChange({
266
+ key: facetKey,
267
+ value: formatRange(v.min, v.max),
268
+ }, 'RANGE') }));
269
+ }
270
+ /* harmony default export */ const Filter_FilterFacetRange = (FilterFacetRange);
271
+ //# sourceMappingURL=FilterFacetRange.js.map
272
+
273
+ /***/ }),
274
+
275
+ /***/ 226:
276
+ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
277
+
278
+ "use strict";
279
+ /* harmony export */ __webpack_require__.d(__webpack_exports__, {
280
+ /* harmony export */ "Z": () => (__WEBPACK_DEFAULT_EXPORT__)
281
+ /* harmony export */ });
282
+ /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(6689);
283
+ /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);
284
+ /* harmony import */ var ___WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(5705);
285
+ /* harmony import */ var ___WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(7743);
286
+ /* harmony import */ var ___WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(331);
287
+
288
+
289
+ function FilterFacets({ testId, label, index, children, type, }) {
290
+ return (react__WEBPACK_IMPORTED_MODULE_0___default().createElement(___WEBPACK_IMPORTED_MODULE_1__/* ["default"] */ .Z, { key: `${label}-${index}`, prefixId: testId, testId: `${testId}-accordion`, index: index, "data-type": type, "data-fs-filter-accordion-item": true },
291
+ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(___WEBPACK_IMPORTED_MODULE_2__/* ["default"] */ .Z, { testId: `${testId}-accordion-button` }, label),
292
+ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(___WEBPACK_IMPORTED_MODULE_3__/* ["default"] */ .Z, null, children)));
293
+ }
294
+ /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (FilterFacets);
295
+ //# sourceMappingURL=FilterFacets.js.map
296
+
297
+ /***/ }),
298
+
299
+ /***/ 4256:
300
+ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
301
+
302
+ "use strict";
303
+ // ESM COMPAT FLAG
304
+ __webpack_require__.r(__webpack_exports__);
305
+
306
+ // EXPORTS
307
+ __webpack_require__.d(__webpack_exports__, {
308
+ "default": () => (/* binding */ search_Filter_FilterSlider)
309
+ });
310
+
311
+ // EXTERNAL MODULE: ../sdk/dist/search/useSearch.js + 1 modules
312
+ var useSearch = __webpack_require__(3221);
313
+ // EXTERNAL MODULE: external "react"
314
+ var external_react_ = __webpack_require__(6689);
315
+ var external_react_default = /*#__PURE__*/__webpack_require__.n(external_react_);
316
+ // EXTERNAL MODULE: ../components/dist/hooks/useFadeEffect.js
317
+ var useFadeEffect = __webpack_require__(6074);
318
+ // EXTERNAL MODULE: ../components/dist/hooks/UIProvider.js
319
+ var UIProvider = __webpack_require__(395);
320
+ // EXTERNAL MODULE: ../components/dist/organisms/SlideOver/SlideOver.js
321
+ var SlideOver = __webpack_require__(1021);
322
+ // EXTERNAL MODULE: ../components/dist/organisms/SlideOver/SlideOverHeader.js
323
+ var SlideOverHeader = __webpack_require__(9648);
324
+ // EXTERNAL MODULE: ../components/dist/atoms/Button/Button.js
325
+ var Button = __webpack_require__(7578);
326
+ ;// CONCATENATED MODULE: ../components/dist/organisms/Filter/FilterSlider.js
327
+
328
+
329
+ function FilterSlider({ title, size, direction, children, applyBtnProps, clearBtnProps, overlayProps, onClose, ...otherProps }) {
330
+ const { fade, fadeOut } = (0,useFadeEffect/* useFadeEffect */.b)();
331
+ const { closeFilter } = (0,UIProvider/* useUI */.l)();
332
+ return (external_react_default().createElement(SlideOver/* default */.Z, { "data-fs-filter-slider": true, isOpen: true, fade: fade, onDismiss: fadeOut, size: size, direction: direction, onTransitionEnd: () => fade === 'out' && closeFilter(), overlayProps: overlayProps, ...otherProps },
333
+ external_react_default().createElement("div", { "data-fs-filter-slider-content": true },
334
+ external_react_default().createElement(SlideOverHeader/* default */.Z, { onClose: () => {
335
+ onClose();
336
+ fadeOut();
337
+ } },
338
+ external_react_default().createElement("h2", { "data-fs-filter-slider-title": true }, title)),
339
+ children),
340
+ external_react_default().createElement("footer", { "data-fs-filter-slider-footer": true },
341
+ external_react_default().createElement(Button/* default */.Z, { "data-fs-filter-slider-footer-button-clear": true, ...clearBtnProps }),
342
+ external_react_default().createElement(Button/* default */.Z, { "data-fs-filter-slider-footer-button-apply": true, "data-testid": "filter-slider-button-apply", ...applyBtnProps, onClick: (e) => {
343
+ applyBtnProps?.onClick?.(e);
344
+ fadeOut();
345
+ } }))));
346
+ }
347
+ /* harmony default export */ const Filter_FilterSlider = (FilterSlider);
348
+ //# sourceMappingURL=FilterSlider.js.map
349
+ // EXTERNAL MODULE: ../components/dist/organisms/Filter/Filter.js
350
+ var Filter = __webpack_require__(939);
351
+ // EXTERNAL MODULE: ../components/dist/organisms/Filter/FilterFacets.js
352
+ var FilterFacets = __webpack_require__(226);
353
+ // EXTERNAL MODULE: ../components/dist/organisms/Filter/FilterFacetBoolean.js
354
+ var FilterFacetBoolean = __webpack_require__(6569);
355
+ // EXTERNAL MODULE: ../components/dist/organisms/Filter/FilterFacetBooleanItem.js + 1 modules
356
+ var FilterFacetBooleanItem = __webpack_require__(6854);
357
+ // EXTERNAL MODULE: ../components/dist/organisms/Filter/FilterFacetRange.js + 2 modules
358
+ var FilterFacetRange = __webpack_require__(7375);
359
+ // EXTERNAL MODULE: ./src/sdk/product/useFormattedPrice.ts
360
+ var useFormattedPrice = __webpack_require__(5346);
361
+ // EXTERNAL MODULE: ./src/components/search/Filter/section.module.scss
362
+ var section_module = __webpack_require__(5813);
363
+ var section_module_default = /*#__PURE__*/__webpack_require__.n(section_module);
364
+ // EXTERNAL MODULE: external "react/jsx-runtime"
365
+ var jsx_runtime_ = __webpack_require__(997);
366
+ ;// CONCATENATED MODULE: ./src/components/search/Filter/FilterSlider.tsx
367
+ 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; }
368
+
369
+ 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; }
370
+
371
+ 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; }
372
+
373
+
374
+
375
+
376
+
377
+
378
+
379
+
380
+ function FilterSlider_FilterSlider({
381
+ facets,
382
+ testId,
383
+ dispatch,
384
+ expanded,
385
+ selected,
386
+ title
387
+ }) {
388
+ const {
389
+ resetInfiniteScroll,
390
+ setState,
391
+ state
392
+ } = (0,useSearch/* useSearch */.R)();
393
+ return /*#__PURE__*/jsx_runtime_.jsx(Filter_FilterSlider, {
394
+ overlayProps: {
395
+ className: `section ${(section_module_default()).section} section-filter-slider`
396
+ },
397
+ title: title,
398
+ size: "partial",
399
+ direction: "rightSide",
400
+ clearBtnProps: {
401
+ variant: 'secondary',
402
+ onClick: () => dispatch({
403
+ type: 'selectFacets',
404
+ payload: []
405
+ }),
406
+ children: 'Clear All'
407
+ },
408
+ applyBtnProps: {
409
+ variant: 'primary',
410
+ onClick: () => {
411
+ resetInfiniteScroll(0);
412
+ setState(_objectSpread(_objectSpread({}, state), {}, {
413
+ selectedFacets: selected,
414
+ page: 0
415
+ }));
416
+ },
417
+ children: 'Apply'
418
+ },
419
+ onClose: () => {
420
+ dispatch({
421
+ type: 'selectFacets',
422
+ payload: state.selectedFacets
423
+ });
424
+ },
425
+ children: /*#__PURE__*/jsx_runtime_.jsx(Filter/* default */.Z, {
426
+ testId: `mobile-${testId}`,
427
+ indicesExpanded: expanded,
428
+ onAccordionChange: index => dispatch({
429
+ type: 'toggleExpanded',
430
+ payload: index
431
+ }),
432
+ children: facets.map((facet, index) => {
433
+ const {
434
+ __typename: type,
435
+ label
436
+ } = facet;
437
+ const isExpanded = expanded.has(index);
438
+ return /*#__PURE__*/(0,jsx_runtime_.jsxs)(FilterFacets/* default */.Z, {
439
+ testId: `mobile-${testId}`,
440
+ index: index,
441
+ type: type,
442
+ label: label,
443
+ children: [type === 'StoreFacetBoolean' && isExpanded && /*#__PURE__*/jsx_runtime_.jsx(FilterFacetBoolean/* default */.Z, {
444
+ children: facet.values.map(item => /*#__PURE__*/jsx_runtime_.jsx(FilterFacetBooleanItem/* default */.Z, {
445
+ id: `${testId}-${facet.label}-${item.label}`,
446
+ testId: `mobile-${testId}`,
447
+ onFacetChange: facet => dispatch({
448
+ type: 'toggleFacet',
449
+ payload: facet
450
+ }),
451
+ selected: item.selected,
452
+ value: item.value,
453
+ quantity: item.quantity,
454
+ facetKey: facet.key,
455
+ label: item.label
456
+ }, `${testId}-${facet.label}-${item.label}`))
457
+ }), type === 'StoreFacetRange' && isExpanded && /*#__PURE__*/jsx_runtime_.jsx(FilterFacetRange/* default */.Z, {
458
+ facetKey: facet.key,
459
+ min: facet.min,
460
+ max: facet.max,
461
+ formatter: useFormattedPrice/* useFormattedPrice */.P,
462
+ onFacetChange: facet => dispatch({
463
+ type: 'setFacet',
464
+ payload: {
465
+ facet,
466
+ unique: true
467
+ }
468
+ })
469
+ })]
470
+ }, `${testId}-${label}-${index}`);
471
+ })
472
+ })
473
+ });
474
+ }
475
+
476
+ /* harmony default export */ const search_Filter_FilterSlider = (FilterSlider_FilterSlider);
477
+
478
+ /***/ }),
479
+
480
+ /***/ 1558:
481
+ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
482
+
483
+ "use strict";
484
+
485
+ // EXPORTS
486
+ __webpack_require__.d(__webpack_exports__, {
487
+ "C": () => (/* reexport */ search_Filter_Filter)
488
+ });
489
+
490
+ // UNUSED EXPORTS: FilterSlider
491
+
492
+ // EXTERNAL MODULE: ../components/dist/hooks/UIProvider.js
493
+ var UIProvider = __webpack_require__(395);
494
+ // EXTERNAL MODULE: external "react"
495
+ var external_react_ = __webpack_require__(6689);
496
+ // EXTERNAL MODULE: ../sdk/dist/search/useSearch.js + 1 modules
497
+ var useSearch = __webpack_require__(3221);
498
+ // EXTERNAL MODULE: ../sdk/dist/search/facets.js
499
+ var search_facets = __webpack_require__(8492);
500
+ // EXTERNAL MODULE: ../components/dist/organisms/Filter/Filter.js
501
+ var Filter = __webpack_require__(939);
502
+ // EXTERNAL MODULE: ../components/dist/organisms/Filter/FilterFacets.js
503
+ var FilterFacets = __webpack_require__(226);
504
+ // EXTERNAL MODULE: ../components/dist/organisms/Filter/FilterFacetBoolean.js
505
+ var FilterFacetBoolean = __webpack_require__(6569);
506
+ // EXTERNAL MODULE: ../components/dist/organisms/Filter/FilterFacetBooleanItem.js + 1 modules
507
+ var FilterFacetBooleanItem = __webpack_require__(6854);
508
+ // EXTERNAL MODULE: ../components/dist/organisms/Filter/FilterFacetRange.js + 2 modules
509
+ var FilterFacetRange = __webpack_require__(7375);
510
+ // EXTERNAL MODULE: ./src/sdk/product/useFormattedPrice.ts
511
+ var useFormattedPrice = __webpack_require__(5346);
512
+ // EXTERNAL MODULE: external "react/jsx-runtime"
513
+ var jsx_runtime_ = __webpack_require__(997);
514
+ ;// CONCATENATED MODULE: ./src/components/search/Filter/FilterDesktop.tsx
515
+ 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; }
516
+
517
+ 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; }
518
+
519
+ 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; }
520
+
521
+
522
+
523
+
524
+
525
+
526
+
527
+ function FilterDesktop({
528
+ facets,
529
+ testId,
530
+ dispatch,
531
+ expanded,
532
+ title
533
+ }) {
534
+ const {
535
+ resetInfiniteScroll,
536
+ state,
537
+ setState
538
+ } = (0,useSearch/* useSearch */.R)();
539
+ return /*#__PURE__*/jsx_runtime_.jsx(Filter/* default */.Z, {
540
+ testId: `desktop-${testId}`,
541
+ title: title,
542
+ indicesExpanded: expanded,
543
+ onAccordionChange: idx => dispatch({
544
+ type: 'toggleExpanded',
545
+ payload: idx
546
+ }),
547
+ children: facets.map((facet, index) => {
548
+ const {
549
+ __typename: type,
550
+ label
551
+ } = facet;
552
+ const isExpanded = expanded.has(index);
553
+ return /*#__PURE__*/(0,jsx_runtime_.jsxs)(FilterFacets/* default */.Z, {
554
+ testId: testId,
555
+ index: index,
556
+ type: type,
557
+ label: label,
558
+ children: [type === 'StoreFacetBoolean' && isExpanded && /*#__PURE__*/jsx_runtime_.jsx(FilterFacetBoolean/* default */.Z, {
559
+ children: facet.values.map(item => /*#__PURE__*/jsx_runtime_.jsx(FilterFacetBooleanItem/* default */.Z, {
560
+ id: `${testId}-${facet.label}-${item.label}`,
561
+ testId: testId,
562
+ onFacetChange: facet => {
563
+ setState(_objectSpread(_objectSpread({}, state), {}, {
564
+ selectedFacets: (0,search_facets/* toggleFacet */.wB)(state.selectedFacets, facet),
565
+ page: 0
566
+ }));
567
+ resetInfiniteScroll(0);
568
+ },
569
+ selected: item.selected,
570
+ value: item.value,
571
+ quantity: item.quantity,
572
+ facetKey: facet.key,
573
+ label: item.label
574
+ }, `${testId}-${facet.label}-${item.label}`))
575
+ }), type === 'StoreFacetRange' && isExpanded && /*#__PURE__*/jsx_runtime_.jsx(FilterFacetRange/* default */.Z, {
576
+ facetKey: facet.key,
577
+ min: facet.min,
578
+ max: facet.max,
579
+ formatter: useFormattedPrice/* useFormattedPrice */.P,
580
+ onFacetChange: facet => {
581
+ setState(_objectSpread(_objectSpread({}, state), {}, {
582
+ selectedFacets: (0,search_facets/* setFacet */.uL)(state.selectedFacets, facet, true),
583
+ page: 0
584
+ }));
585
+ resetInfiniteScroll(0);
586
+ }
587
+ })]
588
+ }, `${testId}-${label}-${index}`);
589
+ })
590
+ });
591
+ }
592
+
593
+ /* harmony default export */ const Filter_FilterDesktop = (FilterDesktop);
594
+ ;// CONCATENATED MODULE: ./src/components/search/Filter/useFilter.ts
595
+ const _excluded = ["value"];
596
+
597
+ 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; }
598
+
599
+ 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; }
600
+
601
+ function useFilter_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; }
602
+
603
+ function useFilter_objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? useFilter_ownKeys(Object(source), !0).forEach(function (key) { useFilter_defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : useFilter_ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
604
+
605
+ function useFilter_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; }
606
+
607
+
608
+
609
+
610
+ const reducer = (state, action) => {
611
+ const {
612
+ expanded,
613
+ selected
614
+ } = state;
615
+ const {
616
+ type,
617
+ payload
618
+ } = action;
619
+
620
+ switch (type) {
621
+ case 'toggleExpanded':
622
+ {
623
+ if (expanded.has(payload)) {
624
+ expanded.delete(payload);
625
+ } else {
626
+ expanded.add(payload);
627
+ }
628
+
629
+ return useFilter_objectSpread(useFilter_objectSpread({}, state), {}, {
630
+ expanded: new Set(expanded)
631
+ });
632
+ }
633
+
634
+ case 'selectFacets':
635
+ {
636
+ if (payload !== selected) {
637
+ return useFilter_objectSpread(useFilter_objectSpread({}, state), {}, {
638
+ selected: payload
639
+ });
640
+ }
641
+
642
+ break;
643
+ }
644
+
645
+ case 'toggleFacet':
646
+ {
647
+ return useFilter_objectSpread(useFilter_objectSpread({}, state), {}, {
648
+ selected: (0,search_facets/* toggleFacet */.wB)(state.selected, payload)
649
+ });
650
+ }
651
+
652
+ case 'setFacet':
653
+ {
654
+ return useFilter_objectSpread(useFilter_objectSpread({}, state), {}, {
655
+ selected: (0,search_facets/* setFacet */.uL)(state.selected, payload.facet, payload.unique)
656
+ });
657
+ }
658
+
659
+ default:
660
+ throw new Error(`Action ${type} not implemented`);
661
+ }
662
+
663
+ return state;
664
+ };
665
+
666
+ const useFilter = allFacets => {
667
+ const {
668
+ state: {
669
+ selectedFacets
670
+ }
671
+ } = (0,useSearch/* useSearch */.R)();
672
+ const {
673
+ 0: {
674
+ selected,
675
+ expanded
676
+ },
677
+ 1: dispatch
678
+ } = (0,external_react_.useReducer)(reducer, null, () => ({
679
+ expanded: new Set([]),
680
+ selected: selectedFacets
681
+ }));
682
+ const selectedMap = (0,external_react_.useMemo)(() => selected.reduce((acc, facet) => {
683
+ if (!acc.has(facet.key)) {
684
+ acc.set(facet.key, new Map());
685
+ }
686
+
687
+ acc.get(facet.key)?.set(facet.value, facet);
688
+ return acc;
689
+ }, new Map()), [selected]);
690
+ const facets = (0,external_react_.useMemo)(() => allFacets.map(facet => {
691
+ if (facet.__typename === 'StoreFacetBoolean') {
692
+ return useFilter_objectSpread(useFilter_objectSpread({}, facet), {}, {
693
+ values: facet.values.map(_ref => {
694
+ let {
695
+ value
696
+ } = _ref,
697
+ rest = _objectWithoutProperties(_ref, _excluded);
698
+
699
+ return useFilter_objectSpread(useFilter_objectSpread({}, rest), {}, {
700
+ value,
701
+ selected: Boolean(selectedMap.get(facet.key)?.has(value))
702
+ });
703
+ })
704
+ });
705
+ }
706
+
707
+ return facet;
708
+ }), [allFacets, selectedMap]);
709
+ (0,external_react_.useEffect)(() => {
710
+ dispatch({
711
+ type: 'selectFacets',
712
+ payload: selectedFacets
713
+ });
714
+ }, [selectedFacets]);
715
+ return {
716
+ facets,
717
+ selected,
718
+ expanded,
719
+ dispatch
720
+ };
721
+ };
722
+ ;// CONCATENATED MODULE: ./src/components/search/Filter/Filter.tsx
723
+ function Filter_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; }
724
+
725
+ function Filter_objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? Filter_ownKeys(Object(source), !0).forEach(function (key) { Filter_defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : Filter_ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
726
+
727
+ function Filter_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; }
728
+
729
+
730
+
731
+
732
+
733
+
734
+
735
+
736
+ const FilterSlider = /*#__PURE__*/(0,external_react_.lazy)(() => Promise.resolve(/* import() */).then(__webpack_require__.bind(__webpack_require__, 4256)));
737
+
738
+ function Filter_Filter({
739
+ facets: allFacets,
740
+ testId = 'fs-filter'
741
+ }) {
742
+ const filter = useFilter(allFacets);
743
+ const {
744
+ filter: displayFilter
745
+ } = (0,UIProvider/* useUI */.l)();
746
+ return /*#__PURE__*/(0,jsx_runtime_.jsxs)(jsx_runtime_.Fragment, {
747
+ children: [/*#__PURE__*/jsx_runtime_.jsx("div", {
748
+ className: "hidden-mobile",
749
+ children: /*#__PURE__*/jsx_runtime_.jsx(Filter_FilterDesktop, Filter_objectSpread(Filter_objectSpread({}, filter), {}, {
750
+ testId: testId,
751
+ title: "Filters"
752
+ }))
753
+ }), displayFilter && /*#__PURE__*/jsx_runtime_.jsx(external_react_.Suspense, {
754
+ fallback: null,
755
+ children: /*#__PURE__*/jsx_runtime_.jsx(FilterSlider, Filter_objectSpread(Filter_objectSpread({}, filter), {}, {
756
+ testId: testId,
757
+ title: "Filters"
758
+ }))
759
+ })]
760
+ });
761
+ }
762
+
763
+ const fragment = "unknown";
764
+ /* harmony default export */ const search_Filter_Filter = (Filter_Filter);
765
+ // EXTERNAL MODULE: ./src/components/search/Filter/FilterSlider.tsx + 1 modules
766
+ var Filter_FilterSlider = __webpack_require__(4256);
767
+ ;// CONCATENATED MODULE: ./src/components/search/Filter/index.ts
768
+
769
+
770
+
771
+ /***/ }),
772
+
773
+ /***/ 3532:
774
+ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
775
+
776
+ "use strict";
777
+
778
+ // EXPORTS
779
+ __webpack_require__.d(__webpack_exports__, {
780
+ "Z": () => (/* reexport */ Sort_Sort)
781
+ });
782
+
783
+ // EXTERNAL MODULE: ../sdk/dist/search/useSearch.js + 1 modules
784
+ var useSearch = __webpack_require__(3221);
785
+ // EXTERNAL MODULE: external "react"
786
+ var external_react_ = __webpack_require__(6689);
787
+ var external_react_default = /*#__PURE__*/__webpack_require__.n(external_react_);
788
+ // EXTERNAL MODULE: ../components/dist/atoms/Label/Label.js
789
+ var Label = __webpack_require__(7216);
790
+ // EXTERNAL MODULE: ../components/dist/atoms/Icon/Icon.js
791
+ var Icon = __webpack_require__(5045);
792
+ ;// CONCATENATED MODULE: ../components/dist/atoms/Select/Select.js
793
+
794
+
795
+ const Select = (0,external_react_.forwardRef)(function Select({ options, id, testId = 'fs-select', ...otherProps }, ref) {
796
+ return (external_react_default().createElement("div", { "data-fs-select": true },
797
+ external_react_default().createElement("select", { ref: ref, id: id, "data-testid": testId, ...otherProps }, Object.keys(options).map((key) => (external_react_default().createElement("option", { key: key, value: key }, options[key])))),
798
+ external_react_default().createElement(Icon/* default */.Z, { "data-fs-select-icon": true, name: "CaretDown" })));
799
+ });
800
+ /* harmony default export */ const Select_Select = (Select);
801
+ //# sourceMappingURL=Select.js.map
802
+ ;// CONCATENATED MODULE: ../components/dist/molecules/SelectField/SelectField.js
803
+
804
+
805
+ const SelectField = (0,external_react_.forwardRef)(function SelectField({ id, label, options, testId = 'fs-select-field', ...otherProps }, ref) {
806
+ return (external_react_default().createElement("div", { ref: ref, "data-fs-select-field": true },
807
+ external_react_default().createElement(Label/* default */.Z, { "data-fs-select-field-label": true, htmlFor: id }, label),
808
+ external_react_default().createElement(Select_Select, { id: id, options: options, "data-testid": testId, ...otherProps })));
809
+ });
810
+ /* harmony default export */ const SelectField_SelectField = (SelectField);
811
+ //# sourceMappingURL=SelectField.js.map
812
+ // EXTERNAL MODULE: external "react/jsx-runtime"
813
+ var jsx_runtime_ = __webpack_require__(997);
814
+ ;// CONCATENATED MODULE: ./src/components/search/Sort/Sort.tsx
815
+ 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; }
816
+
817
+ 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; }
818
+
819
+ 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; }
820
+
821
+
822
+
823
+
824
+ const OptionsMap = {
825
+ price_desc: 'Price, descending',
826
+ price_asc: 'Price, ascending',
827
+ orders_desc: 'Top sales',
828
+ name_asc: 'Name, A-Z',
829
+ name_desc: 'Name, Z-A',
830
+ release_desc: 'Release date',
831
+ discount_desc: 'Discount',
832
+ score_desc: 'Relevance'
833
+ };
834
+ const keys = Object.keys(OptionsMap);
835
+
836
+ function Sort() {
837
+ const {
838
+ state,
839
+ setState
840
+ } = (0,useSearch/* useSearch */.R)();
841
+ return /*#__PURE__*/jsx_runtime_.jsx(SelectField_SelectField, {
842
+ id: "sort-select",
843
+ className: "sort / text__title-mini-alt",
844
+ label: "Sort by",
845
+ options: OptionsMap,
846
+ onChange: e => {
847
+ const sort = keys[e.target.selectedIndex];
848
+ setState(_objectSpread(_objectSpread({}, state), {}, {
849
+ sort,
850
+ page: 0
851
+ }));
852
+ },
853
+ value: state.sort,
854
+ testId: "search-sort"
855
+ });
856
+ }
857
+
858
+ /* harmony default export */ const Sort_Sort = (Sort);
859
+ ;// CONCATENATED MODULE: ./src/components/search/Sort/index.ts
860
+
861
+
862
+ /***/ }),
863
+
864
+ /***/ 3769:
865
+ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
866
+
867
+ "use strict";
868
+
869
+ // EXPORTS
870
+ __webpack_require__.d(__webpack_exports__, {
871
+ "Z": () => (/* reexport */ sections_Breadcrumb_Breadcrumb)
872
+ });
873
+
874
+ // EXTERNAL MODULE: external "react"
875
+ var external_react_ = __webpack_require__(6689);
876
+ // EXTERNAL MODULE: ./src/components/ui/Breadcrumb/index.ts + 14 modules
877
+ var Breadcrumb = __webpack_require__(120);
878
+ // EXTERNAL MODULE: ./src/components/sections/Section/index.ts
879
+ var Section = __webpack_require__(7067);
880
+ // EXTERNAL MODULE: ./src/components/sections/Breadcrumb/section.module.scss
881
+ var section_module = __webpack_require__(5000);
882
+ var section_module_default = /*#__PURE__*/__webpack_require__.n(section_module);
883
+ // EXTERNAL MODULE: external "react/jsx-runtime"
884
+ var jsx_runtime_ = __webpack_require__(997);
885
+ ;// CONCATENATED MODULE: ./src/components/sections/Breadcrumb/Breadcrumb.tsx
886
+
887
+
888
+
889
+
890
+
891
+
892
+ function Breadcrumb_Breadcrumb({
893
+ breadcrumbList,
894
+ name
895
+ }) {
896
+ const fallback = [{
897
+ item: '/',
898
+ name,
899
+ position: 1
900
+ }];
901
+ const list = breadcrumbList ?? fallback;
902
+ return /*#__PURE__*/jsx_runtime_.jsx(Section/* default */.Z, {
903
+ className: `${(section_module_default()).section} section-breadcrumb layout__content`,
904
+ children: /*#__PURE__*/jsx_runtime_.jsx(Breadcrumb/* default */.Z, {
905
+ breadcrumbList: list
906
+ })
907
+ });
908
+ }
909
+
910
+ /* harmony default export */ const sections_Breadcrumb_Breadcrumb = (/*#__PURE__*/(0,external_react_.memo)(Breadcrumb_Breadcrumb));
911
+ ;// CONCATENATED MODULE: ./src/components/sections/Breadcrumb/index.ts
912
+
913
+
914
+ /***/ }),
915
+
916
+ /***/ 5878:
917
+ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
918
+
919
+ "use strict";
920
+ /* harmony export */ __webpack_require__.d(__webpack_exports__, {
921
+ /* harmony export */ "Z": () => (__WEBPACK_DEFAULT_EXPORT__)
922
+ /* harmony export */ });
923
+ /* harmony import */ var _faststore_ui__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(7434);
924
+ /* harmony import */ var _faststore_ui__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(5045);
925
+ /* harmony import */ var _faststore_ui__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(7703);
926
+ /* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(997);
927
+ /* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__);
928
+
929
+
930
+
931
+
932
+ function EmptyGallery() {
933
+ return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(_faststore_ui__WEBPACK_IMPORTED_MODULE_1__/* ["default"] */ .Z, {
934
+ variant: "rounded",
935
+ title: "Nothing matches with your search",
936
+ titleIcon: /*#__PURE__*/react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx(_faststore_ui__WEBPACK_IMPORTED_MODULE_2__/* ["default"] */ .Z, {
937
+ name: "CircleWavyWarning",
938
+ width: 56,
939
+ height: 56,
940
+ weight: "thin"
941
+ }),
942
+ children: [/*#__PURE__*/react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx(_faststore_ui__WEBPACK_IMPORTED_MODULE_3__/* ["default"] */ .Z, {
943
+ href: "/office",
944
+ variant: "secondary",
945
+ icon: /*#__PURE__*/react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx(_faststore_ui__WEBPACK_IMPORTED_MODULE_2__/* ["default"] */ .Z, {
946
+ name: "CircleWavyWarning",
947
+ width: 18,
948
+ height: 18,
949
+ weight: "bold"
950
+ }),
951
+ iconPosition: "left",
952
+ children: "Browse Offers"
953
+ }), /*#__PURE__*/react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx(_faststore_ui__WEBPACK_IMPORTED_MODULE_3__/* ["default"] */ .Z, {
954
+ href: "/technology",
955
+ variant: "secondary",
956
+ icon: /*#__PURE__*/react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx(_faststore_ui__WEBPACK_IMPORTED_MODULE_2__/* ["default"] */ .Z, {
957
+ name: "RocketLaunch",
958
+ width: 18,
959
+ height: 18,
960
+ weight: "bold"
961
+ }),
962
+ iconPosition: "left",
963
+ children: "Just Arrived"
964
+ })]
965
+ });
966
+ }
967
+
968
+ /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (EmptyGallery);
969
+
970
+ /***/ }),
971
+
972
+ /***/ 8273:
973
+ /***/ ((module, __webpack_exports__, __webpack_require__) => {
974
+
975
+ "use strict";
976
+ __webpack_require__.a(module, async (__webpack_handle_async_dependencies__, __webpack_async_result__) => { try {
977
+ /* harmony export */ __webpack_require__.d(__webpack_exports__, {
978
+ /* harmony export */ "Z": () => (__WEBPACK_DEFAULT_EXPORT__)
979
+ /* harmony export */ });
980
+ /* harmony import */ var _faststore_sdk__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(3221);
981
+ /* harmony import */ var _faststore_ui__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(2928);
982
+ /* harmony import */ var _faststore_ui__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(7578);
983
+ /* harmony import */ var _faststore_ui__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(7703);
984
+ /* harmony import */ var next_seo__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(6641);
985
+ /* harmony import */ var next_seo__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(next_seo__WEBPACK_IMPORTED_MODULE_0__);
986
+ /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(6689);
987
+ /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_1__);
988
+ /* harmony import */ var _faststore_ui__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(395);
989
+ /* harmony import */ var _faststore_ui__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(5045);
990
+ /* harmony import */ var src_components_search_Filter__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(1558);
991
+ /* harmony import */ var src_components_search_Sort__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(3532);
992
+ /* harmony import */ var src_components_skeletons_FilterSkeleton__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(5473);
993
+ /* harmony import */ var src_components_skeletons_ProductGridSkeleton__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(9913);
994
+ /* harmony import */ var src_sdk_tests_mark__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(2541);
995
+ /* harmony import */ var _Section__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(7067);
996
+ /* harmony import */ var _EmptyGallery__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(5878);
997
+ /* harmony import */ var _section_module_scss__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(4614);
998
+ /* harmony import */ var _section_module_scss__WEBPACK_IMPORTED_MODULE_16___default = /*#__PURE__*/__webpack_require__.n(_section_module_scss__WEBPACK_IMPORTED_MODULE_16__);
999
+ /* harmony import */ var _useDelayedFacets__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(3740);
1000
+ /* harmony import */ var _useDelayedPagination__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(6100);
1001
+ /* harmony import */ var _useGalleryQuery__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(3840);
1002
+ /* harmony import */ var _usePageProducts__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(763);
1003
+ /* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(997);
1004
+ /* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_13___default = /*#__PURE__*/__webpack_require__.n(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_13__);
1005
+ var __webpack_async_dependencies__ = __webpack_handle_async_dependencies__([_useGalleryQuery__WEBPACK_IMPORTED_MODULE_11__, _usePageProducts__WEBPACK_IMPORTED_MODULE_12__]);
1006
+ ([_useGalleryQuery__WEBPACK_IMPORTED_MODULE_11__, _usePageProducts__WEBPACK_IMPORTED_MODULE_12__] = __webpack_async_dependencies__.then ? (await __webpack_async_dependencies__)() : __webpack_async_dependencies__);
1007
+
1008
+
1009
+
1010
+
1011
+
1012
+
1013
+
1014
+
1015
+
1016
+
1017
+
1018
+
1019
+
1020
+
1021
+
1022
+
1023
+
1024
+
1025
+
1026
+ const GalleryPage = /*#__PURE__*/(0,react__WEBPACK_IMPORTED_MODULE_1__.lazy)(() => Promise.all(/* import() */[__webpack_require__.e(608), __webpack_require__.e(154), __webpack_require__.e(854), __webpack_require__.e(280), __webpack_require__.e(872), __webpack_require__.e(746)]).then(__webpack_require__.bind(__webpack_require__, 3746)));
1027
+
1028
+ const GalleryPageSkeleton = /*#__PURE__*/react_jsx_runtime__WEBPACK_IMPORTED_MODULE_13__.jsx(src_components_skeletons_ProductGridSkeleton__WEBPACK_IMPORTED_MODULE_5__/* ["default"] */ .Z, {
1029
+ loading: true
1030
+ });
1031
+
1032
+ function ProductGallery({
1033
+ title,
1034
+ searchTerm
1035
+ }) {
1036
+ const {
1037
+ openFilter
1038
+ } = (0,_faststore_ui__WEBPACK_IMPORTED_MODULE_14__/* .useUI */ .l)();
1039
+ const {
1040
+ pages,
1041
+ addNextPage,
1042
+ addPrevPage
1043
+ } = (0,_faststore_sdk__WEBPACK_IMPORTED_MODULE_15__/* .useSearch */ .R)();
1044
+ const {
1045
+ data
1046
+ } = (0,_useGalleryQuery__WEBPACK_IMPORTED_MODULE_11__/* .useGalleryQuery */ .r)();
1047
+ const facets = (0,_useDelayedFacets__WEBPACK_IMPORTED_MODULE_9__/* .useDelayedFacets */ .u)(data);
1048
+ const totalCount = data?.search.products.pageInfo.totalCount ?? 0;
1049
+ const {
1050
+ next,
1051
+ prev
1052
+ } = (0,_useDelayedPagination__WEBPACK_IMPORTED_MODULE_10__/* .useDelayedPagination */ .g)(totalCount);
1053
+ (0,_usePageProducts__WEBPACK_IMPORTED_MODULE_12__/* .useProductsPrefetch */ .F)(prev ? prev.cursor : null);
1054
+ (0,_usePageProducts__WEBPACK_IMPORTED_MODULE_12__/* .useProductsPrefetch */ .F)(next ? next.cursor : null);
1055
+
1056
+ if (data && totalCount === 0) {
1057
+ return /*#__PURE__*/react_jsx_runtime__WEBPACK_IMPORTED_MODULE_13__.jsx(_Section__WEBPACK_IMPORTED_MODULE_7__/* ["default"] */ .Z, {
1058
+ className: `${(_section_module_scss__WEBPACK_IMPORTED_MODULE_16___default().section)} section-product-gallery layout__content`,
1059
+ children: /*#__PURE__*/react_jsx_runtime__WEBPACK_IMPORTED_MODULE_13__.jsx("section", {
1060
+ "data-testid": "product-gallery",
1061
+ "data-fs-product-listing": true,
1062
+ children: /*#__PURE__*/react_jsx_runtime__WEBPACK_IMPORTED_MODULE_13__.jsx(_EmptyGallery__WEBPACK_IMPORTED_MODULE_8__/* ["default"] */ .Z, {})
1063
+ })
1064
+ });
1065
+ }
1066
+
1067
+ return /*#__PURE__*/react_jsx_runtime__WEBPACK_IMPORTED_MODULE_13__.jsx(_Section__WEBPACK_IMPORTED_MODULE_7__/* ["default"] */ .Z, {
1068
+ className: `${(_section_module_scss__WEBPACK_IMPORTED_MODULE_16___default().section)} section-product-gallery layout__content-full`,
1069
+ children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_13__.jsxs)("section", {
1070
+ "data-testid": "product-gallery",
1071
+ "data-fs-product-listing": true,
1072
+ children: [searchTerm && /*#__PURE__*/react_jsx_runtime__WEBPACK_IMPORTED_MODULE_13__.jsx("header", {
1073
+ "data-fs-product-listing-search-term": true,
1074
+ className: "layout__content",
1075
+ children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_13__.jsxs)("h1", {
1076
+ children: ["Showing results for: ", /*#__PURE__*/react_jsx_runtime__WEBPACK_IMPORTED_MODULE_13__.jsx("span", {
1077
+ children: searchTerm
1078
+ })]
1079
+ })
1080
+ }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_13__.jsxs)("div", {
1081
+ "data-fs-product-listing-content-grid": true,
1082
+ className: "layout__content",
1083
+ children: [/*#__PURE__*/react_jsx_runtime__WEBPACK_IMPORTED_MODULE_13__.jsx("div", {
1084
+ "data-fs-product-listing-filters": true,
1085
+ children: /*#__PURE__*/react_jsx_runtime__WEBPACK_IMPORTED_MODULE_13__.jsx(src_components_skeletons_FilterSkeleton__WEBPACK_IMPORTED_MODULE_4__/* ["default"] */ .Z, {
1086
+ loading: facets?.length === 0,
1087
+ children: /*#__PURE__*/react_jsx_runtime__WEBPACK_IMPORTED_MODULE_13__.jsx(src_components_search_Filter__WEBPACK_IMPORTED_MODULE_2__/* ["default"] */ .C, {
1088
+ facets: facets
1089
+ })
1090
+ })
1091
+ }), /*#__PURE__*/react_jsx_runtime__WEBPACK_IMPORTED_MODULE_13__.jsx("div", {
1092
+ "data-fs-product-listing-results-count": true,
1093
+ "data-count": totalCount,
1094
+ children: /*#__PURE__*/react_jsx_runtime__WEBPACK_IMPORTED_MODULE_13__.jsx(_faststore_ui__WEBPACK_IMPORTED_MODULE_17__/* ["default"] */ .Z, {
1095
+ "data-fs-product-listing-results-count-skeleton": true,
1096
+ loading: !data,
1097
+ size: {
1098
+ width: '100%',
1099
+ height: '1.5rem'
1100
+ },
1101
+ children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_13__.jsxs)("h2", {
1102
+ "data-testid": "total-product-count",
1103
+ children: [totalCount, " Results"]
1104
+ })
1105
+ })
1106
+ }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_13__.jsxs)("div", {
1107
+ "data-fs-product-listing-sort": true,
1108
+ children: [/*#__PURE__*/react_jsx_runtime__WEBPACK_IMPORTED_MODULE_13__.jsx(_faststore_ui__WEBPACK_IMPORTED_MODULE_17__/* ["default"] */ .Z, {
1109
+ "data-fs-product-listing-sort-skeleton": true,
1110
+ loading: facets?.length === 0,
1111
+ size: {
1112
+ width: 'auto',
1113
+ height: '1.5rem'
1114
+ },
1115
+ children: /*#__PURE__*/react_jsx_runtime__WEBPACK_IMPORTED_MODULE_13__.jsx(src_components_search_Sort__WEBPACK_IMPORTED_MODULE_3__/* ["default"] */ .Z, {})
1116
+ }), /*#__PURE__*/react_jsx_runtime__WEBPACK_IMPORTED_MODULE_13__.jsx(_faststore_ui__WEBPACK_IMPORTED_MODULE_17__/* ["default"] */ .Z, {
1117
+ "data-fs-product-listing-filter-button-skeleton": true,
1118
+ loading: facets?.length === 0,
1119
+ size: {
1120
+ width: '6rem',
1121
+ height: '1.5rem'
1122
+ },
1123
+ children: /*#__PURE__*/react_jsx_runtime__WEBPACK_IMPORTED_MODULE_13__.jsx(_faststore_ui__WEBPACK_IMPORTED_MODULE_18__/* ["default"] */ .Z, {
1124
+ variant: "tertiary",
1125
+ "data-testid": "open-filter-button",
1126
+ icon: /*#__PURE__*/react_jsx_runtime__WEBPACK_IMPORTED_MODULE_13__.jsx(_faststore_ui__WEBPACK_IMPORTED_MODULE_19__/* ["default"] */ .Z, {
1127
+ name: "FadersHorizontal",
1128
+ width: 16,
1129
+ height: 16
1130
+ }),
1131
+ iconPosition: "left",
1132
+ "aria-label": "Open Filters",
1133
+ onClick: openFilter,
1134
+ children: "Filters"
1135
+ })
1136
+ })]
1137
+ }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_13__.jsxs)("div", {
1138
+ "data-fs-product-listing-results": true,
1139
+ children: [prev !== false && /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_13__.jsxs)("div", {
1140
+ "data-fs-product-listing-pagination": "top",
1141
+ children: [/*#__PURE__*/react_jsx_runtime__WEBPACK_IMPORTED_MODULE_13__.jsx(next_seo__WEBPACK_IMPORTED_MODULE_0__.NextSeo, {
1142
+ additionalLinkTags: [{
1143
+ rel: 'prev',
1144
+ href: prev.link
1145
+ }]
1146
+ }), /*#__PURE__*/react_jsx_runtime__WEBPACK_IMPORTED_MODULE_13__.jsx(_faststore_ui__WEBPACK_IMPORTED_MODULE_20__/* ["default"] */ .Z, {
1147
+ onClick: e => {
1148
+ e.currentTarget.blur();
1149
+ e.preventDefault();
1150
+ addPrevPage();
1151
+ },
1152
+ href: prev.link,
1153
+ rel: "prev",
1154
+ variant: "secondary",
1155
+ iconPosition: "left",
1156
+ icon: /*#__PURE__*/react_jsx_runtime__WEBPACK_IMPORTED_MODULE_13__.jsx(_faststore_ui__WEBPACK_IMPORTED_MODULE_19__/* ["default"] */ .Z, {
1157
+ name: "ArrowLeft",
1158
+ width: 16,
1159
+ height: 16,
1160
+ weight: "bold"
1161
+ }),
1162
+ children: "Previous Page"
1163
+ })]
1164
+ }), data ? /*#__PURE__*/react_jsx_runtime__WEBPACK_IMPORTED_MODULE_13__.jsx(react__WEBPACK_IMPORTED_MODULE_1__.Suspense, {
1165
+ fallback: GalleryPageSkeleton,
1166
+ children: pages.map(page => /*#__PURE__*/react_jsx_runtime__WEBPACK_IMPORTED_MODULE_13__.jsx(GalleryPage, {
1167
+ showSponsoredProducts: false,
1168
+ page: page,
1169
+ title: title
1170
+ }, `gallery-page-${page}`))
1171
+ }) : GalleryPageSkeleton, next !== false && /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_13__.jsxs)("div", {
1172
+ "data-fs-product-listing-pagination": "bottom",
1173
+ children: [/*#__PURE__*/react_jsx_runtime__WEBPACK_IMPORTED_MODULE_13__.jsx(next_seo__WEBPACK_IMPORTED_MODULE_0__.NextSeo, {
1174
+ additionalLinkTags: [{
1175
+ rel: 'next',
1176
+ href: next.link
1177
+ }]
1178
+ }), /*#__PURE__*/react_jsx_runtime__WEBPACK_IMPORTED_MODULE_13__.jsx(_faststore_ui__WEBPACK_IMPORTED_MODULE_20__/* ["default"] */ .Z, {
1179
+ testId: "show-more",
1180
+ onClick: e => {
1181
+ e.currentTarget.blur();
1182
+ e.preventDefault();
1183
+ addNextPage();
1184
+ },
1185
+ href: next.link,
1186
+ rel: "next",
1187
+ variant: "secondary",
1188
+ children: "Load more products"
1189
+ })]
1190
+ })]
1191
+ })]
1192
+ })]
1193
+ })
1194
+ });
1195
+ }
1196
+
1197
+ ProductGallery.displayName = 'ProductGallery';
1198
+ /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ((0,src_sdk_tests_mark__WEBPACK_IMPORTED_MODULE_6__/* .mark */ .B)(ProductGallery));
1199
+ __webpack_async_result__();
1200
+ } catch(e) { __webpack_async_result__(e); } });
1201
+
1202
+ /***/ }),
1203
+
1204
+ /***/ 2618:
1205
+ /***/ ((module, __webpack_exports__, __webpack_require__) => {
1206
+
1207
+ "use strict";
1208
+ __webpack_require__.a(module, async (__webpack_handle_async_dependencies__, __webpack_async_result__) => { try {
1209
+ /* harmony export */ __webpack_require__.d(__webpack_exports__, {
1210
+ /* harmony export */ "Z": () => (/* reexport safe */ _ProductGallery__WEBPACK_IMPORTED_MODULE_0__.Z)
1211
+ /* harmony export */ });
1212
+ /* harmony import */ var _ProductGallery__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(8273);
1213
+ var __webpack_async_dependencies__ = __webpack_handle_async_dependencies__([_ProductGallery__WEBPACK_IMPORTED_MODULE_0__]);
1214
+ _ProductGallery__WEBPACK_IMPORTED_MODULE_0__ = (__webpack_async_dependencies__.then ? (await __webpack_async_dependencies__)() : __webpack_async_dependencies__)[0];
1215
+
1216
+ __webpack_async_result__();
1217
+ } catch(e) { __webpack_async_result__(e); } });
1218
+
1219
+ /***/ }),
1220
+
1221
+ /***/ 3740:
1222
+ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
1223
+
1224
+ "use strict";
1225
+ /* harmony export */ __webpack_require__.d(__webpack_exports__, {
1226
+ /* harmony export */ "u": () => (/* binding */ useDelayedFacets)
1227
+ /* harmony export */ });
1228
+ /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(6689);
1229
+ /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);
1230
+
1231
+ const useDelayedFacets = data => {
1232
+ const facets = (0,react__WEBPACK_IMPORTED_MODULE_0__.useRef)([]);
1233
+ return (0,react__WEBPACK_IMPORTED_MODULE_0__.useMemo)(() => {
1234
+ if (data) {
1235
+ facets.current = data.search.facets;
1236
+ }
1237
+
1238
+ return facets.current;
1239
+ }, [data, facets]);
1240
+ };
1241
+
1242
+ /***/ }),
1243
+
1244
+ /***/ 6100:
1245
+ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
1246
+
1247
+ "use strict";
1248
+
1249
+ // EXPORTS
1250
+ __webpack_require__.d(__webpack_exports__, {
1251
+ "g": () => (/* binding */ useDelayedPagination)
1252
+ });
1253
+
1254
+ // EXTERNAL MODULE: external "react"
1255
+ var external_react_ = __webpack_require__(6689);
1256
+ // EXTERNAL MODULE: ../sdk/dist/utils/format.js
1257
+ var format = __webpack_require__(2339);
1258
+ // EXTERNAL MODULE: ../sdk/dist/search/useSearch.js + 1 modules
1259
+ var useSearch = __webpack_require__(3221);
1260
+ ;// CONCATENATED MODULE: ../sdk/dist/search/usePagination.js
1261
+
1262
+
1263
+
1264
+ const getLink = (state) => {
1265
+ const { pathname, search } = (0,format/* default */.Z)(state);
1266
+ return `${pathname}${search}`;
1267
+ };
1268
+ const usePagination = (totalItems) => {
1269
+ const { pages, itemsPerPage, state } = (0,useSearch/* useSearch */.R)();
1270
+ const total = Math.ceil(totalItems / itemsPerPage);
1271
+ const next = Number(pages[pages.length - 1]) + 1;
1272
+ const prev = pages[0] - 1;
1273
+ return (0,external_react_.useMemo)(() => ({
1274
+ next: next < total && {
1275
+ cursor: next,
1276
+ link: getLink({ ...state, page: next }),
1277
+ },
1278
+ prev: prev > -1 && {
1279
+ cursor: prev,
1280
+ link: getLink({ ...state, page: prev }),
1281
+ },
1282
+ }), [next, prev, state, total]);
1283
+ };
1284
+ //# sourceMappingURL=usePagination.js.map
1285
+ ;// CONCATENATED MODULE: ./src/components/sections/ProductGallery/useDelayedPagination.ts
1286
+
1287
+
1288
+ const useDelayedPagination = totalCount => {
1289
+ const pagination = usePagination(totalCount);
1290
+ const {
1291
+ 0: pag,
1292
+ 1: setPag
1293
+ } = (0,external_react_.useState)(() => ({
1294
+ next: false,
1295
+ prev: false
1296
+ }));
1297
+ (0,external_react_.useEffect)(() => {
1298
+ setPag(pagination);
1299
+ }, [pagination]);
1300
+ return pag;
1301
+ };
1302
+
1303
+ /***/ }),
1304
+
1305
+ /***/ 3840:
1306
+ /***/ ((module, __webpack_exports__, __webpack_require__) => {
1307
+
1308
+ "use strict";
1309
+ __webpack_require__.a(module, async (__webpack_handle_async_dependencies__, __webpack_async_result__) => { try {
1310
+ /* harmony export */ __webpack_require__.d(__webpack_exports__, {
1311
+ /* harmony export */ "r": () => (/* binding */ useGalleryQuery)
1312
+ /* harmony export */ });
1313
+ /* unused harmony export query */
1314
+ /* harmony import */ var _faststore_sdk__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(3221);
1315
+ /* harmony import */ var src_sdk_graphql_useQuery__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(7732);
1316
+ /* harmony import */ var _sdk_product_useProductsQuery__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(4867);
1317
+ var __webpack_async_dependencies__ = __webpack_handle_async_dependencies__([src_sdk_graphql_useQuery__WEBPACK_IMPORTED_MODULE_0__, _sdk_product_useProductsQuery__WEBPACK_IMPORTED_MODULE_1__]);
1318
+ ([src_sdk_graphql_useQuery__WEBPACK_IMPORTED_MODULE_0__, _sdk_product_useProductsQuery__WEBPACK_IMPORTED_MODULE_1__] = __webpack_async_dependencies__.then ? (await __webpack_async_dependencies__)() : __webpack_async_dependencies__);
1319
+
1320
+
1321
+
1322
+ /**
1323
+ * This query is run on the browser and contains
1324
+ * the current search state of the user
1325
+ */
1326
+
1327
+ const query = "ProductGalleryQuery";
1328
+ const useGalleryQuery = () => {
1329
+ const {
1330
+ state: {
1331
+ term,
1332
+ sort,
1333
+ selectedFacets
1334
+ },
1335
+ itemsPerPage
1336
+ } = (0,_faststore_sdk__WEBPACK_IMPORTED_MODULE_2__/* .useSearch */ .R)();
1337
+ const localizedVariables = (0,_sdk_product_useProductsQuery__WEBPACK_IMPORTED_MODULE_1__/* .useLocalizedVariables */ .yb)({
1338
+ first: itemsPerPage,
1339
+ after: '0',
1340
+ sort,
1341
+ term: term ?? '',
1342
+ selectedFacets
1343
+ });
1344
+ return (0,src_sdk_graphql_useQuery__WEBPACK_IMPORTED_MODULE_0__/* .useQuery */ .aM)(query, localizedVariables);
1345
+ };
1346
+ __webpack_async_result__();
1347
+ } catch(e) { __webpack_async_result__(e); } });
1348
+
1349
+ /***/ }),
1350
+
1351
+ /***/ 763:
1352
+ /***/ ((module, __webpack_exports__, __webpack_require__) => {
1353
+
1354
+ "use strict";
1355
+ __webpack_require__.a(module, async (__webpack_handle_async_dependencies__, __webpack_async_result__) => { try {
1356
+ /* harmony export */ __webpack_require__.d(__webpack_exports__, {
1357
+ /* harmony export */ "F": () => (/* binding */ useProductsPrefetch),
1358
+ /* harmony export */ "r": () => (/* binding */ useProducts)
1359
+ /* harmony export */ });
1360
+ /* harmony import */ var _faststore_sdk__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(3221);
1361
+ /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(6689);
1362
+ /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);
1363
+ /* harmony import */ var src_sdk_product_useProductsQuery__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(4867);
1364
+ var __webpack_async_dependencies__ = __webpack_handle_async_dependencies__([src_sdk_product_useProductsQuery__WEBPACK_IMPORTED_MODULE_1__]);
1365
+ src_sdk_product_useProductsQuery__WEBPACK_IMPORTED_MODULE_1__ = (__webpack_async_dependencies__.then ? (await __webpack_async_dependencies__)() : __webpack_async_dependencies__)[0];
1366
+
1367
+
1368
+
1369
+ const useProductsPrefetch = page => {
1370
+ const {
1371
+ itemsPerPage,
1372
+ state: {
1373
+ sort,
1374
+ term,
1375
+ selectedFacets
1376
+ }
1377
+ } = (0,_faststore_sdk__WEBPACK_IMPORTED_MODULE_2__/* .useSearch */ .R)();
1378
+ const prefetch = (0,src_sdk_product_useProductsQuery__WEBPACK_IMPORTED_MODULE_1__/* .useProductsQueryPrefetch */ .BG)({
1379
+ first: itemsPerPage,
1380
+ after: (itemsPerPage * (page ?? 0)).toString(),
1381
+ sort,
1382
+ term: term ?? '',
1383
+ selectedFacets
1384
+ });
1385
+ (0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(() => {
1386
+ if (page !== null) {
1387
+ prefetch();
1388
+ }
1389
+ }, [page, prefetch]);
1390
+ };
1391
+ const useProducts = page => {
1392
+ const {
1393
+ itemsPerPage,
1394
+ state: {
1395
+ sort,
1396
+ term,
1397
+ selectedFacets
1398
+ }
1399
+ } = (0,_faststore_sdk__WEBPACK_IMPORTED_MODULE_2__/* .useSearch */ .R)();
1400
+ const productList = (0,src_sdk_product_useProductsQuery__WEBPACK_IMPORTED_MODULE_1__/* .useProductsQuery */ .kN)({
1401
+ first: itemsPerPage,
1402
+ after: (itemsPerPage * page).toString(),
1403
+ sort,
1404
+ term: term ?? '',
1405
+ selectedFacets
1406
+ }, {
1407
+ suspense: true
1408
+ });
1409
+ return productList?.edges;
1410
+ };
1411
+ __webpack_async_result__();
1412
+ } catch(e) { __webpack_async_result__(e); } });
1413
+
1414
+ /***/ }),
1415
+
1416
+ /***/ 5473:
1417
+ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
1418
+
1419
+ "use strict";
1420
+
1421
+ // EXPORTS
1422
+ __webpack_require__.d(__webpack_exports__, {
1423
+ "Z": () => (/* reexport */ FilterSkeleton_FilterSkeleton)
1424
+ });
1425
+
1426
+ // EXTERNAL MODULE: ../components/dist/atoms/Skeleton/Skeleton.js
1427
+ var Skeleton = __webpack_require__(2928);
1428
+ // EXTERNAL MODULE: external "react/jsx-runtime"
1429
+ var jsx_runtime_ = __webpack_require__(997);
1430
+ ;// CONCATENATED MODULE: ./src/components/skeletons/FilterSkeleton/FilterSkeleton.tsx
1431
+
1432
+
1433
+
1434
+
1435
+
1436
+ function FilterSkeleton({
1437
+ children,
1438
+ loading = true
1439
+ }) {
1440
+ return loading ? /*#__PURE__*/(0,jsx_runtime_.jsxs)("div", {
1441
+ "data-fs-filter-skeleton": true,
1442
+ children: [/*#__PURE__*/jsx_runtime_.jsx(Skeleton/* default */.Z, {
1443
+ "data-fs-filter-skeleton-text": true,
1444
+ size: {
1445
+ width: '100%',
1446
+ height: '1.5rem'
1447
+ }
1448
+ }), /*#__PURE__*/(0,jsx_runtime_.jsxs)("div", {
1449
+ "data-fs-filter-skeleton-content": true,
1450
+ children: [/*#__PURE__*/jsx_runtime_.jsx(Skeleton/* default */.Z, {
1451
+ "data-fs-filter-skeleton-text": true,
1452
+ size: {
1453
+ width: '100%',
1454
+ height: '1.5rem'
1455
+ },
1456
+ shimmer: false
1457
+ }), /*#__PURE__*/jsx_runtime_.jsx(Skeleton/* default */.Z, {
1458
+ "data-fs-filter-skeleton-text": true,
1459
+ size: {
1460
+ width: '100%',
1461
+ height: '1.5rem'
1462
+ },
1463
+ shimmer: false
1464
+ }), /*#__PURE__*/jsx_runtime_.jsx(Skeleton/* default */.Z, {
1465
+ "data-fs-filter-skeleton-text": true,
1466
+ size: {
1467
+ width: '100%',
1468
+ height: '1.5rem'
1469
+ },
1470
+ shimmer: false
1471
+ })]
1472
+ })]
1473
+ }) : /*#__PURE__*/jsx_runtime_.jsx(jsx_runtime_.Fragment, {
1474
+ children: children
1475
+ });
1476
+ }
1477
+
1478
+ /* harmony default export */ const FilterSkeleton_FilterSkeleton = (FilterSkeleton);
1479
+ ;// CONCATENATED MODULE: ./src/components/skeletons/FilterSkeleton/index.ts
1480
+
1481
+
1482
+ /***/ }),
1483
+
1484
+ /***/ 9913:
1485
+ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
1486
+
1487
+ "use strict";
1488
+
1489
+ // EXPORTS
1490
+ __webpack_require__.d(__webpack_exports__, {
1491
+ "Z": () => (/* reexport */ ProductGridSkeleton_ProductGridSkeleton)
1492
+ });
1493
+
1494
+ // EXTERNAL MODULE: ./src/constants.ts
1495
+ var constants = __webpack_require__(8459);
1496
+ // EXTERNAL MODULE: ./src/components/skeletons/ProductCardSkeleton/index.ts + 1 modules
1497
+ var ProductCardSkeleton = __webpack_require__(3288);
1498
+ // EXTERNAL MODULE: external "react/jsx-runtime"
1499
+ var jsx_runtime_ = __webpack_require__(997);
1500
+ ;// CONCATENATED MODULE: ./src/components/skeletons/ProductGridSkeleton/ProductGridSkeleton.tsx
1501
+
1502
+
1503
+
1504
+
1505
+
1506
+ function ProductGridSkeleton({
1507
+ children,
1508
+ aspectRatio,
1509
+ loading = true
1510
+ }) {
1511
+ return loading ? /*#__PURE__*/jsx_runtime_.jsx("ul", {
1512
+ "data-fs-product-grid": true,
1513
+ children: Array.from({
1514
+ length: constants/* ITEMS_PER_PAGE */.g
1515
+ }, (_, index) => /*#__PURE__*/jsx_runtime_.jsx("li", {
1516
+ children: /*#__PURE__*/jsx_runtime_.jsx(ProductCardSkeleton/* default */.Z, {
1517
+ aspectRatio: aspectRatio,
1518
+ bordered: true
1519
+ })
1520
+ }, String(index)))
1521
+ }) : /*#__PURE__*/jsx_runtime_.jsx(jsx_runtime_.Fragment, {
1522
+ children: children
1523
+ });
1524
+ }
1525
+
1526
+ /* harmony default export */ const ProductGridSkeleton_ProductGridSkeleton = (ProductGridSkeleton);
1527
+ ;// CONCATENATED MODULE: ./src/components/skeletons/ProductGridSkeleton/index.ts
1528
+
1529
+
1530
+ /***/ }),
1531
+
1532
+ /***/ 1523:
1533
+ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
1534
+
1535
+ "use strict";
1536
+ /* harmony export */ __webpack_require__.d(__webpack_exports__, {
1537
+ /* harmony export */ "j": () => (/* binding */ useApplySearchState)
1538
+ /* harmony export */ });
1539
+ /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(6689);
1540
+ /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);
1541
+ /* harmony import */ var next_router__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(1853);
1542
+ /* harmony import */ var next_router__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(next_router__WEBPACK_IMPORTED_MODULE_1__);
1543
+
1544
+
1545
+ const useApplySearchState = () => {
1546
+ const router = (0,next_router__WEBPACK_IMPORTED_MODULE_1__.useRouter)();
1547
+ return (0,react__WEBPACK_IMPORTED_MODULE_0__.useCallback)(url => router.push(`${url.pathname}${url.search}`), [router]);
1548
+ };
1549
+
1550
+ /***/ }),
1551
+
1552
+ /***/ 5813:
1553
+ /***/ ((module) => {
1554
+
1555
+ // Exports
1556
+ module.exports = {
1557
+ "section": "section_section__QVEy3"
1558
+ };
1559
+
1560
+
1561
+ /***/ }),
1562
+
1563
+ /***/ 5000:
1564
+ /***/ ((module) => {
1565
+
1566
+ // Exports
1567
+ module.exports = {
1568
+ "section": "section_section__hRV9B"
1569
+ };
1570
+
1571
+
1572
+ /***/ }),
1573
+
1574
+ /***/ 4614:
1575
+ /***/ ((module) => {
1576
+
1577
+ // Exports
1578
+ module.exports = {
1579
+ "section": "section_section__EYj3x",
1580
+ "loading": "section_loading__Bzogw"
1581
+ };
1582
+
1583
+
1584
+ /***/ }),
1585
+
1586
+ /***/ 1197:
1587
+ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
1588
+
1589
+ "use strict";
1590
+
1591
+ // EXPORTS
1592
+ __webpack_require__.d(__webpack_exports__, {
1593
+ "_": () => (/* binding */ Context),
1594
+ "z": () => (/* binding */ Provider)
1595
+ });
1596
+
1597
+ // EXTERNAL MODULE: external "react"
1598
+ var external_react_ = __webpack_require__(6689);
1599
+ var external_react_default = /*#__PURE__*/__webpack_require__.n(external_react_);
1600
+ // EXTERNAL MODULE: ../sdk/dist/utils/error.js
1601
+ var error = __webpack_require__(2254);
1602
+ ;// CONCATENATED MODULE: ../sdk/dist/search/useInfiniteSearchState.js
1603
+
1604
+
1605
+ const reducer = (state, action) => {
1606
+ switch (action.type) {
1607
+ case 'addPrev': {
1608
+ const prev = state[0] - 1;
1609
+ return [prev, ...state];
1610
+ }
1611
+ case 'addNext': {
1612
+ const next = Number(state[state.length - 1]) + 1;
1613
+ return [...state, next];
1614
+ }
1615
+ case 'reset': {
1616
+ const { payload } = action;
1617
+ return [payload];
1618
+ }
1619
+ default:
1620
+ throw new error/* SDKError */.q('Unknown action for infinite search');
1621
+ }
1622
+ };
1623
+ const useSearchInfiniteState = (initialPage) => {
1624
+ const [pages, dispatch] = (0,external_react_.useReducer)(reducer, undefined, () => [initialPage]);
1625
+ const actions = (0,external_react_.useMemo)(() => ({
1626
+ addPrevPage: () => dispatch({ type: 'addPrev' }),
1627
+ addNextPage: () => dispatch({ type: 'addNext' }),
1628
+ resetInfiniteScroll: (page) => dispatch({ type: 'reset', payload: page }),
1629
+ }), []);
1630
+ return { pages, ...actions };
1631
+ };
1632
+ //# sourceMappingURL=useInfiniteSearchState.js.map
1633
+ // EXTERNAL MODULE: ../sdk/dist/search/useSearchState.js
1634
+ var useSearchState = __webpack_require__(2524);
1635
+ ;// CONCATENATED MODULE: ../sdk/dist/search/Provider.js
1636
+
1637
+
1638
+
1639
+ const Context = (0,external_react_.createContext)(undefined);
1640
+ const Provider = ({ children, itemsPerPage, onChange, ...rest }) => {
1641
+ const { state, ...searchActions } = (0,useSearchState/* useSearchState */.X)(rest, onChange);
1642
+ const { pages, ...infiniteActions } = useSearchInfiniteState(state.page);
1643
+ const value = (0,external_react_.useMemo)(() => ({
1644
+ state,
1645
+ ...searchActions,
1646
+ pages,
1647
+ ...infiniteActions,
1648
+ itemsPerPage,
1649
+ }), [infiniteActions, itemsPerPage, pages, searchActions, state]);
1650
+ return external_react_default().createElement(Context.Provider, { value: value }, children);
1651
+ };
1652
+ //# sourceMappingURL=Provider.js.map
1653
+
1654
+ /***/ }),
1655
+
1656
+ /***/ 8492:
1657
+ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
1658
+
1659
+ "use strict";
1660
+ /* harmony export */ __webpack_require__.d(__webpack_exports__, {
1661
+ /* harmony export */ "uL": () => (/* binding */ setFacet),
1662
+ /* harmony export */ "wB": () => (/* binding */ toggleFacet),
1663
+ /* harmony export */ "wb": () => (/* binding */ isSearchSort)
1664
+ /* harmony export */ });
1665
+ /* unused harmony exports removeFacet, toggleFacets */
1666
+ /* harmony import */ var _utils_error__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(2254);
1667
+
1668
+ const sortKeys = new Set([
1669
+ 'price_desc',
1670
+ 'price_asc',
1671
+ 'orders_desc',
1672
+ 'name_desc',
1673
+ 'name_asc',
1674
+ 'release_desc',
1675
+ 'discount_desc',
1676
+ 'score_desc',
1677
+ ]);
1678
+ const isSearchSort = (x) => sortKeys.has(x);
1679
+ const removeFacet = (facets, facet) => {
1680
+ const { value } = facet;
1681
+ const index = facets.findIndex((x) => x.value === value);
1682
+ if (index < 0) {
1683
+ throw new _utils_error__WEBPACK_IMPORTED_MODULE_0__/* .SDKError */ .q(`Cannot remove ${value} from search params`);
1684
+ }
1685
+ return facets.filter((_, it) => it === 0 || it !== index);
1686
+ };
1687
+ const setFacet = (facets, facet, unique) => {
1688
+ if (unique === true) {
1689
+ const index = facets.findIndex((f) => f.key === facet.key);
1690
+ if (index > -1) {
1691
+ return facets.map((f, it) => (it === index ? facet : f));
1692
+ }
1693
+ }
1694
+ return [...facets, facet];
1695
+ };
1696
+ const toggleFacet = (facets, item) => {
1697
+ const found = facets.find((facet) => facet.key === item.key && facet.value === item.value);
1698
+ if (found !== undefined) {
1699
+ return removeFacet(facets, item);
1700
+ }
1701
+ return setFacet(facets, item, false);
1702
+ };
1703
+ const toggleFacets = (facets, items) => items.reduce((acc, curr) => toggleFacet(acc, curr), facets);
1704
+ //# sourceMappingURL=facets.js.map
1705
+
1706
+ /***/ }),
1707
+
1708
+ /***/ 6142:
1709
+ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
1710
+
1711
+ "use strict";
1712
+ /* harmony export */ __webpack_require__.d(__webpack_exports__, {
1713
+ /* harmony export */ "Q": () => (/* binding */ parse)
1714
+ /* harmony export */ });
1715
+ /* harmony import */ var _utils_error__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(2254);
1716
+ /* harmony import */ var _facets__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(8492);
1717
+ /* harmony import */ var _useSearchState__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(2524);
1718
+
1719
+
1720
+
1721
+ const parse = ({ pathname, searchParams }) => {
1722
+ const state = (0,_useSearchState__WEBPACK_IMPORTED_MODULE_0__/* .initialize */ .j)({
1723
+ base: pathname,
1724
+ term: searchParams.get('q') ?? null,
1725
+ sort: searchParams.get('sort') ?? undefined,
1726
+ page: Number(searchParams.get('page') ?? 0),
1727
+ });
1728
+ if (!(0,_facets__WEBPACK_IMPORTED_MODULE_1__/* .isSearchSort */ .wb)(state.sort)) {
1729
+ throw new _utils_error__WEBPACK_IMPORTED_MODULE_2__/* .SDKError */ .q(`Uknown sorting option ${state.sort}`);
1730
+ }
1731
+ const facets = searchParams.get('facets')?.split(',') ?? [];
1732
+ for (const facet of facets) {
1733
+ const values = searchParams.getAll(facet);
1734
+ for (const value of values) {
1735
+ state.selectedFacets = (0,_facets__WEBPACK_IMPORTED_MODULE_1__/* .setFacet */ .uL)(state.selectedFacets, {
1736
+ key: facet,
1737
+ value,
1738
+ });
1739
+ }
1740
+ }
1741
+ return state;
1742
+ };
1743
+ //# sourceMappingURL=serializer.js.map
1744
+
1745
+ /***/ }),
1746
+
1747
+ /***/ 3221:
1748
+ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
1749
+
1750
+ "use strict";
1751
+
1752
+ // EXPORTS
1753
+ __webpack_require__.d(__webpack_exports__, {
1754
+ "R": () => (/* binding */ useSearch)
1755
+ });
1756
+
1757
+ // EXTERNAL MODULE: ../sdk/dist/search/Provider.js + 1 modules
1758
+ var Provider = __webpack_require__(1197);
1759
+ // EXTERNAL MODULE: external "react"
1760
+ var external_react_ = __webpack_require__(6689);
1761
+ // EXTERNAL MODULE: ../sdk/dist/utils/error.js
1762
+ var error = __webpack_require__(2254);
1763
+ ;// CONCATENATED MODULE: ../sdk/dist/utils/useContext.js
1764
+
1765
+
1766
+ /**
1767
+ * @description Like React.useContext but throws when the context's value === undefined.
1768
+ * This is useful when you want to force the context to be present in the React's tree before using it
1769
+ */
1770
+ const useContext = (context) => {
1771
+ const value = (0,external_react_.useContext)(context);
1772
+ if (value === undefined) {
1773
+ throw new error/* SDKError */.q(`${context.displayName ?? 'Context'} needs to be on the React tree`);
1774
+ }
1775
+ return value;
1776
+ };
1777
+ //# sourceMappingURL=useContext.js.map
1778
+ ;// CONCATENATED MODULE: ../sdk/dist/search/useSearch.js
1779
+
1780
+
1781
+ const useSearch = () => useContext(Provider/* Context */._);
1782
+ //# sourceMappingURL=useSearch.js.map
1783
+
1784
+ /***/ })
1785
+
1786
+ };
1787
+ ;