@faststore/core 3.0.17 → 3.0.21
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.
- package/.next/BUILD_ID +1 -1
- package/.next/build-manifest.json +90 -89
- package/.next/cache/.tsbuildinfo +1 -1
- package/.next/cache/eslint/.cache_abdhua +1 -0
- package/.next/cache/next-server.js.nft.json +1 -0
- package/.next/cache/webpack/client-development/0.pack +0 -0
- package/.next/cache/webpack/client-development/1.pack +0 -0
- package/.next/cache/webpack/client-development/2.pack +0 -0
- package/.next/cache/webpack/client-development/index.pack +0 -0
- package/.next/cache/webpack/client-development/index.pack.old +0 -0
- package/.next/cache/webpack/client-production/0.pack +0 -0
- package/.next/cache/webpack/client-production/1.pack +0 -0
- package/.next/cache/webpack/client-production/2.pack +0 -0
- package/.next/cache/webpack/client-production/index.pack +0 -0
- package/.next/cache/webpack/client-production/index.pack.old +0 -0
- package/.next/cache/webpack/server-development/0.pack +0 -0
- package/.next/cache/webpack/server-development/1.pack +0 -0
- package/.next/cache/webpack/server-development/2.pack +0 -0
- package/.next/cache/webpack/server-development/3.pack +0 -0
- package/.next/cache/webpack/server-development/4.pack +0 -0
- package/.next/cache/webpack/server-development/index.pack +0 -0
- package/.next/cache/webpack/server-development/index.pack.old +0 -0
- package/.next/cache/webpack/server-production/0.pack +0 -0
- package/.next/cache/webpack/server-production/1.pack +0 -0
- package/.next/cache/webpack/server-production/2.pack +0 -0
- package/.next/cache/webpack/server-production/index.pack +0 -0
- package/.next/cache/webpack/server-production/index.pack.old +0 -0
- package/.next/images-manifest.json +1 -1
- package/.next/next-server.js.nft.json +1 -1
- package/.next/prerender-manifest.json +1 -1
- package/.next/react-loadable-manifest.json +18 -18
- package/.next/required-server-files.json +1 -1
- package/.next/routes-manifest.json +1 -1
- package/.next/server/chunks/117.js +430 -0
- package/.next/server/chunks/177.js +125 -0
- package/.next/server/chunks/183.js +122 -0
- package/.next/server/chunks/184.js +61 -0
- package/.next/server/chunks/289.js +240 -0
- package/.next/server/chunks/312.js +678 -0
- package/.next/server/chunks/350.js +2834 -0
- package/.next/server/chunks/386.js +200 -0
- package/.next/server/chunks/390.js +550 -0
- package/.next/server/chunks/398.js +611 -0
- package/.next/server/chunks/404.js +434 -1
- package/.next/server/chunks/53.js +61 -0
- package/.next/server/chunks/57.js +434 -1
- package/.next/server/chunks/574.js +145 -0
- package/.next/server/chunks/576.js +122 -0
- package/.next/server/chunks/585.js +640 -0
- package/.next/server/chunks/676.js +32 -0
- package/.next/server/chunks/693.js +58 -1
- package/.next/server/chunks/732.js +1881 -0
- package/.next/server/chunks/74.js +4066 -0
- package/.next/server/chunks/779.js +58 -1
- package/.next/server/chunks/825.js +4074 -0
- package/.next/server/chunks/854.js +72 -0
- package/.next/server/chunks/859.js +957 -4
- package/.next/server/chunks/863.js +111 -0
- package/.next/server/chunks/979.js +1305 -0
- package/.next/server/chunks/98.js +163 -0
- package/.next/server/chunks/988.js +211 -0
- package/.next/server/middleware-build-manifest.js +1 -1
- package/.next/server/middleware-react-loadable-manifest.js +1 -1
- package/.next/server/pages/404.js +391 -1
- package/.next/server/pages/404.js.nft.json +1 -1
- package/.next/server/pages/500.js +395 -1
- package/.next/server/pages/500.js.nft.json +1 -1
- package/.next/server/pages/[...slug].js +1076 -1
- package/.next/server/pages/[...slug].js.nft.json +1 -1
- package/.next/server/pages/[slug]/p.js +2265 -1
- package/.next/server/pages/[slug]/p.js.nft.json +1 -1
- package/.next/server/pages/_app.js +301 -1
- package/.next/server/pages/_app.js.nft.json +1 -1
- package/.next/server/pages/_document.js +363 -1
- package/.next/server/pages/_document.js.nft.json +1 -1
- package/.next/server/pages/_error.js +164 -1
- package/.next/server/pages/_error.js.nft.json +1 -1
- package/.next/server/pages/account.js +370 -1
- package/.next/server/pages/account.js.nft.json +1 -1
- package/.next/server/pages/api/graphql.js +2999 -1
- package/.next/server/pages/api/graphql.js.nft.json +1 -1
- package/.next/server/pages/api/health/live.js +31 -1
- package/.next/server/pages/api/health/live.js.nft.json +1 -1
- package/.next/server/pages/api/health/ready.js +31 -1
- package/.next/server/pages/api/health/ready.js.nft.json +1 -1
- package/.next/server/pages/api/preview.js +137 -1
- package/.next/server/pages/api/preview.js.nft.json +1 -1
- package/.next/server/pages/checkout.js +370 -1
- package/.next/server/pages/checkout.js.nft.json +1 -1
- package/.next/server/pages/en-US/404.html +2 -2
- package/.next/server/pages/en-US/404.json +1 -1
- package/.next/server/pages/en-US/500.html +2 -2
- package/.next/server/pages/en-US/500.json +1 -1
- package/.next/server/pages/en-US/account.html +2 -2
- package/.next/server/pages/en-US/account.json +1 -1
- package/.next/server/pages/en-US/checkout.html +2 -2
- package/.next/server/pages/en-US/checkout.json +1 -1
- package/.next/server/pages/en-US/login.html +2 -2
- package/.next/server/pages/en-US/login.json +1 -1
- package/.next/server/pages/en-US/s.html +2 -2
- package/.next/server/pages/en-US/s.json +1 -1
- package/.next/server/pages/en-US.html +5 -5
- package/.next/server/pages/en-US.json +1 -1
- package/.next/server/pages/index.js +439 -1
- package/.next/server/pages/index.js.nft.json +1 -1
- package/.next/server/pages/login.js +382 -1
- package/.next/server/pages/login.js.nft.json +1 -1
- package/.next/server/pages/s.js +554 -1
- package/.next/server/pages/s.js.nft.json +1 -1
- package/.next/server/pages-manifest.json +18 -1
- package/.next/server/webpack-api-runtime.js +229 -1
- package/.next/server/webpack-runtime.js +229 -1
- package/.next/static/HI-kc1kjNIbFyFsZCeDEA/_buildManifest.js +1 -0
- package/.next/static/chunks/223-cb77217cce52d45c.js +1 -0
- package/.next/static/chunks/251.1c79f06f2a2814b1.js +1 -0
- package/.next/static/chunks/386.d01e0db26c523f0f.js +1 -0
- package/.next/static/chunks/400-d4daabcd57b2ea80.js +1 -0
- package/.next/static/chunks/469-7259b855711d4ad3.js +1 -0
- package/.next/static/chunks/574.70612be06fd1365f.js +1 -0
- package/.next/static/chunks/585.4c5d40fc6a72a611.js +1 -0
- package/.next/static/chunks/651.7142f31ce1e052b3.js +1 -0
- package/.next/static/chunks/741.52f7fb873418346f.js +1 -0
- package/.next/static/chunks/783-fbcb7a3216c40744.js +1 -0
- package/.next/static/chunks/800.ee4f8b9622001e8c.js +1 -0
- package/.next/static/chunks/98.40c7e17d9de4eb8f.js +1 -0
- package/.next/static/chunks/988.afda042dd9ba11d1.js +1 -0
- package/.next/static/chunks/framework-dfd14d7ce6600b03.js +1 -0
- package/.next/static/chunks/main-e4e873ee741162eb.js +1 -0
- package/.next/static/chunks/pages/404-2240f0b22db2d370.js +1 -0
- package/.next/static/chunks/pages/500-c0580e3299329874.js +1 -0
- package/.next/static/chunks/pages/[...slug]-3eed3497c887fae5.js +1 -0
- package/.next/static/chunks/pages/[slug]/p-e1df08570f34a0d8.js +1 -0
- package/.next/static/chunks/pages/_app-30b9666307e4b3b1.js +1 -0
- package/.next/static/chunks/pages/_error-319451dea77827a6.js +1 -0
- package/.next/static/chunks/pages/account-b35bcbef719765f3.js +1 -0
- package/.next/static/chunks/pages/checkout-55bd56ade4408cbe.js +1 -0
- package/.next/static/chunks/pages/index-2506749e45c335bf.js +1 -0
- package/.next/static/chunks/pages/login-3f94bff1503b4fdc.js +1 -0
- package/.next/static/chunks/pages/s-2374cff2e39ed624.js +1 -0
- package/.next/static/chunks/webpack-af94306e71c4459d.js +1 -0
- package/.next/static/css/29868543c76bc6fd.css +1 -0
- package/.next/static/css/527e334fa69cf40a.css +1 -0
- package/.next/static/css/{b9d9ba1b04f3160d.css → 6a7fdc5a21fbead5.css} +1 -1
- package/.next/static/css/723835bce380750d.css +1 -0
- package/.next/static/css/{d586715f4f707df4.css → a2eefb25a4608343.css} +1 -1
- package/.next/static/css/{e32410b31c666cb2.css → cb7d1fcea42fab9c.css} +1 -1
- package/.next/static/css/d7bbfbd552f407e9.css +1 -0
- package/.next/static/css/{2980acad3f8e1028.css → df588bb98c0b0ca6.css} +1 -1
- package/.next/static/css/dfbdb0f27fd64782.css +1 -0
- package/.next/static/css/e84fc497732ea596.css +1 -0
- package/.next/trace +80 -91
- package/.turbo/turbo-build.log +1 -1
- package/.turbo/turbo-dev.log +45 -0
- package/@generated/gql.ts +4 -4
- package/@generated/graphql.ts +54 -12
- package/package.json +3 -3
- package/src/components/product/ProductCard/ProductCard.tsx +7 -0
- package/src/components/sections/ProductDetails/ProductDetails.tsx +7 -0
- package/.next/cache/config.json +0 -7
- package/.next/cache/eslint/.cache_1gneedd +0 -1
- package/.next/next-minimal-server.js.nft.json +0 -1
- package/.next/prerender-manifest.js +0 -1
- package/.next/server/chunks/119.js +0 -1
- package/.next/server/chunks/12.js +0 -1
- package/.next/server/chunks/187.js +0 -1
- package/.next/server/chunks/202.js +0 -1
- package/.next/server/chunks/24.js +0 -1
- package/.next/server/chunks/242.js +0 -1
- package/.next/server/chunks/247.js +0 -1
- package/.next/server/chunks/344.js +0 -1
- package/.next/server/chunks/414.js +0 -1
- package/.next/server/chunks/484.js +0 -1
- package/.next/server/chunks/493.js +0 -1
- package/.next/server/chunks/498.js +0 -1
- package/.next/server/chunks/540.js +0 -1
- package/.next/server/chunks/624.js +0 -1
- package/.next/server/chunks/640.js +0 -6
- package/.next/server/chunks/646.js +0 -280
- package/.next/server/chunks/659.js +0 -9
- package/.next/server/chunks/679.js +0 -1
- package/.next/server/chunks/694.js +0 -1
- package/.next/server/chunks/82.js +0 -8
- package/.next/server/chunks/857.js +0 -1
- package/.next/server/chunks/881.js +0 -1
- package/.next/server/chunks/917.js +0 -1
- package/.next/server/chunks/936.js +0 -1
- package/.next/server/chunks/96.js +0 -1
- package/.next/server/chunks/997.js +0 -1
- package/.next/server/functions-config-manifest.json +0 -1
- package/.next/server/next-font-manifest.js +0 -1
- package/.next/server/next-font-manifest.json +0 -1
- package/.next/static/GuDWclSYmL3r-NEqsUOG2/_buildManifest.js +0 -1
- package/.next/static/chunks/104-4f83b1d87ad36358.js +0 -1
- package/.next/static/chunks/161-b39fe2f79ff7bc85.js +0 -1
- package/.next/static/chunks/202.c7d8a71173edecfb.js +0 -1
- package/.next/static/chunks/217.01bc0ad07edd6f1b.js +0 -1
- package/.next/static/chunks/247.6f1391104a867395.js +0 -1
- package/.next/static/chunks/484.b82b73b1d8c37e02.js +0 -1
- package/.next/static/chunks/540.6c62d2536d42a1e0.js +0 -1
- package/.next/static/chunks/575-853fb8b1ba4ce8c4.js +0 -14
- package/.next/static/chunks/624.d3de62b4562a33f3.js +0 -1
- package/.next/static/chunks/629-c74f247bd29420a5.js +0 -1
- package/.next/static/chunks/65.da22595d53beae76.js +0 -1
- package/.next/static/chunks/758.b53ee01b506973e0.js +0 -1
- package/.next/static/chunks/857.d2299cfe995af21d.js +0 -1
- package/.next/static/chunks/framework-8e279965036b6169.js +0 -33
- package/.next/static/chunks/main-6f63f6746cc029db.js +0 -1
- package/.next/static/chunks/pages/404-1334d11ab8467b3d.js +0 -1
- package/.next/static/chunks/pages/500-449c5bd51f98423f.js +0 -1
- package/.next/static/chunks/pages/[...slug]-bcaf61b01157d8cb.js +0 -1
- package/.next/static/chunks/pages/[slug]/p-5fb8fe2c80ec1608.js +0 -1
- package/.next/static/chunks/pages/_app-ad8623e78bc5b766.js +0 -68
- package/.next/static/chunks/pages/_error-fbf331a03642b495.js +0 -1
- package/.next/static/chunks/pages/account-dbc5c028225cd1ac.js +0 -1
- package/.next/static/chunks/pages/checkout-29ae2c37eaf172e1.js +0 -1
- package/.next/static/chunks/pages/index-cd109119d65df8e3.js +0 -1
- package/.next/static/chunks/pages/login-c4d2c856008df5ac.js +0 -1
- package/.next/static/chunks/pages/s-26e475975386c51a.js +0 -1
- package/.next/static/chunks/webpack-b4a2fdf4ef127bb7.js +0 -1
- package/.next/static/css/0d45c82d8887a269.css +0 -1
- package/.next/static/css/211c7542af66d8b4.css +0 -1
- package/.next/static/css/4c4d90eb8cb1d2b7.css +0 -1
- package/.next/static/css/821a5219786be653.css +0 -1
- package/.next/static/css/96e3fddf695d6aa9.css +0 -1
- package/.next/static/css/cff9aafa16fccc9c.css +0 -1
- package/.turbo/turbo-lint.log +0 -2
- package/.turbo/turbo-test.log +0 -23
- package/@generated/graphql/persisted.json +0 -13
- package/@generated/graphql/schema.graphql +0 -1053
- package/@generated/persisted-documents.json +0 -13
- package/@generated/schema.graphql +0 -1055
- /package/.next/static/{GuDWclSYmL3r-NEqsUOG2 → HI-kc1kjNIbFyFsZCeDEA}/_ssgManifest.js +0 -0
|
@@ -0,0 +1,1881 @@
|
|
|
1
|
+
exports.id = 732;
|
|
2
|
+
exports.ids = [732];
|
|
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__(6689);
|
|
13
|
+
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);
|
|
14
|
+
|
|
15
|
+
function EmptyState({ testId = 'fs-empty-state', title, titleIcon, variant = 'default', bkgColor = 'default', children, ...otherProps }) {
|
|
16
|
+
return (react__WEBPACK_IMPORTED_MODULE_0___default().createElement("section", { "data-fs-empty-state": true, "data-fs-empty-state-variant": variant, "data-fs-empty-state-bkg-color": bkgColor, "data-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
|
+
/***/ 5699:
|
|
28
|
+
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
29
|
+
|
|
30
|
+
"use strict";
|
|
31
|
+
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
|
|
32
|
+
/* harmony export */ "Z": () => (__WEBPACK_DEFAULT_EXPORT__)
|
|
33
|
+
/* harmony export */ });
|
|
34
|
+
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(6689);
|
|
35
|
+
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);
|
|
36
|
+
/* harmony import */ var ___WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(1516);
|
|
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
|
+
/***/ 2815:
|
|
50
|
+
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
51
|
+
|
|
52
|
+
"use strict";
|
|
53
|
+
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
|
|
54
|
+
/* harmony export */ "Z": () => (__WEBPACK_DEFAULT_EXPORT__)
|
|
55
|
+
/* harmony export */ });
|
|
56
|
+
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(6689);
|
|
57
|
+
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);
|
|
58
|
+
/* harmony import */ var ___WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(4564);
|
|
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
|
+
/***/ 1305:
|
|
70
|
+
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
71
|
+
|
|
72
|
+
"use strict";
|
|
73
|
+
|
|
74
|
+
// EXPORTS
|
|
75
|
+
__webpack_require__.d(__webpack_exports__, {
|
|
76
|
+
"Z": () => (/* binding */ Filter_FilterFacetBooleanItem)
|
|
77
|
+
});
|
|
78
|
+
|
|
79
|
+
// EXTERNAL MODULE: external "react"
|
|
80
|
+
var external_react_ = __webpack_require__(6689);
|
|
81
|
+
var external_react_default = /*#__PURE__*/__webpack_require__.n(external_react_);
|
|
82
|
+
;// CONCATENATED MODULE: ../components/dist/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__(1953);
|
|
91
|
+
// EXTERNAL MODULE: ../components/dist/esm/atoms/Badge/Badge.js
|
|
92
|
+
var Badge = __webpack_require__(276);
|
|
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
|
+
/***/ 1355:
|
|
110
|
+
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
111
|
+
|
|
112
|
+
"use strict";
|
|
113
|
+
|
|
114
|
+
// EXPORTS
|
|
115
|
+
__webpack_require__.d(__webpack_exports__, {
|
|
116
|
+
"Z": () => (/* binding */ Filter_FilterFacetRange)
|
|
117
|
+
});
|
|
118
|
+
|
|
119
|
+
// EXTERNAL MODULE: external "react"
|
|
120
|
+
var external_react_ = __webpack_require__(6689);
|
|
121
|
+
var external_react_default = /*#__PURE__*/__webpack_require__.n(external_react_);
|
|
122
|
+
;// CONCATENATED MODULE: ../components/dist/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__(9767);
|
|
182
|
+
// EXTERNAL MODULE: ../components/dist/esm/molecules/InputField/InputField.js
|
|
183
|
+
var InputField = __webpack_require__(3779);
|
|
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
|
+
/***/ 4199:
|
|
276
|
+
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
277
|
+
|
|
278
|
+
"use strict";
|
|
279
|
+
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
|
|
280
|
+
/* harmony export */ "Z": () => (__WEBPACK_DEFAULT_EXPORT__)
|
|
281
|
+
/* harmony export */ });
|
|
282
|
+
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(6689);
|
|
283
|
+
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);
|
|
284
|
+
/* harmony import */ var ___WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(783);
|
|
285
|
+
/* harmony import */ var ___WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(7734);
|
|
286
|
+
/* harmony import */ var ___WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(7583);
|
|
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
|
+
/***/ 9044:
|
|
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__(6652);
|
|
313
|
+
// EXTERNAL MODULE: external "react"
|
|
314
|
+
var external_react_ = __webpack_require__(6689);
|
|
315
|
+
// EXTERNAL MODULE: ../sdk/dist/search/facets.js
|
|
316
|
+
var facets = __webpack_require__(8492);
|
|
317
|
+
// EXTERNAL MODULE: ../sdk/dist/search/useSearch.js + 1 modules
|
|
318
|
+
var useSearch = __webpack_require__(3221);
|
|
319
|
+
;// CONCATENATED MODULE: ./src/sdk/search/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__(6702);
|
|
449
|
+
// EXTERNAL MODULE: external "react/jsx-runtime"
|
|
450
|
+
var jsx_runtime_ = __webpack_require__(997);
|
|
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
|
+
/***/ 8723:
|
|
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__(3221);
|
|
511
|
+
// EXTERNAL MODULE: external "react"
|
|
512
|
+
var external_react_ = __webpack_require__(6689);
|
|
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__(1953);
|
|
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__(997);
|
|
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
|
+
/***/ 5878:
|
|
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__(3922);
|
|
605
|
+
/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(997);
|
|
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
|
+
/***/ 6702:
|
|
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__(6689);
|
|
673
|
+
// EXTERNAL MODULE: ../components/dist/esm/atoms/Button/Button.js
|
|
674
|
+
var Button = __webpack_require__(3339);
|
|
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__(792);
|
|
679
|
+
// EXTERNAL MODULE: ../components/dist/esm/molecules/LinkButton/LinkButton.js
|
|
680
|
+
var LinkButton = __webpack_require__(3922);
|
|
681
|
+
// EXTERNAL MODULE: ./src/components/product/ProductCard/ProductCard.tsx + 3 modules
|
|
682
|
+
var ProductCard = __webpack_require__(8553);
|
|
683
|
+
// EXTERNAL MODULE: ../sdk/dist/search/useSearch.js + 1 modules
|
|
684
|
+
var useSearch = __webpack_require__(3221);
|
|
685
|
+
// EXTERNAL MODULE: ../sdk/dist/search/facets.js
|
|
686
|
+
var search_facets = __webpack_require__(8492);
|
|
687
|
+
// EXTERNAL MODULE: ../components/dist/esm/organisms/Filter/Filter.js
|
|
688
|
+
var Filter = __webpack_require__(5699);
|
|
689
|
+
// EXTERNAL MODULE: ../components/dist/esm/organisms/Filter/FilterFacets.js
|
|
690
|
+
var FilterFacets = __webpack_require__(4199);
|
|
691
|
+
// EXTERNAL MODULE: ../components/dist/esm/organisms/Filter/FilterFacetBoolean.js
|
|
692
|
+
var FilterFacetBoolean = __webpack_require__(2815);
|
|
693
|
+
// EXTERNAL MODULE: ../components/dist/esm/organisms/Filter/FilterFacetBooleanItem.js + 1 modules
|
|
694
|
+
var FilterFacetBooleanItem = __webpack_require__(1305);
|
|
695
|
+
// EXTERNAL MODULE: ../components/dist/esm/organisms/Filter/FilterFacetRange.js + 2 modules
|
|
696
|
+
var FilterFacetRange = __webpack_require__(1355);
|
|
697
|
+
// EXTERNAL MODULE: ./src/sdk/product/useFormattedPrice.ts
|
|
698
|
+
var useFormattedPrice = __webpack_require__(5346);
|
|
699
|
+
// EXTERNAL MODULE: external "react/jsx-runtime"
|
|
700
|
+
var jsx_runtime_ = __webpack_require__(997);
|
|
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/sdk/overrides/overrides.ts
|
|
782
|
+
var overrides = __webpack_require__(7506);
|
|
783
|
+
;// CONCATENATED MODULE: ./src/customizations/src/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__, 1386)));
|
|
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
|
+
/***/ 8273:
|
|
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__(2541);
|
|
836
|
+
/* harmony import */ var src_components_ui_ProductGallery_ProductGallery__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(5333);
|
|
837
|
+
/* harmony import */ var _Section__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(3271);
|
|
838
|
+
/* harmony import */ var _EmptyGallery__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(5878);
|
|
839
|
+
/* harmony import */ var _section_module_scss__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(4614);
|
|
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 src_sdk_overrides_PageProvider__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(5953);
|
|
842
|
+
/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(997);
|
|
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__([src_components_ui_ProductGallery_ProductGallery__WEBPACK_IMPORTED_MODULE_5__]);
|
|
845
|
+
src_components_ui_ProductGallery_ProductGallery__WEBPACK_IMPORTED_MODULE_5__ = (__webpack_async_dependencies__.then ? (await __webpack_async_dependencies__)() : __webpack_async_dependencies__)[0];
|
|
846
|
+
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; }
|
|
847
|
+
|
|
848
|
+
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; }
|
|
849
|
+
|
|
850
|
+
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; }
|
|
851
|
+
|
|
852
|
+
|
|
853
|
+
|
|
854
|
+
|
|
855
|
+
|
|
856
|
+
|
|
857
|
+
|
|
858
|
+
|
|
859
|
+
|
|
860
|
+
function ProductGallerySection(_ref) {
|
|
861
|
+
let otherProps = Object.assign({}, _ref);
|
|
862
|
+
const context = (0,src_sdk_overrides_PageProvider__WEBPACK_IMPORTED_MODULE_1__/* .usePage */ .qt)();
|
|
863
|
+
const [title, searchTerm] = (0,src_sdk_overrides_PageProvider__WEBPACK_IMPORTED_MODULE_1__/* .isSearchPage */ .En)(context) ? [context?.data?.title, context?.data?.searchTerm] : (0,src_sdk_overrides_PageProvider__WEBPACK_IMPORTED_MODULE_1__/* .isPLP */ .OJ)(context) ? [context?.data?.collection?.seo?.title] : [''];
|
|
864
|
+
const totalCount = context?.data?.search?.products?.pageInfo?.totalCount ?? 0;
|
|
865
|
+
|
|
866
|
+
if (context?.data?.search?.products && totalCount === 0) {
|
|
867
|
+
return /*#__PURE__*/react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx(_Section__WEBPACK_IMPORTED_MODULE_2__/* ["default"] */ .Z, {
|
|
868
|
+
className: `${(_section_module_scss__WEBPACK_IMPORTED_MODULE_3___default().section)} section-product-gallery`,
|
|
869
|
+
children: /*#__PURE__*/react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx("section", {
|
|
870
|
+
"data-testid": "product-gallery",
|
|
871
|
+
"data-fs-product-listing": true,
|
|
872
|
+
children: /*#__PURE__*/react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx(_EmptyGallery__WEBPACK_IMPORTED_MODULE_4__/* ["default"] */ .Z, {})
|
|
873
|
+
})
|
|
874
|
+
});
|
|
875
|
+
}
|
|
876
|
+
|
|
877
|
+
return /*#__PURE__*/react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx(_Section__WEBPACK_IMPORTED_MODULE_2__/* ["default"] */ .Z, {
|
|
878
|
+
className: `${(_section_module_scss__WEBPACK_IMPORTED_MODULE_3___default().section)} section-product-gallery layout__section`,
|
|
879
|
+
children: /*#__PURE__*/react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx(src_components_ui_ProductGallery_ProductGallery__WEBPACK_IMPORTED_MODULE_5__/* ["default"] */ .Z, _objectSpread({
|
|
880
|
+
title: title,
|
|
881
|
+
searchTerm: searchTerm,
|
|
882
|
+
totalCount: totalCount
|
|
883
|
+
}, otherProps))
|
|
884
|
+
});
|
|
885
|
+
}
|
|
886
|
+
|
|
887
|
+
ProductGallerySection.displayName = 'ProductGallery';
|
|
888
|
+
/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ((0,src_sdk_tests_mark__WEBPACK_IMPORTED_MODULE_6__/* .mark */ .B)(ProductGallerySection));
|
|
889
|
+
__webpack_async_result__();
|
|
890
|
+
} catch(e) { __webpack_async_result__(e); } });
|
|
891
|
+
|
|
892
|
+
/***/ }),
|
|
893
|
+
|
|
894
|
+
/***/ 1159:
|
|
895
|
+
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
896
|
+
|
|
897
|
+
"use strict";
|
|
898
|
+
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
|
|
899
|
+
/* harmony export */ "Z": () => (__WEBPACK_DEFAULT_EXPORT__)
|
|
900
|
+
/* harmony export */ });
|
|
901
|
+
/* harmony import */ var _faststore_ui__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(792);
|
|
902
|
+
/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(997);
|
|
903
|
+
/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__);
|
|
904
|
+
|
|
905
|
+
|
|
906
|
+
|
|
907
|
+
|
|
908
|
+
|
|
909
|
+
function FilterSkeleton({
|
|
910
|
+
children,
|
|
911
|
+
loading = true
|
|
912
|
+
}) {
|
|
913
|
+
return loading ? /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("div", {
|
|
914
|
+
"data-fs-filter-skeleton": true,
|
|
915
|
+
children: [/*#__PURE__*/react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx(_faststore_ui__WEBPACK_IMPORTED_MODULE_1__/* ["default"] */ .Z, {
|
|
916
|
+
"data-fs-filter-skeleton-text": true,
|
|
917
|
+
size: {
|
|
918
|
+
width: '100%',
|
|
919
|
+
height: '1.5rem'
|
|
920
|
+
}
|
|
921
|
+
}), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("div", {
|
|
922
|
+
"data-fs-filter-skeleton-content": true,
|
|
923
|
+
children: [/*#__PURE__*/react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx(_faststore_ui__WEBPACK_IMPORTED_MODULE_1__/* ["default"] */ .Z, {
|
|
924
|
+
"data-fs-filter-skeleton-text": true,
|
|
925
|
+
size: {
|
|
926
|
+
width: '100%',
|
|
927
|
+
height: '1.5rem'
|
|
928
|
+
},
|
|
929
|
+
shimmer: false
|
|
930
|
+
}), /*#__PURE__*/react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx(_faststore_ui__WEBPACK_IMPORTED_MODULE_1__/* ["default"] */ .Z, {
|
|
931
|
+
"data-fs-filter-skeleton-text": true,
|
|
932
|
+
size: {
|
|
933
|
+
width: '100%',
|
|
934
|
+
height: '1.5rem'
|
|
935
|
+
},
|
|
936
|
+
shimmer: false
|
|
937
|
+
}), /*#__PURE__*/react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx(_faststore_ui__WEBPACK_IMPORTED_MODULE_1__/* ["default"] */ .Z, {
|
|
938
|
+
"data-fs-filter-skeleton-text": true,
|
|
939
|
+
size: {
|
|
940
|
+
width: '100%',
|
|
941
|
+
height: '1.5rem'
|
|
942
|
+
},
|
|
943
|
+
shimmer: false
|
|
944
|
+
})]
|
|
945
|
+
})]
|
|
946
|
+
}) : /*#__PURE__*/react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.Fragment, {
|
|
947
|
+
children: children
|
|
948
|
+
});
|
|
949
|
+
}
|
|
950
|
+
|
|
951
|
+
/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (FilterSkeleton);
|
|
952
|
+
|
|
953
|
+
/***/ }),
|
|
954
|
+
|
|
955
|
+
/***/ 1708:
|
|
956
|
+
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
957
|
+
|
|
958
|
+
"use strict";
|
|
959
|
+
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
|
|
960
|
+
/* harmony export */ "Z": () => (__WEBPACK_DEFAULT_EXPORT__)
|
|
961
|
+
/* harmony export */ });
|
|
962
|
+
/* harmony import */ var src_constants__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(8459);
|
|
963
|
+
/* harmony import */ var _ProductCardSkeleton__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(6531);
|
|
964
|
+
/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(997);
|
|
965
|
+
/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__);
|
|
966
|
+
|
|
967
|
+
|
|
968
|
+
|
|
969
|
+
|
|
970
|
+
|
|
971
|
+
function ProductGridSkeleton({
|
|
972
|
+
children,
|
|
973
|
+
aspectRatio,
|
|
974
|
+
loading = true
|
|
975
|
+
}) {
|
|
976
|
+
return loading ? /*#__PURE__*/react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx("ul", {
|
|
977
|
+
"data-fs-product-grid": true,
|
|
978
|
+
children: Array.from({
|
|
979
|
+
length: src_constants__WEBPACK_IMPORTED_MODULE_1__/* .ITEMS_PER_PAGE */ .g
|
|
980
|
+
}, (_, index) => /*#__PURE__*/react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx("li", {
|
|
981
|
+
children: /*#__PURE__*/react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx(_ProductCardSkeleton__WEBPACK_IMPORTED_MODULE_2__/* ["default"] */ .Z, {
|
|
982
|
+
aspectRatio: aspectRatio,
|
|
983
|
+
bordered: true
|
|
984
|
+
})
|
|
985
|
+
}, String(index)))
|
|
986
|
+
}) : /*#__PURE__*/react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.Fragment, {
|
|
987
|
+
children: children
|
|
988
|
+
});
|
|
989
|
+
}
|
|
990
|
+
|
|
991
|
+
/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (ProductGridSkeleton);
|
|
992
|
+
|
|
993
|
+
/***/ }),
|
|
994
|
+
|
|
995
|
+
/***/ 5333:
|
|
996
|
+
/***/ ((module, __webpack_exports__, __webpack_require__) => {
|
|
997
|
+
|
|
998
|
+
"use strict";
|
|
999
|
+
__webpack_require__.a(module, async (__webpack_handle_async_dependencies__, __webpack_async_result__) => { try {
|
|
1000
|
+
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
|
|
1001
|
+
/* harmony export */ "Z": () => (__WEBPACK_DEFAULT_EXPORT__)
|
|
1002
|
+
/* harmony export */ });
|
|
1003
|
+
/* harmony import */ var _faststore_sdk__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(3221);
|
|
1004
|
+
/* harmony import */ var next_seo__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(6641);
|
|
1005
|
+
/* harmony import */ var next_seo__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(next_seo__WEBPACK_IMPORTED_MODULE_0__);
|
|
1006
|
+
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(6689);
|
|
1007
|
+
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_1__);
|
|
1008
|
+
/* harmony import */ var _faststore_ui__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(6652);
|
|
1009
|
+
/* harmony import */ var src_components_search_Filter__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(9044);
|
|
1010
|
+
/* harmony import */ var src_components_search_Sort__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(8723);
|
|
1011
|
+
/* harmony import */ var src_components_skeletons_FilterSkeleton__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(1159);
|
|
1012
|
+
/* harmony import */ var src_components_skeletons_ProductGridSkeleton__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(1708);
|
|
1013
|
+
/* harmony import */ var src_components_sections_ProductGallery_Overrides__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(6702);
|
|
1014
|
+
/* harmony import */ var src_sdk_search_useDelayedFacets__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(4891);
|
|
1015
|
+
/* harmony import */ var src_sdk_search_useDelayedPagination__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(3332);
|
|
1016
|
+
/* harmony import */ var src_sdk_overrides_PageProvider__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(5953);
|
|
1017
|
+
/* harmony import */ var src_sdk_product_useProductsPrefetch__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(4923);
|
|
1018
|
+
/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(997);
|
|
1019
|
+
/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_2__);
|
|
1020
|
+
var __webpack_async_dependencies__ = __webpack_handle_async_dependencies__([src_sdk_product_useProductsPrefetch__WEBPACK_IMPORTED_MODULE_9__]);
|
|
1021
|
+
src_sdk_product_useProductsPrefetch__WEBPACK_IMPORTED_MODULE_9__ = (__webpack_async_dependencies__.then ? (await __webpack_async_dependencies__)() : __webpack_async_dependencies__)[0];
|
|
1022
|
+
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; }
|
|
1023
|
+
|
|
1024
|
+
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; }
|
|
1025
|
+
|
|
1026
|
+
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; }
|
|
1027
|
+
|
|
1028
|
+
|
|
1029
|
+
|
|
1030
|
+
|
|
1031
|
+
|
|
1032
|
+
|
|
1033
|
+
|
|
1034
|
+
|
|
1035
|
+
|
|
1036
|
+
|
|
1037
|
+
|
|
1038
|
+
|
|
1039
|
+
|
|
1040
|
+
|
|
1041
|
+
|
|
1042
|
+
|
|
1043
|
+
const ProductGalleryPage = /*#__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__, 5289)));
|
|
1044
|
+
|
|
1045
|
+
const GalleryPageSkeleton = /*#__PURE__*/react_jsx_runtime__WEBPACK_IMPORTED_MODULE_2__.jsx(src_components_skeletons_ProductGridSkeleton__WEBPACK_IMPORTED_MODULE_3__/* ["default"] */ .Z, {
|
|
1046
|
+
loading: true
|
|
1047
|
+
});
|
|
1048
|
+
|
|
1049
|
+
function ProductGallery({
|
|
1050
|
+
title,
|
|
1051
|
+
searchTerm,
|
|
1052
|
+
totalCount,
|
|
1053
|
+
searchTermLabel,
|
|
1054
|
+
totalCountLabel,
|
|
1055
|
+
filter,
|
|
1056
|
+
previousPageButton,
|
|
1057
|
+
loadMorePageButton,
|
|
1058
|
+
sortBySelector,
|
|
1059
|
+
productCard
|
|
1060
|
+
}) {
|
|
1061
|
+
const {
|
|
1062
|
+
openFilter
|
|
1063
|
+
} = (0,_faststore_ui__WEBPACK_IMPORTED_MODULE_4__/* .useUI */ .l)();
|
|
1064
|
+
const {
|
|
1065
|
+
pages,
|
|
1066
|
+
addNextPage,
|
|
1067
|
+
addPrevPage,
|
|
1068
|
+
itemsPerPage
|
|
1069
|
+
} = (0,_faststore_sdk__WEBPACK_IMPORTED_MODULE_5__/* .useSearch */ .R)();
|
|
1070
|
+
const context = (0,src_sdk_overrides_PageProvider__WEBPACK_IMPORTED_MODULE_6__/* .usePage */ .qt)();
|
|
1071
|
+
const data = context?.data;
|
|
1072
|
+
const facets = (0,src_sdk_search_useDelayedFacets__WEBPACK_IMPORTED_MODULE_7__/* .useDelayedFacets */ .u)(data) ?? [];
|
|
1073
|
+
const {
|
|
1074
|
+
next,
|
|
1075
|
+
prev
|
|
1076
|
+
} = (0,src_sdk_search_useDelayedPagination__WEBPACK_IMPORTED_MODULE_8__/* .useDelayedPagination */ .g)(totalCount);
|
|
1077
|
+
(0,src_sdk_product_useProductsPrefetch__WEBPACK_IMPORTED_MODULE_9__/* .useProductsPrefetch */ .Fl)(prev ? prev.cursor : null);
|
|
1078
|
+
(0,src_sdk_product_useProductsPrefetch__WEBPACK_IMPORTED_MODULE_9__/* .useProductsPrefetch */ .Fl)(next ? next.cursor : null);
|
|
1079
|
+
const hasFacetsLoaded = Boolean(data?.search?.facets);
|
|
1080
|
+
const hasProductsLoaded = Boolean(data?.search?.products);
|
|
1081
|
+
return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_2__.jsxs)("section", {
|
|
1082
|
+
"data-testid": "product-gallery",
|
|
1083
|
+
"data-fs-product-listing": true,
|
|
1084
|
+
children: [searchTerm && /*#__PURE__*/react_jsx_runtime__WEBPACK_IMPORTED_MODULE_2__.jsx("header", {
|
|
1085
|
+
"data-fs-product-listing-search-term": true,
|
|
1086
|
+
"data-fs-content": "product-gallery",
|
|
1087
|
+
children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_2__.jsxs)("h1", {
|
|
1088
|
+
children: [searchTermLabel, " ", /*#__PURE__*/react_jsx_runtime__WEBPACK_IMPORTED_MODULE_2__.jsx("span", {
|
|
1089
|
+
children: searchTerm
|
|
1090
|
+
})]
|
|
1091
|
+
})
|
|
1092
|
+
}), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_2__.jsxs)("div", {
|
|
1093
|
+
"data-fs-product-listing-content-grid": true,
|
|
1094
|
+
"data-fs-content": "product-gallery",
|
|
1095
|
+
children: [/*#__PURE__*/react_jsx_runtime__WEBPACK_IMPORTED_MODULE_2__.jsx("div", {
|
|
1096
|
+
"data-fs-product-listing-filters": true,
|
|
1097
|
+
children: /*#__PURE__*/react_jsx_runtime__WEBPACK_IMPORTED_MODULE_2__.jsx(src_components_skeletons_FilterSkeleton__WEBPACK_IMPORTED_MODULE_10__/* ["default"] */ .Z, {
|
|
1098
|
+
loading: !hasFacetsLoaded,
|
|
1099
|
+
children: hasFacetsLoaded && facets?.length > 0 && /*#__PURE__*/react_jsx_runtime__WEBPACK_IMPORTED_MODULE_2__.jsx(src_components_search_Filter__WEBPACK_IMPORTED_MODULE_11__/* ["default"] */ .Z, {
|
|
1100
|
+
facets: facets,
|
|
1101
|
+
filter: filter
|
|
1102
|
+
})
|
|
1103
|
+
})
|
|
1104
|
+
}), /*#__PURE__*/react_jsx_runtime__WEBPACK_IMPORTED_MODULE_2__.jsx("div", {
|
|
1105
|
+
"data-fs-product-listing-results-count": true,
|
|
1106
|
+
"data-count": totalCount,
|
|
1107
|
+
children: /*#__PURE__*/react_jsx_runtime__WEBPACK_IMPORTED_MODULE_2__.jsx(src_components_sections_ProductGallery_Overrides__WEBPACK_IMPORTED_MODULE_12__/* .ResultsCountSkeleton.Component */ .k.Component, _objectSpread(_objectSpread({
|
|
1108
|
+
"data-fs-product-listing-results-count-skeleton": true,
|
|
1109
|
+
size: {
|
|
1110
|
+
width: '100%',
|
|
1111
|
+
height: '1.5rem'
|
|
1112
|
+
}
|
|
1113
|
+
}, src_components_sections_ProductGallery_Overrides__WEBPACK_IMPORTED_MODULE_12__/* .ResultsCountSkeleton.props */ .k.props), {}, {
|
|
1114
|
+
// Dynamic props shouldn't be overridable
|
|
1115
|
+
// This decision can be reviewed later if needed
|
|
1116
|
+
loading: !hasProductsLoaded,
|
|
1117
|
+
children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_2__.jsxs)("h2", {
|
|
1118
|
+
"data-testid": "total-product-count",
|
|
1119
|
+
children: [totalCount, " ", totalCountLabel]
|
|
1120
|
+
})
|
|
1121
|
+
}))
|
|
1122
|
+
}), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_2__.jsxs)("div", {
|
|
1123
|
+
"data-fs-product-listing-sort": true,
|
|
1124
|
+
children: [/*#__PURE__*/react_jsx_runtime__WEBPACK_IMPORTED_MODULE_2__.jsx(src_components_sections_ProductGallery_Overrides__WEBPACK_IMPORTED_MODULE_12__/* .SortSkeleton.Component */ .SZ.Component, _objectSpread(_objectSpread({
|
|
1125
|
+
"data-fs-product-listing-sort-skeleton": true,
|
|
1126
|
+
size: {
|
|
1127
|
+
width: 'auto',
|
|
1128
|
+
height: '1.5rem'
|
|
1129
|
+
}
|
|
1130
|
+
}, src_components_sections_ProductGallery_Overrides__WEBPACK_IMPORTED_MODULE_12__/* .SortSkeleton.props */ .SZ.props), {}, {
|
|
1131
|
+
// Dynamic props shouldn't be overridable
|
|
1132
|
+
// This decision can be reviewed later if needed
|
|
1133
|
+
loading: !hasProductsLoaded,
|
|
1134
|
+
children: /*#__PURE__*/react_jsx_runtime__WEBPACK_IMPORTED_MODULE_2__.jsx(src_components_search_Sort__WEBPACK_IMPORTED_MODULE_13__/* ["default"] */ .Z, {
|
|
1135
|
+
label: sortBySelector?.label,
|
|
1136
|
+
options: sortBySelector?.options
|
|
1137
|
+
})
|
|
1138
|
+
})), /*#__PURE__*/react_jsx_runtime__WEBPACK_IMPORTED_MODULE_2__.jsx(src_components_sections_ProductGallery_Overrides__WEBPACK_IMPORTED_MODULE_12__/* .FilterButtonSkeleton.Component */ .hZ.Component, _objectSpread(_objectSpread({
|
|
1139
|
+
"data-fs-product-listing-filter-button-skeleton": true,
|
|
1140
|
+
size: {
|
|
1141
|
+
width: '6rem',
|
|
1142
|
+
height: '1.5rem'
|
|
1143
|
+
}
|
|
1144
|
+
}, src_components_sections_ProductGallery_Overrides__WEBPACK_IMPORTED_MODULE_12__/* .FilterButtonSkeleton.props */ .hZ.props), {}, {
|
|
1145
|
+
// Dynamic props shouldn't be overridable
|
|
1146
|
+
// This decision can be reviewed later if needed
|
|
1147
|
+
loading: !hasFacetsLoaded,
|
|
1148
|
+
children: hasFacetsLoaded && facets?.length > 0 && /*#__PURE__*/react_jsx_runtime__WEBPACK_IMPORTED_MODULE_2__.jsx(src_components_sections_ProductGallery_Overrides__WEBPACK_IMPORTED_MODULE_12__/* .MobileFilterButton.Component */ .$B.Component, _objectSpread(_objectSpread({
|
|
1149
|
+
variant: "tertiary",
|
|
1150
|
+
"data-testid": "open-filter-button",
|
|
1151
|
+
icon: /*#__PURE__*/react_jsx_runtime__WEBPACK_IMPORTED_MODULE_2__.jsx(src_components_sections_ProductGallery_Overrides__WEBPACK_IMPORTED_MODULE_12__/* .FilterIcon.Component */ .k1.Component, _objectSpread(_objectSpread({
|
|
1152
|
+
width: 16,
|
|
1153
|
+
height: 16
|
|
1154
|
+
}, src_components_sections_ProductGallery_Overrides__WEBPACK_IMPORTED_MODULE_12__/* .FilterIcon.props */ .k1.props), {}, {
|
|
1155
|
+
name: filter?.mobileOnly?.filterButton?.icon?.icon ?? src_components_sections_ProductGallery_Overrides__WEBPACK_IMPORTED_MODULE_12__/* .FilterIcon.props.name */ .k1.props.name,
|
|
1156
|
+
"aria-label": filter?.mobileOnly?.filterButton?.icon?.alt ?? src_components_sections_ProductGallery_Overrides__WEBPACK_IMPORTED_MODULE_12__/* .FilterIcon.props["aria-label"] */ .k1.props["aria-label"]
|
|
1157
|
+
})),
|
|
1158
|
+
iconPosition: "left"
|
|
1159
|
+
}, src_components_sections_ProductGallery_Overrides__WEBPACK_IMPORTED_MODULE_12__/* .MobileFilterButton.props */ .$B.props), {}, {
|
|
1160
|
+
// Dynamic props shouldn't be overridable
|
|
1161
|
+
// This decision can be reviewed later if needed
|
|
1162
|
+
onClick: openFilter,
|
|
1163
|
+
children: filter?.mobileOnly?.filterButton?.label
|
|
1164
|
+
}))
|
|
1165
|
+
}))]
|
|
1166
|
+
}), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_2__.jsxs)("div", {
|
|
1167
|
+
"data-fs-product-listing-results": true,
|
|
1168
|
+
children: [prev !== false && /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_2__.jsxs)("div", {
|
|
1169
|
+
"data-fs-product-listing-pagination": "top",
|
|
1170
|
+
children: [/*#__PURE__*/react_jsx_runtime__WEBPACK_IMPORTED_MODULE_2__.jsx(next_seo__WEBPACK_IMPORTED_MODULE_0__.NextSeo, {
|
|
1171
|
+
additionalLinkTags: [{
|
|
1172
|
+
rel: 'prev',
|
|
1173
|
+
href: prev.link
|
|
1174
|
+
}]
|
|
1175
|
+
}), /*#__PURE__*/react_jsx_runtime__WEBPACK_IMPORTED_MODULE_2__.jsx(src_components_sections_ProductGallery_Overrides__WEBPACK_IMPORTED_MODULE_12__/* .LinkButtonPrev.Component */ .Rm.Component, _objectSpread(_objectSpread({
|
|
1176
|
+
rel: "prev",
|
|
1177
|
+
variant: "secondary",
|
|
1178
|
+
iconPosition: "left",
|
|
1179
|
+
icon: /*#__PURE__*/react_jsx_runtime__WEBPACK_IMPORTED_MODULE_2__.jsx(src_components_sections_ProductGallery_Overrides__WEBPACK_IMPORTED_MODULE_12__/* .PrevIcon.Component */ .gY.Component, _objectSpread(_objectSpread({
|
|
1180
|
+
width: 16,
|
|
1181
|
+
height: 16,
|
|
1182
|
+
weight: "bold"
|
|
1183
|
+
}, src_components_sections_ProductGallery_Overrides__WEBPACK_IMPORTED_MODULE_12__/* .PrevIcon.props */ .gY.props), {}, {
|
|
1184
|
+
name: previousPageButton?.icon?.icon ?? src_components_sections_ProductGallery_Overrides__WEBPACK_IMPORTED_MODULE_12__/* .PrevIcon.props.name */ .gY.props.name,
|
|
1185
|
+
"aria-label": previousPageButton?.icon?.alt ?? previousPageButton?.label ?? src_components_sections_ProductGallery_Overrides__WEBPACK_IMPORTED_MODULE_12__/* .PrevIcon.props["aria-label"] */ .gY.props["aria-label"]
|
|
1186
|
+
}))
|
|
1187
|
+
}, src_components_sections_ProductGallery_Overrides__WEBPACK_IMPORTED_MODULE_12__/* .LinkButtonPrev.props */ .Rm.props), {}, {
|
|
1188
|
+
// Dynamic props shouldn't be overridable
|
|
1189
|
+
// This decision can be reviewed later if needed
|
|
1190
|
+
onClick: e => {
|
|
1191
|
+
e.currentTarget.blur();
|
|
1192
|
+
e.preventDefault();
|
|
1193
|
+
addPrevPage();
|
|
1194
|
+
},
|
|
1195
|
+
href: prev.link,
|
|
1196
|
+
children: previousPageButton?.label
|
|
1197
|
+
}))]
|
|
1198
|
+
}), hasProductsLoaded ? /*#__PURE__*/react_jsx_runtime__WEBPACK_IMPORTED_MODULE_2__.jsx(react__WEBPACK_IMPORTED_MODULE_1__.Suspense, {
|
|
1199
|
+
fallback: GalleryPageSkeleton,
|
|
1200
|
+
children: pages.map(page => /*#__PURE__*/react_jsx_runtime__WEBPACK_IMPORTED_MODULE_2__.jsx(ProductGalleryPage, {
|
|
1201
|
+
page: page,
|
|
1202
|
+
title: title,
|
|
1203
|
+
productCard: productCard,
|
|
1204
|
+
itemsPerPage: itemsPerPage
|
|
1205
|
+
}, `gallery-page-${page}`))
|
|
1206
|
+
}) : GalleryPageSkeleton, next !== false && /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_2__.jsxs)("div", {
|
|
1207
|
+
"data-fs-product-listing-pagination": "bottom",
|
|
1208
|
+
children: [/*#__PURE__*/react_jsx_runtime__WEBPACK_IMPORTED_MODULE_2__.jsx(next_seo__WEBPACK_IMPORTED_MODULE_0__.NextSeo, {
|
|
1209
|
+
additionalLinkTags: [{
|
|
1210
|
+
rel: 'next',
|
|
1211
|
+
href: next.link
|
|
1212
|
+
}]
|
|
1213
|
+
}), /*#__PURE__*/react_jsx_runtime__WEBPACK_IMPORTED_MODULE_2__.jsx(src_components_sections_ProductGallery_Overrides__WEBPACK_IMPORTED_MODULE_12__/* .LinkButtonNext.Component */ .tu.Component, _objectSpread(_objectSpread({
|
|
1214
|
+
testId: "show-more",
|
|
1215
|
+
rel: "next",
|
|
1216
|
+
variant: "secondary"
|
|
1217
|
+
}, src_components_sections_ProductGallery_Overrides__WEBPACK_IMPORTED_MODULE_12__/* .LinkButtonNext.props */ .tu.props), {}, {
|
|
1218
|
+
// Dynamic props shouldn't be overridable
|
|
1219
|
+
// This decision can be reviewed later if needed
|
|
1220
|
+
onClick: e => {
|
|
1221
|
+
e.currentTarget.blur();
|
|
1222
|
+
e.preventDefault();
|
|
1223
|
+
addNextPage();
|
|
1224
|
+
},
|
|
1225
|
+
href: next.link,
|
|
1226
|
+
children: loadMorePageButton?.label
|
|
1227
|
+
}))]
|
|
1228
|
+
})]
|
|
1229
|
+
})]
|
|
1230
|
+
})]
|
|
1231
|
+
});
|
|
1232
|
+
}
|
|
1233
|
+
|
|
1234
|
+
/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (ProductGallery);
|
|
1235
|
+
__webpack_async_result__();
|
|
1236
|
+
} catch(e) { __webpack_async_result__(e); } });
|
|
1237
|
+
|
|
1238
|
+
/***/ }),
|
|
1239
|
+
|
|
1240
|
+
/***/ 2953:
|
|
1241
|
+
/***/ ((module, __webpack_exports__, __webpack_require__) => {
|
|
1242
|
+
|
|
1243
|
+
"use strict";
|
|
1244
|
+
__webpack_require__.a(module, async (__webpack_handle_async_dependencies__, __webpack_async_result__) => { try {
|
|
1245
|
+
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
|
|
1246
|
+
/* harmony export */ "p": () => (/* binding */ prefetchQuery)
|
|
1247
|
+
/* harmony export */ });
|
|
1248
|
+
/* harmony import */ var swr__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(5941);
|
|
1249
|
+
/* harmony import */ var _request__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(180);
|
|
1250
|
+
/* harmony import */ var _useQuery__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(7732);
|
|
1251
|
+
var __webpack_async_dependencies__ = __webpack_handle_async_dependencies__([swr__WEBPACK_IMPORTED_MODULE_0__, _useQuery__WEBPACK_IMPORTED_MODULE_1__]);
|
|
1252
|
+
([swr__WEBPACK_IMPORTED_MODULE_0__, _useQuery__WEBPACK_IMPORTED_MODULE_1__] = __webpack_async_dependencies__.then ? (await __webpack_async_dependencies__)() : __webpack_async_dependencies__);
|
|
1253
|
+
const _excluded = ["cache"];
|
|
1254
|
+
|
|
1255
|
+
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; }
|
|
1256
|
+
|
|
1257
|
+
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; }
|
|
1258
|
+
|
|
1259
|
+
|
|
1260
|
+
|
|
1261
|
+
|
|
1262
|
+
const prefetchQuery = (operationName, variables, _ref) => {
|
|
1263
|
+
let {
|
|
1264
|
+
cache
|
|
1265
|
+
} = _ref,
|
|
1266
|
+
options = _objectWithoutProperties(_ref, _excluded);
|
|
1267
|
+
|
|
1268
|
+
const key = (0,_useQuery__WEBPACK_IMPORTED_MODULE_1__/* .getKey */ .km)(operationName, variables);
|
|
1269
|
+
|
|
1270
|
+
if (cache.get(key)) {
|
|
1271
|
+
return;
|
|
1272
|
+
}
|
|
1273
|
+
|
|
1274
|
+
(0,swr__WEBPACK_IMPORTED_MODULE_0__.mutate)(key, (0,_request__WEBPACK_IMPORTED_MODULE_2__/* .request */ .W)(operationName, variables, options));
|
|
1275
|
+
};
|
|
1276
|
+
__webpack_async_result__();
|
|
1277
|
+
} catch(e) { __webpack_async_result__(e); } });
|
|
1278
|
+
|
|
1279
|
+
/***/ }),
|
|
1280
|
+
|
|
1281
|
+
/***/ 8934:
|
|
1282
|
+
/***/ ((module, __webpack_exports__, __webpack_require__) => {
|
|
1283
|
+
|
|
1284
|
+
"use strict";
|
|
1285
|
+
__webpack_require__.a(module, async (__webpack_handle_async_dependencies__, __webpack_async_result__) => { try {
|
|
1286
|
+
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
|
|
1287
|
+
/* harmony export */ "Bj": () => (/* binding */ UseGalleryPageContext),
|
|
1288
|
+
/* harmony export */ "Y_": () => (/* binding */ useCreateUseGalleryPage),
|
|
1289
|
+
/* harmony export */ "__": () => (/* binding */ useGalleryPage)
|
|
1290
|
+
/* harmony export */ });
|
|
1291
|
+
/* unused harmony export query */
|
|
1292
|
+
/* harmony import */ var _faststore_sdk__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(3221);
|
|
1293
|
+
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(6689);
|
|
1294
|
+
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);
|
|
1295
|
+
/* harmony import */ var src_sdk_graphql_useQuery__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(7732);
|
|
1296
|
+
/* harmony import */ var _useLocalizedVariables__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(2523);
|
|
1297
|
+
var __webpack_async_dependencies__ = __webpack_handle_async_dependencies__([src_sdk_graphql_useQuery__WEBPACK_IMPORTED_MODULE_3__]);
|
|
1298
|
+
src_sdk_graphql_useQuery__WEBPACK_IMPORTED_MODULE_3__ = (__webpack_async_dependencies__.then ? (await __webpack_async_dependencies__)() : __webpack_async_dependencies__)[0];
|
|
1299
|
+
|
|
1300
|
+
|
|
1301
|
+
|
|
1302
|
+
|
|
1303
|
+
const UseGalleryPageContext = /*#__PURE__*/(0,react__WEBPACK_IMPORTED_MODULE_0__.createContext)(_ => {
|
|
1304
|
+
return {
|
|
1305
|
+
data: null
|
|
1306
|
+
};
|
|
1307
|
+
});
|
|
1308
|
+
const useGalleryPage = page => {
|
|
1309
|
+
const useGalleryPageCallback = (0,react__WEBPACK_IMPORTED_MODULE_0__.useContext)(UseGalleryPageContext);
|
|
1310
|
+
|
|
1311
|
+
if (!useGalleryPageCallback) {
|
|
1312
|
+
throw new Error('Missing UseGalleryPageContext on React tree');
|
|
1313
|
+
}
|
|
1314
|
+
|
|
1315
|
+
return useGalleryPageCallback(page);
|
|
1316
|
+
};
|
|
1317
|
+
const query = "ClientManyProductsQuery";
|
|
1318
|
+
|
|
1319
|
+
const getKey = object => JSON.stringify(object);
|
|
1320
|
+
/**
|
|
1321
|
+
* Use this hook for managed pages state and creating useGalleryPage hook that will be used for fetching a list of products per pages in PLP or Search
|
|
1322
|
+
*/
|
|
1323
|
+
|
|
1324
|
+
|
|
1325
|
+
const useCreateUseGalleryPage = () => {
|
|
1326
|
+
const {
|
|
1327
|
+
0: pages,
|
|
1328
|
+
1: setPages
|
|
1329
|
+
} = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)([]); // We create pagesRef as a mirror of the pages state so we don't have to add pages as a dependency of the useGalleryPage hook
|
|
1330
|
+
|
|
1331
|
+
const pagesRef = (0,react__WEBPACK_IMPORTED_MODULE_0__.useRef)([]);
|
|
1332
|
+
const pagesCache = (0,react__WEBPACK_IMPORTED_MODULE_0__.useRef)([]);
|
|
1333
|
+
const useGalleryPage = (0,react__WEBPACK_IMPORTED_MODULE_0__.useCallback)(function useGalleryPage(page) {
|
|
1334
|
+
const {
|
|
1335
|
+
state: {
|
|
1336
|
+
sort,
|
|
1337
|
+
term,
|
|
1338
|
+
selectedFacets
|
|
1339
|
+
},
|
|
1340
|
+
itemsPerPage
|
|
1341
|
+
} = (0,_faststore_sdk__WEBPACK_IMPORTED_MODULE_1__/* .useSearch */ .R)();
|
|
1342
|
+
const localizedVariables = (0,_useLocalizedVariables__WEBPACK_IMPORTED_MODULE_2__/* .useLocalizedVariables */ .y)({
|
|
1343
|
+
first: itemsPerPage,
|
|
1344
|
+
after: (itemsPerPage * page).toString(),
|
|
1345
|
+
sort,
|
|
1346
|
+
term: term ?? '',
|
|
1347
|
+
selectedFacets
|
|
1348
|
+
});
|
|
1349
|
+
const hasSameVariables = pagesCache.current[page] === getKey(localizedVariables);
|
|
1350
|
+
const {
|
|
1351
|
+
data
|
|
1352
|
+
} = (0,src_sdk_graphql_useQuery__WEBPACK_IMPORTED_MODULE_3__/* .useQuery */ .aM)(query, localizedVariables, {
|
|
1353
|
+
fallbackData: null,
|
|
1354
|
+
suspense: true,
|
|
1355
|
+
doNotRun: hasSameVariables
|
|
1356
|
+
});
|
|
1357
|
+
const shouldUpdatePages = !hasSameVariables && data !== null;
|
|
1358
|
+
|
|
1359
|
+
if (shouldUpdatePages) {
|
|
1360
|
+
pagesCache.current[page] = getKey(localizedVariables); // Update refs
|
|
1361
|
+
|
|
1362
|
+
const newPages = [...pagesRef.current];
|
|
1363
|
+
newPages[page] = data;
|
|
1364
|
+
pagesRef.current = newPages;
|
|
1365
|
+
} // Prevents error: Cannot update a component (`ProductListing`) while rendering a different component (`ProductGalleryPage`).
|
|
1366
|
+
|
|
1367
|
+
|
|
1368
|
+
(0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(() => {
|
|
1369
|
+
if (shouldUpdatePages) {
|
|
1370
|
+
// Update state
|
|
1371
|
+
setPages(oldPages => {
|
|
1372
|
+
const newPages = [...oldPages];
|
|
1373
|
+
newPages[page] = data;
|
|
1374
|
+
return newPages;
|
|
1375
|
+
});
|
|
1376
|
+
}
|
|
1377
|
+
}, [data, page, shouldUpdatePages]);
|
|
1378
|
+
return (0,react__WEBPACK_IMPORTED_MODULE_0__.useMemo)(() => {
|
|
1379
|
+
if (hasSameVariables) {
|
|
1380
|
+
return {
|
|
1381
|
+
data: pagesRef.current[page]
|
|
1382
|
+
};
|
|
1383
|
+
}
|
|
1384
|
+
|
|
1385
|
+
return {
|
|
1386
|
+
data
|
|
1387
|
+
};
|
|
1388
|
+
}, [hasSameVariables, data, page]);
|
|
1389
|
+
}, []);
|
|
1390
|
+
return (0,react__WEBPACK_IMPORTED_MODULE_0__.useMemo)(() => ({
|
|
1391
|
+
pages,
|
|
1392
|
+
useGalleryPage
|
|
1393
|
+
}), [pages, useGalleryPage]);
|
|
1394
|
+
};
|
|
1395
|
+
__webpack_async_result__();
|
|
1396
|
+
} catch(e) { __webpack_async_result__(e); } });
|
|
1397
|
+
|
|
1398
|
+
/***/ }),
|
|
1399
|
+
|
|
1400
|
+
/***/ 7433:
|
|
1401
|
+
/***/ ((module, __webpack_exports__, __webpack_require__) => {
|
|
1402
|
+
|
|
1403
|
+
"use strict";
|
|
1404
|
+
__webpack_require__.a(module, async (__webpack_handle_async_dependencies__, __webpack_async_result__) => { try {
|
|
1405
|
+
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
|
|
1406
|
+
/* harmony export */ "U": () => (/* binding */ useProductGalleryQuery)
|
|
1407
|
+
/* harmony export */ });
|
|
1408
|
+
/* unused harmony export query */
|
|
1409
|
+
/* harmony import */ var _faststore_sdk__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(1072);
|
|
1410
|
+
/* harmony import */ var src_sdk_graphql_useQuery__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(7732);
|
|
1411
|
+
/* harmony import */ var _useLocalizedVariables__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(2523);
|
|
1412
|
+
/* harmony import */ var src_sdk_session__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(7295);
|
|
1413
|
+
var __webpack_async_dependencies__ = __webpack_handle_async_dependencies__([src_sdk_graphql_useQuery__WEBPACK_IMPORTED_MODULE_2__]);
|
|
1414
|
+
src_sdk_graphql_useQuery__WEBPACK_IMPORTED_MODULE_2__ = (__webpack_async_dependencies__.then ? (await __webpack_async_dependencies__)() : __webpack_async_dependencies__)[0];
|
|
1415
|
+
|
|
1416
|
+
|
|
1417
|
+
|
|
1418
|
+
|
|
1419
|
+
|
|
1420
|
+
/**
|
|
1421
|
+
* This query is run on the browser and contains
|
|
1422
|
+
* the current search state of the user
|
|
1423
|
+
*/
|
|
1424
|
+
const query = "ClientProductGalleryQuery";
|
|
1425
|
+
const useProductGalleryQuery = ({
|
|
1426
|
+
term,
|
|
1427
|
+
sort,
|
|
1428
|
+
selectedFacets,
|
|
1429
|
+
itemsPerPage
|
|
1430
|
+
}) => {
|
|
1431
|
+
const {
|
|
1432
|
+
locale
|
|
1433
|
+
} = (0,src_sdk_session__WEBPACK_IMPORTED_MODULE_0__/* .useSession */ .kP)();
|
|
1434
|
+
const localizedVariables = (0,_useLocalizedVariables__WEBPACK_IMPORTED_MODULE_1__/* .useLocalizedVariables */ .y)({
|
|
1435
|
+
first: itemsPerPage,
|
|
1436
|
+
after: '0',
|
|
1437
|
+
sort,
|
|
1438
|
+
term: term ?? '',
|
|
1439
|
+
selectedFacets
|
|
1440
|
+
});
|
|
1441
|
+
return (0,src_sdk_graphql_useQuery__WEBPACK_IMPORTED_MODULE_2__/* .useQuery */ .aM)(query, localizedVariables, {
|
|
1442
|
+
onSuccess: data => {
|
|
1443
|
+
if (data && term) {
|
|
1444
|
+
(0,_faststore_sdk__WEBPACK_IMPORTED_MODULE_3__/* .sendAnalyticsEvent */ ._)({
|
|
1445
|
+
name: 'intelligent_search_query',
|
|
1446
|
+
params: {
|
|
1447
|
+
locale,
|
|
1448
|
+
term,
|
|
1449
|
+
url: window.location.href,
|
|
1450
|
+
logicalOperator: data.search.metadata?.logicalOperator ?? 'and',
|
|
1451
|
+
isTermMisspelled: data.search.metadata?.isTermMisspelled ?? false,
|
|
1452
|
+
totalCount: data.search.products.pageInfo.totalCount
|
|
1453
|
+
}
|
|
1454
|
+
});
|
|
1455
|
+
}
|
|
1456
|
+
}
|
|
1457
|
+
});
|
|
1458
|
+
};
|
|
1459
|
+
__webpack_async_result__();
|
|
1460
|
+
} catch(e) { __webpack_async_result__(e); } });
|
|
1461
|
+
|
|
1462
|
+
/***/ }),
|
|
1463
|
+
|
|
1464
|
+
/***/ 4923:
|
|
1465
|
+
/***/ ((module, __webpack_exports__, __webpack_require__) => {
|
|
1466
|
+
|
|
1467
|
+
"use strict";
|
|
1468
|
+
__webpack_require__.a(module, async (__webpack_handle_async_dependencies__, __webpack_async_result__) => { try {
|
|
1469
|
+
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
|
|
1470
|
+
/* harmony export */ "Fl": () => (/* binding */ useProductsPrefetch)
|
|
1471
|
+
/* harmony export */ });
|
|
1472
|
+
/* unused harmony exports query, useProductsQueryPrefetch */
|
|
1473
|
+
/* harmony import */ var _faststore_sdk__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(3221);
|
|
1474
|
+
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(6689);
|
|
1475
|
+
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);
|
|
1476
|
+
/* harmony import */ var swr__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(5941);
|
|
1477
|
+
/* harmony import */ var _graphql_prefetchQuery__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(2953);
|
|
1478
|
+
/* harmony import */ var _useLocalizedVariables__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(2523);
|
|
1479
|
+
var __webpack_async_dependencies__ = __webpack_handle_async_dependencies__([swr__WEBPACK_IMPORTED_MODULE_1__, _graphql_prefetchQuery__WEBPACK_IMPORTED_MODULE_3__]);
|
|
1480
|
+
([swr__WEBPACK_IMPORTED_MODULE_1__, _graphql_prefetchQuery__WEBPACK_IMPORTED_MODULE_3__] = __webpack_async_dependencies__.then ? (await __webpack_async_dependencies__)() : __webpack_async_dependencies__);
|
|
1481
|
+
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; }
|
|
1482
|
+
|
|
1483
|
+
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; }
|
|
1484
|
+
|
|
1485
|
+
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; }
|
|
1486
|
+
|
|
1487
|
+
|
|
1488
|
+
|
|
1489
|
+
|
|
1490
|
+
|
|
1491
|
+
|
|
1492
|
+
const query = "ClientManyProductsQuery";
|
|
1493
|
+
const useProductsQueryPrefetch = (variables, options) => {
|
|
1494
|
+
const localizedVariables = (0,_useLocalizedVariables__WEBPACK_IMPORTED_MODULE_2__/* .useLocalizedVariables */ .y)(variables);
|
|
1495
|
+
const {
|
|
1496
|
+
cache
|
|
1497
|
+
} = (0,swr__WEBPACK_IMPORTED_MODULE_1__.useSWRConfig)();
|
|
1498
|
+
return (0,react__WEBPACK_IMPORTED_MODULE_0__.useCallback)(() => (0,_graphql_prefetchQuery__WEBPACK_IMPORTED_MODULE_3__/* .prefetchQuery */ .p)(query, localizedVariables, _objectSpread({
|
|
1499
|
+
cache
|
|
1500
|
+
}, options)), [localizedVariables, cache, options]);
|
|
1501
|
+
};
|
|
1502
|
+
const useProductsPrefetch = page => {
|
|
1503
|
+
const {
|
|
1504
|
+
itemsPerPage,
|
|
1505
|
+
state: {
|
|
1506
|
+
sort,
|
|
1507
|
+
term,
|
|
1508
|
+
selectedFacets
|
|
1509
|
+
}
|
|
1510
|
+
} = (0,_faststore_sdk__WEBPACK_IMPORTED_MODULE_4__/* .useSearch */ .R)();
|
|
1511
|
+
const prefetch = useProductsQueryPrefetch({
|
|
1512
|
+
first: itemsPerPage,
|
|
1513
|
+
after: (itemsPerPage * (page ?? 0)).toString(),
|
|
1514
|
+
sort,
|
|
1515
|
+
term: term ?? '',
|
|
1516
|
+
selectedFacets
|
|
1517
|
+
});
|
|
1518
|
+
(0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(() => {
|
|
1519
|
+
if (page !== null) {
|
|
1520
|
+
prefetch();
|
|
1521
|
+
}
|
|
1522
|
+
}, [page, prefetch]);
|
|
1523
|
+
};
|
|
1524
|
+
__webpack_async_result__();
|
|
1525
|
+
} catch(e) { __webpack_async_result__(e); } });
|
|
1526
|
+
|
|
1527
|
+
/***/ }),
|
|
1528
|
+
|
|
1529
|
+
/***/ 1523:
|
|
1530
|
+
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
1531
|
+
|
|
1532
|
+
"use strict";
|
|
1533
|
+
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
|
|
1534
|
+
/* harmony export */ "j": () => (/* binding */ useApplySearchState)
|
|
1535
|
+
/* harmony export */ });
|
|
1536
|
+
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(6689);
|
|
1537
|
+
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);
|
|
1538
|
+
/* harmony import */ var next_router__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(1853);
|
|
1539
|
+
/* harmony import */ var next_router__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(next_router__WEBPACK_IMPORTED_MODULE_1__);
|
|
1540
|
+
|
|
1541
|
+
|
|
1542
|
+
const useApplySearchState = () => {
|
|
1543
|
+
const router = (0,next_router__WEBPACK_IMPORTED_MODULE_1__.useRouter)();
|
|
1544
|
+
return (0,react__WEBPACK_IMPORTED_MODULE_0__.useCallback)(url => router.push(`${url.pathname}${url.search}`), [router]);
|
|
1545
|
+
};
|
|
1546
|
+
|
|
1547
|
+
/***/ }),
|
|
1548
|
+
|
|
1549
|
+
/***/ 4891:
|
|
1550
|
+
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
1551
|
+
|
|
1552
|
+
"use strict";
|
|
1553
|
+
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
|
|
1554
|
+
/* harmony export */ "u": () => (/* binding */ useDelayedFacets)
|
|
1555
|
+
/* harmony export */ });
|
|
1556
|
+
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(6689);
|
|
1557
|
+
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);
|
|
1558
|
+
|
|
1559
|
+
const useDelayedFacets = data => {
|
|
1560
|
+
const facets = (0,react__WEBPACK_IMPORTED_MODULE_0__.useRef)([]);
|
|
1561
|
+
return (0,react__WEBPACK_IMPORTED_MODULE_0__.useMemo)(() => {
|
|
1562
|
+
if (data) {
|
|
1563
|
+
facets.current = data.search?.facets;
|
|
1564
|
+
}
|
|
1565
|
+
|
|
1566
|
+
return facets.current;
|
|
1567
|
+
}, [data, facets]);
|
|
1568
|
+
};
|
|
1569
|
+
|
|
1570
|
+
/***/ }),
|
|
1571
|
+
|
|
1572
|
+
/***/ 3332:
|
|
1573
|
+
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
1574
|
+
|
|
1575
|
+
"use strict";
|
|
1576
|
+
|
|
1577
|
+
// EXPORTS
|
|
1578
|
+
__webpack_require__.d(__webpack_exports__, {
|
|
1579
|
+
"g": () => (/* binding */ useDelayedPagination)
|
|
1580
|
+
});
|
|
1581
|
+
|
|
1582
|
+
// EXTERNAL MODULE: external "react"
|
|
1583
|
+
var external_react_ = __webpack_require__(6689);
|
|
1584
|
+
// EXTERNAL MODULE: ../sdk/dist/utils/format.js
|
|
1585
|
+
var format = __webpack_require__(2339);
|
|
1586
|
+
// EXTERNAL MODULE: ../sdk/dist/search/useSearch.js + 1 modules
|
|
1587
|
+
var useSearch = __webpack_require__(3221);
|
|
1588
|
+
;// CONCATENATED MODULE: ../sdk/dist/search/usePagination.js
|
|
1589
|
+
|
|
1590
|
+
|
|
1591
|
+
|
|
1592
|
+
const getLink = (state) => {
|
|
1593
|
+
const { pathname, search } = (0,format/* default */.Z)(state);
|
|
1594
|
+
return `${pathname}${search}`;
|
|
1595
|
+
};
|
|
1596
|
+
const usePagination = (totalItems) => {
|
|
1597
|
+
const { pages, itemsPerPage, state } = (0,useSearch/* useSearch */.R)();
|
|
1598
|
+
const total = Math.ceil(totalItems / itemsPerPage);
|
|
1599
|
+
const next = Number(pages[pages.length - 1]) + 1;
|
|
1600
|
+
const prev = pages[0] - 1;
|
|
1601
|
+
return (0,external_react_.useMemo)(() => ({
|
|
1602
|
+
next: next < total && {
|
|
1603
|
+
cursor: next,
|
|
1604
|
+
link: getLink({ ...state, page: next }),
|
|
1605
|
+
},
|
|
1606
|
+
prev: prev > -1 && {
|
|
1607
|
+
cursor: prev,
|
|
1608
|
+
link: getLink({ ...state, page: prev }),
|
|
1609
|
+
},
|
|
1610
|
+
}), [next, prev, state, total]);
|
|
1611
|
+
};
|
|
1612
|
+
//# sourceMappingURL=usePagination.js.map
|
|
1613
|
+
;// CONCATENATED MODULE: ./src/sdk/search/useDelayedPagination.ts
|
|
1614
|
+
|
|
1615
|
+
|
|
1616
|
+
const useDelayedPagination = totalCount => {
|
|
1617
|
+
const pagination = usePagination(totalCount);
|
|
1618
|
+
const {
|
|
1619
|
+
0: pag,
|
|
1620
|
+
1: setPag
|
|
1621
|
+
} = (0,external_react_.useState)(() => ({
|
|
1622
|
+
next: false,
|
|
1623
|
+
prev: false
|
|
1624
|
+
}));
|
|
1625
|
+
(0,external_react_.useEffect)(() => {
|
|
1626
|
+
setPag(pagination);
|
|
1627
|
+
}, [pagination]);
|
|
1628
|
+
return pag;
|
|
1629
|
+
};
|
|
1630
|
+
|
|
1631
|
+
/***/ }),
|
|
1632
|
+
|
|
1633
|
+
/***/ 4614:
|
|
1634
|
+
/***/ ((module) => {
|
|
1635
|
+
|
|
1636
|
+
// Exports
|
|
1637
|
+
module.exports = {
|
|
1638
|
+
"section": "section_section__EYj3x",
|
|
1639
|
+
"loading": "section_loading__Bzogw"
|
|
1640
|
+
};
|
|
1641
|
+
|
|
1642
|
+
|
|
1643
|
+
/***/ }),
|
|
1644
|
+
|
|
1645
|
+
/***/ 1197:
|
|
1646
|
+
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
1647
|
+
|
|
1648
|
+
"use strict";
|
|
1649
|
+
|
|
1650
|
+
// EXPORTS
|
|
1651
|
+
__webpack_require__.d(__webpack_exports__, {
|
|
1652
|
+
"_": () => (/* binding */ Context),
|
|
1653
|
+
"z": () => (/* binding */ Provider)
|
|
1654
|
+
});
|
|
1655
|
+
|
|
1656
|
+
// EXTERNAL MODULE: external "react"
|
|
1657
|
+
var external_react_ = __webpack_require__(6689);
|
|
1658
|
+
var external_react_default = /*#__PURE__*/__webpack_require__.n(external_react_);
|
|
1659
|
+
// EXTERNAL MODULE: ../sdk/dist/utils/error.js
|
|
1660
|
+
var error = __webpack_require__(2254);
|
|
1661
|
+
;// CONCATENATED MODULE: ../sdk/dist/search/useInfiniteSearchState.js
|
|
1662
|
+
|
|
1663
|
+
|
|
1664
|
+
// Save the array containing loaded pages before navigating away from the PLP
|
|
1665
|
+
function setPagesSessionStorage(pages) {
|
|
1666
|
+
try {
|
|
1667
|
+
// Uses the key to identify a PLP
|
|
1668
|
+
const stateKey = window.history.state?.key;
|
|
1669
|
+
if (!stateKey) {
|
|
1670
|
+
return;
|
|
1671
|
+
}
|
|
1672
|
+
const storageKey = `__fs_gallery_page_${stateKey}`;
|
|
1673
|
+
sessionStorage.setItem(storageKey, JSON.stringify(pages));
|
|
1674
|
+
}
|
|
1675
|
+
catch (_) {
|
|
1676
|
+
return;
|
|
1677
|
+
}
|
|
1678
|
+
}
|
|
1679
|
+
function getPagesFromSessionStorage() {
|
|
1680
|
+
try {
|
|
1681
|
+
const stateKey = window.history.state?.key;
|
|
1682
|
+
if (!stateKey) {
|
|
1683
|
+
return null;
|
|
1684
|
+
}
|
|
1685
|
+
const storageKey = `__fs_gallery_page_${stateKey}`;
|
|
1686
|
+
const item = sessionStorage.getItem(storageKey);
|
|
1687
|
+
return item ? JSON.parse(item) : null;
|
|
1688
|
+
}
|
|
1689
|
+
catch (_) {
|
|
1690
|
+
return null;
|
|
1691
|
+
}
|
|
1692
|
+
}
|
|
1693
|
+
const reducer = (state, action) => {
|
|
1694
|
+
switch (action.type) {
|
|
1695
|
+
case 'addPrev': {
|
|
1696
|
+
const prev = state[0] - 1;
|
|
1697
|
+
const newState = [prev, ...state];
|
|
1698
|
+
setPagesSessionStorage(newState);
|
|
1699
|
+
return newState;
|
|
1700
|
+
}
|
|
1701
|
+
case 'addNext': {
|
|
1702
|
+
const next = Number(state[state.length - 1]) + 1;
|
|
1703
|
+
const newState = [...state, next];
|
|
1704
|
+
setPagesSessionStorage(newState);
|
|
1705
|
+
return newState;
|
|
1706
|
+
}
|
|
1707
|
+
case 'reset': {
|
|
1708
|
+
const { payload } = action;
|
|
1709
|
+
const newState = [payload];
|
|
1710
|
+
setPagesSessionStorage(newState);
|
|
1711
|
+
return newState;
|
|
1712
|
+
}
|
|
1713
|
+
default:
|
|
1714
|
+
throw new error/* SDKError */.q('Unknown action for infinite search');
|
|
1715
|
+
}
|
|
1716
|
+
};
|
|
1717
|
+
const useSearchInfiniteState = (initialPage) => {
|
|
1718
|
+
const [pages, dispatch] = (0,external_react_.useReducer)(reducer, undefined, () => getPagesFromSessionStorage() ?? [initialPage]);
|
|
1719
|
+
const actions = (0,external_react_.useMemo)(() => ({
|
|
1720
|
+
addPrevPage: () => dispatch({ type: 'addPrev' }),
|
|
1721
|
+
addNextPage: () => dispatch({ type: 'addNext' }),
|
|
1722
|
+
resetInfiniteScroll: (page) => dispatch({ type: 'reset', payload: page }),
|
|
1723
|
+
}), []);
|
|
1724
|
+
return { pages, ...actions };
|
|
1725
|
+
};
|
|
1726
|
+
//# sourceMappingURL=useInfiniteSearchState.js.map
|
|
1727
|
+
// EXTERNAL MODULE: ../sdk/dist/search/useSearchState.js
|
|
1728
|
+
var useSearchState = __webpack_require__(2524);
|
|
1729
|
+
;// CONCATENATED MODULE: ../sdk/dist/search/Provider.js
|
|
1730
|
+
|
|
1731
|
+
|
|
1732
|
+
|
|
1733
|
+
const Context = (0,external_react_.createContext)(undefined);
|
|
1734
|
+
const Provider = ({ children, itemsPerPage, onChange, ...rest }) => {
|
|
1735
|
+
const { state, ...searchActions } = (0,useSearchState/* useSearchState */.X)(rest, onChange);
|
|
1736
|
+
const { pages, ...infiniteActions } = useSearchInfiniteState(state.page);
|
|
1737
|
+
const value = (0,external_react_.useMemo)(() => ({
|
|
1738
|
+
state,
|
|
1739
|
+
...searchActions,
|
|
1740
|
+
pages,
|
|
1741
|
+
...infiniteActions,
|
|
1742
|
+
itemsPerPage,
|
|
1743
|
+
}), [infiniteActions, itemsPerPage, pages, searchActions, state]);
|
|
1744
|
+
return external_react_default().createElement(Context.Provider, { value: value }, children);
|
|
1745
|
+
};
|
|
1746
|
+
//# sourceMappingURL=Provider.js.map
|
|
1747
|
+
|
|
1748
|
+
/***/ }),
|
|
1749
|
+
|
|
1750
|
+
/***/ 8492:
|
|
1751
|
+
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
1752
|
+
|
|
1753
|
+
"use strict";
|
|
1754
|
+
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
|
|
1755
|
+
/* harmony export */ "uL": () => (/* binding */ setFacet),
|
|
1756
|
+
/* harmony export */ "wB": () => (/* binding */ toggleFacet),
|
|
1757
|
+
/* harmony export */ "wb": () => (/* binding */ isSearchSort)
|
|
1758
|
+
/* harmony export */ });
|
|
1759
|
+
/* unused harmony exports removeFacet, toggleFacets */
|
|
1760
|
+
/* harmony import */ var _utils_error__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(2254);
|
|
1761
|
+
|
|
1762
|
+
const sortKeys = new Set([
|
|
1763
|
+
'price_desc',
|
|
1764
|
+
'price_asc',
|
|
1765
|
+
'orders_desc',
|
|
1766
|
+
'name_desc',
|
|
1767
|
+
'name_asc',
|
|
1768
|
+
'release_desc',
|
|
1769
|
+
'discount_desc',
|
|
1770
|
+
'score_desc',
|
|
1771
|
+
]);
|
|
1772
|
+
const isSearchSort = (x) => sortKeys.has(x);
|
|
1773
|
+
const removeFacet = (facets, facet) => {
|
|
1774
|
+
const { value } = facet;
|
|
1775
|
+
const index = facets.findIndex((x) => x.value === value);
|
|
1776
|
+
if (index < 0) {
|
|
1777
|
+
throw new _utils_error__WEBPACK_IMPORTED_MODULE_0__/* .SDKError */ .q(`Cannot remove ${value} from search params`);
|
|
1778
|
+
}
|
|
1779
|
+
return facets.filter((_, it) => it !== index);
|
|
1780
|
+
};
|
|
1781
|
+
const setFacet = (facets, facet, unique) => {
|
|
1782
|
+
if (unique === true) {
|
|
1783
|
+
const index = facets.findIndex((f) => f.key === facet.key);
|
|
1784
|
+
if (index > -1) {
|
|
1785
|
+
return facets.map((f, it) => (it === index ? facet : f));
|
|
1786
|
+
}
|
|
1787
|
+
}
|
|
1788
|
+
return [...facets, facet];
|
|
1789
|
+
};
|
|
1790
|
+
const toggleFacet = (facets, item) => {
|
|
1791
|
+
const found = facets.find((facet) => facet.key === item.key && facet.value === item.value);
|
|
1792
|
+
if (found !== undefined) {
|
|
1793
|
+
return removeFacet(facets, item);
|
|
1794
|
+
}
|
|
1795
|
+
return setFacet(facets, item, false);
|
|
1796
|
+
};
|
|
1797
|
+
const toggleFacets = (facets, items) => items.reduce((acc, curr) => toggleFacet(acc, curr), facets);
|
|
1798
|
+
//# sourceMappingURL=facets.js.map
|
|
1799
|
+
|
|
1800
|
+
/***/ }),
|
|
1801
|
+
|
|
1802
|
+
/***/ 6142:
|
|
1803
|
+
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
1804
|
+
|
|
1805
|
+
"use strict";
|
|
1806
|
+
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
|
|
1807
|
+
/* harmony export */ "Q": () => (/* binding */ parse)
|
|
1808
|
+
/* harmony export */ });
|
|
1809
|
+
/* harmony import */ var _utils_error__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(2254);
|
|
1810
|
+
/* harmony import */ var _facets__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(8492);
|
|
1811
|
+
/* harmony import */ var _useSearchState__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(2524);
|
|
1812
|
+
|
|
1813
|
+
|
|
1814
|
+
|
|
1815
|
+
const parse = ({ pathname, searchParams }) => {
|
|
1816
|
+
const state = (0,_useSearchState__WEBPACK_IMPORTED_MODULE_0__/* .initialize */ .j)({
|
|
1817
|
+
base: pathname,
|
|
1818
|
+
term: searchParams.get('q') ?? null,
|
|
1819
|
+
sort: searchParams.get('sort') ?? undefined,
|
|
1820
|
+
page: Number(searchParams.get('page') ?? 0),
|
|
1821
|
+
});
|
|
1822
|
+
if (!(0,_facets__WEBPACK_IMPORTED_MODULE_1__/* .isSearchSort */ .wb)(state.sort)) {
|
|
1823
|
+
throw new _utils_error__WEBPACK_IMPORTED_MODULE_2__/* .SDKError */ .q(`Uknown sorting option ${state.sort}`);
|
|
1824
|
+
}
|
|
1825
|
+
const facets = searchParams.get('facets')?.split(',') ?? [];
|
|
1826
|
+
for (const facet of facets) {
|
|
1827
|
+
const values = searchParams.getAll(facet);
|
|
1828
|
+
for (const value of values) {
|
|
1829
|
+
state.selectedFacets = (0,_facets__WEBPACK_IMPORTED_MODULE_1__/* .setFacet */ .uL)(state.selectedFacets, {
|
|
1830
|
+
key: facet,
|
|
1831
|
+
value,
|
|
1832
|
+
});
|
|
1833
|
+
}
|
|
1834
|
+
}
|
|
1835
|
+
return state;
|
|
1836
|
+
};
|
|
1837
|
+
//# sourceMappingURL=serializer.js.map
|
|
1838
|
+
|
|
1839
|
+
/***/ }),
|
|
1840
|
+
|
|
1841
|
+
/***/ 3221:
|
|
1842
|
+
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
1843
|
+
|
|
1844
|
+
"use strict";
|
|
1845
|
+
|
|
1846
|
+
// EXPORTS
|
|
1847
|
+
__webpack_require__.d(__webpack_exports__, {
|
|
1848
|
+
"R": () => (/* binding */ useSearch)
|
|
1849
|
+
});
|
|
1850
|
+
|
|
1851
|
+
// EXTERNAL MODULE: ../sdk/dist/search/Provider.js + 1 modules
|
|
1852
|
+
var Provider = __webpack_require__(1197);
|
|
1853
|
+
// EXTERNAL MODULE: external "react"
|
|
1854
|
+
var external_react_ = __webpack_require__(6689);
|
|
1855
|
+
// EXTERNAL MODULE: ../sdk/dist/utils/error.js
|
|
1856
|
+
var error = __webpack_require__(2254);
|
|
1857
|
+
;// CONCATENATED MODULE: ../sdk/dist/utils/useContext.js
|
|
1858
|
+
|
|
1859
|
+
|
|
1860
|
+
/**
|
|
1861
|
+
* @description Like React.useContext but throws when the context's value === undefined.
|
|
1862
|
+
* This is useful when you want to force the context to be present in the React's tree before using it
|
|
1863
|
+
*/
|
|
1864
|
+
const useContext = (context) => {
|
|
1865
|
+
const value = (0,external_react_.useContext)(context);
|
|
1866
|
+
if (value === undefined) {
|
|
1867
|
+
throw new error/* SDKError */.q(`${context.displayName ?? 'Context'} needs to be on the React tree`);
|
|
1868
|
+
}
|
|
1869
|
+
return value;
|
|
1870
|
+
};
|
|
1871
|
+
//# sourceMappingURL=useContext.js.map
|
|
1872
|
+
;// CONCATENATED MODULE: ../sdk/dist/search/useSearch.js
|
|
1873
|
+
|
|
1874
|
+
|
|
1875
|
+
const useSearch = () => useContext(Provider/* Context */._);
|
|
1876
|
+
//# sourceMappingURL=useSearch.js.map
|
|
1877
|
+
|
|
1878
|
+
/***/ })
|
|
1879
|
+
|
|
1880
|
+
};
|
|
1881
|
+
;
|