@faststore/core 2.0.152-alpha.0 → 2.0.153-alpha.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (73) hide show
  1. package/.next/BUILD_ID +1 -1
  2. package/.next/build-manifest.json +26 -26
  3. package/.next/cache/.tsbuildinfo +1 -1
  4. package/.next/cache/config.json +3 -3
  5. package/.next/cache/eslint/.cache_1gneedd +1 -1
  6. package/.next/cache/webpack/client-production/0.pack +0 -0
  7. package/.next/cache/webpack/client-production/index.pack +0 -0
  8. package/.next/cache/webpack/server-production/0.pack +0 -0
  9. package/.next/cache/webpack/server-production/index.pack +0 -0
  10. package/.next/prerender-manifest.json +1 -1
  11. package/.next/react-loadable-manifest.json +4 -4
  12. package/.next/routes-manifest.json +1 -1
  13. package/.next/server/chunks/{746.js → 289.js} +12 -8
  14. package/.next/server/chunks/312.js +35 -8
  15. package/.next/server/chunks/401.js +5 -5
  16. package/.next/server/chunks/74.js +30 -14
  17. package/.next/server/chunks/907.js +433 -353
  18. package/.next/server/middleware-build-manifest.js +1 -1
  19. package/.next/server/middleware-react-loadable-manifest.js +1 -1
  20. package/.next/server/pages/[...slug].js +30 -15
  21. package/.next/server/pages/[...slug].js.nft.json +1 -1
  22. package/.next/server/pages/en-US/404.html +2 -2
  23. package/.next/server/pages/en-US/500.html +2 -2
  24. package/.next/server/pages/en-US/account.html +2 -2
  25. package/.next/server/pages/en-US/checkout.html +2 -2
  26. package/.next/server/pages/en-US/login.html +2 -2
  27. package/.next/server/pages/en-US/s.html +2 -2
  28. package/.next/server/pages/en-US/s.json +1 -1
  29. package/.next/server/pages/en-US.html +2 -2
  30. package/.next/server/pages/s.js +30 -14
  31. package/.next/server/pages/s.js.nft.json +1 -1
  32. package/.next/server/pages-manifest.json +4 -4
  33. package/.next/static/{d4K49oW-EfaWNefvNv5AZ → Jdc52lXcDWIk2D0wQ-Z4p}/_buildManifest.js +1 -1
  34. package/.next/static/chunks/0-0e3914d9fc148f74.js +1 -0
  35. package/.next/static/chunks/377-b3616792e1f5f651.js +1 -0
  36. package/.next/static/chunks/495.0ecd099878b2a36d.js +1 -0
  37. package/.next/static/chunks/64.ebbe1d2b40f980c7.js +1 -0
  38. package/.next/static/chunks/pages/{[...slug]-a351612e92518155.js → [...slug]-bd1885159f7dfbba.js} +1 -1
  39. package/.next/static/chunks/pages/s-1cbe740b5b781d28.js +1 -0
  40. package/.next/static/chunks/webpack-eb5ed34c93d07fac.js +1 -0
  41. package/.next/trace +69 -69
  42. package/.turbo/turbo-build.log +3 -3
  43. package/CHANGELOG.md +6 -0
  44. package/cms/faststore/content-types.json +96 -2
  45. package/cms/faststore/sections.json +176 -0
  46. package/package.json +2 -2
  47. package/src/components/navigation/Navbar/Navbar.tsx +14 -8
  48. package/src/components/product/ProductGrid/ProductGrid.tsx +8 -3
  49. package/src/components/search/Filter/Filter.tsx +22 -3
  50. package/src/components/search/Filter/FilterSlider.tsx +14 -4
  51. package/src/components/search/SearchDropdown/SearchDropdown.tsx +17 -7
  52. package/src/components/search/SearchInput/SearchInput.tsx +10 -5
  53. package/src/components/search/SearchTop/SearchTop.tsx +17 -3
  54. package/src/components/search/Sort/Sort.tsx +21 -3
  55. package/src/components/sections/Navbar/Navbar.tsx +5 -0
  56. package/src/components/sections/ProductGallery/ProductGallery.tsx +44 -154
  57. package/src/components/ui/ProductGallery/ProductGallery.tsx +220 -0
  58. package/src/components/{sections → ui}/ProductGallery/ProductGalleryPage.tsx +9 -2
  59. package/src/components/ui/ProductGallery/index.ts +1 -0
  60. package/src/pages/[...slug].tsx +34 -17
  61. package/src/pages/s.tsx +38 -13
  62. package/src/sdk/search/formatSearchPath.ts +8 -1
  63. package/src/server/cms.ts +11 -2
  64. package/.next/static/chunks/170.c17ce564bb568265.js +0 -1
  65. package/.next/static/chunks/327-43715af4f3fffaf6.js +0 -1
  66. package/.next/static/chunks/377-61e89c711b136605.js +0 -1
  67. package/.next/static/chunks/495.8ffebac98e9475dc.js +0 -1
  68. package/.next/static/chunks/pages/s-890c0c4b88484224.js +0 -1
  69. package/.next/static/chunks/webpack-976c8f7df8e3dea3.js +0 -1
  70. /package/.next/static/{d4K49oW-EfaWNefvNv5AZ → Jdc52lXcDWIk2D0wQ-Z4p}/_ssgManifest.js +0 -0
  71. /package/src/components/{sections → ui}/ProductGallery/useDelayedFacets.ts +0 -0
  72. /package/src/components/{sections → ui}/ProductGallery/useDelayedPagination.ts +0 -0
  73. /package/src/components/{sections → ui}/ProductGallery/usePageProducts.ts +0 -0
@@ -46,7 +46,7 @@ function Filter({ testId, title, indicesExpanded, onAccordionChange, children, }
46
46
 
47
47
  /***/ }),
48
48
 
49
- /***/ 6569:
49
+ /***/ 6675:
50
50
  /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
51
51
 
52
52
  "use strict";
@@ -351,7 +351,7 @@ var Filter = __webpack_require__(939);
351
351
  // EXTERNAL MODULE: ../components/dist/organisms/Filter/FilterFacets.js
352
352
  var FilterFacets = __webpack_require__(226);
353
353
  // EXTERNAL MODULE: ../components/dist/organisms/Filter/FilterFacetBoolean.js
354
- var FilterFacetBoolean = __webpack_require__(6569);
354
+ var FilterFacetBoolean = __webpack_require__(6675);
355
355
  // EXTERNAL MODULE: ../components/dist/organisms/Filter/FilterFacetBooleanItem.js + 1 modules
356
356
  var FilterFacetBooleanItem = __webpack_require__(6854);
357
357
  // EXTERNAL MODULE: ../components/dist/organisms/Filter/FilterFacetRange.js + 2 modules
