@sentecacommerce-theme/lib 0.13.14 → 0.13.15

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.
@@ -96,6 +96,10 @@ var useAggregateQuery = function(aggregates, request, sort) {
96
96
  aliasedSlug,
97
97
  postFilter
98
98
  ];
99
+ if (request === AggregateRequestEnum.Filters) {
100
+ queryKeys.push('Slug: ' + router.query.slug);
101
+ queryKeys.push('Cat: ' + router.query.cat);
102
+ }
99
103
  return (0, _reactQuery).useQuery(queryKeys, _asyncToGenerator(_regeneratorRuntime.default.mark(function _callee() {
100
104
  var query, response;
101
105
  return _regeneratorRuntime.default.wrap(function _callee$(_ctx) {
@@ -123,7 +123,6 @@ function _unsupportedIterableToArray(o, minLen) {
123
123
  var useListingQuery = function() {
124
124
  var ref;
125
125
  var router = (0, _router).useRouter();
126
- var slug = (0, _hooks).useListingSlug();
127
126
  var config = (0, _hooks).useListingConfig();
128
127
  var ref1 = (0, _).usePredicate(), predicate = ref1.data;
129
128
  var ref2 = (0, _hooks).useListingAlias(config.meta), aliasedSlug = ref2.slug;
@@ -180,11 +179,12 @@ function processListingQuery(_) {
180
179
  }
181
180
  function _processListingQuery() {
182
181
  _processListingQuery = _asyncToGenerator(_regeneratorRuntime.default.mark(function _callee(param) {
183
- var predicate, router, limit, sort, postFilter, offset, config, slug, _includeVariants, includeVariants, query, type, filter, _sort;
182
+ var predicate, router, limit, sort, postFilter, offset, config, slug, _includeVariants, includeVariants, ref, query, type, filter, _sort;
184
183
  return _regeneratorRuntime.default.wrap(function _callee$(_ctx) {
185
184
  while(1)switch(_ctx.prev = _ctx.next){
186
185
  case 0:
187
186
  predicate = param.predicate, router = param.router, limit = param.limit, sort = param.sort, postFilter = param.postFilter, offset = param.offset, config = param.config, slug = param.slug, _includeVariants = param.includeVariants, includeVariants = _includeVariants === void 0 ? false : _includeVariants;
187
+ ;
188
188
  query = router.query;
189
189
  type = (0, _utils).getListingPageType(router, slug, config);
190
190
  filter = generateFilter(type, query, slug, predicate);
@@ -194,7 +194,7 @@ function _processListingQuery() {
194
194
  offset: offset || 0,
195
195
  filter: (0, _utils).extendFilter({
196
196
  slug: filter,
197
- filterExtension: config === null || config === void 0 ? void 0 : config.filterExtension,
197
+ filterExtension: (config === null || config === void 0 ? void 0 : (ref = config.getFilterExtension) === null || ref === void 0 ? void 0 : ref.call(config, predicate)) || (config === null || config === void 0 ? void 0 : config.filterExtension),
198
198
  noSplit: true
199
199
  }),
200
200
  sort: (_sort = query.sort) !== null && _sort !== void 0 ? _sort : sort
@@ -205,7 +205,7 @@ function _processListingQuery() {
205
205
  }, {
206
206
  includeVariants: includeVariants
207
207
  })));
208
- case 6:
208
+ case 7:
209
209
  case "end":
210
210
  return _ctx.stop();
211
211
  }
@@ -34,43 +34,44 @@ function _objectSpread(target) {
34
34
  }
35
35
  var buildCategoryQuery = function(param) {
36
36
  var aggregates = param.aggregates, predicate = param.predicate, postFilter = param.postFilter, pageType = param.pageType, config = param.config, router = param.router, slug = param.slug;
37
- var ref3, ref1;
38
- var type = (aggregates === null || aggregates === void 0 ? void 0 : (ref3 = aggregates[0]) === null || ref3 === void 0 ? void 0 : ref3.aggregationType) || '';
37
+ var ref2, ref1;
38
+ var type = (aggregates === null || aggregates === void 0 ? void 0 : (ref2 = aggregates[0]) === null || ref2 === void 0 ? void 0 : ref2.aggregationType) || '';
39
39
  var term = (aggregates === null || aggregates === void 0 ? void 0 : (ref1 = aggregates[0]) === null || ref1 === void 0 ? void 0 : ref1.aggregationDefinition) || '';
40
40
  var aggValue = getAggValue({
41
41
  id: predicate === null || predicate === void 0 ? void 0 : predicate._id,
42
42
  term: term
43
43
  });
44
44
  var getFilters = function() {
45
+ var ref;
46
+ var filterExtension = (config === null || config === void 0 ? void 0 : (ref = config.getFilterExtension) === null || ref === void 0 ? void 0 : ref.call(config, predicate)) || (config === null || config === void 0 ? void 0 : config.filterExtension);
45
47
  var filter = '';
46
48
  switch(pageType){
47
49
  case _index.ListingTypesEnum.Brand:
48
50
  if (router.query.cat) {
49
51
  filter += (0, _extendFilter).extendFilter({
50
52
  slug: slug,
51
- filterExtension: config === null || config === void 0 ? void 0 : config.filterExtension
53
+ filterExtension: filterExtension
52
54
  });
53
55
  } else {
54
- var ref;
55
- filter += (ref = config === null || config === void 0 ? void 0 : config.filterExtension) !== null && ref !== void 0 ? ref : '';
56
+ filter += filterExtension !== null && filterExtension !== void 0 ? filterExtension : '';
56
57
  }
58
+ // Note: We can't filter the category tree by a category
59
+ postFilter = postFilter === null || postFilter === void 0 ? void 0 : postFilter.split('&').filter(function(f) {
60
+ return !f.includes('category');
61
+ }).join('&');
57
62
  if (postFilter) {
58
63
  if (filter) filter += '&';
59
- // Note: We can't filter the category tree by a category
60
- filter += postFilter.split('&').filter(function(f) {
61
- return !f.includes('category');
62
- }).join('&');
64
+ filter += postFilter;
63
65
  }
64
66
  break;
65
67
  case _index.ListingTypesEnum.Category:
66
68
  if (router.query.cat) {
67
69
  filter += (0, _extendFilter).extendFilter({
68
70
  slug: slug,
69
- filterExtension: config === null || config === void 0 ? void 0 : config.filterExtension
71
+ filterExtension: filterExtension
70
72
  });
71
73
  } else {
72
- var ref2;
73
- filter += (ref2 = config === null || config === void 0 ? void 0 : config.filterExtension) !== null && ref2 !== void 0 ? ref2 : '';
74
+ filter += filterExtension !== null && filterExtension !== void 0 ? filterExtension : '';
74
75
  }
75
76
  if (postFilter) {
76
77
  if (filter) filter += '&';
@@ -80,7 +81,7 @@ var buildCategoryQuery = function(param) {
80
81
  case _index.ListingTypesEnum.AttrPage:
81
82
  filter += (0, _extendFilter).extendFilter({
82
83
  slug: slug,
83
- filterExtension: config === null || config === void 0 ? void 0 : config.filterExtension
84
+ filterExtension: filterExtension
84
85
  });
85
86
  if (postFilter) filter += "&".concat(postFilter);
86
87
  break;
@@ -94,12 +95,12 @@ var buildCategoryQuery = function(param) {
94
95
  filter += applyViewsPostFilter({
95
96
  postFilter: postFilter
96
97
  });
97
- if (config === null || config === void 0 ? void 0 : config.filterExtension) {
98
- filter += filter ? "&".concat(config === null || config === void 0 ? void 0 : config.filterExtension) : config === null || config === void 0 ? void 0 : config.filterExtension;
98
+ if (filterExtension) {
99
+ filter += filter ? "&".concat(filterExtension) : filterExtension;
99
100
  }
100
101
  break;
101
102
  default:
102
- return "".concat((config === null || config === void 0 ? void 0 : config.filterExtension) + "".concat(postFilter !== null && postFilter !== void 0 ? postFilter : ''));
103
+ return "".concat(filterExtension + "".concat(postFilter !== null && postFilter !== void 0 ? postFilter : ''));
103
104
  }
104
105
  return filter;
105
106
  };
@@ -81,10 +81,11 @@ function _unsupportedIterableToArray(o, minLen) {
81
81
  }
82
82
  var buildFilterQuery = function(param) {
83
83
  var predicate = param.predicate, slug = param.slug, pageType = param.pageType, router = param.router, aggregates = param.aggregates, config = param.config, postFilter = param.postFilter;
84
- var ref;
84
+ var ref, ref1;
85
85
  var query = (predicate === null || predicate === void 0 ? void 0 : predicate.filters) || (predicate === null || predicate === void 0 ? void 0 : predicate._id) || slug;
86
86
  var queryType = pageType === _index.ListingTypesEnum.Search ? 'text' : pageType;
87
- var ref1 = config || {}, filterExtension = ref1.filterExtension, collapseMode = ref1.collapseMode;
87
+ var collapseMode = (config || {}).collapseMode;
88
+ var filterExtension = (config === null || config === void 0 ? void 0 : (ref = config.getFilterExtension) === null || ref === void 0 ? void 0 : ref.call(config)) || (config === null || config === void 0 ? void 0 : config.filterExtension);
88
89
  var filter = '';
89
90
  if (pageType === _index.ListingTypesEnum.AttrPage) {
90
91
  var ref2 = _slicedToArray((0, _utils).getAttributePageType(router, slug), 2), type = ref2[0], val = ref2[1];
@@ -120,7 +121,7 @@ var buildFilterQuery = function(param) {
120
121
  noSplit: true
121
122
  })
122
123
  });
123
- if ((ref = router.query) === null || ref === void 0 ? void 0 : ref.filter) builtQuery = _objectSpread({}, builtQuery, {
124
+ if ((ref1 = router.query) === null || ref1 === void 0 ? void 0 : ref1.filter) builtQuery = _objectSpread({}, builtQuery, {
124
125
  postFilter: postFilter
125
126
  });
126
127
  if (pageType !== _index.ListingTypesEnum.Collection && collapseMode) builtQuery = _objectSpread({}, builtQuery, {
@@ -43,7 +43,10 @@ function _interopRequireDefault(obj) {
43
43
  }
44
44
  var useMenuQuery = function() {
45
45
  var interfaceKey = (0, _index).useConfigState().interfaceKey;
46
- return (0, _reactQuery).useQuery(_keys.NavigationKeysEnum.useMenuQuery, _asyncToGenerator(_regeneratorRuntime.default.mark(function _callee() {
46
+ return (0, _reactQuery).useQuery([
47
+ _keys.NavigationKeysEnum.useMenuQuery,
48
+ interfaceKey
49
+ ], _asyncToGenerator(_regeneratorRuntime.default.mark(function _callee() {
47
50
  return _regeneratorRuntime.default.wrap(function _callee$(_ctx) {
48
51
  while(1)switch(_ctx.prev = _ctx.next){
49
52
  case 0:
@@ -55,7 +55,10 @@ function _prefetchMenu() {
55
55
  case 2:
56
56
  data = _ctx.sent;
57
57
  menus = data === null || data === void 0 ? void 0 : data.results;
58
- queryCache.setQueryData(_keys.NavigationKeysEnum.useMenuQuery, menus, {
58
+ queryCache.setQueryData([
59
+ _keys.NavigationKeysEnum.useMenuQuery,
60
+ interfaceKey
61
+ ], menus, {
59
62
  staleTime: 30000
60
63
  });
61
64
  case 5:
@@ -84,6 +84,10 @@ export var useAggregateQuery = function(aggregates, request, sort) {
84
84
  aliasedSlug,
85
85
  postFilter
86
86
  ];
87
+ if (request === AggregateRequestEnum.Filters) {
88
+ queryKeys.push('Slug: ' + router.query.slug);
89
+ queryKeys.push('Cat: ' + router.query.cat);
90
+ }
87
91
  return useQuery(queryKeys, _asyncToGenerator(regeneratorRuntime.mark(function _callee() {
88
92
  var query, response;
89
93
  return regeneratorRuntime.wrap(function _callee$(_ctx) {
@@ -2,7 +2,7 @@ import regeneratorRuntime from "regenerator-runtime";
2
2
  import { CatalogFilter } from '@sentecacommerce/sdk';
3
3
  import { useQuery } from 'react-query';
4
4
  import { useRouter } from 'next/router';
5
- import { useListingConfig, useListingSlug, useListingAlias } from '../../hooks';
5
+ import { useListingConfig, useListingAlias } from '../../hooks';
6
6
  import { getListingQueryKeys, usePredicate } from '..';
7
7
  import { ListingTypesEnum } from '../../types';
8
8
  import { calculateOffset, getListingPageType, getPostFilters, extendFilter } from '../../utils';
@@ -112,7 +112,6 @@ function _unsupportedIterableToArray(o, minLen) {
112
112
  export var useListingQuery = function() {
113
113
  var ref;
114
114
  var router = useRouter();
115
- var slug = useListingSlug();
116
115
  var config = useListingConfig();
117
116
  var ref1 = usePredicate(), predicate = ref1.data;
118
117
  var ref2 = useListingAlias(config.meta), aliasedSlug = ref2.slug;
@@ -168,11 +167,12 @@ export function processListingQuery(_) {
168
167
  }
169
168
  function _processListingQuery() {
170
169
  _processListingQuery = _asyncToGenerator(regeneratorRuntime.mark(function _callee(param) {
171
- var predicate, router, limit, sort, postFilter, offset, config, slug, _includeVariants, includeVariants, query, type, filter, _sort;
170
+ var predicate, router, limit, sort, postFilter, offset, config, slug, _includeVariants, includeVariants, ref, query, type, filter, _sort;
172
171
  return regeneratorRuntime.wrap(function _callee$(_ctx) {
173
172
  while(1)switch(_ctx.prev = _ctx.next){
174
173
  case 0:
175
174
  predicate = param.predicate, router = param.router, limit = param.limit, sort = param.sort, postFilter = param.postFilter, offset = param.offset, config = param.config, slug = param.slug, _includeVariants = param.includeVariants, includeVariants = _includeVariants === void 0 ? false : _includeVariants;
175
+ ;
176
176
  query = router.query;
177
177
  type = getListingPageType(router, slug, config);
178
178
  filter = generateFilter(type, query, slug, predicate);
@@ -182,7 +182,7 @@ function _processListingQuery() {
182
182
  offset: offset || 0,
183
183
  filter: extendFilter({
184
184
  slug: filter,
185
- filterExtension: config === null || config === void 0 ? void 0 : config.filterExtension,
185
+ filterExtension: (config === null || config === void 0 ? void 0 : (ref = config.getFilterExtension) === null || ref === void 0 ? void 0 : ref.call(config, predicate)) || (config === null || config === void 0 ? void 0 : config.filterExtension),
186
186
  noSplit: true
187
187
  }),
188
188
  sort: (_sort = query.sort) !== null && _sort !== void 0 ? _sort : sort
@@ -193,7 +193,7 @@ function _processListingQuery() {
193
193
  }, {
194
194
  includeVariants: includeVariants
195
195
  })));
196
- case 6:
196
+ case 7:
197
197
  case "end":
198
198
  return _ctx.stop();
199
199
  }
@@ -30,43 +30,44 @@ function _objectSpread(target) {
30
30
  }
31
31
  export var buildCategoryQuery = function(param) {
32
32
  var aggregates = param.aggregates, predicate = param.predicate, postFilter = param.postFilter, pageType = param.pageType, config = param.config, router = param.router, slug = param.slug;
33
- var ref3, ref1;
34
- var type = (aggregates === null || aggregates === void 0 ? void 0 : (ref3 = aggregates[0]) === null || ref3 === void 0 ? void 0 : ref3.aggregationType) || '';
33
+ var ref2, ref1;
34
+ var type = (aggregates === null || aggregates === void 0 ? void 0 : (ref2 = aggregates[0]) === null || ref2 === void 0 ? void 0 : ref2.aggregationType) || '';
35
35
  var term = (aggregates === null || aggregates === void 0 ? void 0 : (ref1 = aggregates[0]) === null || ref1 === void 0 ? void 0 : ref1.aggregationDefinition) || '';
36
36
  var aggValue = getAggValue({
37
37
  id: predicate === null || predicate === void 0 ? void 0 : predicate._id,
38
38
  term: term
39
39
  });
40
40
  var getFilters = function() {
41
+ var ref;
42
+ var filterExtension = (config === null || config === void 0 ? void 0 : (ref = config.getFilterExtension) === null || ref === void 0 ? void 0 : ref.call(config, predicate)) || (config === null || config === void 0 ? void 0 : config.filterExtension);
41
43
  var filter = '';
42
44
  switch(pageType){
43
45
  case ListingTypesEnum.Brand:
44
46
  if (router.query.cat) {
45
47
  filter += extendFilter({
46
48
  slug: slug,
47
- filterExtension: config === null || config === void 0 ? void 0 : config.filterExtension
49
+ filterExtension: filterExtension
48
50
  });
49
51
  } else {
50
- var ref;
51
- filter += (ref = config === null || config === void 0 ? void 0 : config.filterExtension) !== null && ref !== void 0 ? ref : '';
52
+ filter += filterExtension !== null && filterExtension !== void 0 ? filterExtension : '';
52
53
  }
54
+ // Note: We can't filter the category tree by a category
55
+ postFilter = postFilter === null || postFilter === void 0 ? void 0 : postFilter.split('&').filter(function(f) {
56
+ return !f.includes('category');
57
+ }).join('&');
53
58
  if (postFilter) {
54
59
  if (filter) filter += '&';
55
- // Note: We can't filter the category tree by a category
56
- filter += postFilter.split('&').filter(function(f) {
57
- return !f.includes('category');
58
- }).join('&');
60
+ filter += postFilter;
59
61
  }
60
62
  break;
61
63
  case ListingTypesEnum.Category:
62
64
  if (router.query.cat) {
63
65
  filter += extendFilter({
64
66
  slug: slug,
65
- filterExtension: config === null || config === void 0 ? void 0 : config.filterExtension
67
+ filterExtension: filterExtension
66
68
  });
67
69
  } else {
68
- var ref2;
69
- filter += (ref2 = config === null || config === void 0 ? void 0 : config.filterExtension) !== null && ref2 !== void 0 ? ref2 : '';
70
+ filter += filterExtension !== null && filterExtension !== void 0 ? filterExtension : '';
70
71
  }
71
72
  if (postFilter) {
72
73
  if (filter) filter += '&';
@@ -76,7 +77,7 @@ export var buildCategoryQuery = function(param) {
76
77
  case ListingTypesEnum.AttrPage:
77
78
  filter += extendFilter({
78
79
  slug: slug,
79
- filterExtension: config === null || config === void 0 ? void 0 : config.filterExtension
80
+ filterExtension: filterExtension
80
81
  });
81
82
  if (postFilter) filter += "&".concat(postFilter);
82
83
  break;
@@ -90,12 +91,12 @@ export var buildCategoryQuery = function(param) {
90
91
  filter += applyViewsPostFilter({
91
92
  postFilter: postFilter
92
93
  });
93
- if (config === null || config === void 0 ? void 0 : config.filterExtension) {
94
- filter += filter ? "&".concat(config === null || config === void 0 ? void 0 : config.filterExtension) : config === null || config === void 0 ? void 0 : config.filterExtension;
94
+ if (filterExtension) {
95
+ filter += filter ? "&".concat(filterExtension) : filterExtension;
95
96
  }
96
97
  break;
97
98
  default:
98
- return "".concat((config === null || config === void 0 ? void 0 : config.filterExtension) + "".concat(postFilter !== null && postFilter !== void 0 ? postFilter : ''));
99
+ return "".concat(filterExtension + "".concat(postFilter !== null && postFilter !== void 0 ? postFilter : ''));
99
100
  }
100
101
  return filter;
101
102
  };
@@ -77,10 +77,11 @@ function _unsupportedIterableToArray(o, minLen) {
77
77
  }
78
78
  export var buildFilterQuery = function(param) {
79
79
  var predicate = param.predicate, slug = param.slug, pageType = param.pageType, router = param.router, aggregates = param.aggregates, config = param.config, postFilter = param.postFilter;
80
- var ref;
80
+ var ref, ref1;
81
81
  var query = (predicate === null || predicate === void 0 ? void 0 : predicate.filters) || (predicate === null || predicate === void 0 ? void 0 : predicate._id) || slug;
82
82
  var queryType = pageType === ListingTypesEnum.Search ? 'text' : pageType;
83
- var ref1 = config || {}, filterExtension = ref1.filterExtension, collapseMode = ref1.collapseMode;
83
+ var collapseMode = (config || {}).collapseMode;
84
+ var filterExtension = (config === null || config === void 0 ? void 0 : (ref = config.getFilterExtension) === null || ref === void 0 ? void 0 : ref.call(config)) || (config === null || config === void 0 ? void 0 : config.filterExtension);
84
85
  var filter = '';
85
86
  if (pageType === ListingTypesEnum.AttrPage) {
86
87
  var ref2 = _slicedToArray(getAttributePageType(router, slug), 2), type = ref2[0], val = ref2[1];
@@ -116,7 +117,7 @@ export var buildFilterQuery = function(param) {
116
117
  noSplit: true
117
118
  })
118
119
  });
119
- if ((ref = router.query) === null || ref === void 0 ? void 0 : ref.filter) builtQuery = _objectSpread({}, builtQuery, {
120
+ if ((ref1 = router.query) === null || ref1 === void 0 ? void 0 : ref1.filter) builtQuery = _objectSpread({}, builtQuery, {
120
121
  postFilter: postFilter
121
122
  });
122
123
  if (pageType !== ListingTypesEnum.Collection && collapseMode) builtQuery = _objectSpread({}, builtQuery, {
@@ -34,7 +34,10 @@ function _asyncToGenerator(fn) {
34
34
  }
35
35
  export var useMenuQuery = function() {
36
36
  var interfaceKey = useConfigState().interfaceKey;
37
- return useQuery(NavigationKeysEnum.useMenuQuery, _asyncToGenerator(regeneratorRuntime.mark(function _callee() {
37
+ return useQuery([
38
+ NavigationKeysEnum.useMenuQuery,
39
+ interfaceKey
40
+ ], _asyncToGenerator(regeneratorRuntime.mark(function _callee() {
38
41
  return regeneratorRuntime.wrap(function _callee$(_ctx) {
39
42
  while(1)switch(_ctx.prev = _ctx.next){
40
43
  case 0:
@@ -46,7 +46,10 @@ function _prefetchMenu() {
46
46
  case 2:
47
47
  data = _ctx.sent;
48
48
  menus = data === null || data === void 0 ? void 0 : data.results;
49
- queryCache.setQueryData(NavigationKeysEnum.useMenuQuery, menus, {
49
+ queryCache.setQueryData([
50
+ NavigationKeysEnum.useMenuQuery,
51
+ interfaceKey
52
+ ], menus, {
50
53
  staleTime: 30000
51
54
  });
52
55
  case 5:
@@ -1,4 +1,5 @@
1
1
  import { BooleanField, StringField, NumberField, EnumField, ListField, GroupField } from '@sentecacommerce-theme/cms';
2
+ import { PredicateType } from './api/queries/usePredicate';
2
3
  export declare type FiltersQuery = {
3
4
  storeKey?: string;
4
5
  currencyCode?: string;
@@ -82,6 +83,7 @@ export interface ListingPageMeta {
82
83
  [key: string]: string;
83
84
  };
84
85
  filterExtension?: StringField;
86
+ getFilterExtension?: (predicate?: PredicateType) => StringField;
85
87
  collapseMode?: StringField;
86
88
  limit: NumberField;
87
89
  includeVariants?: BooleanField;
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@sentecacommerce-theme/lib",
3
3
  "sideEffects": false,
4
- "version": "0.13.14",
4
+ "version": "0.13.15",
5
5
  "main": "dist/cjs/index.js",
6
6
  "module": "dist/esm/index.js",
7
7
  "types": "dist/types/index.d.ts",
@@ -31,13 +31,13 @@
31
31
  "watch:cjs": "swc src --out-dir dist/cjs -w",
32
32
  "watch:esm": "swc src --out-dir dist/esm --no-swcrc -w"
33
33
  },
34
- "gitHead": "f19a5ed8fb202ed5a9ccf126b7fe5f5551dab401",
34
+ "gitHead": "29ad2b188f1645f30ed28f6068e232bbe6fc732b",
35
35
  "peerDependencies": {
36
36
  "react-query": "^2.26.2"
37
37
  },
38
38
  "dependencies": {
39
- "@sentecacommerce-theme/base": "^0.13.14",
40
- "@sentecacommerce-theme/cms": "^0.13.14",
39
+ "@sentecacommerce-theme/base": "^0.13.15",
40
+ "@sentecacommerce-theme/cms": "^0.13.15",
41
41
  "@sentecacommerce/sdk": "2.0.175",
42
42
  "body-scroll-lock": "^3.1.5",
43
43
  "copy-to-clipboard": "^3.3.1",