@faststore/core 2.2.61 → 2.2.65
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 +40 -44
- package/.next/cache/.tsbuildinfo +1 -1
- package/.next/cache/config.json +3 -3
- package/.next/cache/eslint/.cache_1gneedd +1 -1
- package/.next/cache/next-server.js.nft.json +1 -1
- package/.next/cache/webpack/client-production/0.pack +0 -0
- package/.next/cache/webpack/client-production/index.pack +0 -0
- package/.next/cache/webpack/server-production/0.pack +0 -0
- package/.next/cache/webpack/server-production/index.pack +0 -0
- package/.next/next-server.js.nft.json +1 -1
- package/.next/prerender-manifest.json +1 -1
- package/.next/react-loadable-manifest.json +5 -5
- package/.next/routes-manifest.json +1 -1
- package/.next/server/chunks/289.js +11 -8
- package/.next/server/chunks/312.js +3 -5
- package/.next/server/chunks/445.js +167 -0
- package/.next/server/chunks/520.js +1 -1
- package/.next/server/chunks/585.js +3 -25
- package/.next/server/chunks/74.js +1700 -86
- package/.next/server/chunks/863.js +0 -22
- package/.next/server/chunks/934.js +125 -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.nft.json +1 -1
- package/.next/server/pages/500.js.nft.json +1 -1
- package/.next/server/pages/[...slug].js +7 -7
- package/.next/server/pages/[...slug].js.nft.json +1 -1
- package/.next/server/pages/[slug]/p.js.nft.json +1 -1
- package/.next/server/pages/_app.js.nft.json +1 -1
- package/.next/server/pages/_error.js.nft.json +1 -1
- package/.next/server/pages/account.js.nft.json +1 -1
- package/.next/server/pages/api/graphql.js.nft.json +1 -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/500.html +2 -2
- package/.next/server/pages/en-US/account.html +2 -2
- package/.next/server/pages/en-US/checkout.html +2 -2
- package/.next/server/pages/en-US/login.html +2 -2
- package/.next/server/pages/en-US/s.html +2 -2
- package/.next/server/pages/en-US.html +2 -2
- package/.next/server/pages/index.js +1 -1
- package/.next/server/pages/index.js.nft.json +1 -1
- package/.next/server/pages/login.js.nft.json +1 -1
- package/.next/server/pages/s.js +5 -5
- package/.next/server/pages/s.js.nft.json +1 -1
- package/.next/static/8bY0SvP6sqeD3bp_3Ie2r/_buildManifest.js +1 -0
- package/.next/static/chunks/{251.98f500dd8ba008ae.js → 251.65e0bb7a2f58b3db.js} +1 -1
- package/.next/static/chunks/585.ee7478bead8853ae.js +1 -0
- package/.next/static/chunks/800.8f4f91b39aa47346.js +1 -0
- package/.next/static/chunks/875-e59a8e9803b1d863.js +1 -0
- package/.next/static/chunks/pages/404-419470fcedcaba54.js +1 -0
- package/.next/static/chunks/pages/500-337a57eb2c9da6ba.js +1 -0
- package/.next/static/chunks/pages/[...slug]-4fd81d8f84dd561f.js +1 -0
- package/.next/static/chunks/pages/[slug]/{p-fd236c3b1d28734d.js → p-551e8bbc72bab530.js} +1 -1
- package/.next/static/chunks/pages/{index-66a1b740f1101ce4.js → index-7d0e3d61afd0a37c.js} +1 -1
- package/.next/static/chunks/pages/login-c38b2107d504199c.js +1 -0
- package/.next/static/chunks/pages/s-a6e95c34a89ccbfb.js +1 -0
- package/.next/static/chunks/webpack-adf61d0bc3a8dbb3.js +1 -0
- package/.next/static/css/d2e8564f2bf133d9.css +1 -0
- package/.next/static/css/{e84fc497732ea596.css → e772e7786bb4dee9.css} +1 -1
- package/.next/static/css/eababca67e15ef4b.css +1 -0
- package/.next/static/css/f0e64672053efd0c.css +1 -0
- package/.next/trace +81 -81
- package/.turbo/turbo-build.log +13 -13
- package/.turbo/turbo-test.log +9 -9
- package/package.json +4 -4
- package/src/components/cart/CartSidebar/section.module.scss +1 -0
- package/src/components/product/ProductGrid/ProductGrid.tsx +8 -8
- package/src/components/search/Filter/Filter.tsx +6 -5
- package/src/components/sections/Navbar/section.module.scss +1 -0
- package/src/components/sections/ProductDetails/DefaultComponents.ts +2 -2
- package/src/components/sections/ProductGallery/DefaultComponents.ts +29 -0
- package/src/components/sections/ProductGallery/OverriddenDefaultProductGallery.ts +12 -0
- package/src/components/sections/ProductGallery/ProductGallery.tsx +4 -2
- package/src/components/sections/ProductShelf/section.module.scss +1 -0
- package/src/components/sections/ProductTiles/section.module.scss +2 -1
- package/src/components/templates/ProductListingPage/ProductListing.tsx +1 -1
- package/src/components/templates/SearchPage/SearchPage.tsx +1 -1
- package/src/components/ui/ProductDetails/ProductDetailsSettings.tsx +8 -48
- package/src/components/ui/ProductGallery/ProductGallery.tsx +12 -10
- package/src/sdk/overrides/sections.tsx +5 -1
- package/src/typings/overrides.ts +5 -4
- package/.next/server/chunks/732.js +0 -1887
- package/.next/static/YaAOEVbZrM4Y0xL8O4SKx/_buildManifest.js +0 -1
- package/.next/static/chunks/238-6cdd6e7841eba836.js +0 -1
- package/.next/static/chunks/585.f056dcd6e8625c41.js +0 -1
- package/.next/static/chunks/800.ea75aa39e939d9af.js +0 -1
- package/.next/static/chunks/875-3b0f69008ecb7897.js +0 -1
- package/.next/static/chunks/pages/404-340e5868f79ee704.js +0 -1
- package/.next/static/chunks/pages/500-ee2a5efc5808cdd4.js +0 -1
- package/.next/static/chunks/pages/[...slug]-8e6c8b59791c31e9.js +0 -1
- package/.next/static/chunks/pages/login-e5ee36783a4877fd.js +0 -1
- package/.next/static/chunks/pages/s-669d2eccade79e75.js +0 -1
- package/.next/static/chunks/webpack-41b4f40c5b7ff474.js +0 -1
- package/.next/static/css/014e8b0d9020cd52.css +0 -1
- package/.next/static/css/0dc997f9da3027b7.css +0 -1
- package/.next/static/css/4a189916c3edc75d.css +0 -1
- package/.next/static/css/cf062feb79245123.css +0 -1
- package/src/components/sections/ProductGallery/Overrides.tsx +0 -65
- /package/.next/static/{YaAOEVbZrM4Y0xL8O4SKx → 8bY0SvP6sqeD3bp_3Ie2r}/_ssgManifest.js +0 -0
|
@@ -777,6 +777,30 @@ const Modal = ({ children, testId = 'fs-modal', isOpen = true, onDismiss, overla
|
|
|
777
777
|
|
|
778
778
|
/***/ }),
|
|
779
779
|
|
|
780
|
+
/***/ 9088:
|
|
781
|
+
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
782
|
+
|
|
783
|
+
"use strict";
|
|
784
|
+
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
|
|
785
|
+
/* harmony export */ "Z": () => (__WEBPACK_DEFAULT_EXPORT__)
|
|
786
|
+
/* harmony export */ });
|
|
787
|
+
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(6689);
|
|
788
|
+
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);
|
|
789
|
+
/* harmony import */ var ___WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(9767);
|
|
790
|
+
|
|
791
|
+
|
|
792
|
+
const ProductPrice = (0,react__WEBPACK_IMPORTED_MODULE_0__.forwardRef)(function ProductCard({ testId = 'fs-product-price', value, listPrice, formatter, ...otherProps }, ref) {
|
|
793
|
+
const listingPrice = listPrice ?? 0;
|
|
794
|
+
const sellingPrice = value ?? 0;
|
|
795
|
+
return (react__WEBPACK_IMPORTED_MODULE_0___default().createElement("div", { ref: ref, "data-fs-product-price": true, "data-testid": testId, ...otherProps }, sellingPrice !== listingPrice && listingPrice !== 0 ? (react__WEBPACK_IMPORTED_MODULE_0___default().createElement((react__WEBPACK_IMPORTED_MODULE_0___default().Fragment), null,
|
|
796
|
+
react__WEBPACK_IMPORTED_MODULE_0___default().createElement(___WEBPACK_IMPORTED_MODULE_1__/* ["default"] */ .Z, { value: listingPrice, formatter: formatter, testId: "list-price", "data-value": listingPrice, variant: "listing", SRText: "Original price:" }),
|
|
797
|
+
react__WEBPACK_IMPORTED_MODULE_0___default().createElement(___WEBPACK_IMPORTED_MODULE_1__/* ["default"] */ .Z, { value: sellingPrice, formatter: formatter, testId: "price", "data-value": sellingPrice, variant: "spot", SRText: "Price:" }))) : (react__WEBPACK_IMPORTED_MODULE_0___default().createElement(___WEBPACK_IMPORTED_MODULE_1__/* ["default"] */ .Z, { value: sellingPrice, formatter: formatter, testId: "price", "data-value": sellingPrice, variant: "spot", SRText: "Price:" }))));
|
|
798
|
+
});
|
|
799
|
+
/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (ProductPrice);
|
|
800
|
+
//# sourceMappingURL=ProductPrice.js.map
|
|
801
|
+
|
|
802
|
+
/***/ }),
|
|
803
|
+
|
|
780
804
|
/***/ 6693:
|
|
781
805
|
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
782
806
|
|
|
@@ -928,6 +952,300 @@ function SearchProvider({ onSearchSelection, children, term, terms, products, is
|
|
|
928
952
|
|
|
929
953
|
/***/ }),
|
|
930
954
|
|
|
955
|
+
/***/ 6133:
|
|
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 react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(6689);
|
|
963
|
+
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);
|
|
964
|
+
|
|
965
|
+
function EmptyState({ testId = 'fs-empty-state', title, titleIcon, variant = 'default', bkgColor = 'default', children, ...otherProps }) {
|
|
966
|
+
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 },
|
|
967
|
+
title && (react__WEBPACK_IMPORTED_MODULE_0___default().createElement("header", { "data-fs-empty-state-title": true },
|
|
968
|
+
titleIcon && react__WEBPACK_IMPORTED_MODULE_0___default().createElement((react__WEBPACK_IMPORTED_MODULE_0___default().Fragment), null, titleIcon),
|
|
969
|
+
react__WEBPACK_IMPORTED_MODULE_0___default().createElement("p", null, title))),
|
|
970
|
+
children));
|
|
971
|
+
}
|
|
972
|
+
/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (EmptyState);
|
|
973
|
+
//# sourceMappingURL=EmptyState.js.map
|
|
974
|
+
|
|
975
|
+
/***/ }),
|
|
976
|
+
|
|
977
|
+
/***/ 5699:
|
|
978
|
+
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
979
|
+
|
|
980
|
+
"use strict";
|
|
981
|
+
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
|
|
982
|
+
/* harmony export */ "Z": () => (__WEBPACK_DEFAULT_EXPORT__)
|
|
983
|
+
/* harmony export */ });
|
|
984
|
+
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(6689);
|
|
985
|
+
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);
|
|
986
|
+
/* harmony import */ var ___WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(1516);
|
|
987
|
+
|
|
988
|
+
|
|
989
|
+
function Filter({ testId, title, indicesExpanded, onAccordionChange, children, }) {
|
|
990
|
+
return (react__WEBPACK_IMPORTED_MODULE_0___default().createElement("div", { "data-fs-filter": true, "data-testid": testId },
|
|
991
|
+
react__WEBPACK_IMPORTED_MODULE_0___default().createElement("h2", { "data-fs-filter-title": true }, title),
|
|
992
|
+
react__WEBPACK_IMPORTED_MODULE_0___default().createElement(___WEBPACK_IMPORTED_MODULE_1__/* ["default"] */ .Z, { indices: indicesExpanded, onChange: onAccordionChange, "data-fs-filter-accordion": true }, children)));
|
|
993
|
+
}
|
|
994
|
+
/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (Filter);
|
|
995
|
+
//# sourceMappingURL=Filter.js.map
|
|
996
|
+
|
|
997
|
+
/***/ }),
|
|
998
|
+
|
|
999
|
+
/***/ 2815:
|
|
1000
|
+
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
1001
|
+
|
|
1002
|
+
"use strict";
|
|
1003
|
+
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
|
|
1004
|
+
/* harmony export */ "Z": () => (__WEBPACK_DEFAULT_EXPORT__)
|
|
1005
|
+
/* harmony export */ });
|
|
1006
|
+
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(6689);
|
|
1007
|
+
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);
|
|
1008
|
+
/* harmony import */ var ___WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(4564);
|
|
1009
|
+
|
|
1010
|
+
|
|
1011
|
+
function FilterFacetBoolean({ children }) {
|
|
1012
|
+
return react__WEBPACK_IMPORTED_MODULE_0___default().createElement(___WEBPACK_IMPORTED_MODULE_1__/* ["default"] */ .Z, { "data-fs-filter-list": true }, children);
|
|
1013
|
+
}
|
|
1014
|
+
/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (FilterFacetBoolean);
|
|
1015
|
+
//# sourceMappingURL=FilterFacetBoolean.js.map
|
|
1016
|
+
|
|
1017
|
+
/***/ }),
|
|
1018
|
+
|
|
1019
|
+
/***/ 1305:
|
|
1020
|
+
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
1021
|
+
|
|
1022
|
+
"use strict";
|
|
1023
|
+
|
|
1024
|
+
// EXPORTS
|
|
1025
|
+
__webpack_require__.d(__webpack_exports__, {
|
|
1026
|
+
"Z": () => (/* binding */ Filter_FilterFacetBooleanItem)
|
|
1027
|
+
});
|
|
1028
|
+
|
|
1029
|
+
// EXTERNAL MODULE: external "react"
|
|
1030
|
+
var external_react_ = __webpack_require__(6689);
|
|
1031
|
+
var external_react_default = /*#__PURE__*/__webpack_require__.n(external_react_);
|
|
1032
|
+
;// CONCATENATED MODULE: ../components/dist/esm/atoms/Checkbox/Checkbox.js
|
|
1033
|
+
|
|
1034
|
+
const Checkbox = (0,external_react_.forwardRef)(function Checkbox({ testId = 'fs-checkbox', partial, ...otherProps }, ref) {
|
|
1035
|
+
return (external_react_default().createElement("input", { ref: ref, "data-fs-checkbox": true, "data-testid": testId, "data-fs-checkbox-partial": partial, type: "checkbox", ...otherProps }));
|
|
1036
|
+
});
|
|
1037
|
+
/* harmony default export */ const Checkbox_Checkbox = (Checkbox);
|
|
1038
|
+
//# sourceMappingURL=Checkbox.js.map
|
|
1039
|
+
// EXTERNAL MODULE: ../components/dist/esm/atoms/Label/Label.js
|
|
1040
|
+
var Label = __webpack_require__(1953);
|
|
1041
|
+
// EXTERNAL MODULE: ../components/dist/esm/atoms/Badge/Badge.js
|
|
1042
|
+
var Badge = __webpack_require__(276);
|
|
1043
|
+
;// CONCATENATED MODULE: ../components/dist/esm/organisms/Filter/FilterFacetBooleanItem.js
|
|
1044
|
+
|
|
1045
|
+
|
|
1046
|
+
function FilterFacetBooleanItem({ testId, id, selected, value, quantity, facetKey, label, onFacetChange, }) {
|
|
1047
|
+
return (external_react_default().createElement("li", { key: id, "data-fs-filter-list-item": true },
|
|
1048
|
+
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 }),
|
|
1049
|
+
external_react_default().createElement(Label/* default */.Z, { htmlFor: id, className: "text__title-mini-alt", "data-fs-filter-list-item-label": true },
|
|
1050
|
+
label,
|
|
1051
|
+
" ",
|
|
1052
|
+
external_react_default().createElement(Badge/* default */.Z, { "data-fs-filter-list-item-badge": true }, quantity))));
|
|
1053
|
+
}
|
|
1054
|
+
/* harmony default export */ const Filter_FilterFacetBooleanItem = (FilterFacetBooleanItem);
|
|
1055
|
+
//# sourceMappingURL=FilterFacetBooleanItem.js.map
|
|
1056
|
+
|
|
1057
|
+
/***/ }),
|
|
1058
|
+
|
|
1059
|
+
/***/ 1355:
|
|
1060
|
+
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
1061
|
+
|
|
1062
|
+
"use strict";
|
|
1063
|
+
|
|
1064
|
+
// EXPORTS
|
|
1065
|
+
__webpack_require__.d(__webpack_exports__, {
|
|
1066
|
+
"Z": () => (/* binding */ Filter_FilterFacetRange)
|
|
1067
|
+
});
|
|
1068
|
+
|
|
1069
|
+
// EXTERNAL MODULE: external "react"
|
|
1070
|
+
var external_react_ = __webpack_require__(6689);
|
|
1071
|
+
var external_react_default = /*#__PURE__*/__webpack_require__.n(external_react_);
|
|
1072
|
+
;// CONCATENATED MODULE: ../components/dist/esm/atoms/Slider/Slider.js
|
|
1073
|
+
/**
|
|
1074
|
+
* This code is inspired by the work of [sandra-lewis](https://codesandbox.io/u/sandra-lewis)
|
|
1075
|
+
*/
|
|
1076
|
+
|
|
1077
|
+
const percent = (value, min, max) => Math.round(((value - min) / (max - min)) * 100);
|
|
1078
|
+
const Slider = (0,external_react_.forwardRef)(function Slider({ min, max, absoluteValuesLabel, onChange, onEnd, testId = 'fs-slider', getAriaValueText, step, minValueLabelComponent, maxValueLabelComponent, ...otherProps }, ref) {
|
|
1079
|
+
const widthPercent = (0,external_react_.useMemo)(() => (max.absolute - min.absolute) / 100, [max.absolute, min.absolute]);
|
|
1080
|
+
const [minPercent, setMinPercent] = (0,external_react_.useState)(() => percent(min.selected, min.absolute, max.absolute));
|
|
1081
|
+
const [maxPercent, setMaxPercent] = (0,external_react_.useState)(() => percent(max.selected, min.absolute, max.absolute));
|
|
1082
|
+
const [minVal, setMinVal] = (0,external_react_.useState)(() => Math.floor(min.absolute + minPercent * widthPercent));
|
|
1083
|
+
const [maxVal, setMaxVal] = (0,external_react_.useState)(() => Math.round(min.absolute + maxPercent * widthPercent));
|
|
1084
|
+
const percentage = (value) => (value / max.absolute) * 100;
|
|
1085
|
+
(0,external_react_.useImperativeHandle)(ref, () => ({
|
|
1086
|
+
setSliderValues: (values) => {
|
|
1087
|
+
const sliderMinValue = Math.min(Number(values.min), maxVal);
|
|
1088
|
+
setMinVal(sliderMinValue);
|
|
1089
|
+
setMinPercent(percent(sliderMinValue, min.absolute, max.absolute));
|
|
1090
|
+
if (values.max > max.absolute) {
|
|
1091
|
+
setMaxVal(max.absolute);
|
|
1092
|
+
setMaxPercent(percent(max.absolute, min.absolute, max.absolute));
|
|
1093
|
+
return;
|
|
1094
|
+
}
|
|
1095
|
+
const sliderMaxValue = Math.max(Number(values.max), minVal);
|
|
1096
|
+
setMaxVal(sliderMaxValue);
|
|
1097
|
+
setMaxPercent(percent(sliderMaxValue, min.absolute, max.absolute));
|
|
1098
|
+
},
|
|
1099
|
+
}));
|
|
1100
|
+
return (external_react_default().createElement("div", { "data-fs-slider": true, "data-testid": testId, ...otherProps },
|
|
1101
|
+
external_react_default().createElement("div", { "data-fs-slider-absolute-values": true },
|
|
1102
|
+
external_react_default().createElement("span", null, absoluteValuesLabel.min),
|
|
1103
|
+
external_react_default().createElement("span", null, absoluteValuesLabel.max)),
|
|
1104
|
+
external_react_default().createElement("div", { "data-fs-slider-wrapper": true },
|
|
1105
|
+
external_react_default().createElement("div", { "data-fs-slider-range": true, style: {
|
|
1106
|
+
left: `${minPercent}%`,
|
|
1107
|
+
width: `${maxPercent - minPercent}%`,
|
|
1108
|
+
} }),
|
|
1109
|
+
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) => {
|
|
1110
|
+
const minValue = Math.min(Number(event.target.value), maxVal);
|
|
1111
|
+
setMinVal(minValue);
|
|
1112
|
+
setMinPercent(percent(minValue, min.absolute, max.absolute));
|
|
1113
|
+
onChange?.({ min: minValue, max: maxVal });
|
|
1114
|
+
}, "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') }),
|
|
1115
|
+
minValueLabelComponent && (external_react_default().createElement("span", { "data-fs-slider-value-label": "min", style: {
|
|
1116
|
+
left: `calc(${percentage(minVal)}% + (${8 - percentage(minVal) * 0.2}px))`,
|
|
1117
|
+
} }, minValueLabelComponent(minVal))),
|
|
1118
|
+
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) => {
|
|
1119
|
+
const maxValue = Math.max(Number(event.target.value), minVal);
|
|
1120
|
+
setMaxVal(maxValue);
|
|
1121
|
+
setMaxPercent(percent(maxValue, min.absolute, max.absolute));
|
|
1122
|
+
onChange?.({ min: minVal, max: maxValue });
|
|
1123
|
+
}, "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') }),
|
|
1124
|
+
maxValueLabelComponent && (external_react_default().createElement("span", { "data-fs-slider-value-label": "max", style: {
|
|
1125
|
+
left: `calc(${percentage(maxVal)}% + (${8 - percentage(maxVal) * 0.2}px))`,
|
|
1126
|
+
} }, maxValueLabelComponent(maxVal))))));
|
|
1127
|
+
});
|
|
1128
|
+
/* harmony default export */ const Slider_Slider = (Slider);
|
|
1129
|
+
//# sourceMappingURL=Slider.js.map
|
|
1130
|
+
// EXTERNAL MODULE: ../components/dist/esm/atoms/Price/Price.js
|
|
1131
|
+
var Price = __webpack_require__(9767);
|
|
1132
|
+
// EXTERNAL MODULE: ../components/dist/esm/molecules/InputField/InputField.js
|
|
1133
|
+
var InputField = __webpack_require__(3779);
|
|
1134
|
+
;// CONCATENATED MODULE: ../components/dist/esm/organisms/PriceRange/PriceRange.js
|
|
1135
|
+
|
|
1136
|
+
|
|
1137
|
+
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) {
|
|
1138
|
+
const sliderRef = (0,external_react_.useRef)();
|
|
1139
|
+
(0,external_react_.useImperativeHandle)(ref, () => ({
|
|
1140
|
+
setPriceRangeValues: (values) => {
|
|
1141
|
+
onChange?.(values);
|
|
1142
|
+
sliderRef.current?.setSliderValues(values);
|
|
1143
|
+
},
|
|
1144
|
+
}));
|
|
1145
|
+
const inputMinRef = (0,external_react_.useRef)(null);
|
|
1146
|
+
const inputMaxRef = (0,external_react_.useRef)(null);
|
|
1147
|
+
const [inputMinError, setInputMinError] = (0,external_react_.useState)();
|
|
1148
|
+
const [inputMaxError, setInputMaxError] = (0,external_react_.useState)();
|
|
1149
|
+
const [priceRange, setPriceRange] = (0,external_react_.useState)({
|
|
1150
|
+
min: Math.floor(min.selected),
|
|
1151
|
+
max: Math.round(max.selected),
|
|
1152
|
+
});
|
|
1153
|
+
function onChangePriceRange(value) {
|
|
1154
|
+
setInputMinError(undefined);
|
|
1155
|
+
setInputMaxError(undefined);
|
|
1156
|
+
setPriceRange({ min: value.min, max: value.max });
|
|
1157
|
+
if (inputMinRef.current?.value) {
|
|
1158
|
+
inputMinRef.current.value = String(value.min);
|
|
1159
|
+
}
|
|
1160
|
+
if (inputMaxRef.current?.value) {
|
|
1161
|
+
inputMaxRef.current.value = String(value.max);
|
|
1162
|
+
}
|
|
1163
|
+
}
|
|
1164
|
+
function onChangeInputMin(value) {
|
|
1165
|
+
setInputMinError(undefined);
|
|
1166
|
+
if (Number(value) < Math.floor(min.absolute)) {
|
|
1167
|
+
return;
|
|
1168
|
+
}
|
|
1169
|
+
if (Number(value) > Math.floor(priceRange.max)) {
|
|
1170
|
+
setInputMinError(`Min price can't be greater than max`);
|
|
1171
|
+
}
|
|
1172
|
+
setPriceRange({ ...priceRange, min: Number(value) });
|
|
1173
|
+
sliderRef.current?.setSliderValues({
|
|
1174
|
+
...priceRange,
|
|
1175
|
+
min: Number(value),
|
|
1176
|
+
});
|
|
1177
|
+
}
|
|
1178
|
+
function onChangeInputMax(value) {
|
|
1179
|
+
setInputMaxError(undefined);
|
|
1180
|
+
if (Number(value) > Math.round(max.absolute)) {
|
|
1181
|
+
return;
|
|
1182
|
+
}
|
|
1183
|
+
if (Number(value) < Math.round(priceRange.min)) {
|
|
1184
|
+
setInputMaxError(`Max price can't be smaller than min`);
|
|
1185
|
+
}
|
|
1186
|
+
setPriceRange({ ...priceRange, max: Number(value) });
|
|
1187
|
+
sliderRef.current?.setSliderValues({
|
|
1188
|
+
...priceRange,
|
|
1189
|
+
max: Number(value),
|
|
1190
|
+
});
|
|
1191
|
+
}
|
|
1192
|
+
return (external_react_default().createElement("div", { "data-fs-price-range": true, "data-testid": testId, ...otherProps },
|
|
1193
|
+
external_react_default().createElement(Slider_Slider, { ref: sliderRef, min: min, max: max, step: step, onEnd: (value) => {
|
|
1194
|
+
onEnd?.(value);
|
|
1195
|
+
onChangePriceRange(value);
|
|
1196
|
+
}, "aria-label": ariaLabel, onChange: (value) => onChange?.(value), absoluteValuesLabel: {
|
|
1197
|
+
min: (external_react_default().createElement(Price/* default */.Z, { value: Math.floor(min.absolute), variant: variant, formatter: formatter })),
|
|
1198
|
+
max: (external_react_default().createElement(Price/* default */.Z, { value: Math.round(max.absolute), variant: variant, formatter: formatter })),
|
|
1199
|
+
}, minValueLabelComponent: (minValue) => {
|
|
1200
|
+
return (external_react_default().createElement(Price/* default */.Z, { value: minValue, variant: variant, formatter: formatter }));
|
|
1201
|
+
}, maxValueLabelComponent: (maxValue) => {
|
|
1202
|
+
return (external_react_default().createElement(Price/* default */.Z, { value: maxValue, variant: variant, formatter: formatter }));
|
|
1203
|
+
} }),
|
|
1204
|
+
external_react_default().createElement("div", { "data-fs-price-range-inputs": true },
|
|
1205
|
+
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) }),
|
|
1206
|
+
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) }))));
|
|
1207
|
+
});
|
|
1208
|
+
/* harmony default export */ const PriceRange_PriceRange = (PriceRange);
|
|
1209
|
+
//# sourceMappingURL=PriceRange.js.map
|
|
1210
|
+
;// CONCATENATED MODULE: ../components/dist/esm/organisms/Filter/FilterFacetRange.js
|
|
1211
|
+
|
|
1212
|
+
|
|
1213
|
+
const formatRange = (min, max) => `${min.toFixed(2)}-to-${max.toFixed(2)}`;
|
|
1214
|
+
function FilterFacetRange({ min, max, formatter, facetKey, onFacetChange, }) {
|
|
1215
|
+
return (external_react_default().createElement(PriceRange_PriceRange, { "data-fs-filter-facet-range": true, min: min, max: max, formatter: formatter, step: 1, onEnd: (v) => onFacetChange({
|
|
1216
|
+
key: facetKey,
|
|
1217
|
+
value: formatRange(v.min, v.max),
|
|
1218
|
+
}, 'RANGE') }));
|
|
1219
|
+
}
|
|
1220
|
+
/* harmony default export */ const Filter_FilterFacetRange = (FilterFacetRange);
|
|
1221
|
+
//# sourceMappingURL=FilterFacetRange.js.map
|
|
1222
|
+
|
|
1223
|
+
/***/ }),
|
|
1224
|
+
|
|
1225
|
+
/***/ 4199:
|
|
1226
|
+
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
1227
|
+
|
|
1228
|
+
"use strict";
|
|
1229
|
+
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
|
|
1230
|
+
/* harmony export */ "Z": () => (__WEBPACK_DEFAULT_EXPORT__)
|
|
1231
|
+
/* harmony export */ });
|
|
1232
|
+
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(6689);
|
|
1233
|
+
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);
|
|
1234
|
+
/* harmony import */ var ___WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(783);
|
|
1235
|
+
/* harmony import */ var ___WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(7734);
|
|
1236
|
+
/* harmony import */ var ___WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(7583);
|
|
1237
|
+
|
|
1238
|
+
|
|
1239
|
+
function FilterFacets({ testId, label, index, children, type, }) {
|
|
1240
|
+
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 },
|
|
1241
|
+
react__WEBPACK_IMPORTED_MODULE_0___default().createElement(___WEBPACK_IMPORTED_MODULE_2__/* ["default"] */ .Z, { testId: `${testId}-accordion-button` }, label),
|
|
1242
|
+
react__WEBPACK_IMPORTED_MODULE_0___default().createElement(___WEBPACK_IMPORTED_MODULE_3__/* ["default"] */ .Z, null, children)));
|
|
1243
|
+
}
|
|
1244
|
+
/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (FilterFacets);
|
|
1245
|
+
//# sourceMappingURL=FilterFacets.js.map
|
|
1246
|
+
|
|
1247
|
+
/***/ }),
|
|
1248
|
+
|
|
931
1249
|
/***/ 6737:
|
|
932
1250
|
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
933
1251
|
|
|
@@ -1900,8 +2218,8 @@ const ProductCardImage = (0,external_react_.forwardRef)(function ProductCardImag
|
|
|
1900
2218
|
//# sourceMappingURL=ProductCardImage.js.map
|
|
1901
2219
|
// EXTERNAL MODULE: ../components/dist/esm/atoms/Link/Link.js
|
|
1902
2220
|
var Link = __webpack_require__(727);
|
|
1903
|
-
// EXTERNAL MODULE: ../components/dist/esm/
|
|
1904
|
-
var
|
|
2221
|
+
// EXTERNAL MODULE: ../components/dist/esm/molecules/ProductPrice/ProductPrice.js
|
|
2222
|
+
var ProductPrice = __webpack_require__(9088);
|
|
1905
2223
|
// EXTERNAL MODULE: ../components/dist/esm/molecules/Rating/Rating.js
|
|
1906
2224
|
var Rating = __webpack_require__(3024);
|
|
1907
2225
|
// EXTERNAL MODULE: ../components/dist/esm/atoms/Icon/Icon.js
|
|
@@ -1916,20 +2234,16 @@ var Button = __webpack_require__(3339);
|
|
|
1916
2234
|
|
|
1917
2235
|
|
|
1918
2236
|
const ProductCardContent = (0,external_react_.forwardRef)(function CardContent({ testId = 'fs-product-card-content', title, linkProps, price, outOfStock, outOfStockLabel = 'Out of stock', ratingValue, showDiscountBadge, buttonLabel = 'Add', onButtonClick, children, ...otherProps }, ref) {
|
|
1919
|
-
const
|
|
1920
|
-
const sellingPrice = price?.value
|
|
2237
|
+
const listingPrice = price?.listPrice ? price.listPrice : 0;
|
|
2238
|
+
const sellingPrice = price?.value ? price.value : 0;
|
|
1921
2239
|
return (external_react_default().createElement("section", { ref: ref, "data-fs-product-card-content": true, "data-fs-product-card-badge": showDiscountBadge, "data-testid": testId, ...otherProps },
|
|
1922
2240
|
external_react_default().createElement("div", { "data-fs-product-card-heading": true },
|
|
1923
2241
|
external_react_default().createElement("h3", { "data-fs-product-card-title": true },
|
|
1924
2242
|
external_react_default().createElement(Link/* default */.Z, { ...linkProps, title: title },
|
|
1925
2243
|
external_react_default().createElement("span", null, title))),
|
|
1926
|
-
!outOfStock && (external_react_default().createElement(
|
|
1927
|
-
? (external_react_default().createElement((external_react_default()).Fragment, null,
|
|
1928
|
-
external_react_default().createElement(Price/* default */.Z, { value: listPrice, formatter: price?.formatter, testId: "list-price", "data-value": listPrice, variant: "listing", SRText: "Original price:" }),
|
|
1929
|
-
external_react_default().createElement(Price/* default */.Z, { value: sellingPrice, formatter: price?.formatter, testId: "price", "data-value": sellingPrice, variant: "spot", SRText: "Sale Price:" })))
|
|
1930
|
-
: (external_react_default().createElement(Price/* default */.Z, { value: sellingPrice, formatter: price?.formatter, testId: "price", "data-value": sellingPrice, variant: "spot", SRText: "Sale Price:" })))),
|
|
2244
|
+
!outOfStock && (external_react_default().createElement(ProductPrice/* default */.Z, { "data-fs-product-card-prices": true, value: sellingPrice, listPrice: listingPrice, formatter: price?.formatter })),
|
|
1931
2245
|
ratingValue && (external_react_default().createElement(Rating/* default */.Z, { value: ratingValue, icon: external_react_default().createElement(Icon/* default */.Z, { name: "Star" }) }))),
|
|
1932
|
-
showDiscountBadge && !outOfStock && (external_react_default().createElement(DiscountBadge/* default */.Z, { listPrice:
|
|
2246
|
+
showDiscountBadge && !outOfStock && (external_react_default().createElement(DiscountBadge/* default */.Z, { listPrice: listingPrice, spotPrice: sellingPrice })),
|
|
1933
2247
|
outOfStock && external_react_default().createElement(Badge/* default */.Z, null, outOfStockLabel),
|
|
1934
2248
|
onButtonClick && !outOfStock && (external_react_default().createElement("div", { "data-fs-product-card-actions": true },
|
|
1935
2249
|
external_react_default().createElement(Button/* default */.Z, { variant: "primary", icon: external_react_default().createElement(Icon/* default */.Z, { name: "ShoppingCart" }), iconPosition: "left", size: "small", onClick: onButtonClick }, buttonLabel)))));
|
|
@@ -2049,6 +2363,210 @@ const fragment = "unknown";
|
|
|
2049
2363
|
|
|
2050
2364
|
/***/ }),
|
|
2051
2365
|
|
|
2366
|
+
/***/ 9044:
|
|
2367
|
+
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
2368
|
+
|
|
2369
|
+
"use strict";
|
|
2370
|
+
|
|
2371
|
+
// EXPORTS
|
|
2372
|
+
__webpack_require__.d(__webpack_exports__, {
|
|
2373
|
+
"Z": () => (/* binding */ Filter_Filter)
|
|
2374
|
+
});
|
|
2375
|
+
|
|
2376
|
+
// UNUSED EXPORTS: fragment
|
|
2377
|
+
|
|
2378
|
+
// EXTERNAL MODULE: ../components/dist/esm/hooks/UIProvider.js
|
|
2379
|
+
var UIProvider = __webpack_require__(6652);
|
|
2380
|
+
// EXTERNAL MODULE: external "react"
|
|
2381
|
+
var external_react_ = __webpack_require__(6689);
|
|
2382
|
+
// EXTERNAL MODULE: ./src/sdk/overrides/OverrideContext.tsx
|
|
2383
|
+
var OverrideContext = __webpack_require__(5522);
|
|
2384
|
+
// EXTERNAL MODULE: ../sdk/dist/search/facets.js
|
|
2385
|
+
var facets = __webpack_require__(8492);
|
|
2386
|
+
// EXTERNAL MODULE: ../sdk/dist/search/useSearch.js + 1 modules
|
|
2387
|
+
var useSearch = __webpack_require__(3221);
|
|
2388
|
+
;// CONCATENATED MODULE: ./src/sdk/search/useFilter.ts
|
|
2389
|
+
const _excluded = ["value"];
|
|
2390
|
+
|
|
2391
|
+
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; }
|
|
2392
|
+
|
|
2393
|
+
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; }
|
|
2394
|
+
|
|
2395
|
+
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; }
|
|
2396
|
+
|
|
2397
|
+
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; }
|
|
2398
|
+
|
|
2399
|
+
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; }
|
|
2400
|
+
|
|
2401
|
+
|
|
2402
|
+
|
|
2403
|
+
|
|
2404
|
+
const reducer = (state, action) => {
|
|
2405
|
+
const {
|
|
2406
|
+
expanded,
|
|
2407
|
+
selected
|
|
2408
|
+
} = state;
|
|
2409
|
+
const {
|
|
2410
|
+
type,
|
|
2411
|
+
payload
|
|
2412
|
+
} = action;
|
|
2413
|
+
|
|
2414
|
+
switch (type) {
|
|
2415
|
+
case 'toggleExpanded':
|
|
2416
|
+
{
|
|
2417
|
+
if (expanded.has(payload)) {
|
|
2418
|
+
expanded.delete(payload);
|
|
2419
|
+
} else {
|
|
2420
|
+
expanded.add(payload);
|
|
2421
|
+
}
|
|
2422
|
+
|
|
2423
|
+
return _objectSpread(_objectSpread({}, state), {}, {
|
|
2424
|
+
expanded: new Set(expanded)
|
|
2425
|
+
});
|
|
2426
|
+
}
|
|
2427
|
+
|
|
2428
|
+
case 'selectFacets':
|
|
2429
|
+
{
|
|
2430
|
+
if (payload !== selected) {
|
|
2431
|
+
return _objectSpread(_objectSpread({}, state), {}, {
|
|
2432
|
+
selected: payload
|
|
2433
|
+
});
|
|
2434
|
+
}
|
|
2435
|
+
|
|
2436
|
+
break;
|
|
2437
|
+
}
|
|
2438
|
+
|
|
2439
|
+
case 'toggleFacet':
|
|
2440
|
+
{
|
|
2441
|
+
return _objectSpread(_objectSpread({}, state), {}, {
|
|
2442
|
+
selected: (0,facets/* toggleFacet */.wB)(state.selected, payload)
|
|
2443
|
+
});
|
|
2444
|
+
}
|
|
2445
|
+
|
|
2446
|
+
case 'setFacet':
|
|
2447
|
+
{
|
|
2448
|
+
return _objectSpread(_objectSpread({}, state), {}, {
|
|
2449
|
+
selected: (0,facets/* setFacet */.uL)(state.selected, payload.facet, payload.unique)
|
|
2450
|
+
});
|
|
2451
|
+
}
|
|
2452
|
+
|
|
2453
|
+
default:
|
|
2454
|
+
throw new Error(`Action ${type} not implemented`);
|
|
2455
|
+
}
|
|
2456
|
+
|
|
2457
|
+
return state;
|
|
2458
|
+
};
|
|
2459
|
+
|
|
2460
|
+
const useFilter = allFacets => {
|
|
2461
|
+
const {
|
|
2462
|
+
state: {
|
|
2463
|
+
selectedFacets
|
|
2464
|
+
}
|
|
2465
|
+
} = (0,useSearch/* useSearch */.R)();
|
|
2466
|
+
const {
|
|
2467
|
+
0: {
|
|
2468
|
+
selected,
|
|
2469
|
+
expanded
|
|
2470
|
+
},
|
|
2471
|
+
1: dispatch
|
|
2472
|
+
} = (0,external_react_.useReducer)(reducer, null, () => ({
|
|
2473
|
+
expanded: new Set([]),
|
|
2474
|
+
selected: selectedFacets
|
|
2475
|
+
}));
|
|
2476
|
+
const selectedMap = (0,external_react_.useMemo)(() => selected.reduce((acc, facet) => {
|
|
2477
|
+
if (!acc.has(facet.key)) {
|
|
2478
|
+
acc.set(facet.key, new Map());
|
|
2479
|
+
}
|
|
2480
|
+
|
|
2481
|
+
acc.get(facet.key)?.set(facet.value, facet);
|
|
2482
|
+
return acc;
|
|
2483
|
+
}, new Map()), [selected]);
|
|
2484
|
+
const facets = (0,external_react_.useMemo)(() => allFacets.map(facet => {
|
|
2485
|
+
if (facet.__typename === 'StoreFacetBoolean') {
|
|
2486
|
+
return _objectSpread(_objectSpread({}, facet), {}, {
|
|
2487
|
+
values: facet.values.map(_ref => {
|
|
2488
|
+
let {
|
|
2489
|
+
value
|
|
2490
|
+
} = _ref,
|
|
2491
|
+
rest = _objectWithoutProperties(_ref, _excluded);
|
|
2492
|
+
|
|
2493
|
+
return _objectSpread(_objectSpread({}, rest), {}, {
|
|
2494
|
+
value,
|
|
2495
|
+
selected: Boolean(selectedMap.get(facet.key)?.has(value))
|
|
2496
|
+
});
|
|
2497
|
+
})
|
|
2498
|
+
});
|
|
2499
|
+
}
|
|
2500
|
+
|
|
2501
|
+
return facet;
|
|
2502
|
+
}), [allFacets, selectedMap]);
|
|
2503
|
+
(0,external_react_.useEffect)(() => {
|
|
2504
|
+
dispatch({
|
|
2505
|
+
type: 'selectFacets',
|
|
2506
|
+
payload: selectedFacets
|
|
2507
|
+
});
|
|
2508
|
+
}, [selectedFacets]);
|
|
2509
|
+
return {
|
|
2510
|
+
facets,
|
|
2511
|
+
selected,
|
|
2512
|
+
expanded,
|
|
2513
|
+
dispatch
|
|
2514
|
+
};
|
|
2515
|
+
};
|
|
2516
|
+
// EXTERNAL MODULE: external "react/jsx-runtime"
|
|
2517
|
+
var jsx_runtime_ = __webpack_require__(997);
|
|
2518
|
+
;// CONCATENATED MODULE: ./src/components/search/Filter/Filter.tsx
|
|
2519
|
+
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; }
|
|
2520
|
+
|
|
2521
|
+
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; }
|
|
2522
|
+
|
|
2523
|
+
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; }
|
|
2524
|
+
|
|
2525
|
+
|
|
2526
|
+
|
|
2527
|
+
|
|
2528
|
+
|
|
2529
|
+
|
|
2530
|
+
|
|
2531
|
+
|
|
2532
|
+
|
|
2533
|
+
function Filter({
|
|
2534
|
+
facets: allFacets,
|
|
2535
|
+
testId = 'fs-filter',
|
|
2536
|
+
filter: filterCmsData
|
|
2537
|
+
}) {
|
|
2538
|
+
const {
|
|
2539
|
+
__experimentalFilterDesktop: FilterDesktop,
|
|
2540
|
+
__experimentalFilterSlider: FilterSlider
|
|
2541
|
+
} = (0,OverrideContext/* useOverrideComponents */.r3)();
|
|
2542
|
+
const filter = useFilter(allFacets);
|
|
2543
|
+
const {
|
|
2544
|
+
filter: displayFilter
|
|
2545
|
+
} = (0,UIProvider/* useUI */.l)();
|
|
2546
|
+
return /*#__PURE__*/(0,jsx_runtime_.jsxs)(jsx_runtime_.Fragment, {
|
|
2547
|
+
children: [/*#__PURE__*/jsx_runtime_.jsx("div", {
|
|
2548
|
+
className: "hidden-mobile",
|
|
2549
|
+
children: /*#__PURE__*/jsx_runtime_.jsx(FilterDesktop.Component, Filter_objectSpread(Filter_objectSpread(Filter_objectSpread({}, FilterDesktop.props), filter), {}, {
|
|
2550
|
+
testId: testId,
|
|
2551
|
+
title: filterCmsData?.title
|
|
2552
|
+
}))
|
|
2553
|
+
}), displayFilter && /*#__PURE__*/jsx_runtime_.jsx(external_react_.Suspense, {
|
|
2554
|
+
fallback: null,
|
|
2555
|
+
children: /*#__PURE__*/jsx_runtime_.jsx(FilterSlider.Component, Filter_objectSpread(Filter_objectSpread(Filter_objectSpread({}, FilterSlider.props), filter), {}, {
|
|
2556
|
+
testId: testId,
|
|
2557
|
+
title: filterCmsData?.title,
|
|
2558
|
+
clearButtonLabel: filterCmsData?.mobileOnly?.clearButtonLabel,
|
|
2559
|
+
applyButtonLabel: filterCmsData?.mobileOnly?.applyButtonLabel
|
|
2560
|
+
}))
|
|
2561
|
+
})]
|
|
2562
|
+
});
|
|
2563
|
+
}
|
|
2564
|
+
|
|
2565
|
+
const fragment = "unknown";
|
|
2566
|
+
/* harmony default export */ const Filter_Filter = (Filter);
|
|
2567
|
+
|
|
2568
|
+
/***/ }),
|
|
2569
|
+
|
|
2052
2570
|
/***/ 9471:
|
|
2053
2571
|
/***/ ((module, __webpack_exports__, __webpack_require__) => {
|
|
2054
2572
|
|
|
@@ -2191,6 +2709,102 @@ __webpack_async_result__();
|
|
|
2191
2709
|
|
|
2192
2710
|
/***/ }),
|
|
2193
2711
|
|
|
2712
|
+
/***/ 8723:
|
|
2713
|
+
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
2714
|
+
|
|
2715
|
+
"use strict";
|
|
2716
|
+
|
|
2717
|
+
// EXPORTS
|
|
2718
|
+
__webpack_require__.d(__webpack_exports__, {
|
|
2719
|
+
"Z": () => (/* binding */ Sort_Sort)
|
|
2720
|
+
});
|
|
2721
|
+
|
|
2722
|
+
// EXTERNAL MODULE: ../sdk/dist/search/useSearch.js + 1 modules
|
|
2723
|
+
var useSearch = __webpack_require__(3221);
|
|
2724
|
+
// EXTERNAL MODULE: external "react"
|
|
2725
|
+
var external_react_ = __webpack_require__(6689);
|
|
2726
|
+
var external_react_default = /*#__PURE__*/__webpack_require__.n(external_react_);
|
|
2727
|
+
// EXTERNAL MODULE: ../components/dist/esm/atoms/Label/Label.js
|
|
2728
|
+
var Label = __webpack_require__(1953);
|
|
2729
|
+
// EXTERNAL MODULE: ../components/dist/esm/atoms/Icon/Icon.js
|
|
2730
|
+
var Icon = __webpack_require__(2614);
|
|
2731
|
+
;// CONCATENATED MODULE: ../components/dist/esm/atoms/Select/Select.js
|
|
2732
|
+
|
|
2733
|
+
|
|
2734
|
+
const Select = (0,external_react_.forwardRef)(function Select({ options, id, testId = 'fs-select', ...otherProps }, ref) {
|
|
2735
|
+
return (external_react_default().createElement("div", { "data-fs-select": true },
|
|
2736
|
+
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])))),
|
|
2737
|
+
external_react_default().createElement(Icon/* default */.Z, { "data-fs-select-icon": true, name: "CaretDown" })));
|
|
2738
|
+
});
|
|
2739
|
+
/* harmony default export */ const Select_Select = (Select);
|
|
2740
|
+
//# sourceMappingURL=Select.js.map
|
|
2741
|
+
;// CONCATENATED MODULE: ../components/dist/esm/molecules/SelectField/SelectField.js
|
|
2742
|
+
|
|
2743
|
+
|
|
2744
|
+
const SelectField = (0,external_react_.forwardRef)(function SelectField({ id, label, options, testId = 'fs-select-field', ...otherProps }, ref) {
|
|
2745
|
+
return (external_react_default().createElement("div", { ref: ref, "data-fs-select-field": true },
|
|
2746
|
+
external_react_default().createElement(Label/* default */.Z, { "data-fs-select-field-label": true, htmlFor: id }, label),
|
|
2747
|
+
external_react_default().createElement(Select_Select, { id: id, options: options, "data-testid": testId, ...otherProps })));
|
|
2748
|
+
});
|
|
2749
|
+
/* harmony default export */ const SelectField_SelectField = (SelectField);
|
|
2750
|
+
//# sourceMappingURL=SelectField.js.map
|
|
2751
|
+
// EXTERNAL MODULE: external "react/jsx-runtime"
|
|
2752
|
+
var jsx_runtime_ = __webpack_require__(997);
|
|
2753
|
+
;// CONCATENATED MODULE: ./src/components/search/Sort/Sort.tsx
|
|
2754
|
+
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; }
|
|
2755
|
+
|
|
2756
|
+
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; }
|
|
2757
|
+
|
|
2758
|
+
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; }
|
|
2759
|
+
|
|
2760
|
+
|
|
2761
|
+
|
|
2762
|
+
|
|
2763
|
+
const OptionsMap = {
|
|
2764
|
+
price_desc: 'Price, descending',
|
|
2765
|
+
price_asc: 'Price, ascending',
|
|
2766
|
+
orders_desc: 'Top sales',
|
|
2767
|
+
name_asc: 'Name, A-Z',
|
|
2768
|
+
name_desc: 'Name, Z-A',
|
|
2769
|
+
release_desc: 'Release date',
|
|
2770
|
+
discount_desc: 'Discount',
|
|
2771
|
+
score_desc: 'Relevance'
|
|
2772
|
+
};
|
|
2773
|
+
const keys = Object.keys(OptionsMap);
|
|
2774
|
+
|
|
2775
|
+
function Sort({
|
|
2776
|
+
label = 'Sort by',
|
|
2777
|
+
options = OptionsMap
|
|
2778
|
+
}) {
|
|
2779
|
+
const {
|
|
2780
|
+
state,
|
|
2781
|
+
setState
|
|
2782
|
+
} = (0,useSearch/* useSearch */.R)();
|
|
2783
|
+
const optionsMap = Object.keys(options).reduce((acc, currentKey) => {
|
|
2784
|
+
acc[currentKey] = options[currentKey] ?? OptionsMap[currentKey];
|
|
2785
|
+
return acc;
|
|
2786
|
+
}, {});
|
|
2787
|
+
return /*#__PURE__*/jsx_runtime_.jsx(SelectField_SelectField, {
|
|
2788
|
+
id: "sort-select",
|
|
2789
|
+
className: "sort / text__title-mini-alt",
|
|
2790
|
+
label: label,
|
|
2791
|
+
options: optionsMap,
|
|
2792
|
+
onChange: e => {
|
|
2793
|
+
const sort = keys[e.target.selectedIndex];
|
|
2794
|
+
setState(_objectSpread(_objectSpread({}, state), {}, {
|
|
2795
|
+
sort,
|
|
2796
|
+
page: 0
|
|
2797
|
+
}));
|
|
2798
|
+
},
|
|
2799
|
+
value: state.sort,
|
|
2800
|
+
testId: "search-sort"
|
|
2801
|
+
});
|
|
2802
|
+
}
|
|
2803
|
+
|
|
2804
|
+
/* harmony default export */ const Sort_Sort = (Sort);
|
|
2805
|
+
|
|
2806
|
+
/***/ }),
|
|
2807
|
+
|
|
2194
2808
|
/***/ 6893:
|
|
2195
2809
|
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
2196
2810
|
|
|
@@ -3652,8 +4266,8 @@ function BuyButton({ testId = 'fs-buy-button', icon, children, ...otherProps })
|
|
|
3652
4266
|
//# sourceMappingURL=BuyButton.js.map
|
|
3653
4267
|
// EXTERNAL MODULE: ../components/dist/esm/atoms/Icon/Icon.js
|
|
3654
4268
|
var Icon = __webpack_require__(2614);
|
|
3655
|
-
// EXTERNAL MODULE: ../components/dist/esm/
|
|
3656
|
-
var
|
|
4269
|
+
// EXTERNAL MODULE: ../components/dist/esm/molecules/ProductPrice/ProductPrice.js
|
|
4270
|
+
var ProductPrice = __webpack_require__(9088);
|
|
3657
4271
|
// EXTERNAL MODULE: ../components/dist/esm/molecules/QuantitySelector/QuantitySelector.js
|
|
3658
4272
|
var QuantitySelector = __webpack_require__(6693);
|
|
3659
4273
|
// EXTERNAL MODULE: ../components/dist/esm/atoms/Label/Label.js
|
|
@@ -3778,6 +4392,8 @@ const TableCell = (0,external_react_.forwardRef)(function TableCell({ scope, ali
|
|
|
3778
4392
|
});
|
|
3779
4393
|
/* harmony default export */ const Table_TableCell = (TableCell);
|
|
3780
4394
|
//# sourceMappingURL=TableCell.js.map
|
|
4395
|
+
// EXTERNAL MODULE: ../components/dist/esm/atoms/Price/Price.js
|
|
4396
|
+
var Price = __webpack_require__(9767);
|
|
3781
4397
|
;// CONCATENATED MODULE: ../components/dist/esm/organisms/ShippingSimulation/ShippingSimulation.js
|
|
3782
4398
|
|
|
3783
4399
|
|
|
@@ -4228,7 +4844,7 @@ const ProductDetailsDefaultComponents = {
|
|
|
4228
4844
|
DiscountBadge: DiscountBadge/* default */.Z,
|
|
4229
4845
|
BuyButton: BuyButton_BuyButton,
|
|
4230
4846
|
Icon: Icon/* default */.Z,
|
|
4231
|
-
|
|
4847
|
+
ProductPrice: ProductPrice/* default */.Z,
|
|
4232
4848
|
QuantitySelector: QuantitySelector/* default */.Z,
|
|
4233
4849
|
SkuSelector: SkuSelector_SkuSelector,
|
|
4234
4850
|
ShippingSimulation: ShippingSimulation_ShippingSimulation,
|
|
@@ -4581,7 +5197,7 @@ function ProductDetailsSettings({
|
|
|
4581
5197
|
const {
|
|
4582
5198
|
BuyButton,
|
|
4583
5199
|
Icon,
|
|
4584
|
-
|
|
5200
|
+
ProductPrice,
|
|
4585
5201
|
QuantitySelector,
|
|
4586
5202
|
__experimentalNotAvailableButton: NotAvailableButton
|
|
4587
5203
|
} = (0,OverrideContext/* useOverrideComponents */.r3)();
|
|
@@ -4598,7 +5214,6 @@ function ProductDetailsSettings({
|
|
|
4598
5214
|
image: productImages,
|
|
4599
5215
|
additionalProperty,
|
|
4600
5216
|
offers: {
|
|
4601
|
-
lowPrice,
|
|
4602
5217
|
offers: [{
|
|
4603
5218
|
availability,
|
|
4604
5219
|
price,
|
|
@@ -4624,7 +5239,6 @@ function ProductDetailsSettings({
|
|
|
4624
5239
|
}
|
|
4625
5240
|
});
|
|
4626
5241
|
const outOfStock = (0,external_react_.useMemo)(() => availability === 'https://schema.org/OutOfStock', [availability]);
|
|
4627
|
-
const shouldShowDiscountedPrice = (0,external_react_.useMemo)(() => lowPrice !== listPrice, [lowPrice, listPrice]);
|
|
4628
5242
|
|
|
4629
5243
|
const AddToCartButton = () => {
|
|
4630
5244
|
return outOfStock ?
|
|
@@ -4645,44 +5259,12 @@ function ProductDetailsSettings({
|
|
|
4645
5259
|
return /*#__PURE__*/(0,jsx_runtime_.jsxs)(jsx_runtime_.Fragment, {
|
|
4646
5260
|
children: [!outOfStock && /*#__PURE__*/(0,jsx_runtime_.jsxs)("section", {
|
|
4647
5261
|
"data-fs-product-details-values": true,
|
|
4648
|
-
children: [/*#__PURE__*/jsx_runtime_.jsx(
|
|
5262
|
+
children: [/*#__PURE__*/jsx_runtime_.jsx(ProductPrice.Component, ProductDetailsSettings_objectSpread({
|
|
4649
5263
|
"data-fs-product-details-prices": true,
|
|
4650
|
-
|
|
4651
|
-
|
|
4652
|
-
|
|
4653
|
-
|
|
4654
|
-
variant: "listing",
|
|
4655
|
-
SRText: "Original price:"
|
|
4656
|
-
}, Price.props), {}, {
|
|
4657
|
-
// Dynamic props shouldn't be overridable
|
|
4658
|
-
// This decision can be reviewed later if needed
|
|
4659
|
-
value: listPrice,
|
|
4660
|
-
"data-value": listPrice
|
|
4661
|
-
})), /*#__PURE__*/jsx_runtime_.jsx(Price.Component, ProductDetailsSettings_objectSpread(ProductDetailsSettings_objectSpread({
|
|
4662
|
-
formatter: useFormattedPrice/* useFormattedPrice */.P,
|
|
4663
|
-
testId: "price",
|
|
4664
|
-
variant: "spot",
|
|
4665
|
-
className: "text__lead",
|
|
4666
|
-
SRText: "Sale Price:"
|
|
4667
|
-
}, Price.props), {}, {
|
|
4668
|
-
// Dynamic props shouldn't be overridable
|
|
4669
|
-
// This decision can be reviewed later if needed
|
|
4670
|
-
value: lowPrice,
|
|
4671
|
-
"data-value": lowPrice
|
|
4672
|
-
}))]
|
|
4673
|
-
}) : /*#__PURE__*/jsx_runtime_.jsx(Price.Component, ProductDetailsSettings_objectSpread(ProductDetailsSettings_objectSpread({
|
|
4674
|
-
formatter: useFormattedPrice/* useFormattedPrice */.P,
|
|
4675
|
-
testId: "list-price",
|
|
4676
|
-
variant: "spot",
|
|
4677
|
-
className: "text__lead",
|
|
4678
|
-
SRText: "Original price:"
|
|
4679
|
-
}, Price.props), {}, {
|
|
4680
|
-
// Dynamic props shouldn't be overridable
|
|
4681
|
-
// This decision can be reviewed later if needed
|
|
4682
|
-
value: lowPrice,
|
|
4683
|
-
"data-value": lowPrice
|
|
4684
|
-
}))
|
|
4685
|
-
}), /*#__PURE__*/jsx_runtime_.jsx(QuantitySelector.Component, ProductDetailsSettings_objectSpread(ProductDetailsSettings_objectSpread({
|
|
5264
|
+
value: price,
|
|
5265
|
+
listPrice: listPrice,
|
|
5266
|
+
formatter: useFormattedPrice/* useFormattedPrice */.P
|
|
5267
|
+
}, ProductPrice.props)), /*#__PURE__*/jsx_runtime_.jsx(QuantitySelector.Component, ProductDetailsSettings_objectSpread(ProductDetailsSettings_objectSpread({
|
|
4686
5268
|
min: 1,
|
|
4687
5269
|
max: 10
|
|
4688
5270
|
}, QuantitySelector.props), {}, {
|
|
@@ -4911,6 +5493,278 @@ const fragment = "unknown";
|
|
|
4911
5493
|
|
|
4912
5494
|
/***/ }),
|
|
4913
5495
|
|
|
5496
|
+
/***/ 5366:
|
|
5497
|
+
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
5498
|
+
|
|
5499
|
+
"use strict";
|
|
5500
|
+
|
|
5501
|
+
// EXPORTS
|
|
5502
|
+
__webpack_require__.d(__webpack_exports__, {
|
|
5503
|
+
"h": () => (/* binding */ ProductGalleryDefaultComponents)
|
|
5504
|
+
});
|
|
5505
|
+
|
|
5506
|
+
// EXTERNAL MODULE: external "react"
|
|
5507
|
+
var external_react_ = __webpack_require__(6689);
|
|
5508
|
+
// EXTERNAL MODULE: ../components/dist/esm/atoms/Button/Button.js
|
|
5509
|
+
var Button = __webpack_require__(3339);
|
|
5510
|
+
// EXTERNAL MODULE: ../components/dist/esm/atoms/Icon/Icon.js
|
|
5511
|
+
var Icon = __webpack_require__(2614);
|
|
5512
|
+
// EXTERNAL MODULE: ../components/dist/esm/atoms/Skeleton/Skeleton.js
|
|
5513
|
+
var Skeleton = __webpack_require__(792);
|
|
5514
|
+
// EXTERNAL MODULE: ../components/dist/esm/molecules/LinkButton/LinkButton.js
|
|
5515
|
+
var LinkButton = __webpack_require__(3922);
|
|
5516
|
+
// EXTERNAL MODULE: ./src/components/product/ProductCard/ProductCard.tsx + 3 modules
|
|
5517
|
+
var ProductCard = __webpack_require__(8553);
|
|
5518
|
+
// EXTERNAL MODULE: ../sdk/dist/search/useSearch.js + 1 modules
|
|
5519
|
+
var useSearch = __webpack_require__(3221);
|
|
5520
|
+
// EXTERNAL MODULE: ../sdk/dist/search/facets.js
|
|
5521
|
+
var search_facets = __webpack_require__(8492);
|
|
5522
|
+
// EXTERNAL MODULE: ../components/dist/esm/organisms/Filter/Filter.js
|
|
5523
|
+
var Filter = __webpack_require__(5699);
|
|
5524
|
+
// EXTERNAL MODULE: ../components/dist/esm/organisms/Filter/FilterFacets.js
|
|
5525
|
+
var FilterFacets = __webpack_require__(4199);
|
|
5526
|
+
// EXTERNAL MODULE: ../components/dist/esm/organisms/Filter/FilterFacetBoolean.js
|
|
5527
|
+
var FilterFacetBoolean = __webpack_require__(2815);
|
|
5528
|
+
// EXTERNAL MODULE: ../components/dist/esm/organisms/Filter/FilterFacetBooleanItem.js + 1 modules
|
|
5529
|
+
var FilterFacetBooleanItem = __webpack_require__(1305);
|
|
5530
|
+
// EXTERNAL MODULE: ../components/dist/esm/organisms/Filter/FilterFacetRange.js + 2 modules
|
|
5531
|
+
var FilterFacetRange = __webpack_require__(1355);
|
|
5532
|
+
// EXTERNAL MODULE: ./src/sdk/product/useFormattedPrice.ts
|
|
5533
|
+
var useFormattedPrice = __webpack_require__(5346);
|
|
5534
|
+
// EXTERNAL MODULE: external "react/jsx-runtime"
|
|
5535
|
+
var jsx_runtime_ = __webpack_require__(997);
|
|
5536
|
+
;// CONCATENATED MODULE: ./src/components/search/Filter/FilterDesktop.tsx
|
|
5537
|
+
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; }
|
|
5538
|
+
|
|
5539
|
+
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; }
|
|
5540
|
+
|
|
5541
|
+
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; }
|
|
5542
|
+
|
|
5543
|
+
|
|
5544
|
+
|
|
5545
|
+
|
|
5546
|
+
|
|
5547
|
+
|
|
5548
|
+
|
|
5549
|
+
function FilterDesktop({
|
|
5550
|
+
facets,
|
|
5551
|
+
testId,
|
|
5552
|
+
dispatch,
|
|
5553
|
+
expanded,
|
|
5554
|
+
title
|
|
5555
|
+
}) {
|
|
5556
|
+
const {
|
|
5557
|
+
resetInfiniteScroll,
|
|
5558
|
+
state,
|
|
5559
|
+
setState
|
|
5560
|
+
} = (0,useSearch/* useSearch */.R)();
|
|
5561
|
+
return /*#__PURE__*/jsx_runtime_.jsx(Filter/* default */.Z, {
|
|
5562
|
+
testId: `desktop-${testId}`,
|
|
5563
|
+
title: title,
|
|
5564
|
+
indicesExpanded: expanded,
|
|
5565
|
+
onAccordionChange: idx => dispatch({
|
|
5566
|
+
type: 'toggleExpanded',
|
|
5567
|
+
payload: idx
|
|
5568
|
+
}),
|
|
5569
|
+
children: facets.map((facet, index) => {
|
|
5570
|
+
const {
|
|
5571
|
+
__typename: type,
|
|
5572
|
+
label
|
|
5573
|
+
} = facet;
|
|
5574
|
+
const isExpanded = expanded.has(index);
|
|
5575
|
+
return /*#__PURE__*/(0,jsx_runtime_.jsxs)(FilterFacets/* default */.Z, {
|
|
5576
|
+
testId: testId,
|
|
5577
|
+
index: index,
|
|
5578
|
+
type: type,
|
|
5579
|
+
label: label,
|
|
5580
|
+
children: [type === 'StoreFacetBoolean' && isExpanded && /*#__PURE__*/jsx_runtime_.jsx(FilterFacetBoolean/* default */.Z, {
|
|
5581
|
+
children: facet.values.map(item => /*#__PURE__*/jsx_runtime_.jsx(FilterFacetBooleanItem/* default */.Z, {
|
|
5582
|
+
id: `${testId}-${facet.label}-${item.label}`,
|
|
5583
|
+
testId: testId,
|
|
5584
|
+
onFacetChange: facet => {
|
|
5585
|
+
setState(_objectSpread(_objectSpread({}, state), {}, {
|
|
5586
|
+
selectedFacets: (0,search_facets/* toggleFacet */.wB)(state.selectedFacets, facet),
|
|
5587
|
+
page: 0
|
|
5588
|
+
}));
|
|
5589
|
+
resetInfiniteScroll(0);
|
|
5590
|
+
},
|
|
5591
|
+
selected: item.selected,
|
|
5592
|
+
value: item.value,
|
|
5593
|
+
quantity: item.quantity,
|
|
5594
|
+
facetKey: facet.key,
|
|
5595
|
+
label: item.label
|
|
5596
|
+
}, `${testId}-${facet.label}-${item.label}`))
|
|
5597
|
+
}), type === 'StoreFacetRange' && isExpanded && /*#__PURE__*/jsx_runtime_.jsx(FilterFacetRange/* default */.Z, {
|
|
5598
|
+
facetKey: facet.key,
|
|
5599
|
+
min: facet.min,
|
|
5600
|
+
max: facet.max,
|
|
5601
|
+
formatter: useFormattedPrice/* useFormattedPrice */.P,
|
|
5602
|
+
onFacetChange: facet => {
|
|
5603
|
+
setState(_objectSpread(_objectSpread({}, state), {}, {
|
|
5604
|
+
selectedFacets: (0,search_facets/* setFacet */.uL)(state.selectedFacets, facet, true),
|
|
5605
|
+
page: 0
|
|
5606
|
+
}));
|
|
5607
|
+
resetInfiniteScroll(0);
|
|
5608
|
+
}
|
|
5609
|
+
})]
|
|
5610
|
+
}, `${testId}-${label}-${index}`);
|
|
5611
|
+
})
|
|
5612
|
+
});
|
|
5613
|
+
}
|
|
5614
|
+
|
|
5615
|
+
/* harmony default export */ const Filter_FilterDesktop = (FilterDesktop);
|
|
5616
|
+
// EXTERNAL MODULE: ../components/dist/esm/organisms/EmptyState/EmptyState.js
|
|
5617
|
+
var EmptyState = __webpack_require__(6133);
|
|
5618
|
+
;// CONCATENATED MODULE: ./src/components/sections/ProductGallery/EmptyGallery.tsx
|
|
5619
|
+
|
|
5620
|
+
|
|
5621
|
+
|
|
5622
|
+
|
|
5623
|
+
function EmptyGallery({
|
|
5624
|
+
title,
|
|
5625
|
+
firstButton,
|
|
5626
|
+
secondButton
|
|
5627
|
+
}) {
|
|
5628
|
+
return /*#__PURE__*/(0,jsx_runtime_.jsxs)(EmptyState/* default */.Z, {
|
|
5629
|
+
variant: "rounded",
|
|
5630
|
+
title: title ?? 'Nothing matches with your search',
|
|
5631
|
+
titleIcon: /*#__PURE__*/jsx_runtime_.jsx(Icon/* default */.Z, {
|
|
5632
|
+
name: "CircleWavyWarning",
|
|
5633
|
+
width: 56,
|
|
5634
|
+
height: 56,
|
|
5635
|
+
weight: "thin"
|
|
5636
|
+
}),
|
|
5637
|
+
children: [/*#__PURE__*/jsx_runtime_.jsx(LinkButton/* default */.Z, {
|
|
5638
|
+
href: firstButton?.url ?? '/office',
|
|
5639
|
+
variant: "secondary",
|
|
5640
|
+
icon: /*#__PURE__*/jsx_runtime_.jsx(Icon/* default */.Z, {
|
|
5641
|
+
name: firstButton?.icon ?? 'CircleWavyWarning',
|
|
5642
|
+
width: 18,
|
|
5643
|
+
height: 18,
|
|
5644
|
+
weight: "bold"
|
|
5645
|
+
}),
|
|
5646
|
+
iconPosition: "left",
|
|
5647
|
+
children: firstButton?.label ?? 'Browse Offers'
|
|
5648
|
+
}), /*#__PURE__*/jsx_runtime_.jsx(LinkButton/* default */.Z, {
|
|
5649
|
+
href: secondButton?.url ?? '/technology',
|
|
5650
|
+
variant: "secondary",
|
|
5651
|
+
icon: /*#__PURE__*/jsx_runtime_.jsx(Icon/* default */.Z, {
|
|
5652
|
+
name: secondButton?.icon ?? 'RocketLaunch',
|
|
5653
|
+
width: 18,
|
|
5654
|
+
height: 18,
|
|
5655
|
+
weight: "bold"
|
|
5656
|
+
}),
|
|
5657
|
+
iconPosition: "left",
|
|
5658
|
+
children: secondButton?.label ?? 'Just Arrived'
|
|
5659
|
+
})]
|
|
5660
|
+
});
|
|
5661
|
+
}
|
|
5662
|
+
|
|
5663
|
+
/* harmony default export */ const ProductGallery_EmptyGallery = (EmptyGallery);
|
|
5664
|
+
;// CONCATENATED MODULE: ./src/components/sections/ProductGallery/DefaultComponents.ts
|
|
5665
|
+
|
|
5666
|
+
|
|
5667
|
+
|
|
5668
|
+
|
|
5669
|
+
|
|
5670
|
+
const FilterSlider = /*#__PURE__*/(0,external_react_.lazy)(() => __webpack_require__.e(/* import() */ 386).then(__webpack_require__.bind(__webpack_require__, 1386)));
|
|
5671
|
+
const ProductGalleryDefaultComponents = {
|
|
5672
|
+
MobileFilterButton: Button/* default */.Z,
|
|
5673
|
+
FilterIcon: Icon/* default */.Z,
|
|
5674
|
+
PrevIcon: Icon/* default */.Z,
|
|
5675
|
+
ResultsCountSkeleton: Skeleton/* default */.Z,
|
|
5676
|
+
SortSkeleton: Skeleton/* default */.Z,
|
|
5677
|
+
FilterButtonSkeleton: Skeleton/* default */.Z,
|
|
5678
|
+
LinkButtonPrev: LinkButton/* default */.Z,
|
|
5679
|
+
LinkButtonNext: LinkButton/* default */.Z,
|
|
5680
|
+
__experimentalFilterDesktop: Filter_FilterDesktop,
|
|
5681
|
+
__experimentalFilterSlider: FilterSlider,
|
|
5682
|
+
__experimentalProductCard: ProductCard/* default */.Z,
|
|
5683
|
+
__experimentalEmptyGallery: ProductGallery_EmptyGallery
|
|
5684
|
+
};
|
|
5685
|
+
|
|
5686
|
+
/***/ }),
|
|
5687
|
+
|
|
5688
|
+
/***/ 8273:
|
|
5689
|
+
/***/ ((module, __webpack_exports__, __webpack_require__) => {
|
|
5690
|
+
|
|
5691
|
+
"use strict";
|
|
5692
|
+
__webpack_require__.a(module, async (__webpack_handle_async_dependencies__, __webpack_async_result__) => { try {
|
|
5693
|
+
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
|
|
5694
|
+
/* harmony export */ "Z": () => (__WEBPACK_DEFAULT_EXPORT__)
|
|
5695
|
+
/* harmony export */ });
|
|
5696
|
+
/* harmony import */ var src_sdk_tests_mark__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(2541);
|
|
5697
|
+
/* harmony import */ var src_components_ui_ProductGallery_ProductGallery__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(5333);
|
|
5698
|
+
/* harmony import */ var _Section__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(3271);
|
|
5699
|
+
/* harmony import */ var _section_module_scss__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(4614);
|
|
5700
|
+
/* harmony import */ var _section_module_scss__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_section_module_scss__WEBPACK_IMPORTED_MODULE_4__);
|
|
5701
|
+
/* harmony import */ var src_sdk_overrides_PageProvider__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(5953);
|
|
5702
|
+
/* harmony import */ var src_sdk_overrides_OverrideContext__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(5522);
|
|
5703
|
+
/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(997);
|
|
5704
|
+
/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__);
|
|
5705
|
+
var __webpack_async_dependencies__ = __webpack_handle_async_dependencies__([src_components_ui_ProductGallery_ProductGallery__WEBPACK_IMPORTED_MODULE_5__]);
|
|
5706
|
+
src_components_ui_ProductGallery_ProductGallery__WEBPACK_IMPORTED_MODULE_5__ = (__webpack_async_dependencies__.then ? (await __webpack_async_dependencies__)() : __webpack_async_dependencies__)[0];
|
|
5707
|
+
const _excluded = ["emptyGallery"];
|
|
5708
|
+
|
|
5709
|
+
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; }
|
|
5710
|
+
|
|
5711
|
+
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; }
|
|
5712
|
+
|
|
5713
|
+
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; }
|
|
5714
|
+
|
|
5715
|
+
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; }
|
|
5716
|
+
|
|
5717
|
+
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; }
|
|
5718
|
+
|
|
5719
|
+
|
|
5720
|
+
|
|
5721
|
+
|
|
5722
|
+
|
|
5723
|
+
|
|
5724
|
+
|
|
5725
|
+
|
|
5726
|
+
|
|
5727
|
+
function ProductGallerySection(_ref) {
|
|
5728
|
+
let {
|
|
5729
|
+
emptyGallery
|
|
5730
|
+
} = _ref,
|
|
5731
|
+
otherProps = _objectWithoutProperties(_ref, _excluded);
|
|
5732
|
+
|
|
5733
|
+
const {
|
|
5734
|
+
__experimentalEmptyGallery: EmptyGallery
|
|
5735
|
+
} = (0,src_sdk_overrides_OverrideContext__WEBPACK_IMPORTED_MODULE_1__/* .useOverrideComponents */ .r3)();
|
|
5736
|
+
const context = (0,src_sdk_overrides_PageProvider__WEBPACK_IMPORTED_MODULE_2__/* .usePage */ .qt)();
|
|
5737
|
+
const [title, searchTerm] = (0,src_sdk_overrides_PageProvider__WEBPACK_IMPORTED_MODULE_2__/* .isSearchPage */ .En)(context) ? [context?.data?.title, context?.data?.searchTerm] : (0,src_sdk_overrides_PageProvider__WEBPACK_IMPORTED_MODULE_2__/* .isPLP */ .OJ)(context) ? [context?.data?.collection?.seo?.title] : [''];
|
|
5738
|
+
const totalCount = context?.data?.search?.products?.pageInfo?.totalCount ?? 0;
|
|
5739
|
+
|
|
5740
|
+
if (context?.data?.search?.products && totalCount === 0) {
|
|
5741
|
+
return /*#__PURE__*/react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx(_Section__WEBPACK_IMPORTED_MODULE_3__/* ["default"] */ .Z, {
|
|
5742
|
+
className: `${(_section_module_scss__WEBPACK_IMPORTED_MODULE_4___default().section)} section-product-gallery`,
|
|
5743
|
+
children: /*#__PURE__*/react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx("section", {
|
|
5744
|
+
"data-testid": "product-gallery",
|
|
5745
|
+
"data-fs-product-listing": true,
|
|
5746
|
+
children: /*#__PURE__*/react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx(EmptyGallery.Component, _objectSpread({}, emptyGallery))
|
|
5747
|
+
})
|
|
5748
|
+
});
|
|
5749
|
+
}
|
|
5750
|
+
|
|
5751
|
+
return /*#__PURE__*/react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx(_Section__WEBPACK_IMPORTED_MODULE_3__/* ["default"] */ .Z, {
|
|
5752
|
+
className: `${(_section_module_scss__WEBPACK_IMPORTED_MODULE_4___default().section)} section-product-gallery layout__section`,
|
|
5753
|
+
children: /*#__PURE__*/react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx(src_components_ui_ProductGallery_ProductGallery__WEBPACK_IMPORTED_MODULE_5__/* ["default"] */ .Z, _objectSpread({
|
|
5754
|
+
title: title,
|
|
5755
|
+
searchTerm: searchTerm,
|
|
5756
|
+
totalCount: totalCount
|
|
5757
|
+
}, otherProps))
|
|
5758
|
+
});
|
|
5759
|
+
}
|
|
5760
|
+
|
|
5761
|
+
ProductGallerySection.displayName = 'ProductGallery';
|
|
5762
|
+
/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ((0,src_sdk_tests_mark__WEBPACK_IMPORTED_MODULE_6__/* .mark */ .B)(ProductGallerySection));
|
|
5763
|
+
__webpack_async_result__();
|
|
5764
|
+
} catch(e) { __webpack_async_result__(e); } });
|
|
5765
|
+
|
|
5766
|
+
/***/ }),
|
|
5767
|
+
|
|
4914
5768
|
/***/ 2432:
|
|
4915
5769
|
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
4916
5770
|
|
|
@@ -5185,6 +6039,67 @@ const Section = /*#__PURE__*/(0,react__WEBPACK_IMPORTED_MODULE_0__.forwardRef)(f
|
|
|
5185
6039
|
|
|
5186
6040
|
/***/ }),
|
|
5187
6041
|
|
|
6042
|
+
/***/ 1159:
|
|
6043
|
+
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
6044
|
+
|
|
6045
|
+
"use strict";
|
|
6046
|
+
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
|
|
6047
|
+
/* harmony export */ "Z": () => (__WEBPACK_DEFAULT_EXPORT__)
|
|
6048
|
+
/* harmony export */ });
|
|
6049
|
+
/* harmony import */ var _faststore_ui__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(792);
|
|
6050
|
+
/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(997);
|
|
6051
|
+
/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__);
|
|
6052
|
+
|
|
6053
|
+
|
|
6054
|
+
|
|
6055
|
+
|
|
6056
|
+
|
|
6057
|
+
function FilterSkeleton({
|
|
6058
|
+
children,
|
|
6059
|
+
loading = true
|
|
6060
|
+
}) {
|
|
6061
|
+
return loading ? /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("div", {
|
|
6062
|
+
"data-fs-filter-skeleton": true,
|
|
6063
|
+
children: [/*#__PURE__*/react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx(_faststore_ui__WEBPACK_IMPORTED_MODULE_1__/* ["default"] */ .Z, {
|
|
6064
|
+
"data-fs-filter-skeleton-text": true,
|
|
6065
|
+
size: {
|
|
6066
|
+
width: '100%',
|
|
6067
|
+
height: '1.5rem'
|
|
6068
|
+
}
|
|
6069
|
+
}), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("div", {
|
|
6070
|
+
"data-fs-filter-skeleton-content": true,
|
|
6071
|
+
children: [/*#__PURE__*/react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx(_faststore_ui__WEBPACK_IMPORTED_MODULE_1__/* ["default"] */ .Z, {
|
|
6072
|
+
"data-fs-filter-skeleton-text": true,
|
|
6073
|
+
size: {
|
|
6074
|
+
width: '100%',
|
|
6075
|
+
height: '1.5rem'
|
|
6076
|
+
},
|
|
6077
|
+
shimmer: false
|
|
6078
|
+
}), /*#__PURE__*/react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx(_faststore_ui__WEBPACK_IMPORTED_MODULE_1__/* ["default"] */ .Z, {
|
|
6079
|
+
"data-fs-filter-skeleton-text": true,
|
|
6080
|
+
size: {
|
|
6081
|
+
width: '100%',
|
|
6082
|
+
height: '1.5rem'
|
|
6083
|
+
},
|
|
6084
|
+
shimmer: false
|
|
6085
|
+
}), /*#__PURE__*/react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx(_faststore_ui__WEBPACK_IMPORTED_MODULE_1__/* ["default"] */ .Z, {
|
|
6086
|
+
"data-fs-filter-skeleton-text": true,
|
|
6087
|
+
size: {
|
|
6088
|
+
width: '100%',
|
|
6089
|
+
height: '1.5rem'
|
|
6090
|
+
},
|
|
6091
|
+
shimmer: false
|
|
6092
|
+
})]
|
|
6093
|
+
})]
|
|
6094
|
+
}) : /*#__PURE__*/react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.Fragment, {
|
|
6095
|
+
children: children
|
|
6096
|
+
});
|
|
6097
|
+
}
|
|
6098
|
+
|
|
6099
|
+
/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (FilterSkeleton);
|
|
6100
|
+
|
|
6101
|
+
/***/ }),
|
|
6102
|
+
|
|
5188
6103
|
/***/ 6531:
|
|
5189
6104
|
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
5190
6105
|
|
|
@@ -5261,6 +6176,46 @@ function ProductCardSkeleton({
|
|
|
5261
6176
|
|
|
5262
6177
|
/***/ }),
|
|
5263
6178
|
|
|
6179
|
+
/***/ 1708:
|
|
6180
|
+
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
6181
|
+
|
|
6182
|
+
"use strict";
|
|
6183
|
+
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
|
|
6184
|
+
/* harmony export */ "Z": () => (__WEBPACK_DEFAULT_EXPORT__)
|
|
6185
|
+
/* harmony export */ });
|
|
6186
|
+
/* harmony import */ var src_constants__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(8459);
|
|
6187
|
+
/* harmony import */ var _ProductCardSkeleton__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(6531);
|
|
6188
|
+
/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(997);
|
|
6189
|
+
/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__);
|
|
6190
|
+
|
|
6191
|
+
|
|
6192
|
+
|
|
6193
|
+
|
|
6194
|
+
|
|
6195
|
+
function ProductGridSkeleton({
|
|
6196
|
+
children,
|
|
6197
|
+
aspectRatio,
|
|
6198
|
+
loading = true
|
|
6199
|
+
}) {
|
|
6200
|
+
return loading ? /*#__PURE__*/react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx("ul", {
|
|
6201
|
+
"data-fs-product-grid": true,
|
|
6202
|
+
children: Array.from({
|
|
6203
|
+
length: src_constants__WEBPACK_IMPORTED_MODULE_1__/* .ITEMS_PER_PAGE */ .g
|
|
6204
|
+
}, (_, index) => /*#__PURE__*/react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx("li", {
|
|
6205
|
+
children: /*#__PURE__*/react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx(_ProductCardSkeleton__WEBPACK_IMPORTED_MODULE_2__/* ["default"] */ .Z, {
|
|
6206
|
+
aspectRatio: aspectRatio,
|
|
6207
|
+
bordered: true
|
|
6208
|
+
})
|
|
6209
|
+
}, String(index)))
|
|
6210
|
+
}) : /*#__PURE__*/react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.Fragment, {
|
|
6211
|
+
children: children
|
|
6212
|
+
});
|
|
6213
|
+
}
|
|
6214
|
+
|
|
6215
|
+
/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (ProductGridSkeleton);
|
|
6216
|
+
|
|
6217
|
+
/***/ }),
|
|
6218
|
+
|
|
5264
6219
|
/***/ 6523:
|
|
5265
6220
|
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
5266
6221
|
|
|
@@ -6021,24 +6976,279 @@ function Logo({
|
|
|
6021
6976
|
src,
|
|
6022
6977
|
loading = 'lazy'
|
|
6023
6978
|
}) {
|
|
6024
|
-
return /*#__PURE__*/react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx("div", {
|
|
6025
|
-
"data-fs-logo": true,
|
|
6026
|
-
children: /*#__PURE__*/react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx(src_components_ui_Image__WEBPACK_IMPORTED_MODULE_1__/* ["default"] */ .Z, {
|
|
6027
|
-
alt: alt,
|
|
6028
|
-
src: src,
|
|
6029
|
-
width: 0,
|
|
6030
|
-
height: 0,
|
|
6031
|
-
sizes: "15vw",
|
|
6032
|
-
loading: loading,
|
|
6033
|
-
style: {
|
|
6034
|
-
width: '100%',
|
|
6035
|
-
height: 'auto'
|
|
6036
|
-
}
|
|
6037
|
-
})
|
|
6979
|
+
return /*#__PURE__*/react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx("div", {
|
|
6980
|
+
"data-fs-logo": true,
|
|
6981
|
+
children: /*#__PURE__*/react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx(src_components_ui_Image__WEBPACK_IMPORTED_MODULE_1__/* ["default"] */ .Z, {
|
|
6982
|
+
alt: alt,
|
|
6983
|
+
src: src,
|
|
6984
|
+
width: 0,
|
|
6985
|
+
height: 0,
|
|
6986
|
+
sizes: "15vw",
|
|
6987
|
+
loading: loading,
|
|
6988
|
+
style: {
|
|
6989
|
+
width: '100%',
|
|
6990
|
+
height: 'auto'
|
|
6991
|
+
}
|
|
6992
|
+
})
|
|
6993
|
+
});
|
|
6994
|
+
}
|
|
6995
|
+
|
|
6996
|
+
/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (Logo);
|
|
6997
|
+
|
|
6998
|
+
/***/ }),
|
|
6999
|
+
|
|
7000
|
+
/***/ 5333:
|
|
7001
|
+
/***/ ((module, __webpack_exports__, __webpack_require__) => {
|
|
7002
|
+
|
|
7003
|
+
"use strict";
|
|
7004
|
+
__webpack_require__.a(module, async (__webpack_handle_async_dependencies__, __webpack_async_result__) => { try {
|
|
7005
|
+
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
|
|
7006
|
+
/* harmony export */ "Z": () => (__WEBPACK_DEFAULT_EXPORT__)
|
|
7007
|
+
/* harmony export */ });
|
|
7008
|
+
/* harmony import */ var _faststore_sdk__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(3221);
|
|
7009
|
+
/* harmony import */ var next_seo__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(6641);
|
|
7010
|
+
/* harmony import */ var next_seo__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(next_seo__WEBPACK_IMPORTED_MODULE_0__);
|
|
7011
|
+
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(6689);
|
|
7012
|
+
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_1__);
|
|
7013
|
+
/* harmony import */ var _faststore_ui__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(6652);
|
|
7014
|
+
/* harmony import */ var src_components_search_Filter__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(9044);
|
|
7015
|
+
/* harmony import */ var src_components_search_Sort__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(8723);
|
|
7016
|
+
/* harmony import */ var src_components_skeletons_FilterSkeleton__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(1159);
|
|
7017
|
+
/* harmony import */ var src_components_skeletons_ProductGridSkeleton__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(1708);
|
|
7018
|
+
/* harmony import */ var src_sdk_search_useDelayedFacets__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(4891);
|
|
7019
|
+
/* harmony import */ var src_sdk_search_useDelayedPagination__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(3332);
|
|
7020
|
+
/* harmony import */ var src_sdk_overrides_PageProvider__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(5953);
|
|
7021
|
+
/* harmony import */ var src_sdk_product_useProductsPrefetch__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(4923);
|
|
7022
|
+
/* harmony import */ var src_sdk_overrides_OverrideContext__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(5522);
|
|
7023
|
+
/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(997);
|
|
7024
|
+
/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_2__);
|
|
7025
|
+
var __webpack_async_dependencies__ = __webpack_handle_async_dependencies__([src_sdk_product_useProductsPrefetch__WEBPACK_IMPORTED_MODULE_10__]);
|
|
7026
|
+
src_sdk_product_useProductsPrefetch__WEBPACK_IMPORTED_MODULE_10__ = (__webpack_async_dependencies__.then ? (await __webpack_async_dependencies__)() : __webpack_async_dependencies__)[0];
|
|
7027
|
+
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; }
|
|
7028
|
+
|
|
7029
|
+
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; }
|
|
7030
|
+
|
|
7031
|
+
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; }
|
|
7032
|
+
|
|
7033
|
+
|
|
7034
|
+
|
|
7035
|
+
|
|
7036
|
+
|
|
7037
|
+
|
|
7038
|
+
|
|
7039
|
+
|
|
7040
|
+
|
|
7041
|
+
|
|
7042
|
+
|
|
7043
|
+
|
|
7044
|
+
|
|
7045
|
+
|
|
7046
|
+
|
|
7047
|
+
|
|
7048
|
+
const ProductGalleryPage = /*#__PURE__*/(0,react__WEBPACK_IMPORTED_MODULE_1__.lazy)(() => Promise.all(/* import() */[__webpack_require__.e(934), __webpack_require__.e(289)]).then(__webpack_require__.bind(__webpack_require__, 5289)));
|
|
7049
|
+
|
|
7050
|
+
const GalleryPageSkeleton = /*#__PURE__*/react_jsx_runtime__WEBPACK_IMPORTED_MODULE_2__.jsx(src_components_skeletons_ProductGridSkeleton__WEBPACK_IMPORTED_MODULE_3__/* ["default"] */ .Z, {
|
|
7051
|
+
loading: true
|
|
7052
|
+
});
|
|
7053
|
+
|
|
7054
|
+
function ProductGallery({
|
|
7055
|
+
title,
|
|
7056
|
+
searchTerm,
|
|
7057
|
+
totalCount,
|
|
7058
|
+
searchTermLabel,
|
|
7059
|
+
totalCountLabel,
|
|
7060
|
+
filter,
|
|
7061
|
+
previousPageButton,
|
|
7062
|
+
loadMorePageButton,
|
|
7063
|
+
sortBySelector,
|
|
7064
|
+
productCard
|
|
7065
|
+
}) {
|
|
7066
|
+
const {
|
|
7067
|
+
FilterButtonSkeleton,
|
|
7068
|
+
FilterIcon,
|
|
7069
|
+
LinkButtonNext,
|
|
7070
|
+
LinkButtonPrev,
|
|
7071
|
+
MobileFilterButton,
|
|
7072
|
+
PrevIcon,
|
|
7073
|
+
ResultsCountSkeleton,
|
|
7074
|
+
SortSkeleton
|
|
7075
|
+
} = (0,src_sdk_overrides_OverrideContext__WEBPACK_IMPORTED_MODULE_4__/* .useOverrideComponents */ .r3)();
|
|
7076
|
+
const {
|
|
7077
|
+
openFilter
|
|
7078
|
+
} = (0,_faststore_ui__WEBPACK_IMPORTED_MODULE_5__/* .useUI */ .l)();
|
|
7079
|
+
const {
|
|
7080
|
+
pages,
|
|
7081
|
+
addNextPage,
|
|
7082
|
+
addPrevPage,
|
|
7083
|
+
itemsPerPage
|
|
7084
|
+
} = (0,_faststore_sdk__WEBPACK_IMPORTED_MODULE_6__/* .useSearch */ .R)();
|
|
7085
|
+
const context = (0,src_sdk_overrides_PageProvider__WEBPACK_IMPORTED_MODULE_7__/* .usePage */ .qt)();
|
|
7086
|
+
const data = context?.data;
|
|
7087
|
+
const facets = (0,src_sdk_search_useDelayedFacets__WEBPACK_IMPORTED_MODULE_8__/* .useDelayedFacets */ .u)(data) ?? [];
|
|
7088
|
+
const {
|
|
7089
|
+
next,
|
|
7090
|
+
prev
|
|
7091
|
+
} = (0,src_sdk_search_useDelayedPagination__WEBPACK_IMPORTED_MODULE_9__/* .useDelayedPagination */ .g)(totalCount);
|
|
7092
|
+
(0,src_sdk_product_useProductsPrefetch__WEBPACK_IMPORTED_MODULE_10__/* .useProductsPrefetch */ .Fl)(prev ? prev.cursor : null);
|
|
7093
|
+
(0,src_sdk_product_useProductsPrefetch__WEBPACK_IMPORTED_MODULE_10__/* .useProductsPrefetch */ .Fl)(next ? next.cursor : null);
|
|
7094
|
+
const hasFacetsLoaded = Boolean(data?.search?.facets);
|
|
7095
|
+
const hasProductsLoaded = Boolean(data?.search?.products);
|
|
7096
|
+
return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_2__.jsxs)("section", {
|
|
7097
|
+
"data-testid": "product-gallery",
|
|
7098
|
+
"data-fs-product-listing": true,
|
|
7099
|
+
children: [searchTerm && /*#__PURE__*/react_jsx_runtime__WEBPACK_IMPORTED_MODULE_2__.jsx("header", {
|
|
7100
|
+
"data-fs-product-listing-search-term": true,
|
|
7101
|
+
"data-fs-content": "product-gallery",
|
|
7102
|
+
children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_2__.jsxs)("h1", {
|
|
7103
|
+
children: [searchTermLabel, " ", /*#__PURE__*/react_jsx_runtime__WEBPACK_IMPORTED_MODULE_2__.jsx("span", {
|
|
7104
|
+
children: searchTerm
|
|
7105
|
+
})]
|
|
7106
|
+
})
|
|
7107
|
+
}), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_2__.jsxs)("div", {
|
|
7108
|
+
"data-fs-product-listing-content-grid": true,
|
|
7109
|
+
"data-fs-content": "product-gallery",
|
|
7110
|
+
children: [/*#__PURE__*/react_jsx_runtime__WEBPACK_IMPORTED_MODULE_2__.jsx("div", {
|
|
7111
|
+
"data-fs-product-listing-filters": true,
|
|
7112
|
+
children: /*#__PURE__*/react_jsx_runtime__WEBPACK_IMPORTED_MODULE_2__.jsx(src_components_skeletons_FilterSkeleton__WEBPACK_IMPORTED_MODULE_11__/* ["default"] */ .Z, {
|
|
7113
|
+
loading: !hasFacetsLoaded,
|
|
7114
|
+
children: hasFacetsLoaded && facets?.length > 0 && /*#__PURE__*/react_jsx_runtime__WEBPACK_IMPORTED_MODULE_2__.jsx(src_components_search_Filter__WEBPACK_IMPORTED_MODULE_12__/* ["default"] */ .Z, {
|
|
7115
|
+
facets: facets,
|
|
7116
|
+
filter: filter
|
|
7117
|
+
})
|
|
7118
|
+
})
|
|
7119
|
+
}), /*#__PURE__*/react_jsx_runtime__WEBPACK_IMPORTED_MODULE_2__.jsx("div", {
|
|
7120
|
+
"data-fs-product-listing-results-count": true,
|
|
7121
|
+
"data-count": totalCount,
|
|
7122
|
+
children: /*#__PURE__*/react_jsx_runtime__WEBPACK_IMPORTED_MODULE_2__.jsx(ResultsCountSkeleton.Component, _objectSpread(_objectSpread({
|
|
7123
|
+
"data-fs-product-listing-results-count-skeleton": true,
|
|
7124
|
+
size: {
|
|
7125
|
+
width: '100%',
|
|
7126
|
+
height: '1.5rem'
|
|
7127
|
+
}
|
|
7128
|
+
}, ResultsCountSkeleton.props), {}, {
|
|
7129
|
+
// Dynamic props shouldn't be overridable
|
|
7130
|
+
// This decision can be reviewed later if needed
|
|
7131
|
+
loading: !hasProductsLoaded,
|
|
7132
|
+
children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_2__.jsxs)("h2", {
|
|
7133
|
+
"data-testid": "total-product-count",
|
|
7134
|
+
children: [totalCount, " ", totalCountLabel]
|
|
7135
|
+
})
|
|
7136
|
+
}))
|
|
7137
|
+
}), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_2__.jsxs)("div", {
|
|
7138
|
+
"data-fs-product-listing-sort": true,
|
|
7139
|
+
children: [/*#__PURE__*/react_jsx_runtime__WEBPACK_IMPORTED_MODULE_2__.jsx(SortSkeleton.Component, _objectSpread(_objectSpread({
|
|
7140
|
+
"data-fs-product-listing-sort-skeleton": true,
|
|
7141
|
+
size: {
|
|
7142
|
+
width: 'auto',
|
|
7143
|
+
height: '1.5rem'
|
|
7144
|
+
}
|
|
7145
|
+
}, SortSkeleton.props), {}, {
|
|
7146
|
+
// Dynamic props shouldn't be overridable
|
|
7147
|
+
// This decision can be reviewed later if needed
|
|
7148
|
+
loading: !hasProductsLoaded,
|
|
7149
|
+
children: /*#__PURE__*/react_jsx_runtime__WEBPACK_IMPORTED_MODULE_2__.jsx(src_components_search_Sort__WEBPACK_IMPORTED_MODULE_13__/* ["default"] */ .Z, {
|
|
7150
|
+
label: sortBySelector?.label,
|
|
7151
|
+
options: sortBySelector?.options
|
|
7152
|
+
})
|
|
7153
|
+
})), /*#__PURE__*/react_jsx_runtime__WEBPACK_IMPORTED_MODULE_2__.jsx(FilterButtonSkeleton.Component, _objectSpread(_objectSpread({
|
|
7154
|
+
"data-fs-product-listing-filter-button-skeleton": true,
|
|
7155
|
+
size: {
|
|
7156
|
+
width: '6rem',
|
|
7157
|
+
height: '1.5rem'
|
|
7158
|
+
}
|
|
7159
|
+
}, FilterButtonSkeleton.props), {}, {
|
|
7160
|
+
// Dynamic props shouldn't be overridable
|
|
7161
|
+
// This decision can be reviewed later if needed
|
|
7162
|
+
loading: !hasFacetsLoaded,
|
|
7163
|
+
children: hasFacetsLoaded && facets?.length > 0 && /*#__PURE__*/react_jsx_runtime__WEBPACK_IMPORTED_MODULE_2__.jsx(MobileFilterButton.Component, _objectSpread(_objectSpread({
|
|
7164
|
+
variant: "tertiary",
|
|
7165
|
+
"data-testid": "open-filter-button",
|
|
7166
|
+
icon: /*#__PURE__*/react_jsx_runtime__WEBPACK_IMPORTED_MODULE_2__.jsx(FilterIcon.Component, _objectSpread(_objectSpread({
|
|
7167
|
+
width: 16,
|
|
7168
|
+
height: 16
|
|
7169
|
+
}, FilterIcon.props), {}, {
|
|
7170
|
+
name: filter?.mobileOnly?.filterButton?.icon?.icon ?? FilterIcon.props.name,
|
|
7171
|
+
"aria-label": filter?.mobileOnly?.filterButton?.icon?.alt ?? FilterIcon.props['aria-label']
|
|
7172
|
+
})),
|
|
7173
|
+
iconPosition: "left"
|
|
7174
|
+
}, MobileFilterButton.props), {}, {
|
|
7175
|
+
// Dynamic props shouldn't be overridable
|
|
7176
|
+
// This decision can be reviewed later if needed
|
|
7177
|
+
onClick: openFilter,
|
|
7178
|
+
children: filter?.mobileOnly?.filterButton?.label
|
|
7179
|
+
}))
|
|
7180
|
+
}))]
|
|
7181
|
+
}), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_2__.jsxs)("div", {
|
|
7182
|
+
"data-fs-product-listing-results": true,
|
|
7183
|
+
children: [prev !== false && /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_2__.jsxs)("div", {
|
|
7184
|
+
"data-fs-product-listing-pagination": "top",
|
|
7185
|
+
children: [/*#__PURE__*/react_jsx_runtime__WEBPACK_IMPORTED_MODULE_2__.jsx(next_seo__WEBPACK_IMPORTED_MODULE_0__.NextSeo, {
|
|
7186
|
+
additionalLinkTags: [{
|
|
7187
|
+
rel: 'prev',
|
|
7188
|
+
href: prev.link
|
|
7189
|
+
}]
|
|
7190
|
+
}), /*#__PURE__*/react_jsx_runtime__WEBPACK_IMPORTED_MODULE_2__.jsx(LinkButtonPrev.Component, _objectSpread(_objectSpread({
|
|
7191
|
+
rel: "prev",
|
|
7192
|
+
variant: "secondary",
|
|
7193
|
+
iconPosition: "left",
|
|
7194
|
+
icon: /*#__PURE__*/react_jsx_runtime__WEBPACK_IMPORTED_MODULE_2__.jsx(PrevIcon.Component, _objectSpread(_objectSpread({
|
|
7195
|
+
width: 16,
|
|
7196
|
+
height: 16,
|
|
7197
|
+
weight: "bold"
|
|
7198
|
+
}, PrevIcon.props), {}, {
|
|
7199
|
+
name: previousPageButton?.icon?.icon ?? PrevIcon.props.name,
|
|
7200
|
+
"aria-label": previousPageButton?.icon?.alt ?? previousPageButton?.label ?? PrevIcon.props['aria-label']
|
|
7201
|
+
}))
|
|
7202
|
+
}, LinkButtonPrev.props), {}, {
|
|
7203
|
+
// Dynamic props shouldn't be overridable
|
|
7204
|
+
// This decision can be reviewed later if needed
|
|
7205
|
+
onClick: e => {
|
|
7206
|
+
e.currentTarget.blur();
|
|
7207
|
+
e.preventDefault();
|
|
7208
|
+
addPrevPage();
|
|
7209
|
+
},
|
|
7210
|
+
href: prev.link,
|
|
7211
|
+
children: previousPageButton?.label
|
|
7212
|
+
}))]
|
|
7213
|
+
}), hasProductsLoaded ? /*#__PURE__*/react_jsx_runtime__WEBPACK_IMPORTED_MODULE_2__.jsx(react__WEBPACK_IMPORTED_MODULE_1__.Suspense, {
|
|
7214
|
+
fallback: GalleryPageSkeleton,
|
|
7215
|
+
children: pages.map(page => /*#__PURE__*/react_jsx_runtime__WEBPACK_IMPORTED_MODULE_2__.jsx(ProductGalleryPage, {
|
|
7216
|
+
page: page,
|
|
7217
|
+
title: title,
|
|
7218
|
+
productCard: productCard,
|
|
7219
|
+
itemsPerPage: itemsPerPage
|
|
7220
|
+
}, `gallery-page-${page}`))
|
|
7221
|
+
}) : GalleryPageSkeleton, next !== false && /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_2__.jsxs)("div", {
|
|
7222
|
+
"data-fs-product-listing-pagination": "bottom",
|
|
7223
|
+
children: [/*#__PURE__*/react_jsx_runtime__WEBPACK_IMPORTED_MODULE_2__.jsx(next_seo__WEBPACK_IMPORTED_MODULE_0__.NextSeo, {
|
|
7224
|
+
additionalLinkTags: [{
|
|
7225
|
+
rel: 'next',
|
|
7226
|
+
href: next.link
|
|
7227
|
+
}]
|
|
7228
|
+
}), /*#__PURE__*/react_jsx_runtime__WEBPACK_IMPORTED_MODULE_2__.jsx(LinkButtonNext.Component, _objectSpread(_objectSpread({
|
|
7229
|
+
testId: "show-more",
|
|
7230
|
+
rel: "next",
|
|
7231
|
+
variant: "secondary"
|
|
7232
|
+
}, LinkButtonNext.props), {}, {
|
|
7233
|
+
// Dynamic props shouldn't be overridable
|
|
7234
|
+
// This decision can be reviewed later if needed
|
|
7235
|
+
onClick: e => {
|
|
7236
|
+
e.currentTarget.blur();
|
|
7237
|
+
e.preventDefault();
|
|
7238
|
+
addNextPage();
|
|
7239
|
+
},
|
|
7240
|
+
href: next.link,
|
|
7241
|
+
children: loadMorePageButton?.label
|
|
7242
|
+
}))]
|
|
7243
|
+
})]
|
|
7244
|
+
})]
|
|
7245
|
+
})]
|
|
6038
7246
|
});
|
|
6039
7247
|
}
|
|
6040
7248
|
|
|
6041
|
-
/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (
|
|
7249
|
+
/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (ProductGallery);
|
|
7250
|
+
__webpack_async_result__();
|
|
7251
|
+
} catch(e) { __webpack_async_result__(e); } });
|
|
6042
7252
|
|
|
6043
7253
|
/***/ }),
|
|
6044
7254
|
|
|
@@ -6467,6 +7677,47 @@ class MissingContentError extends Error {
|
|
|
6467
7677
|
|
|
6468
7678
|
/***/ }),
|
|
6469
7679
|
|
|
7680
|
+
/***/ 2953:
|
|
7681
|
+
/***/ ((module, __webpack_exports__, __webpack_require__) => {
|
|
7682
|
+
|
|
7683
|
+
"use strict";
|
|
7684
|
+
__webpack_require__.a(module, async (__webpack_handle_async_dependencies__, __webpack_async_result__) => { try {
|
|
7685
|
+
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
|
|
7686
|
+
/* harmony export */ "p": () => (/* binding */ prefetchQuery)
|
|
7687
|
+
/* harmony export */ });
|
|
7688
|
+
/* harmony import */ var swr__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(5941);
|
|
7689
|
+
/* harmony import */ var _request__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(180);
|
|
7690
|
+
/* harmony import */ var _useQuery__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(7732);
|
|
7691
|
+
var __webpack_async_dependencies__ = __webpack_handle_async_dependencies__([swr__WEBPACK_IMPORTED_MODULE_0__, _useQuery__WEBPACK_IMPORTED_MODULE_1__]);
|
|
7692
|
+
([swr__WEBPACK_IMPORTED_MODULE_0__, _useQuery__WEBPACK_IMPORTED_MODULE_1__] = __webpack_async_dependencies__.then ? (await __webpack_async_dependencies__)() : __webpack_async_dependencies__);
|
|
7693
|
+
const _excluded = ["cache"];
|
|
7694
|
+
|
|
7695
|
+
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; }
|
|
7696
|
+
|
|
7697
|
+
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; }
|
|
7698
|
+
|
|
7699
|
+
|
|
7700
|
+
|
|
7701
|
+
|
|
7702
|
+
const prefetchQuery = (operationName, variables, _ref) => {
|
|
7703
|
+
let {
|
|
7704
|
+
cache
|
|
7705
|
+
} = _ref,
|
|
7706
|
+
options = _objectWithoutProperties(_ref, _excluded);
|
|
7707
|
+
|
|
7708
|
+
const key = (0,_useQuery__WEBPACK_IMPORTED_MODULE_1__/* .getKey */ .km)(operationName, variables);
|
|
7709
|
+
|
|
7710
|
+
if (cache.get(key)) {
|
|
7711
|
+
return;
|
|
7712
|
+
}
|
|
7713
|
+
|
|
7714
|
+
(0,swr__WEBPACK_IMPORTED_MODULE_0__.mutate)(key, (0,_request__WEBPACK_IMPORTED_MODULE_2__/* .request */ .W)(operationName, variables, options));
|
|
7715
|
+
};
|
|
7716
|
+
__webpack_async_result__();
|
|
7717
|
+
} catch(e) { __webpack_async_result__(e); } });
|
|
7718
|
+
|
|
7719
|
+
/***/ }),
|
|
7720
|
+
|
|
6470
7721
|
/***/ 180:
|
|
6471
7722
|
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
6472
7723
|
|
|
@@ -6752,18 +8003,22 @@ __webpack_require__.a(module, async (__webpack_handle_async_dependencies__, __we
|
|
|
6752
8003
|
/* harmony import */ var _components_sections_BannerText__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(9315);
|
|
6753
8004
|
/* harmony import */ var _components_sections_Breadcrumb__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(341);
|
|
6754
8005
|
/* harmony import */ var _components_sections_Hero__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(2849);
|
|
6755
|
-
/* harmony import */ var
|
|
8006
|
+
/* harmony import */ var _components_sections_ProductShelf__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(8569);
|
|
6756
8007
|
/* harmony import */ var _components_sections_CrossSellingShelf__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(994);
|
|
6757
8008
|
/* harmony import */ var _components_sections_ProductDetails__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(8663);
|
|
6758
|
-
/* harmony import */ var
|
|
6759
|
-
/* harmony import */ var
|
|
6760
|
-
/* harmony import */ var
|
|
6761
|
-
/* harmony import */ var
|
|
6762
|
-
/* harmony import */ var
|
|
6763
|
-
/* harmony import */ var
|
|
6764
|
-
/* harmony import */ var
|
|
6765
|
-
var
|
|
6766
|
-
|
|
8009
|
+
/* harmony import */ var _components_sections_ProductGallery__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(8273);
|
|
8010
|
+
/* harmony import */ var _components_sections_Alert_DefaultComponents__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(6948);
|
|
8011
|
+
/* harmony import */ var _components_sections_BannerText_DefaultComponents__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(719);
|
|
8012
|
+
/* harmony import */ var src_components_sections_Breadcrumb_DefaultComponents__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(7649);
|
|
8013
|
+
/* harmony import */ var src_components_sections_CrossSellingShelf_DefaultComponents__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(8435);
|
|
8014
|
+
/* harmony import */ var _components_sections_Hero_DefaultComponents__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(9569);
|
|
8015
|
+
/* harmony import */ var _components_sections_ProductDetails_DefaultComponents__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(1307);
|
|
8016
|
+
/* harmony import */ var _components_sections_ProductGallery_DefaultComponents__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(5366);
|
|
8017
|
+
/* harmony import */ var _components_sections_ProductShelf_DefaultComponents__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(2432);
|
|
8018
|
+
var __webpack_async_dependencies__ = __webpack_handle_async_dependencies__([_components_sections_CrossSellingShelf__WEBPACK_IMPORTED_MODULE_3__, _components_sections_ProductGallery__WEBPACK_IMPORTED_MODULE_6__, _components_sections_ProductShelf__WEBPACK_IMPORTED_MODULE_7__]);
|
|
8019
|
+
([_components_sections_CrossSellingShelf__WEBPACK_IMPORTED_MODULE_3__, _components_sections_ProductGallery__WEBPACK_IMPORTED_MODULE_6__, _components_sections_ProductShelf__WEBPACK_IMPORTED_MODULE_7__] = __webpack_async_dependencies__.then ? (await __webpack_async_dependencies__)() : __webpack_async_dependencies__);
|
|
8020
|
+
|
|
8021
|
+
|
|
6767
8022
|
|
|
6768
8023
|
|
|
6769
8024
|
|
|
@@ -6785,16 +8040,18 @@ const Sections = {
|
|
|
6785
8040
|
CrossSellingShelf: _components_sections_CrossSellingShelf__WEBPACK_IMPORTED_MODULE_3__/* ["default"] */ .Z,
|
|
6786
8041
|
Hero: _components_sections_Hero__WEBPACK_IMPORTED_MODULE_4__/* ["default"] */ .Z,
|
|
6787
8042
|
ProductDetails: _components_sections_ProductDetails__WEBPACK_IMPORTED_MODULE_5__/* ["default"] */ .Z,
|
|
6788
|
-
|
|
8043
|
+
ProductGallery: _components_sections_ProductGallery__WEBPACK_IMPORTED_MODULE_6__/* ["default"] */ .Z,
|
|
8044
|
+
ProductShelf: _components_sections_ProductShelf__WEBPACK_IMPORTED_MODULE_7__/* ["default"] */ .Z
|
|
6789
8045
|
};
|
|
6790
8046
|
const DefaultComponents = {
|
|
6791
|
-
Alert:
|
|
6792
|
-
BannerText:
|
|
6793
|
-
Breadcrumb:
|
|
6794
|
-
CrossSellingShelf:
|
|
6795
|
-
Hero:
|
|
6796
|
-
ProductDetails:
|
|
6797
|
-
|
|
8047
|
+
Alert: _components_sections_Alert_DefaultComponents__WEBPACK_IMPORTED_MODULE_8__/* .AlertDefaultComponents */ .p,
|
|
8048
|
+
BannerText: _components_sections_BannerText_DefaultComponents__WEBPACK_IMPORTED_MODULE_9__/* .BannerTextDefaultComponents */ .b,
|
|
8049
|
+
Breadcrumb: src_components_sections_Breadcrumb_DefaultComponents__WEBPACK_IMPORTED_MODULE_10__/* .BreadcrumbDefaultComponents */ .Q,
|
|
8050
|
+
CrossSellingShelf: src_components_sections_CrossSellingShelf_DefaultComponents__WEBPACK_IMPORTED_MODULE_11__/* .CrossSellingShelfDefaultComponents */ .q,
|
|
8051
|
+
Hero: _components_sections_Hero_DefaultComponents__WEBPACK_IMPORTED_MODULE_12__/* .HeroDefaultComponents */ .O,
|
|
8052
|
+
ProductDetails: _components_sections_ProductDetails_DefaultComponents__WEBPACK_IMPORTED_MODULE_13__/* .ProductDetailsDefaultComponents */ .l,
|
|
8053
|
+
ProductGallery: _components_sections_ProductGallery_DefaultComponents__WEBPACK_IMPORTED_MODULE_14__/* .ProductGalleryDefaultComponents */ .h,
|
|
8054
|
+
ProductShelf: _components_sections_ProductShelf_DefaultComponents__WEBPACK_IMPORTED_MODULE_15__/* .ProductShelfDefaultComponents */ .B
|
|
6798
8055
|
};
|
|
6799
8056
|
__webpack_async_result__();
|
|
6800
8057
|
} catch(e) { __webpack_async_result__(e); } });
|
|
@@ -6948,6 +8205,71 @@ const useProductLink = ({
|
|
|
6948
8205
|
|
|
6949
8206
|
/***/ }),
|
|
6950
8207
|
|
|
8208
|
+
/***/ 4923:
|
|
8209
|
+
/***/ ((module, __webpack_exports__, __webpack_require__) => {
|
|
8210
|
+
|
|
8211
|
+
"use strict";
|
|
8212
|
+
__webpack_require__.a(module, async (__webpack_handle_async_dependencies__, __webpack_async_result__) => { try {
|
|
8213
|
+
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
|
|
8214
|
+
/* harmony export */ "Fl": () => (/* binding */ useProductsPrefetch)
|
|
8215
|
+
/* harmony export */ });
|
|
8216
|
+
/* unused harmony exports query, useProductsQueryPrefetch */
|
|
8217
|
+
/* harmony import */ var _faststore_sdk__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(3221);
|
|
8218
|
+
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(6689);
|
|
8219
|
+
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);
|
|
8220
|
+
/* harmony import */ var swr__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(5941);
|
|
8221
|
+
/* harmony import */ var _graphql_prefetchQuery__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(2953);
|
|
8222
|
+
/* harmony import */ var _useLocalizedVariables__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(2523);
|
|
8223
|
+
var __webpack_async_dependencies__ = __webpack_handle_async_dependencies__([swr__WEBPACK_IMPORTED_MODULE_1__, _graphql_prefetchQuery__WEBPACK_IMPORTED_MODULE_3__]);
|
|
8224
|
+
([swr__WEBPACK_IMPORTED_MODULE_1__, _graphql_prefetchQuery__WEBPACK_IMPORTED_MODULE_3__] = __webpack_async_dependencies__.then ? (await __webpack_async_dependencies__)() : __webpack_async_dependencies__);
|
|
8225
|
+
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; }
|
|
8226
|
+
|
|
8227
|
+
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; }
|
|
8228
|
+
|
|
8229
|
+
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; }
|
|
8230
|
+
|
|
8231
|
+
|
|
8232
|
+
|
|
8233
|
+
|
|
8234
|
+
|
|
8235
|
+
|
|
8236
|
+
const query = "ClientManyProductsQuery";
|
|
8237
|
+
const useProductsQueryPrefetch = (variables, options) => {
|
|
8238
|
+
const localizedVariables = (0,_useLocalizedVariables__WEBPACK_IMPORTED_MODULE_2__/* .useLocalizedVariables */ .y)(variables);
|
|
8239
|
+
const {
|
|
8240
|
+
cache
|
|
8241
|
+
} = (0,swr__WEBPACK_IMPORTED_MODULE_1__.useSWRConfig)();
|
|
8242
|
+
return (0,react__WEBPACK_IMPORTED_MODULE_0__.useCallback)(() => (0,_graphql_prefetchQuery__WEBPACK_IMPORTED_MODULE_3__/* .prefetchQuery */ .p)(query, localizedVariables, _objectSpread({
|
|
8243
|
+
cache
|
|
8244
|
+
}, options)), [localizedVariables, cache, options]);
|
|
8245
|
+
};
|
|
8246
|
+
const useProductsPrefetch = page => {
|
|
8247
|
+
const {
|
|
8248
|
+
itemsPerPage,
|
|
8249
|
+
state: {
|
|
8250
|
+
sort,
|
|
8251
|
+
term,
|
|
8252
|
+
selectedFacets
|
|
8253
|
+
}
|
|
8254
|
+
} = (0,_faststore_sdk__WEBPACK_IMPORTED_MODULE_4__/* .useSearch */ .R)();
|
|
8255
|
+
const prefetch = useProductsQueryPrefetch({
|
|
8256
|
+
first: itemsPerPage,
|
|
8257
|
+
after: (itemsPerPage * (page ?? 0)).toString(),
|
|
8258
|
+
sort,
|
|
8259
|
+
term: term ?? '',
|
|
8260
|
+
selectedFacets
|
|
8261
|
+
});
|
|
8262
|
+
(0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(() => {
|
|
8263
|
+
if (page !== null) {
|
|
8264
|
+
prefetch();
|
|
8265
|
+
}
|
|
8266
|
+
}, [page, prefetch]);
|
|
8267
|
+
};
|
|
8268
|
+
__webpack_async_result__();
|
|
8269
|
+
} catch(e) { __webpack_async_result__(e); } });
|
|
8270
|
+
|
|
8271
|
+
/***/ }),
|
|
8272
|
+
|
|
6951
8273
|
/***/ 4867:
|
|
6952
8274
|
/***/ ((module, __webpack_exports__, __webpack_require__) => {
|
|
6953
8275
|
|
|
@@ -7016,6 +8338,90 @@ const formatSearchPath = ({
|
|
|
7016
8338
|
|
|
7017
8339
|
/***/ }),
|
|
7018
8340
|
|
|
8341
|
+
/***/ 4891:
|
|
8342
|
+
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
8343
|
+
|
|
8344
|
+
"use strict";
|
|
8345
|
+
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
|
|
8346
|
+
/* harmony export */ "u": () => (/* binding */ useDelayedFacets)
|
|
8347
|
+
/* harmony export */ });
|
|
8348
|
+
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(6689);
|
|
8349
|
+
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);
|
|
8350
|
+
|
|
8351
|
+
const useDelayedFacets = data => {
|
|
8352
|
+
const facets = (0,react__WEBPACK_IMPORTED_MODULE_0__.useRef)([]);
|
|
8353
|
+
return (0,react__WEBPACK_IMPORTED_MODULE_0__.useMemo)(() => {
|
|
8354
|
+
if (data) {
|
|
8355
|
+
facets.current = data.search?.facets;
|
|
8356
|
+
}
|
|
8357
|
+
|
|
8358
|
+
return facets.current;
|
|
8359
|
+
}, [data, facets]);
|
|
8360
|
+
};
|
|
8361
|
+
|
|
8362
|
+
/***/ }),
|
|
8363
|
+
|
|
8364
|
+
/***/ 3332:
|
|
8365
|
+
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
8366
|
+
|
|
8367
|
+
"use strict";
|
|
8368
|
+
|
|
8369
|
+
// EXPORTS
|
|
8370
|
+
__webpack_require__.d(__webpack_exports__, {
|
|
8371
|
+
"g": () => (/* binding */ useDelayedPagination)
|
|
8372
|
+
});
|
|
8373
|
+
|
|
8374
|
+
// EXTERNAL MODULE: external "react"
|
|
8375
|
+
var external_react_ = __webpack_require__(6689);
|
|
8376
|
+
// EXTERNAL MODULE: ../sdk/dist/utils/format.js
|
|
8377
|
+
var format = __webpack_require__(2339);
|
|
8378
|
+
// EXTERNAL MODULE: ../sdk/dist/search/useSearch.js + 1 modules
|
|
8379
|
+
var useSearch = __webpack_require__(3221);
|
|
8380
|
+
;// CONCATENATED MODULE: ../sdk/dist/search/usePagination.js
|
|
8381
|
+
|
|
8382
|
+
|
|
8383
|
+
|
|
8384
|
+
const getLink = (state) => {
|
|
8385
|
+
const { pathname, search } = (0,format/* default */.Z)(state);
|
|
8386
|
+
return `${pathname}${search}`;
|
|
8387
|
+
};
|
|
8388
|
+
const usePagination = (totalItems) => {
|
|
8389
|
+
const { pages, itemsPerPage, state } = (0,useSearch/* useSearch */.R)();
|
|
8390
|
+
const total = Math.ceil(totalItems / itemsPerPage);
|
|
8391
|
+
const next = Number(pages[pages.length - 1]) + 1;
|
|
8392
|
+
const prev = pages[0] - 1;
|
|
8393
|
+
return (0,external_react_.useMemo)(() => ({
|
|
8394
|
+
next: next < total && {
|
|
8395
|
+
cursor: next,
|
|
8396
|
+
link: getLink({ ...state, page: next }),
|
|
8397
|
+
},
|
|
8398
|
+
prev: prev > -1 && {
|
|
8399
|
+
cursor: prev,
|
|
8400
|
+
link: getLink({ ...state, page: prev }),
|
|
8401
|
+
},
|
|
8402
|
+
}), [next, prev, state, total]);
|
|
8403
|
+
};
|
|
8404
|
+
//# sourceMappingURL=usePagination.js.map
|
|
8405
|
+
;// CONCATENATED MODULE: ./src/sdk/search/useDelayedPagination.ts
|
|
8406
|
+
|
|
8407
|
+
|
|
8408
|
+
const useDelayedPagination = totalCount => {
|
|
8409
|
+
const pagination = usePagination(totalCount);
|
|
8410
|
+
const {
|
|
8411
|
+
0: pag,
|
|
8412
|
+
1: setPag
|
|
8413
|
+
} = (0,external_react_.useState)(() => ({
|
|
8414
|
+
next: false,
|
|
8415
|
+
prev: false
|
|
8416
|
+
}));
|
|
8417
|
+
(0,external_react_.useEffect)(() => {
|
|
8418
|
+
setPag(pagination);
|
|
8419
|
+
}, [pagination]);
|
|
8420
|
+
return pag;
|
|
8421
|
+
};
|
|
8422
|
+
|
|
8423
|
+
/***/ }),
|
|
8424
|
+
|
|
7019
8425
|
/***/ 5098:
|
|
7020
8426
|
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
7021
8427
|
|
|
@@ -7461,6 +8867,18 @@ module.exports = {
|
|
|
7461
8867
|
};
|
|
7462
8868
|
|
|
7463
8869
|
|
|
8870
|
+
/***/ }),
|
|
8871
|
+
|
|
8872
|
+
/***/ 4614:
|
|
8873
|
+
/***/ ((module) => {
|
|
8874
|
+
|
|
8875
|
+
// Exports
|
|
8876
|
+
module.exports = {
|
|
8877
|
+
"section": "section_section__EYj3x",
|
|
8878
|
+
"loading": "section_loading__Bzogw"
|
|
8879
|
+
};
|
|
8880
|
+
|
|
8881
|
+
|
|
7464
8882
|
/***/ }),
|
|
7465
8883
|
|
|
7466
8884
|
/***/ 6627:
|
|
@@ -7563,6 +8981,202 @@ const sendAnalyticsEvent = (event) => {
|
|
|
7563
8981
|
|
|
7564
8982
|
/***/ }),
|
|
7565
8983
|
|
|
8984
|
+
/***/ 1197:
|
|
8985
|
+
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
8986
|
+
|
|
8987
|
+
"use strict";
|
|
8988
|
+
|
|
8989
|
+
// EXPORTS
|
|
8990
|
+
__webpack_require__.d(__webpack_exports__, {
|
|
8991
|
+
"_": () => (/* binding */ Context),
|
|
8992
|
+
"z": () => (/* binding */ Provider)
|
|
8993
|
+
});
|
|
8994
|
+
|
|
8995
|
+
// EXTERNAL MODULE: external "react"
|
|
8996
|
+
var external_react_ = __webpack_require__(6689);
|
|
8997
|
+
var external_react_default = /*#__PURE__*/__webpack_require__.n(external_react_);
|
|
8998
|
+
// EXTERNAL MODULE: ../sdk/dist/utils/error.js
|
|
8999
|
+
var error = __webpack_require__(2254);
|
|
9000
|
+
;// CONCATENATED MODULE: ../sdk/dist/search/useInfiniteSearchState.js
|
|
9001
|
+
|
|
9002
|
+
|
|
9003
|
+
// Save the array containing loaded pages before navigating away from the PLP
|
|
9004
|
+
function setPagesSessionStorage(pages) {
|
|
9005
|
+
try {
|
|
9006
|
+
// Uses the key to identify a PLP
|
|
9007
|
+
const stateKey = window.history.state?.key;
|
|
9008
|
+
if (!stateKey) {
|
|
9009
|
+
return;
|
|
9010
|
+
}
|
|
9011
|
+
const storageKey = `__fs_gallery_page_${stateKey}`;
|
|
9012
|
+
sessionStorage.setItem(storageKey, JSON.stringify(pages));
|
|
9013
|
+
}
|
|
9014
|
+
catch (_) {
|
|
9015
|
+
return;
|
|
9016
|
+
}
|
|
9017
|
+
}
|
|
9018
|
+
function getPagesFromSessionStorage() {
|
|
9019
|
+
try {
|
|
9020
|
+
const stateKey = window.history.state?.key;
|
|
9021
|
+
if (!stateKey) {
|
|
9022
|
+
return null;
|
|
9023
|
+
}
|
|
9024
|
+
const storageKey = `__fs_gallery_page_${stateKey}`;
|
|
9025
|
+
const item = sessionStorage.getItem(storageKey);
|
|
9026
|
+
return item ? JSON.parse(item) : null;
|
|
9027
|
+
}
|
|
9028
|
+
catch (_) {
|
|
9029
|
+
return null;
|
|
9030
|
+
}
|
|
9031
|
+
}
|
|
9032
|
+
const reducer = (state, action) => {
|
|
9033
|
+
switch (action.type) {
|
|
9034
|
+
case 'addPrev': {
|
|
9035
|
+
const prev = state[0] - 1;
|
|
9036
|
+
const newState = [prev, ...state];
|
|
9037
|
+
setPagesSessionStorage(newState);
|
|
9038
|
+
return newState;
|
|
9039
|
+
}
|
|
9040
|
+
case 'addNext': {
|
|
9041
|
+
const next = Number(state[state.length - 1]) + 1;
|
|
9042
|
+
const newState = [...state, next];
|
|
9043
|
+
setPagesSessionStorage(newState);
|
|
9044
|
+
return newState;
|
|
9045
|
+
}
|
|
9046
|
+
case 'reset': {
|
|
9047
|
+
const { payload } = action;
|
|
9048
|
+
const newState = [payload];
|
|
9049
|
+
setPagesSessionStorage(newState);
|
|
9050
|
+
return newState;
|
|
9051
|
+
}
|
|
9052
|
+
default:
|
|
9053
|
+
throw new error/* SDKError */.q('Unknown action for infinite search');
|
|
9054
|
+
}
|
|
9055
|
+
};
|
|
9056
|
+
const useSearchInfiniteState = (initialPage) => {
|
|
9057
|
+
const [pages, dispatch] = (0,external_react_.useReducer)(reducer, undefined, () => getPagesFromSessionStorage() ?? [initialPage]);
|
|
9058
|
+
const actions = (0,external_react_.useMemo)(() => ({
|
|
9059
|
+
addPrevPage: () => dispatch({ type: 'addPrev' }),
|
|
9060
|
+
addNextPage: () => dispatch({ type: 'addNext' }),
|
|
9061
|
+
resetInfiniteScroll: (page) => dispatch({ type: 'reset', payload: page }),
|
|
9062
|
+
}), []);
|
|
9063
|
+
return { pages, ...actions };
|
|
9064
|
+
};
|
|
9065
|
+
//# sourceMappingURL=useInfiniteSearchState.js.map
|
|
9066
|
+
// EXTERNAL MODULE: ../sdk/dist/search/useSearchState.js
|
|
9067
|
+
var useSearchState = __webpack_require__(2524);
|
|
9068
|
+
;// CONCATENATED MODULE: ../sdk/dist/search/Provider.js
|
|
9069
|
+
|
|
9070
|
+
|
|
9071
|
+
|
|
9072
|
+
const Context = (0,external_react_.createContext)(undefined);
|
|
9073
|
+
const Provider = ({ children, itemsPerPage, onChange, ...rest }) => {
|
|
9074
|
+
const { state, ...searchActions } = (0,useSearchState/* useSearchState */.X)(rest, onChange);
|
|
9075
|
+
const { pages, ...infiniteActions } = useSearchInfiniteState(state.page);
|
|
9076
|
+
const value = (0,external_react_.useMemo)(() => ({
|
|
9077
|
+
state,
|
|
9078
|
+
...searchActions,
|
|
9079
|
+
pages,
|
|
9080
|
+
...infiniteActions,
|
|
9081
|
+
itemsPerPage,
|
|
9082
|
+
}), [infiniteActions, itemsPerPage, pages, searchActions, state]);
|
|
9083
|
+
return external_react_default().createElement(Context.Provider, { value: value }, children);
|
|
9084
|
+
};
|
|
9085
|
+
//# sourceMappingURL=Provider.js.map
|
|
9086
|
+
|
|
9087
|
+
/***/ }),
|
|
9088
|
+
|
|
9089
|
+
/***/ 8492:
|
|
9090
|
+
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
9091
|
+
|
|
9092
|
+
"use strict";
|
|
9093
|
+
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
|
|
9094
|
+
/* harmony export */ "uL": () => (/* binding */ setFacet),
|
|
9095
|
+
/* harmony export */ "wB": () => (/* binding */ toggleFacet),
|
|
9096
|
+
/* harmony export */ "wb": () => (/* binding */ isSearchSort)
|
|
9097
|
+
/* harmony export */ });
|
|
9098
|
+
/* unused harmony exports removeFacet, toggleFacets */
|
|
9099
|
+
/* harmony import */ var _utils_error__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(2254);
|
|
9100
|
+
|
|
9101
|
+
const sortKeys = new Set([
|
|
9102
|
+
'price_desc',
|
|
9103
|
+
'price_asc',
|
|
9104
|
+
'orders_desc',
|
|
9105
|
+
'name_desc',
|
|
9106
|
+
'name_asc',
|
|
9107
|
+
'release_desc',
|
|
9108
|
+
'discount_desc',
|
|
9109
|
+
'score_desc',
|
|
9110
|
+
]);
|
|
9111
|
+
const isSearchSort = (x) => sortKeys.has(x);
|
|
9112
|
+
const removeFacet = (facets, facet) => {
|
|
9113
|
+
const { value } = facet;
|
|
9114
|
+
const index = facets.findIndex((x) => x.value === value);
|
|
9115
|
+
if (index < 0) {
|
|
9116
|
+
throw new _utils_error__WEBPACK_IMPORTED_MODULE_0__/* .SDKError */ .q(`Cannot remove ${value} from search params`);
|
|
9117
|
+
}
|
|
9118
|
+
return facets.filter((_, it) => it !== index);
|
|
9119
|
+
};
|
|
9120
|
+
const setFacet = (facets, facet, unique) => {
|
|
9121
|
+
if (unique === true) {
|
|
9122
|
+
const index = facets.findIndex((f) => f.key === facet.key);
|
|
9123
|
+
if (index > -1) {
|
|
9124
|
+
return facets.map((f, it) => (it === index ? facet : f));
|
|
9125
|
+
}
|
|
9126
|
+
}
|
|
9127
|
+
return [...facets, facet];
|
|
9128
|
+
};
|
|
9129
|
+
const toggleFacet = (facets, item) => {
|
|
9130
|
+
const found = facets.find((facet) => facet.key === item.key && facet.value === item.value);
|
|
9131
|
+
if (found !== undefined) {
|
|
9132
|
+
return removeFacet(facets, item);
|
|
9133
|
+
}
|
|
9134
|
+
return setFacet(facets, item, false);
|
|
9135
|
+
};
|
|
9136
|
+
const toggleFacets = (facets, items) => items.reduce((acc, curr) => toggleFacet(acc, curr), facets);
|
|
9137
|
+
//# sourceMappingURL=facets.js.map
|
|
9138
|
+
|
|
9139
|
+
/***/ }),
|
|
9140
|
+
|
|
9141
|
+
/***/ 3221:
|
|
9142
|
+
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
9143
|
+
|
|
9144
|
+
"use strict";
|
|
9145
|
+
|
|
9146
|
+
// EXPORTS
|
|
9147
|
+
__webpack_require__.d(__webpack_exports__, {
|
|
9148
|
+
"R": () => (/* binding */ useSearch)
|
|
9149
|
+
});
|
|
9150
|
+
|
|
9151
|
+
// EXTERNAL MODULE: ../sdk/dist/search/Provider.js + 1 modules
|
|
9152
|
+
var Provider = __webpack_require__(1197);
|
|
9153
|
+
// EXTERNAL MODULE: external "react"
|
|
9154
|
+
var external_react_ = __webpack_require__(6689);
|
|
9155
|
+
// EXTERNAL MODULE: ../sdk/dist/utils/error.js
|
|
9156
|
+
var error = __webpack_require__(2254);
|
|
9157
|
+
;// CONCATENATED MODULE: ../sdk/dist/utils/useContext.js
|
|
9158
|
+
|
|
9159
|
+
|
|
9160
|
+
/**
|
|
9161
|
+
* @description Like React.useContext but throws when the context's value === undefined.
|
|
9162
|
+
* This is useful when you want to force the context to be present in the React's tree before using it
|
|
9163
|
+
*/
|
|
9164
|
+
const useContext = (context) => {
|
|
9165
|
+
const value = (0,external_react_.useContext)(context);
|
|
9166
|
+
if (value === undefined) {
|
|
9167
|
+
throw new error/* SDKError */.q(`${context.displayName ?? 'Context'} needs to be on the React tree`);
|
|
9168
|
+
}
|
|
9169
|
+
return value;
|
|
9170
|
+
};
|
|
9171
|
+
//# sourceMappingURL=useContext.js.map
|
|
9172
|
+
;// CONCATENATED MODULE: ../sdk/dist/search/useSearch.js
|
|
9173
|
+
|
|
9174
|
+
|
|
9175
|
+
const useSearch = () => useContext(Provider/* Context */._);
|
|
9176
|
+
//# sourceMappingURL=useSearch.js.map
|
|
9177
|
+
|
|
9178
|
+
/***/ }),
|
|
9179
|
+
|
|
7566
9180
|
/***/ 2524:
|
|
7567
9181
|
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
7568
9182
|
|