@@ -383,7 +383,9 @@ function FilterSlider_FilterSlider({
383
383
  dispatch,
384
384
  expanded,
385
385
  selected,
386
- title
386
+ title,
387
+ clearButtonLabel,
388
+ applyButtonLabel
387
389
  }) {
388
390
  const {
389
391
  resetInfiniteScroll,
@@ -403,7 +405,7 @@ function FilterSlider_FilterSlider({
403
405
  type: 'selectFacets',
404
406
  payload: []
405
407
  }),
406
- children: 'Clear All'
408
+ children: clearButtonLabel ?? 'Clear All'
407
409
  },
408
410
  applyBtnProps: {
409
411
  variant: 'primary',
@@ -414,7 +416,7 @@ function FilterSlider_FilterSlider({
414
416
  page: 0
415
417
  }));
416
418
  },
417
- children: 'Apply'
419
+ children: applyButtonLabel ?? 'Apply'
418
420
  },
419
421
  onClose: () => {
420
422
  dispatch({
@@ -502,7 +504,7 @@ var Filter = __webpack_require__(939);
502
504
  // EXTERNAL MODULE: ../components/dist/organisms/Filter/FilterFacets.js
503
505
  var FilterFacets = __webpack_require__(226);
504
506
  // EXTERNAL MODULE: ../components/dist/organisms/Filter/FilterFacetBoolean.js
505
- var FilterFacetBoolean = __webpack_require__(6569);
507
+ var FilterFacetBoolean = __webpack_require__(6675);
506
508
  // EXTERNAL MODULE: ../components/dist/organisms/Filter/FilterFacetBooleanItem.js + 1 modules
507
509
  var FilterFacetBooleanItem = __webpack_require__(6854);
508
510
  // EXTERNAL MODULE: ../components/dist/organisms/Filter/FilterFacetRange.js + 2 modules
@@ -737,7 +739,8 @@ const FilterSlider = /*#__PURE__*/(0,external_react_.lazy)(() => Promise.resolve
737
739
 
738
740
  function Filter_Filter({
739
741
  facets: allFacets,
740
- testId = 'fs-filter'
742
+ testId = 'fs-filter',
743
+ filter: filterCmsData
741
744
  }) {
742
745
  const filter = useFilter(allFacets);
743
746
  const {
@@ -748,13 +751,15 @@ function Filter_Filter({
748
751
  className: "hidden-mobile",
749
752
  children: /*#__PURE__*/jsx_runtime_.jsx(Filter_FilterDesktop, Filter_objectSpread(Filter_objectSpread({}, filter), {}, {
750
753
  testId: testId,
751
- title: "Filters"
754
+ title: filterCmsData?.title
752
755
  }))
753
756
  }), displayFilter && /*#__PURE__*/jsx_runtime_.jsx(external_react_.Suspense, {
754
757
  fallback: null,
755
758
  children: /*#__PURE__*/jsx_runtime_.jsx(FilterSlider, Filter_objectSpread(Filter_objectSpread({}, filter), {}, {
756
759
  testId: testId,
757
- title: "Filters"
760
+ title: filterCmsData?.title,
761
+ clearButtonLabel: filterCmsData?.mobileOnly?.clearButtonLabel,
762
+ applyButtonLabel: filterCmsData?.mobileOnly?.applyButtonLabel
758
763
  }))
759
764
  })]
760
765
  });
@@ -833,16 +838,23 @@ const OptionsMap = {
833
838
  };
834
839
  const keys = Object.keys(OptionsMap);
835
840
 
836
- function Sort() {
841
+ function Sort({
842
+ label = '',
843
+ options = OptionsMap
844
+ }) {
837
845
  const {
838
846
  state,
839
847
  setState
840
848
  } = (0,useSearch/* useSearch */.R)();
849
+ const optionsMap = Object.keys(options).reduce((acc, currentKey) => {
850
+ acc[currentKey] = options[currentKey] ?? OptionsMap[currentKey];
851
+ return acc;
852
+ }, {});
841
853
  return /*#__PURE__*/jsx_runtime_.jsx(SelectField_SelectField, {
842
854
  id: "sort-select",
843
855
  className: "sort / text__title-mini-alt",
844
- label: "Sort by",
845
- options: OptionsMap,
856
+ label: label,
857
+ options: optionsMap,
846
858
  onChange: e => {
847
859
  const sort = keys[e.target.selectedIndex];
848
860
  setState(_objectSpread(_objectSpread({}, state), {}, {
@@ -925,42 +937,28 @@ __webpack_require__.a(module, async (__webpack_handle_async_dependencies__, __we
925
937
  /* harmony export */ __webpack_require__.d(__webpack_exports__, {
926
938
  /* harmony export */ "Z": () => (__WEBPACK_DEFAULT_EXPORT__)
927
939
  /* harmony export */ });
928
- /* harmony import */ var _faststore_sdk__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(3221);
929
- /* harmony import */ var _faststore_ui__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(2928);
930
- /* harmony import */ var _faststore_ui__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(7578);
931
- /* harmony import */ var _faststore_ui__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(7703);
932
- /* harmony import */ var next_seo__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(6641);
933
- /* harmony import */ var next_seo__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(next_seo__WEBPACK_IMPORTED_MODULE_0__);
934
- /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(6689);
935
- /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_1__);
936
- /* harmony import */ var _faststore_ui__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(395);
937
- /* harmony import */ var _faststore_ui__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(5045);
938
- /* harmony import */ var src_components_search_Filter__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(1558);
939
- /* harmony import */ var src_components_search_Sort__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(3532);
940
- /* harmony import */ var src_components_skeletons_FilterSkeleton__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(5473);
941
- /* harmony import */ var src_components_skeletons_ProductGridSkeleton__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(9913);
942
- /* harmony import */ var src_sdk_tests_mark__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(2541);
943
- /* harmony import */ var _Section__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(7067);
944
- /* harmony import */ var _EmptyGallery__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(5878);
945
- /* harmony import */ var _section_module_scss__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(4614);
946
- /* harmony import */ var _section_module_scss__WEBPACK_IMPORTED_MODULE_16___default = /*#__PURE__*/__webpack_require__.n(_section_module_scss__WEBPACK_IMPORTED_MODULE_16__);
947
- /* harmony import */ var _useDelayedFacets__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(3740);
948
- /* harmony import */ var _useDelayedPagination__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(6100);
949
- /* harmony import */ var _useGalleryQuery__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(3840);
950
- /* harmony import */ var _usePageProducts__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(763);
951
- /* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(997);
952
- /* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_13___default = /*#__PURE__*/__webpack_require__.n(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_13__);
953
- var __webpack_async_dependencies__ = __webpack_handle_async_dependencies__([_useGalleryQuery__WEBPACK_IMPORTED_MODULE_11__, _usePageProducts__WEBPACK_IMPORTED_MODULE_12__]);
954
- ([_useGalleryQuery__WEBPACK_IMPORTED_MODULE_11__, _usePageProducts__WEBPACK_IMPORTED_MODULE_12__] = __webpack_async_dependencies__.then ? (await __webpack_async_dependencies__)() : __webpack_async_dependencies__);
955
-
956
-
957
-
958
-
940
+ /* harmony import */ var src_sdk_tests_mark__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(2541);
941
+ /* harmony import */ var src_components_ui_ProductGallery_ProductGallery__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(4061);
942
+ /* harmony import */ var _Section__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(7067);
943
+ /* harmony import */ var _EmptyGallery__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(5878);
944
+ /* harmony import */ var _section_module_scss__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(4614);
945
+ /* harmony import */ var _section_module_scss__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(_section_module_scss__WEBPACK_IMPORTED_MODULE_6__);
946
+ /* harmony import */ var _useGalleryQuery__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(3840);
947
+ /* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(997);
948
+ /* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_5__);
949
+ var __webpack_async_dependencies__ = __webpack_handle_async_dependencies__([src_components_ui_ProductGallery_ProductGallery__WEBPACK_IMPORTED_MODULE_1__, _useGalleryQuery__WEBPACK_IMPORTED_MODULE_4__]);
950
+ ([src_components_ui_ProductGallery_ProductGallery__WEBPACK_IMPORTED_MODULE_1__, _useGalleryQuery__WEBPACK_IMPORTED_MODULE_4__] = __webpack_async_dependencies__.then ? (await __webpack_async_dependencies__)() : __webpack_async_dependencies__);
951
+ const _excluded = ["context"];
959
952
 
953
+ 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; }
960
954
 
955
+ 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; }
961
956
 
957
+ 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; }
962
958
 
959
+ 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; }
963
960
 
961
+ 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; }
964
962
 
965
963
 
966
964
 
@@ -970,185 +968,52 @@ var __webpack_async_dependencies__ = __webpack_handle_async_dependencies__([_use
970
968
 
971
969
 
972
970
 
971
+ const isSearch = x => x === undefined || x?.title != undefined || x?.searchTerm != undefined;
973
972
 
974
- const GalleryPage = /*#__PURE__*/(0,react__WEBPACK_IMPORTED_MODULE_1__.lazy)(() => Promise.all(/* import() */[__webpack_require__.e(854), __webpack_require__.e(280), __webpack_require__.e(746)]).then(__webpack_require__.bind(__webpack_require__, 3746)));
973
+ const isCollection = x => x?.seo != undefined && x?.seo != null && x?.sku == undefined;
975
974
 
976
- const GalleryPageSkeleton = /*#__PURE__*/react_jsx_runtime__WEBPACK_IMPORTED_MODULE_13__.jsx(src_components_skeletons_ProductGridSkeleton__WEBPACK_IMPORTED_MODULE_5__/* ["default"] */ .Z, {
977
- loading: true
978
- });
975
+ function ProductGallerySection(_ref) {
976
+ let {
977
+ context
978
+ } = _ref,
979
+ otherProps = _objectWithoutProperties(_ref, _excluded);
979
980
 
980
- function ProductGallery({
981
- title,
982
- searchTerm
983
- }) {
981
+ const [title, searchTerm] = isSearch(context) ? [context?.title, context?.searchTerm] : isCollection(context) ? [context?.seo?.title] : [''];
984
982
  const {
985
- openFilter
986
- } = (0,_faststore_ui__WEBPACK_IMPORTED_MODULE_14__/* .useUI */ .l)();
987
- const {
988
- pages,
989
- addNextPage,
990
- addPrevPage
991
- } = (0,_faststore_sdk__WEBPACK_IMPORTED_MODULE_15__/* .useSearch */ .R)();
992
- const {
993
- data
994
- } = (0,_useGalleryQuery__WEBPACK_IMPORTED_MODULE_11__/* .useGalleryQuery */ .r)();
995
- const facets = (0,_useDelayedFacets__WEBPACK_IMPORTED_MODULE_9__/* .useDelayedFacets */ .u)(data);
996
- const totalCount = data?.search.products.pageInfo.totalCount ?? 0;
997
- const {
998
- next,
999
- prev
1000
- } = (0,_useDelayedPagination__WEBPACK_IMPORTED_MODULE_10__/* .useDelayedPagination */ .g)(totalCount);
1001
- (0,_usePageProducts__WEBPACK_IMPORTED_MODULE_12__/* .useProductsPrefetch */ .F)(prev ? prev.cursor : null);
1002
- (0,_usePageProducts__WEBPACK_IMPORTED_MODULE_12__/* .useProductsPrefetch */ .F)(next ? next.cursor : null);
1003
-
1004
- if (data && totalCount === 0) {
1005
- return /*#__PURE__*/react_jsx_runtime__WEBPACK_IMPORTED_MODULE_13__.jsx(_Section__WEBPACK_IMPORTED_MODULE_7__/* ["default"] */ .Z, {
1006
- className: `${(_section_module_scss__WEBPACK_IMPORTED_MODULE_16___default().section)} section-product-gallery layout__content`,
1007
- children: /*#__PURE__*/react_jsx_runtime__WEBPACK_IMPORTED_MODULE_13__.jsx("section", {
983
+ data: productGalleryData
984
+ } = (0,_useGalleryQuery__WEBPACK_IMPORTED_MODULE_4__/* .useGalleryQuery */ .r)();
985
+ const totalCount = productGalleryData?.search.products.pageInfo.totalCount ?? 0;
986
+
987
+ if (productGalleryData && totalCount === 0) {
988
+ return /*#__PURE__*/react_jsx_runtime__WEBPACK_IMPORTED_MODULE_5__.jsx(_Section__WEBPACK_IMPORTED_MODULE_2__/* ["default"] */ .Z, {
989
+ className: `${(_section_module_scss__WEBPACK_IMPORTED_MODULE_6___default().section)} section-product-gallery layout__content`,
990
+ children: /*#__PURE__*/react_jsx_runtime__WEBPACK_IMPORTED_MODULE_5__.jsx("section", {
1008
991
  "data-testid": "product-gallery",
1009
992
  "data-fs-product-listing": true,
1010
- children: /*#__PURE__*/react_jsx_runtime__WEBPACK_IMPORTED_MODULE_13__.jsx(_EmptyGallery__WEBPACK_IMPORTED_MODULE_8__/* ["default"] */ .Z, {})
993
+ children: /*#__PURE__*/react_jsx_runtime__WEBPACK_IMPORTED_MODULE_5__.jsx(_EmptyGallery__WEBPACK_IMPORTED_MODULE_3__/* ["default"] */ .Z, {})
1011
994
  })
1012
995
  });
1013
996
  }
1014
997
 
1015
- return /*#__PURE__*/react_jsx_runtime__WEBPACK_IMPORTED_MODULE_13__.jsx(_Section__WEBPACK_IMPORTED_MODULE_7__/* ["default"] */ .Z, {
1016
- className: `${(_section_module_scss__WEBPACK_IMPORTED_MODULE_16___default().section)} section-product-gallery layout__content-full`,
1017
- children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_13__.jsxs)("section", {
1018
- "data-testid": "product-gallery",
1019
- "data-fs-product-listing": true,
1020
- children: [searchTerm && /*#__PURE__*/react_jsx_runtime__WEBPACK_IMPORTED_MODULE_13__.jsx("header", {
1021
- "data-fs-product-listing-search-term": true,
1022
- className: "layout__content",
1023
- children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_13__.jsxs)("h1", {
1024
- children: ["Showing results for: ", /*#__PURE__*/react_jsx_runtime__WEBPACK_IMPORTED_MODULE_13__.jsx("span", {
1025
- children: searchTerm
1026
- })]
1027
- })
1028
- }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_13__.jsxs)("div", {
1029
- "data-fs-product-listing-content-grid": true,
1030
- className: "layout__content",
1031
- children: [/*#__PURE__*/react_jsx_runtime__WEBPACK_IMPORTED_MODULE_13__.jsx("div", {
1032
- "data-fs-product-listing-filters": true,
1033
- children: /*#__PURE__*/react_jsx_runtime__WEBPACK_IMPORTED_MODULE_13__.jsx(src_components_skeletons_FilterSkeleton__WEBPACK_IMPORTED_MODULE_4__/* ["default"] */ .Z, {
1034
- loading: facets?.length === 0,
1035
- children: /*#__PURE__*/react_jsx_runtime__WEBPACK_IMPORTED_MODULE_13__.jsx(src_components_search_Filter__WEBPACK_IMPORTED_MODULE_2__/* ["default"] */ .C, {
1036
- facets: facets
1037
- })
1038
- })
1039
- }), /*#__PURE__*/react_jsx_runtime__WEBPACK_IMPORTED_MODULE_13__.jsx("div", {
1040
- "data-fs-product-listing-results-count": true,
1041
- "data-count": totalCount,
1042
- children: /*#__PURE__*/react_jsx_runtime__WEBPACK_IMPORTED_MODULE_13__.jsx(_faststore_ui__WEBPACK_IMPORTED_MODULE_17__/* ["default"] */ .Z, {
1043
- "data-fs-product-listing-results-count-skeleton": true,
1044
- loading: !data,
1045
- size: {
1046
- width: '100%',
1047
- height: '1.5rem'
1048
- },
1049
- children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_13__.jsxs)("h2", {
1050
- "data-testid": "total-product-count",
1051
- children: [totalCount, " Results"]
1052
- })
1053
- })
1054
- }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_13__.jsxs)("div", {
1055
- "data-fs-product-listing-sort": true,
1056
- children: [/*#__PURE__*/react_jsx_runtime__WEBPACK_IMPORTED_MODULE_13__.jsx(_faststore_ui__WEBPACK_IMPORTED_MODULE_17__/* ["default"] */ .Z, {
1057
- "data-fs-product-listing-sort-skeleton": true,
1058
- loading: facets?.length === 0,
1059
- size: {
1060
- width: 'auto',
1061
- height: '1.5rem'
1062
- },
1063
- children: /*#__PURE__*/react_jsx_runtime__WEBPACK_IMPORTED_MODULE_13__.jsx(src_components_search_Sort__WEBPACK_IMPORTED_MODULE_3__/* ["default"] */ .Z, {})
1064
- }), /*#__PURE__*/react_jsx_runtime__WEBPACK_IMPORTED_MODULE_13__.jsx(_faststore_ui__WEBPACK_IMPORTED_MODULE_17__/* ["default"] */ .Z, {
1065
- "data-fs-product-listing-filter-button-skeleton": true,
1066
- loading: facets?.length === 0,
1067
- size: {
1068
- width: '6rem',
1069
- height: '1.5rem'
1070
- },
1071
- children: /*#__PURE__*/react_jsx_runtime__WEBPACK_IMPORTED_MODULE_13__.jsx(_faststore_ui__WEBPACK_IMPORTED_MODULE_18__/* ["default"] */ .Z, {
1072
- variant: "tertiary",
1073
- "data-testid": "open-filter-button",
1074
- icon: /*#__PURE__*/react_jsx_runtime__WEBPACK_IMPORTED_MODULE_13__.jsx(_faststore_ui__WEBPACK_IMPORTED_MODULE_19__/* ["default"] */ .Z, {
1075
- name: "FadersHorizontal",
1076
- width: 16,
1077
- height: 16
1078
- }),
1079
- iconPosition: "left",
1080
- "aria-label": "Open Filters",
1081
- onClick: openFilter,
1082
- children: "Filters"
1083
- })
1084
- })]
1085
- }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_13__.jsxs)("div", {
1086
- "data-fs-product-listing-results": true,
1087
- children: [prev !== false && /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_13__.jsxs)("div", {
1088
- "data-fs-product-listing-pagination": "top",
1089
- children: [/*#__PURE__*/react_jsx_runtime__WEBPACK_IMPORTED_MODULE_13__.jsx(next_seo__WEBPACK_IMPORTED_MODULE_0__.NextSeo, {
1090
- additionalLinkTags: [{
1091
- rel: 'prev',
1092
- href: prev.link
1093
- }]
1094
- }), /*#__PURE__*/react_jsx_runtime__WEBPACK_IMPORTED_MODULE_13__.jsx(_faststore_ui__WEBPACK_IMPORTED_MODULE_20__/* ["default"] */ .Z, {
1095
- onClick: e => {
1096
- e.currentTarget.blur();
1097
- e.preventDefault();
1098
- addPrevPage();
1099
- },
1100
- href: prev.link,
1101
- rel: "prev",
1102
- variant: "secondary",
1103
- iconPosition: "left",
1104
- icon: /*#__PURE__*/react_jsx_runtime__WEBPACK_IMPORTED_MODULE_13__.jsx(_faststore_ui__WEBPACK_IMPORTED_MODULE_19__/* ["default"] */ .Z, {
1105
- name: "ArrowLeft",
1106
- width: 16,
1107
- height: 16,
1108
- weight: "bold"
1109
- }),
1110
- children: "Previous Page"
1111
- })]
1112
- }), data ? /*#__PURE__*/react_jsx_runtime__WEBPACK_IMPORTED_MODULE_13__.jsx(react__WEBPACK_IMPORTED_MODULE_1__.Suspense, {
1113
- fallback: GalleryPageSkeleton,
1114
- children: pages.map(page => /*#__PURE__*/react_jsx_runtime__WEBPACK_IMPORTED_MODULE_13__.jsx(GalleryPage, {
1115
- page: page,
1116
- title: title
1117
- }, `gallery-page-${page}`))
1118
- }) : GalleryPageSkeleton, next !== false && /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_13__.jsxs)("div", {
1119
- "data-fs-product-listing-pagination": "bottom",
1120
- children: [/*#__PURE__*/react_jsx_runtime__WEBPACK_IMPORTED_MODULE_13__.jsx(next_seo__WEBPACK_IMPORTED_MODULE_0__.NextSeo, {
1121
- additionalLinkTags: [{
1122
- rel: 'next',
1123
- href: next.link
1124
- }]
1125
- }), /*#__PURE__*/react_jsx_runtime__WEBPACK_IMPORTED_MODULE_13__.jsx(_faststore_ui__WEBPACK_IMPORTED_MODULE_20__/* ["default"] */ .Z, {
1126
- testId: "show-more",
1127
- onClick: e => {
1128
- e.currentTarget.blur();
1129
- e.preventDefault();
1130
- addNextPage();
1131
- },
1132
- href: next.link,
1133
- rel: "next",
1134
- variant: "secondary",
1135
- children: "Load more products"
1136
- })]
1137
- })]
1138
- })]
1139
- })]
1140
- })
998
+ return /*#__PURE__*/react_jsx_runtime__WEBPACK_IMPORTED_MODULE_5__.jsx(_Section__WEBPACK_IMPORTED_MODULE_2__/* ["default"] */ .Z, {
999
+ className: `${(_section_module_scss__WEBPACK_IMPORTED_MODULE_6___default().section)} section-product-gallery layout__content-full`,
1000
+ children: /*#__PURE__*/react_jsx_runtime__WEBPACK_IMPORTED_MODULE_5__.jsx(src_components_ui_ProductGallery_ProductGallery__WEBPACK_IMPORTED_MODULE_1__/* ["default"] */ .Z, _objectSpread({
1001
+ title: title,
1002
+ searchTerm: searchTerm,
1003
+ productGalleryData: productGalleryData,
1004
+ totalCount: totalCount
1005
+ }, otherProps))
1141
1006
  });
1142
1007
  }
1143
1008
 
1144
- ProductGallery.displayName = 'ProductGallery';
1145
- /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ((0,src_sdk_tests_mark__WEBPACK_IMPORTED_MODULE_6__/* .mark */ .B)(ProductGallery));
1009
+ ProductGallerySection.displayName = 'ProductGallery';
1010
+ /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ((0,src_sdk_tests_mark__WEBPACK_IMPORTED_MODULE_0__/* .mark */ .B)(ProductGallerySection));
1146
1011
  __webpack_async_result__();
1147
1012
  } catch(e) { __webpack_async_result__(e); } });
1148
1013
 
1149
1014
  /***/ }),
1150
1015
 
1151
- /***/ 2618:
1016
+ /***/ 7873:
1152
1017
  /***/ ((module, __webpack_exports__, __webpack_require__) => {
1153
1018
 
1154
1019
  "use strict";
@@ -1165,90 +1030,6 @@ __webpack_async_result__();
1165
1030
 
1166
1031
  /***/ }),
1167
1032
 
1168
- /***/ 3740:
1169
- /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
1170
-
1171
- "use strict";
1172
- /* harmony export */ __webpack_require__.d(__webpack_exports__, {
1173
- /* harmony export */ "u": () => (/* binding */ useDelayedFacets)
1174
- /* harmony export */ });
1175
- /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(6689);
1176
- /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);
1177
-
1178
- const useDelayedFacets = data => {
1179
- const facets = (0,react__WEBPACK_IMPORTED_MODULE_0__.useRef)([]);
1180
- return (0,react__WEBPACK_IMPORTED_MODULE_0__.useMemo)(() => {
1181
- if (data) {
1182
- facets.current = data.search.facets;
1183
- }
1184
-
1185
- return facets.current;
1186
- }, [data, facets]);
1187
- };
1188
-
1189
- /***/ }),
1190
-
1191
- /***/ 6100:
1192
- /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
1193
-
1194
- "use strict";
1195
-
1196
- // EXPORTS
1197
- __webpack_require__.d(__webpack_exports__, {
1198
- "g": () => (/* binding */ useDelayedPagination)
1199
- });
1200
-
1201
- // EXTERNAL MODULE: external "react"
1202
- var external_react_ = __webpack_require__(6689);
1203
- // EXTERNAL MODULE: ../sdk/dist/utils/format.js
1204
- var format = __webpack_require__(2339);
1205
- // EXTERNAL MODULE: ../sdk/dist/search/useSearch.js + 1 modules
1206
- var useSearch = __webpack_require__(3221);
1207
- ;// CONCATENATED MODULE: ../sdk/dist/search/usePagination.js
1208
-
1209
-
1210
-
1211
- const getLink = (state) => {
1212
- const { pathname, search } = (0,format/* default */.Z)(state);
1213
- return `${pathname}${search}`;
1214
- };
1215
- const usePagination = (totalItems) => {
1216
- const { pages, itemsPerPage, state } = (0,useSearch/* useSearch */.R)();
1217
- const total = Math.ceil(totalItems / itemsPerPage);
1218
- const next = Number(pages[pages.length - 1]) + 1;
1219
- const prev = pages[0] - 1;
1220
- return (0,external_react_.useMemo)(() => ({
1221
- next: next < total && {
1222
- cursor: next,
1223
- link: getLink({ ...state, page: next }),
1224
- },
1225
- prev: prev > -1 && {
1226
- cursor: prev,
1227
- link: getLink({ ...state, page: prev }),
1228
- },
1229
- }), [next, prev, state, total]);
1230
- };
1231
- //# sourceMappingURL=usePagination.js.map
1232
- ;// CONCATENATED MODULE: ./src/components/sections/ProductGallery/useDelayedPagination.ts
1233
-
1234
-
1235
- const useDelayedPagination = totalCount => {
1236
- const pagination = usePagination(totalCount);
1237
- const {
1238
- 0: pag,
1239
- 1: setPag
1240
- } = (0,external_react_.useState)(() => ({
1241
- next: false,
1242
- prev: false
1243
- }));
1244
- (0,external_react_.useEffect)(() => {
1245
- setPag(pagination);
1246
- }, [pagination]);
1247
- return pag;
1248
- };
1249
-
1250
- /***/ }),
1251
-
1252
1033
  /***/ 3840:
1253
1034
  /***/ ((module, __webpack_exports__, __webpack_require__) => {
1254
1035
 
@@ -1295,71 +1076,6 @@ __webpack_async_result__();
1295
1076
 
1296
1077
  /***/ }),
1297
1078
 
1298
- /***/ 763:
1299
- /***/ ((module, __webpack_exports__, __webpack_require__) => {
1300
-
1301
- "use strict";
1302
- __webpack_require__.a(module, async (__webpack_handle_async_dependencies__, __webpack_async_result__) => { try {
1303
- /* harmony export */ __webpack_require__.d(__webpack_exports__, {
1304
- /* harmony export */ "F": () => (/* binding */ useProductsPrefetch),
1305
- /* harmony export */ "r": () => (/* binding */ useProducts)
1306
- /* harmony export */ });
1307
- /* harmony import */ var _faststore_sdk__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(3221);
1308
- /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(6689);
1309
- /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);
1310
- /* harmony import */ var src_sdk_product_useProductsQuery__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(4867);
1311
- var __webpack_async_dependencies__ = __webpack_handle_async_dependencies__([src_sdk_product_useProductsQuery__WEBPACK_IMPORTED_MODULE_1__]);
1312
- src_sdk_product_useProductsQuery__WEBPACK_IMPORTED_MODULE_1__ = (__webpack_async_dependencies__.then ? (await __webpack_async_dependencies__)() : __webpack_async_dependencies__)[0];
1313
-
1314
-
1315
-
1316
- const useProductsPrefetch = page => {
1317
- const {
1318
- itemsPerPage,
1319
- state: {
1320
- sort,
1321
- term,
1322
- selectedFacets
1323
- }
1324
- } = (0,_faststore_sdk__WEBPACK_IMPORTED_MODULE_2__/* .useSearch */ .R)();
1325
- const prefetch = (0,src_sdk_product_useProductsQuery__WEBPACK_IMPORTED_MODULE_1__/* .useProductsQueryPrefetch */ .BG)({
1326
- first: itemsPerPage,
1327
- after: (itemsPerPage * (page ?? 0)).toString(),
1328
- sort,
1329
- term: term ?? '',
1330
- selectedFacets
1331
- });
1332
- (0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(() => {
1333
- if (page !== null) {
1334
- prefetch();
1335
- }
1336
- }, [page, prefetch]);
1337
- };
1338
- const useProducts = page => {
1339
- const {
1340
- itemsPerPage,
1341
- state: {
1342
- sort,
1343
- term,
1344
- selectedFacets
1345
- }
1346
- } = (0,_faststore_sdk__WEBPACK_IMPORTED_MODULE_2__/* .useSearch */ .R)();
1347
- const productList = (0,src_sdk_product_useProductsQuery__WEBPACK_IMPORTED_MODULE_1__/* .useProductsQuery */ .kN)({
1348
- first: itemsPerPage,
1349
- after: (itemsPerPage * page).toString(),
1350
- sort,
1351
- term: term ?? '',
1352
- selectedFacets
1353
- }, {
1354
- suspense: true
1355
- });
1356
- return productList?.edges;
1357
- };
1358
- __webpack_async_result__();
1359
- } catch(e) { __webpack_async_result__(e); } });
1360
-
1361
- /***/ }),
1362
-
1363
1079
  /***/ 5473:
1364
1080
  /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
1365
1081
 
@@ -1474,6 +1190,370 @@ function ProductGridSkeleton({
1474
1190
  ;// CONCATENATED MODULE: ./src/components/skeletons/ProductGridSkeleton/index.ts
1475
1191
 
1476
1192
 
1193
+ /***/ }),
1194
+
1195
+ /***/ 4061:
1196
+ /***/ ((module, __webpack_exports__, __webpack_require__) => {
1197
+
1198
+ "use strict";
1199
+ __webpack_require__.a(module, async (__webpack_handle_async_dependencies__, __webpack_async_result__) => { try {
1200
+ /* harmony export */ __webpack_require__.d(__webpack_exports__, {
1201
+ /* harmony export */ "Z": () => (__WEBPACK_DEFAULT_EXPORT__)
1202
+ /* harmony export */ });
1203
+ /* harmony import */ var _faststore_sdk__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(3221);
1204
+ /* harmony import */ var _faststore_ui__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(2928);
1205
+ /* harmony import */ var _faststore_ui__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(7578);
1206
+ /* harmony import */ var _faststore_ui__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(7703);
1207
+ /* harmony import */ var next_seo__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(6641);
1208
+ /* harmony import */ var next_seo__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(next_seo__WEBPACK_IMPORTED_MODULE_0__);
1209
+ /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(6689);
1210
+ /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_1__);
1211
+ /* harmony import */ var _faststore_ui__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(395);
1212
+ /* harmony import */ var _faststore_ui__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(5045);
1213
+ /* harmony import */ var src_components_search_Filter__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(1558);
1214
+ /* harmony import */ var src_components_search_Sort__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(3532);
1215
+ /* harmony import */ var src_components_skeletons_FilterSkeleton__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(5473);
1216
+ /* harmony import */ var src_components_skeletons_ProductGridSkeleton__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(9913);
1217
+ /* harmony import */ var _useDelayedFacets__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(6341);
1218
+ /* harmony import */ var _useDelayedPagination__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(7184);
1219
+ /* harmony import */ var _usePageProducts__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(9521);
1220
+ /* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(997);
1221
+ /* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9___default = /*#__PURE__*/__webpack_require__.n(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__);
1222
+ var __webpack_async_dependencies__ = __webpack_handle_async_dependencies__([_usePageProducts__WEBPACK_IMPORTED_MODULE_8__]);
1223
+ _usePageProducts__WEBPACK_IMPORTED_MODULE_8__ = (__webpack_async_dependencies__.then ? (await __webpack_async_dependencies__)() : __webpack_async_dependencies__)[0];
1224
+
1225
+
1226
+
1227
+
1228
+
1229
+
1230
+
1231
+
1232
+
1233
+
1234
+
1235
+
1236
+
1237
+
1238
+ const GalleryPage = /*#__PURE__*/(0,react__WEBPACK_IMPORTED_MODULE_1__.lazy)(() => Promise.all(/* import() */[__webpack_require__.e(854), __webpack_require__.e(280), __webpack_require__.e(289)]).then(__webpack_require__.bind(__webpack_require__, 5289)));
1239
+
1240
+ const GalleryPageSkeleton = /*#__PURE__*/react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__.jsx(src_components_skeletons_ProductGridSkeleton__WEBPACK_IMPORTED_MODULE_5__/* ["default"] */ .Z, {
1241
+ loading: true
1242
+ });
1243
+
1244
+ function ProductGallery({
1245
+ title,
1246
+ searchTerm,
1247
+ productGalleryData,
1248
+ totalCount,
1249
+ searchTermLabel,
1250
+ totalCountLabel,
1251
+ filter,
1252
+ previousPageButton,
1253
+ loadMorePageButton,
1254
+ sortBySelector,
1255
+ productCard
1256
+ }) {
1257
+ const {
1258
+ openFilter
1259
+ } = (0,_faststore_ui__WEBPACK_IMPORTED_MODULE_10__/* .useUI */ .l)();
1260
+ const {
1261
+ pages,
1262
+ addNextPage,
1263
+ addPrevPage
1264
+ } = (0,_faststore_sdk__WEBPACK_IMPORTED_MODULE_11__/* .useSearch */ .R)();
1265
+ const facets = (0,_useDelayedFacets__WEBPACK_IMPORTED_MODULE_6__/* .useDelayedFacets */ .u)(productGalleryData);
1266
+ const {
1267
+ next,
1268
+ prev
1269
+ } = (0,_useDelayedPagination__WEBPACK_IMPORTED_MODULE_7__/* .useDelayedPagination */ .g)(totalCount);
1270
+ (0,_usePageProducts__WEBPACK_IMPORTED_MODULE_8__/* .useProductsPrefetch */ .F)(prev ? prev.cursor : null);
1271
+ (0,_usePageProducts__WEBPACK_IMPORTED_MODULE_8__/* .useProductsPrefetch */ .F)(next ? next.cursor : null);
1272
+ return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__.jsxs)("section", {
1273
+ "data-testid": "product-gallery",
1274
+ "data-fs-product-listing": true,
1275
+ children: [searchTerm && /*#__PURE__*/react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__.jsx("header", {
1276
+ "data-fs-product-listing-search-term": true,
1277
+ className: "layout__content",
1278
+ children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__.jsxs)("h1", {
1279
+ children: [searchTermLabel, " ", /*#__PURE__*/react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__.jsx("span", {
1280
+ children: searchTerm
1281
+ })]
1282
+ })
1283
+ }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__.jsxs)("div", {
1284
+ "data-fs-product-listing-content-grid": true,
1285
+ className: "layout__content",
1286
+ children: [/*#__PURE__*/react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__.jsx("div", {
1287
+ "data-fs-product-listing-filters": true,
1288
+ children: /*#__PURE__*/react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__.jsx(src_components_skeletons_FilterSkeleton__WEBPACK_IMPORTED_MODULE_4__/* ["default"] */ .Z, {
1289
+ loading: facets?.length === 0,
1290
+ children: /*#__PURE__*/react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__.jsx(src_components_search_Filter__WEBPACK_IMPORTED_MODULE_2__/* ["default"] */ .C, {
1291
+ facets: facets,
1292
+ filter: filter
1293
+ })
1294
+ })
1295
+ }), /*#__PURE__*/react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__.jsx("div", {
1296
+ "data-fs-product-listing-results-count": true,
1297
+ "data-count": totalCount,
1298
+ children: /*#__PURE__*/react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__.jsx(_faststore_ui__WEBPACK_IMPORTED_MODULE_12__/* ["default"] */ .Z, {
1299
+ "data-fs-product-listing-results-count-skeleton": true,
1300
+ loading: !productGalleryData,
1301
+ size: {
1302
+ width: '100%',
1303
+ height: '1.5rem'
1304
+ },
1305
+ children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__.jsxs)("h2", {
1306
+ "data-testid": "total-product-count",
1307
+ children: [totalCount, " ", totalCountLabel]
1308
+ })
1309
+ })
1310
+ }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__.jsxs)("div", {
1311
+ "data-fs-product-listing-sort": true,
1312
+ children: [/*#__PURE__*/react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__.jsx(_faststore_ui__WEBPACK_IMPORTED_MODULE_12__/* ["default"] */ .Z, {
1313
+ "data-fs-product-listing-sort-skeleton": true,
1314
+ loading: facets?.length === 0,
1315
+ size: {
1316
+ width: 'auto',
1317
+ height: '1.5rem'
1318
+ },
1319
+ children: /*#__PURE__*/react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__.jsx(src_components_search_Sort__WEBPACK_IMPORTED_MODULE_3__/* ["default"] */ .Z, {
1320
+ label: sortBySelector?.label,
1321
+ options: sortBySelector?.options
1322
+ })
1323
+ }), /*#__PURE__*/react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__.jsx(_faststore_ui__WEBPACK_IMPORTED_MODULE_12__/* ["default"] */ .Z, {
1324
+ "data-fs-product-listing-filter-button-skeleton": true,
1325
+ loading: facets?.length === 0,
1326
+ size: {
1327
+ width: '6rem',
1328
+ height: '1.5rem'
1329
+ },
1330
+ children: /*#__PURE__*/react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__.jsx(_faststore_ui__WEBPACK_IMPORTED_MODULE_13__/* ["default"] */ .Z, {
1331
+ variant: "tertiary",
1332
+ "data-testid": "open-filter-button",
1333
+ icon: /*#__PURE__*/react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__.jsx(_faststore_ui__WEBPACK_IMPORTED_MODULE_14__/* ["default"] */ .Z, {
1334
+ name: filter?.mobileOnly?.filterButton?.icon?.icon,
1335
+ "aria-label": filter?.mobileOnly?.filterButton?.icon?.alt,
1336
+ width: 16,
1337
+ height: 16
1338
+ }),
1339
+ iconPosition: "left",
1340
+ onClick: openFilter,
1341
+ children: filter?.mobileOnly?.filterButton?.label
1342
+ })
1343
+ })]
1344
+ }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__.jsxs)("div", {
1345
+ "data-fs-product-listing-results": true,
1346
+ children: [prev !== false && /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__.jsxs)("div", {
1347
+ "data-fs-product-listing-pagination": "top",
1348
+ children: [/*#__PURE__*/react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__.jsx(next_seo__WEBPACK_IMPORTED_MODULE_0__.NextSeo, {
1349
+ additionalLinkTags: [{
1350
+ rel: 'prev',
1351
+ href: prev.link
1352
+ }]
1353
+ }), /*#__PURE__*/react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__.jsx(_faststore_ui__WEBPACK_IMPORTED_MODULE_15__/* ["default"] */ .Z, {
1354
+ onClick: e => {
1355
+ e.currentTarget.blur();
1356
+ e.preventDefault();
1357
+ addPrevPage();
1358
+ },
1359
+ href: prev.link,
1360
+ rel: "prev",
1361
+ variant: "secondary",
1362
+ iconPosition: "left",
1363
+ icon: /*#__PURE__*/react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__.jsx(_faststore_ui__WEBPACK_IMPORTED_MODULE_14__/* ["default"] */ .Z, {
1364
+ name: previousPageButton?.icon?.icon,
1365
+ "aria-label": previousPageButton?.icon?.alt ?? previousPageButton?.label,
1366
+ width: 16,
1367
+ height: 16,
1368
+ weight: "bold"
1369
+ }),
1370
+ children: previousPageButton?.label
1371
+ })]
1372
+ }), productGalleryData ? /*#__PURE__*/react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__.jsx(react__WEBPACK_IMPORTED_MODULE_1__.Suspense, {
1373
+ fallback: GalleryPageSkeleton,
1374
+ children: pages.map(page => /*#__PURE__*/react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__.jsx(GalleryPage, {
1375
+ page: page,
1376
+ title: title,
1377
+ productCard: productCard
1378
+ }, `gallery-page-${page}`))
1379
+ }) : GalleryPageSkeleton, next !== false && /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__.jsxs)("div", {
1380
+ "data-fs-product-listing-pagination": "bottom",
1381
+ children: [/*#__PURE__*/react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__.jsx(next_seo__WEBPACK_IMPORTED_MODULE_0__.NextSeo, {
1382
+ additionalLinkTags: [{
1383
+ rel: 'next',
1384
+ href: next.link
1385
+ }]
1386
+ }), /*#__PURE__*/react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__.jsx(_faststore_ui__WEBPACK_IMPORTED_MODULE_15__/* ["default"] */ .Z, {
1387
+ testId: "show-more",
1388
+ onClick: e => {
1389
+ e.currentTarget.blur();
1390
+ e.preventDefault();
1391
+ addNextPage();
1392
+ },
1393
+ href: next.link,
1394
+ rel: "next",
1395
+ variant: "secondary",
1396
+ children: loadMorePageButton?.label
1397
+ })]
1398
+ })]
1399
+ })]
1400
+ })]
1401
+ });
1402
+ }
1403
+
1404
+ /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (ProductGallery);
1405
+ __webpack_async_result__();
1406
+ } catch(e) { __webpack_async_result__(e); } });
1407
+
1408
+ /***/ }),
1409
+
1410
+ /***/ 6341:
1411
+ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
1412
+
1413
+ "use strict";
1414
+ /* harmony export */ __webpack_require__.d(__webpack_exports__, {
1415
+ /* harmony export */ "u": () => (/* binding */ useDelayedFacets)
1416
+ /* harmony export */ });
1417
+ /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(6689);
1418
+ /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);
1419
+
1420
+ const useDelayedFacets = data => {
1421
+ const facets = (0,react__WEBPACK_IMPORTED_MODULE_0__.useRef)([]);
1422
+ return (0,react__WEBPACK_IMPORTED_MODULE_0__.useMemo)(() => {
1423
+ if (data) {
1424
+ facets.current = data.search.facets;
1425
+ }
1426
+
1427
+ return facets.current;
1428
+ }, [data, facets]);
1429
+ };
1430
+
1431
+ /***/ }),
1432
+
1433
+ /***/ 7184:
1434
+ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
1435
+
1436
+ "use strict";
1437
+
1438
+ // EXPORTS
1439
+ __webpack_require__.d(__webpack_exports__, {
1440
+ "g": () => (/* binding */ useDelayedPagination)
1441
+ });
1442
+
1443
+ // EXTERNAL MODULE: external "react"
1444
+ var external_react_ = __webpack_require__(6689);
1445
+ // EXTERNAL MODULE: ../sdk/dist/utils/format.js
1446
+ var format = __webpack_require__(2339);
1447
+ // EXTERNAL MODULE: ../sdk/dist/search/useSearch.js + 1 modules
1448
+ var useSearch = __webpack_require__(3221);
1449
+ ;// CONCATENATED MODULE: ../sdk/dist/search/usePagination.js
1450
+
1451
+
1452
+
1453
+ const getLink = (state) => {
1454
+ const { pathname, search } = (0,format/* default */.Z)(state);
1455
+ return `${pathname}${search}`;
1456
+ };
1457
+ const usePagination = (totalItems) => {
1458
+ const { pages, itemsPerPage, state } = (0,useSearch/* useSearch */.R)();
1459
+ const total = Math.ceil(totalItems / itemsPerPage);
1460
+ const next = Number(pages[pages.length - 1]) + 1;
1461
+ const prev = pages[0] - 1;
1462
+ return (0,external_react_.useMemo)(() => ({
1463
+ next: next < total && {
1464
+ cursor: next,
1465
+ link: getLink({ ...state, page: next }),
1466
+ },
1467
+ prev: prev > -1 && {
1468
+ cursor: prev,
1469
+ link: getLink({ ...state, page: prev }),
1470
+ },
1471
+ }), [next, prev, state, total]);
1472
+ };
1473
+ //# sourceMappingURL=usePagination.js.map
1474
+ ;// CONCATENATED MODULE: ./src/components/ui/ProductGallery/useDelayedPagination.ts
1475
+
1476
+
1477
+ const useDelayedPagination = totalCount => {
1478
+ const pagination = usePagination(totalCount);
1479
+ const {
1480
+ 0: pag,
1481
+ 1: setPag
1482
+ } = (0,external_react_.useState)(() => ({
1483
+ next: false,
1484
+ prev: false
1485
+ }));
1486
+ (0,external_react_.useEffect)(() => {
1487
+ setPag(pagination);
1488
+ }, [pagination]);
1489
+ return pag;
1490
+ };
1491
+
1492
+ /***/ }),
1493
+
1494
+ /***/ 9521:
1495
+ /***/ ((module, __webpack_exports__, __webpack_require__) => {
1496
+
1497
+ "use strict";
1498
+ __webpack_require__.a(module, async (__webpack_handle_async_dependencies__, __webpack_async_result__) => { try {
1499
+ /* harmony export */ __webpack_require__.d(__webpack_exports__, {
1500
+ /* harmony export */ "F": () => (/* binding */ useProductsPrefetch),
1501
+ /* harmony export */ "r": () => (/* binding */ useProducts)
1502
+ /* harmony export */ });
1503
+ /* harmony import */ var _faststore_sdk__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(3221);
1504
+ /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(6689);
1505
+ /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);
1506
+ /* harmony import */ var src_sdk_product_useProductsQuery__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(4867);
1507
+ var __webpack_async_dependencies__ = __webpack_handle_async_dependencies__([src_sdk_product_useProductsQuery__WEBPACK_IMPORTED_MODULE_1__]);
1508
+ src_sdk_product_useProductsQuery__WEBPACK_IMPORTED_MODULE_1__ = (__webpack_async_dependencies__.then ? (await __webpack_async_dependencies__)() : __webpack_async_dependencies__)[0];
1509
+
1510
+
1511
+
1512
+ const useProductsPrefetch = page => {
1513
+ const {
1514
+ itemsPerPage,
1515
+ state: {
1516
+ sort,
1517
+ term,
1518
+ selectedFacets
1519
+ }
1520
+ } = (0,_faststore_sdk__WEBPACK_IMPORTED_MODULE_2__/* .useSearch */ .R)();
1521
+ const prefetch = (0,src_sdk_product_useProductsQuery__WEBPACK_IMPORTED_MODULE_1__/* .useProductsQueryPrefetch */ .BG)({
1522
+ first: itemsPerPage,
1523
+ after: (itemsPerPage * (page ?? 0)).toString(),
1524
+ sort,
1525
+ term: term ?? '',
1526
+ selectedFacets
1527
+ });
1528
+ (0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(() => {
1529
+ if (page !== null) {
1530
+ prefetch();
1531
+ }
1532
+ }, [page, prefetch]);
1533
+ };
1534
+ const useProducts = page => {
1535
+ const {
1536
+ itemsPerPage,
1537
+ state: {
1538
+ sort,
1539
+ term,
1540
+ selectedFacets
1541
+ }
1542
+ } = (0,_faststore_sdk__WEBPACK_IMPORTED_MODULE_2__/* .useSearch */ .R)();
1543
+ const productList = (0,src_sdk_product_useProductsQuery__WEBPACK_IMPORTED_MODULE_1__/* .useProductsQuery */ .kN)({
1544
+ first: itemsPerPage,
1545
+ after: (itemsPerPage * page).toString(),
1546
+ sort,
1547
+ term: term ?? '',
1548
+ selectedFacets
1549
+ }, {
1550
+ suspense: true
1551
+ });
1552
+ return productList?.edges;
1553
+ };
1554
+ __webpack_async_result__();
1555
+ } catch(e) { __webpack_async_result__(e); } });
1556
+
1477
1557
  /***/ }),
1478
1558
 
1479
1559
  /***/ 1523: