@faststore/core 2.1.102 → 2.1.104

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