@faststore/core 2.1.55 → 2.1.57

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