@sentecacommerce-theme/lib 0.12.94 → 0.12.98

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 (49) hide show
  1. package/dist/cjs/analytics/Pixel/mainScript.js +2 -1
  2. package/dist/cjs/api/getSDKConfig.js +4 -2
  3. package/dist/cjs/api/myCartApi/index.js +8 -2
  4. package/dist/cjs/config/SentecaProvider.js +3 -1
  5. package/dist/cjs/hooks/wishlist-hooks/useWishlistItem/index.js +39 -15
  6. package/dist/cjs/listing/api/queries/useListingQuery.js +1 -1
  7. package/dist/cjs/listing/hooks/useListingMeta.js +49 -40
  8. package/dist/cjs/listing/hooks/useSlideFilter.js +24 -3
  9. package/dist/cjs/listing/ssr/prefetchCategories.js +4 -5
  10. package/dist/cjs/listing/ssr/prefetchPredicate.js +4 -4
  11. package/dist/cjs/seo/components/TranslationsMeta/index.js +58 -0
  12. package/dist/cjs/seo/components/index.js +12 -0
  13. package/dist/cjs/seo/hooks/index.js +14 -0
  14. package/dist/cjs/seo/hooks/useSeoTranslations.js +90 -0
  15. package/dist/cjs/ui/components/GridStyles.js +2 -2
  16. package/dist/cjs/ui/components/RangeSliderInput.js +14 -1
  17. package/dist/cjs/utils/getLocaleFromPath.js +13 -0
  18. package/dist/cjs/utils/index.js +12 -0
  19. package/dist/cjs/utils/isTouchDevice.js +2 -1
  20. package/dist/esm/analytics/Pixel/mainScript.js +2 -1
  21. package/dist/esm/api/getSDKConfig.js +5 -3
  22. package/dist/esm/api/myCartApi/index.js +8 -2
  23. package/dist/esm/config/SentecaProvider.js +3 -1
  24. package/dist/esm/hooks/wishlist-hooks/useWishlistItem/index.js +21 -13
  25. package/dist/esm/listing/api/queries/useListingQuery.js +1 -1
  26. package/dist/esm/listing/hooks/useListingMeta.js +49 -40
  27. package/dist/esm/listing/hooks/useSlideFilter.js +24 -3
  28. package/dist/esm/listing/ssr/prefetchCategories.js +5 -6
  29. package/dist/esm/listing/ssr/prefetchPredicate.js +4 -4
  30. package/dist/esm/seo/components/TranslationsMeta/index.js +48 -0
  31. package/dist/esm/seo/components/index.js +1 -0
  32. package/dist/esm/seo/hooks/index.js +1 -0
  33. package/dist/esm/seo/hooks/useSeoTranslations.js +79 -0
  34. package/dist/esm/ui/components/GridStyles.js +2 -2
  35. package/dist/esm/ui/components/RangeSliderInput.js +14 -1
  36. package/dist/esm/utils/getLocaleFromPath.js +8 -0
  37. package/dist/esm/utils/index.js +1 -0
  38. package/dist/esm/utils/isTouchDevice.js +2 -1
  39. package/dist/types/listing/hooks/useSlideFilter.d.ts +4 -0
  40. package/dist/types/listing/types.d.ts +10 -0
  41. package/dist/types/seo/components/TranslationsMeta/index.d.ts +1 -0
  42. package/dist/types/seo/components/index.d.ts +1 -0
  43. package/dist/types/seo/hooks/index.d.ts +1 -0
  44. package/dist/types/seo/hooks/useSeoTranslations.d.ts +24 -0
  45. package/dist/types/ui/components/GridStyles.d.ts +2 -1
  46. package/dist/types/ui/components/RangeSliderInput.d.ts +2 -1
  47. package/dist/types/utils/getLocaleFromPath.d.ts +1 -0
  48. package/dist/types/utils/index.d.ts +1 -0
  49. package/package.json +4 -4
@@ -158,7 +158,8 @@ function _objectSpread(target) {
158
158
  mode: 'cors',
159
159
  cache: 'no-cache',
160
160
  headers: {
161
- 'Content-Type': 'application/json'
161
+ 'Content-Type': 'application/json',
162
+ 'senteca-locale': global.location.pathname.split('/')[1] || ''
162
163
  },
163
164
  body: JSON.stringify(payload)
164
165
  });
@@ -44,14 +44,16 @@ var getSDKConfig = function() {
44
44
  var defaultConfig = getOptions(options);
45
45
  var headers = ((ref = _sdk.HttpClient.defaultConfig) === null || ref === void 0 ? void 0 : ref.options.headers) || (defaultConfig === null || defaultConfig === void 0 ? void 0 : defaultConfig.headers) || {};
46
46
  var config = new _sdk.Configuration(_objectSpread({}, ((ref1 = _sdk.HttpClient.defaultConfig) === null || ref1 === void 0 ? void 0 : ref1.options) || defaultConfig, options, {
47
- headers: _objectSpread({}, headers, options.headers || {})
47
+ headers: _objectSpread({}, headers, options.headers || {}, {
48
+ 'senteca-locale': (0, _utils).getLocaleFromPath()
49
+ })
48
50
  }));
49
51
  return config;
50
52
  };
51
53
  exports.getSDKConfig = getSDKConfig;
52
54
  var getOptions = function() {
53
55
  var options = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : {};
54
- if (typeof window === 'undefined') {
56
+ if (!(0, _utils).canUseDOM()) {
55
57
  // eslint-disable-next-line @typescript-eslint/no-var-requires
56
58
  var nodeFetch = require('node-fetch');
57
59
  var ref;
@@ -10,6 +10,7 @@ var _utils = require("../../utils");
10
10
  var _getSDKConfig = require("../getSDKConfig");
11
11
  var _utils1 = require("./utils");
12
12
  var _promoCode = require("../../api.v2/core/misc/promo-code");
13
+ var _ = require("../..");
13
14
  function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {
14
15
  try {
15
16
  var info = gen[key](arg);
@@ -122,6 +123,7 @@ var MyCartApiFactory = function() {
122
123
  }(),
123
124
  useGet: function() {
124
125
  var queryCache = (0, _reactQuery).useQueryCache();
126
+ var isLoading = (0, _).useIsAuthenticated().isLoading;
125
127
  return (0, _reactQuery).useQuery(myCartCacheKeys.useGet, _asyncToGenerator(_regeneratorRuntime.default.mark(function _callee() {
126
128
  var data;
127
129
  return _regeneratorRuntime.default.wrap(function _callee$(_ctx) {
@@ -140,12 +142,14 @@ var MyCartApiFactory = function() {
140
142
  }
141
143
  }, _callee);
142
144
  })), {
145
+ enabled: !isLoading,
143
146
  retry: false,
144
- refetchOnMount: false,
147
+ refetchOnMount: true,
145
148
  refetchOnWindowFocus: false
146
149
  });
147
150
  },
148
151
  useGetCompact: function() {
152
+ var isLoading = (0, _).useIsAuthenticated().isLoading;
149
153
  return (0, _reactQuery).useQuery(myCartCacheKeys.useGetCompact, _asyncToGenerator(_regeneratorRuntime.default.mark(function _callee() {
150
154
  var compactBasket;
151
155
  return _regeneratorRuntime.default.wrap(function _callee$(_ctx) {
@@ -158,7 +162,9 @@ var MyCartApiFactory = function() {
158
162
  return _ctx.stop();
159
163
  }
160
164
  }, _callee);
161
- })));
165
+ })), {
166
+ enabled: !isLoading
167
+ });
162
168
  },
163
169
  useIsExisting: function(productId, variantId, collapseKey) {
164
170
  return (0, _reactQuery).useQuery([
@@ -8,6 +8,7 @@ var _nodeFetch = _interopRequireDefault(require("node-fetch"));
8
8
  var _getSDKConfig = require("../api/getSDKConfig");
9
9
  var _reactQuery = require("react-query");
10
10
  var _tokens = require("../utils/tokens");
11
+ var _utils = require("../utils");
11
12
  var _router = require("next/router");
12
13
  function _defineProperty(obj, key, value) {
13
14
  if (key in obj) {
@@ -51,7 +52,8 @@ function SentecaProvider(param) {
51
52
  if (localeData) {
52
53
  options.headers = _objectSpread({}, options.headers || {}, {
53
54
  InterfaceKey: localeData.interfaceKey,
54
- StoreKey: localeData.storeKey
55
+ StoreKey: localeData.storeKey,
56
+ 'senteca-locale': (0, _utils).getLocaleFromPath()
55
57
  });
56
58
  }
57
59
  _sdk.HttpClient.defaultConfig = new _sdk.Configuration(options);
@@ -2,7 +2,7 @@ Object.defineProperty(exports, "__esModule", {
2
2
  value: true
3
3
  });
4
4
  exports.useWishlistItem = void 0;
5
- var _react = _interopRequireDefault(require("react"));
5
+ var _react = _interopRequireWildcard(require("react"));
6
6
  var _ = require("../../../");
7
7
  var _utils = require("../../basket-hooks/useBasketLineItem/utils");
8
8
  var _utils1 = require("../../../utils");
@@ -14,10 +14,26 @@ function _arrayLikeToArray(arr, len) {
14
14
  function _arrayWithHoles(arr) {
15
15
  if (Array.isArray(arr)) return arr;
16
16
  }
17
- function _interopRequireDefault(obj) {
18
- return obj && obj.__esModule ? obj : {
19
- default: obj
20
- };
17
+ function _interopRequireWildcard(obj) {
18
+ if (obj && obj.__esModule) {
19
+ return obj;
20
+ } else {
21
+ var newObj = {};
22
+ if (obj != null) {
23
+ for(var key in obj){
24
+ if (Object.prototype.hasOwnProperty.call(obj, key)) {
25
+ var desc = Object.defineProperty && Object.getOwnPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : {};
26
+ if (desc.get || desc.set) {
27
+ Object.defineProperty(newObj, key, desc);
28
+ } else {
29
+ newObj[key] = obj[key];
30
+ }
31
+ }
32
+ }
33
+ }
34
+ newObj.default = obj;
35
+ return newObj;
36
+ }
21
37
  }
22
38
  function _iterableToArrayLimit(arr, i) {
23
39
  var _i = arr == null ? null : typeof Symbol !== "undefined" && arr[Symbol.iterator] || arr["@@iterator"];
@@ -59,15 +75,19 @@ function _unsupportedIterableToArray(o, minLen) {
59
75
  }
60
76
  var useWishlistItem = function(props) {
61
77
  var ref16;
62
- var ref1 = _slicedToArray(_react.default.useState(false), 2), isExpired = ref1[0], setIsExpired = ref1[1];
78
+ var item = props.item, expiry = props.expiry;
79
+ var ref1 = _slicedToArray((0, _).useBoolean(false), 2), isExpired = ref1[0], setIsExpired = ref1[1];
63
80
  var ref2 = _slicedToArray(_.wishlistApi.useSync(), 1), syncWishlist = ref2[0];
64
81
  var ref3 = (0, _).usePrefetchProduct((0, _).getTranslatableField(props === null || props === void 0 ? void 0 : (ref16 = props.item) === null || ref16 === void 0 ? void 0 : ref16.productSlug)), onMouseDown = ref3.onMouseDown, onMouseEnter = ref3.onMouseEnter, onMouseLeave = ref3.onMouseLeave;
82
+ (0, _react).useEffect(function() {
83
+ if (expiry) {
84
+ if (Date.now() > expiry + (item === null || item === void 0 ? void 0 : item.snapshotFrom)) {
85
+ setIsExpired.on();
86
+ }
87
+ }
88
+ }, []);
65
89
  var data = _react.default.useMemo(function() {
66
90
  var ref, ref4, ref5, ref6, ref7, ref8, ref9, ref10, ref11, ref12, ref13, ref14, ref15;
67
- var item = props.item;
68
- if (props.expiry && (0, _utils).getTimeStamp(props.expiry) < (item === null || item === void 0 ? void 0 : item.snapshotFrom)) {
69
- setIsExpired(true);
70
- }
71
91
  var offer = item === null || item === void 0 ? void 0 : (ref = item.productVariant) === null || ref === void 0 ? void 0 : ref.offer;
72
92
  var mappedAttributes = (0, _utils).createMappedAttributes(item === null || item === void 0 ? void 0 : (ref4 = item.productVariant) === null || ref4 === void 0 ? void 0 : ref4.attributes) || {};
73
93
  var mappedCustomField = (0, _utils1).customFieldsToMap(item.custom);
@@ -107,12 +127,16 @@ var useWishlistItem = function(props) {
107
127
  }
108
128
  };
109
129
  }, [
110
- props.item
130
+ item
131
+ ]);
132
+ (0, _react).useEffect(function() {
133
+ if (isExpired) {
134
+ syncWishlist();
135
+ setIsExpired.off();
136
+ }
137
+ }, [
138
+ isExpired
111
139
  ]);
112
- if (isExpired) {
113
- syncWishlist();
114
- setIsExpired(false);
115
- }
116
140
  return data;
117
141
  };
118
142
  exports.useWishlistItem = useWishlistItem;
@@ -137,7 +137,7 @@ var useListingQuery = function() {
137
137
  predicate: predicate,
138
138
  sort: sort,
139
139
  postFilter: postFilter,
140
- slug: slug,
140
+ slug: aliasedSlug,
141
141
  offset: offset
142
142
  });
143
143
  return (0, _reactQuery).useQuery(queryKeys, _asyncToGenerator(_regeneratorRuntime.default.mark(function _callee() {
@@ -8,7 +8,6 @@ var _utils = require("../../utils");
8
8
  var _assetsToMap = require("../../utils/assetsToMap");
9
9
  var _router = require("next/router");
10
10
  var _utils1 = require("../utils");
11
- var _types = require("../types");
12
11
  var _index = require("../../index");
13
12
  var _useListingFilters = require("./useListingFilters");
14
13
  var _useListingCategories = require("./useListingCategories");
@@ -32,6 +31,33 @@ function _iterableToArray(iter) {
32
31
  function _nonIterableSpread() {
33
32
  throw new TypeError("Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
34
33
  }
34
+ function _objectWithoutProperties(source, excluded) {
35
+ if (source == null) return {};
36
+ var target = _objectWithoutPropertiesLoose(source, excluded);
37
+ var key, i;
38
+ if (Object.getOwnPropertySymbols) {
39
+ var sourceSymbolKeys = Object.getOwnPropertySymbols(source);
40
+ for(i = 0; i < sourceSymbolKeys.length; i++){
41
+ key = sourceSymbolKeys[i];
42
+ if (excluded.indexOf(key) >= 0) continue;
43
+ if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;
44
+ target[key] = source[key];
45
+ }
46
+ }
47
+ return target;
48
+ }
49
+ function _objectWithoutPropertiesLoose(source, excluded) {
50
+ if (source == null) return {};
51
+ var target = {};
52
+ var sourceKeys = Object.keys(source);
53
+ var key, i;
54
+ for(i = 0; i < sourceKeys.length; i++){
55
+ key = sourceKeys[i];
56
+ if (excluded.indexOf(key) >= 0) continue;
57
+ target[key] = source[key];
58
+ }
59
+ return target;
60
+ }
35
61
  function _toConsumableArray(arr) {
36
62
  return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread();
37
63
  }
@@ -90,74 +116,57 @@ var useListingMeta = function() {
90
116
  };
91
117
  exports.useListingMeta = useListingMeta;
92
118
  function processDisplayName(slug, config, name, breadcrumb, router, aggData, categoriesData) {
119
+ var ref, ref5;
93
120
  var listingName = (0, _utils).getTranslatableField(name);
94
121
  var brandName = getBrandName(router, aggData);
95
122
  var categoryName = getCategoryName(router, categoriesData);
96
123
  var type = (0, _utils1).getListingPageType(router, slug, config);
97
- if (type === _types.ListingTypesEnum.AttrPage) {
98
- return "Всичко за ".concat(config.titleAliases[slug]);
99
- }
100
- if (router === null || router === void 0 ? void 0 : router.query.cat) {
101
- var attribute = (0, _utils).getTranslatableField(breadcrumb === null || breadcrumb === void 0 ? void 0 : breadcrumb.label);
102
- if (type === _types.ListingTypesEnum.Category) {
103
- if (!brandName) {
104
- return "".concat(listingName, " за ").concat(attribute);
105
- }
106
- return "".concat(listingName, " за ").concat(attribute, " от ").concat(brandName);
107
- }
108
- if (type === _types.ListingTypesEnum.Brand) {
109
- if (!categoryName) {
110
- return "Всички продукти от ".concat(listingName, " за ").concat(attribute);
111
- }
112
- return "".concat(categoryName, " от ").concat(listingName, " за ").concat(attribute);
113
- }
114
- }
115
- if (type === _types.ListingTypesEnum.Category && brandName) {
116
- return "".concat(listingName, " от ").concat(brandName);
117
- }
118
- if (type === _types.ListingTypesEnum.Brand) {
119
- if (!categoryName) {
120
- return "Всички продукти от ".concat(listingName);
121
- }
122
- return "".concat(categoryName, " от ").concat(listingName);
123
- }
124
- if (type === _types.ListingTypesEnum.Search && (router === null || router === void 0 ? void 0 : router.query.search)) {
125
- return "".concat(listingName, " от \"").concat(router.query.search, "\"");
126
- }
127
- return listingName;
124
+ var getTitle = config.getTitle, rest = _objectWithoutProperties(config, [
125
+ "getTitle"
126
+ ]);
127
+ var title = getTitle === null || getTitle === void 0 ? void 0 : getTitle(type, rest, {
128
+ category: categoryName,
129
+ brand: brandName,
130
+ defaultName: listingName,
131
+ attribute: (ref = config.titleAliases) === null || ref === void 0 ? void 0 : ref[slug],
132
+ childAttribute: (0, _utils).getTranslatableField(breadcrumb === null || breadcrumb === void 0 ? void 0 : breadcrumb.label),
133
+ search: router === null || router === void 0 ? void 0 : (ref5 = router.query) === null || ref5 === void 0 ? void 0 : ref5.search,
134
+ isWithAttribute: Boolean(router === null || router === void 0 ? void 0 : router.query.cat)
135
+ });
136
+ return title || listingName;
128
137
  }
129
138
  function getFilterByType(filterType, router) {
130
139
  var filterId = '';
131
140
  if (Array.isArray(router === null || router === void 0 ? void 0 : router.query.filter)) {
132
- var ref, ref5;
141
+ var ref, ref6;
133
142
  var filters = (ref = router === null || router === void 0 ? void 0 : router.query.filter) === null || ref === void 0 ? void 0 : ref.filter(function(x) {
134
143
  return x === null || x === void 0 ? void 0 : x.includes(filterType);
135
144
  });
136
145
  if ((filters === null || filters === void 0 ? void 0 : filters.length) && filters.length > 1) {
137
146
  return '';
138
147
  }
139
- var filterTerm = (ref5 = /\d+/.exec((filters === null || filters === void 0 ? void 0 : filters[0]) || '')) === null || ref5 === void 0 ? void 0 : ref5[0];
148
+ var filterTerm = (ref6 = /\d+/.exec((filters === null || filters === void 0 ? void 0 : filters[0]) || '')) === null || ref6 === void 0 ? void 0 : ref6[0];
140
149
  if (!filterTerm) return '';
141
150
  filterId = filterTerm;
142
151
  } else {
143
- var ref6, ref7, ref8;
144
- var isFiltered = router === null || router === void 0 ? void 0 : (ref6 = router.query) === null || ref6 === void 0 ? void 0 : (ref7 = ref6.filter) === null || ref7 === void 0 ? void 0 : ref7.includes(filterType);
152
+ var ref7, ref8, ref9;
153
+ var isFiltered = router === null || router === void 0 ? void 0 : (ref7 = router.query) === null || ref7 === void 0 ? void 0 : (ref8 = ref7.filter) === null || ref8 === void 0 ? void 0 : ref8.includes(filterType);
145
154
  if (!isFiltered) {
146
155
  return '';
147
156
  }
148
- filterId = (ref8 = /(\w+)-(\d+)/.exec(router === null || router === void 0 ? void 0 : router.query.filter)) === null || ref8 === void 0 ? void 0 : ref8[0];
157
+ filterId = (ref9 = /(\w+)-(\d+)/.exec(router === null || router === void 0 ? void 0 : router.query.filter)) === null || ref9 === void 0 ? void 0 : ref9[0];
149
158
  }
150
159
  return filterId;
151
160
  }
152
161
  function getBrandName(router, filtersData) {
153
- var ref, ref9, ref10;
162
+ var ref, ref10, ref11;
154
163
  var brandId = getFilterByType('brand', router);
155
164
  var brand = (ref = filtersData === null || filtersData === void 0 ? void 0 : filtersData.find(function(x) {
156
165
  return x.name === 'Brands';
157
- })) === null || ref === void 0 ? void 0 : (ref9 = ref.items) === null || ref9 === void 0 ? void 0 : ref9.find(function(x) {
166
+ })) === null || ref === void 0 ? void 0 : (ref10 = ref.items) === null || ref10 === void 0 ? void 0 : ref10.find(function(x) {
158
167
  return x.data.key === brandId;
159
168
  });
160
- return (0, _utils).getTranslatableField(brand === null || brand === void 0 ? void 0 : (ref10 = brand.meta) === null || ref10 === void 0 ? void 0 : ref10.name);
169
+ return (0, _utils).getTranslatableField(brand === null || brand === void 0 ? void 0 : (ref11 = brand.meta) === null || ref11 === void 0 ? void 0 : ref11.name);
161
170
  }
162
171
  function getCategoryName(router, categories) {
163
172
  var categoryId = getFilterByType('category', router);
@@ -56,7 +56,7 @@ function _unsupportedIterableToArray(o, minLen) {
56
56
  if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);
57
57
  }
58
58
  var useSlideFilter = function(filterName, min, max) {
59
- var ref;
59
+ var ref3;
60
60
  var router = (0, _router).useRouter();
61
61
  var meta = (0, _).useListingConfig().meta;
62
62
  var slug = (0, _index).useListingAlias(meta).slug;
@@ -71,7 +71,7 @@ var useSlideFilter = function(filterName, min, max) {
71
71
  }
72
72
  if (allFilters.includes(filterQuery)) return allFilters;
73
73
  };
74
- var filter = (ref = getFilter()) === null || ref === void 0 ? void 0 : ref.replace(filterQuery, '');
74
+ var filter = (ref3 = getFilter()) === null || ref3 === void 0 ? void 0 : ref3.replace(filterQuery, '');
75
75
  var ref1 = _slicedToArray(filter ? filter.split(',') : [
76
76
  min,
77
77
  max
@@ -81,9 +81,29 @@ var useSlideFilter = function(filterName, min, max) {
81
81
  to: +to || max
82
82
  }), 2), state = ref2[0], setState = ref2[1];
83
83
  var timeoutRef = (0, _react).useRef();
84
- var updateValue = (0, _react).useCallback(function(data) {
84
+ var getFormattedPriceRange = function(data) {
85
85
  var formattedFrom = Math.min(Math.max(data.from, min), data.to);
86
86
  var formattedTo = Math.max(data.from, Math.min(data.to, max));
87
+ return {
88
+ formattedFrom: formattedFrom,
89
+ formattedTo: formattedTo
90
+ };
91
+ };
92
+ var updateValue = (0, _react).useCallback(function(data) {
93
+ var ref = getFormattedPriceRange(data), formattedFrom = ref.formattedFrom, formattedTo = ref.formattedTo;
94
+ setState({
95
+ from: formattedFrom,
96
+ to: formattedTo
97
+ });
98
+ }, [
99
+ filterName,
100
+ max,
101
+ min,
102
+ router,
103
+ slug
104
+ ]);
105
+ var applyFilter = (0, _react).useCallback(function(data) {
106
+ var ref = getFormattedPriceRange(data), formattedFrom = ref.formattedFrom, formattedTo = ref.formattedTo;
87
107
  clearTimeout(timeoutRef.current);
88
108
  timeoutRef.current = setTimeout(function() {
89
109
  router.push((0, _utils).createAggregateQuery((0, _utils1).getListingPageType(router, slug, meta), router.query.slug, {
@@ -105,6 +125,7 @@ var useSlideFilter = function(filterName, min, max) {
105
125
  ]);
106
126
  return {
107
127
  value: state,
128
+ applyFilter: applyFilter,
108
129
  updateValue: updateValue
109
130
  };
110
131
  };
@@ -45,7 +45,7 @@ function prefetchCategories(queryCache, router, predicate, aggregates, config) {
45
45
  }
46
46
  function _prefetchCategories() {
47
47
  _prefetchCategories = _asyncToGenerator(_regeneratorRuntime.default.mark(function _callee(queryCache, router, predicate, aggregates, config) {
48
- var aggregateKeys, aliasedSlug, slug, query, response;
48
+ var aggregateKeys, aliasedSlug, query, response;
49
49
  return _regeneratorRuntime.default.wrap(function _callee$(_ctx) {
50
50
  while(1)switch(_ctx.prev = _ctx.next){
51
51
  case 0:
@@ -54,7 +54,6 @@ function _prefetchCategories() {
54
54
  router: router,
55
55
  config: config
56
56
  });
57
- slug = (0, _utils).getSlug(router, aliasedSlug);
58
57
  query = (0, _api).prepareAggregateQuery({
59
58
  request: _api.AggregateRequestEnum.Categories,
60
59
  router: router,
@@ -64,9 +63,9 @@ function _prefetchCategories() {
64
63
  postFilter: undefined,
65
64
  config: config
66
65
  });
67
- _ctx.next = 6;
66
+ _ctx.next = 5;
68
67
  return (0, _sdk).CatalogAggregate(query);
69
- case 6:
68
+ case 5:
70
69
  response = _ctx.sent;
71
70
  queryCache.setQueryData([
72
71
  _api.AggregateRequestEnum.Categories,
@@ -77,7 +76,7 @@ function _prefetchCategories() {
77
76
  staleTime: 30000
78
77
  });
79
78
  return _ctx.abrupt("return", response);
80
- case 9:
79
+ case 8:
81
80
  case "end":
82
81
  return _ctx.stop();
83
82
  }
@@ -44,20 +44,20 @@ function prefetchPredicate(queryCache, router, config) {
44
44
  }
45
45
  function _prefetchPredicate() {
46
46
  _prefetchPredicate = _asyncToGenerator(_regeneratorRuntime.default.mark(function _callee(queryCache, router, config) {
47
- var attribute, aliasedSlug, slug, data;
47
+ var aliasedSlug, slug, data, attribute;
48
48
  return _regeneratorRuntime.default.wrap(function _callee$(_ctx) {
49
49
  while(1)switch(_ctx.prev = _ctx.next){
50
50
  case 0:
51
- attribute = router.query.cat && router.query.slug;
52
51
  aliasedSlug = (0, _utils).getListingAlias({
53
52
  router: router,
54
53
  config: config
55
54
  });
56
55
  slug = (0, _utils).getSlug(router, aliasedSlug);
57
- _ctx.next = 5;
56
+ _ctx.next = 4;
58
57
  return (0, _api).processPredicateRequest(slug, router, aliasedSlug);
59
- case 5:
58
+ case 4:
60
59
  data = _ctx.sent;
60
+ attribute = router.query.cat && aliasedSlug;
61
61
  queryCache.setQueryData([
62
62
  _api.ListingQueryKeysEnum.usePredicate,
63
63
  slug,
@@ -0,0 +1,58 @@
1
+ Object.defineProperty(exports, "__esModule", {
2
+ value: true
3
+ });
4
+ exports.TranslationsMeta = void 0;
5
+ var _react = _interopRequireDefault(require("react"));
6
+ var _useSeoTranslations = require("../../hooks/useSeoTranslations");
7
+ var _head = _interopRequireDefault(require("next/head"));
8
+ var _router = require("next/router");
9
+ function _extends() {
10
+ _extends = Object.assign || function(target) {
11
+ for(var i = 1; i < arguments.length; i++){
12
+ var source = arguments[i];
13
+ for(var key in source){
14
+ if (Object.prototype.hasOwnProperty.call(source, key)) {
15
+ target[key] = source[key];
16
+ }
17
+ }
18
+ }
19
+ return target;
20
+ };
21
+ return _extends.apply(this, arguments);
22
+ }
23
+ function _interopRequireDefault(obj) {
24
+ return obj && obj.__esModule ? obj : {
25
+ default: obj
26
+ };
27
+ }
28
+ var TranslationsMeta = function() {
29
+ var ref = (0, _useSeoTranslations).useSeoTranslations(), translationsMap = ref.translationsMap, allLocales = ref.allLocales, defaultLocale = ref.defaultLocale;
30
+ var router = (0, _router).useRouter();
31
+ var defaultTranslation = translationsMap[defaultLocale];
32
+ var isError = router.route === '/404' || router.route === '/_error';
33
+ if (isError) return null;
34
+ var domain = defaultTranslation === null || defaultTranslation === void 0 ? void 0 : defaultTranslation.domain;
35
+ return(/*#__PURE__*/ _react.default.createElement(_head.default, null, allLocales === null || allLocales === void 0 ? void 0 : allLocales.map(function(locale) {
36
+ var translation = translationsMap === null || translationsMap === void 0 ? void 0 : translationsMap[locale];
37
+ var href = translation === null || translation === void 0 ? void 0 : translation.slug;
38
+ // go to the same page but with the right locale.
39
+ // This is for pages that does not have a translated slug
40
+ // example: /checkout -> /en/checkout, /ro/checkout
41
+ if (!href) href = "/".concat(locale).concat(router.asPath);
42
+ return(/*#__PURE__*/ _react.default.createElement("link", _extends({
43
+ rel: "alternate"
44
+ }, {
45
+ hreflang: locale
46
+ }, {
47
+ href: domain + href,
48
+ key: 'Translation__' + href
49
+ })));
50
+ }), defaultTranslation && /*#__PURE__*/ _react.default.createElement("link", _extends({
51
+ rel: "alternate"
52
+ }, {
53
+ hreflang: 'x-default'
54
+ }, {
55
+ href: "".concat(domain).concat(defaultTranslation === null || defaultTranslation === void 0 ? void 0 : defaultTranslation.slug)
56
+ }))));
57
+ };
58
+ exports.TranslationsMeta = TranslationsMeta;
@@ -74,6 +74,18 @@ Object.keys(_hiddenBreadcrumb).forEach(function(key) {
74
74
  }
75
75
  });
76
76
  });
77
+ var _translationsMeta = _interopRequireWildcard(require("./TranslationsMeta"));
78
+ Object.keys(_translationsMeta).forEach(function(key) {
79
+ if (key === "default" || key === "__esModule") return;
80
+ if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
81
+ if (key in exports && exports[key] === _translationsMeta[key]) return;
82
+ Object.defineProperty(exports, key, {
83
+ enumerable: true,
84
+ get: function() {
85
+ return _translationsMeta[key];
86
+ }
87
+ });
88
+ });
77
89
  function _interopRequireWildcard(obj) {
78
90
  if (obj && obj.__esModule) {
79
91
  return obj;
@@ -1,9 +1,11 @@
1
1
  Object.defineProperty(exports, "__esModule", {
2
2
  value: true
3
3
  });
4
+ var _exportNames = {};
4
5
  var _useSEOBreadcrumb = _interopRequireWildcard(require("./useSEOBreadcrumb"));
5
6
  Object.keys(_useSEOBreadcrumb).forEach(function(key) {
6
7
  if (key === "default" || key === "__esModule") return;
8
+ if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
7
9
  if (key in exports && exports[key] === _useSEOBreadcrumb[key]) return;
8
10
  Object.defineProperty(exports, key, {
9
11
  enumerable: true,
@@ -12,6 +14,18 @@ Object.keys(_useSEOBreadcrumb).forEach(function(key) {
12
14
  }
13
15
  });
14
16
  });
17
+ var _useSeoTranslations = _interopRequireWildcard(require("./useSeoTranslations"));
18
+ Object.keys(_useSeoTranslations).forEach(function(key) {
19
+ if (key === "default" || key === "__esModule") return;
20
+ if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
21
+ if (key in exports && exports[key] === _useSeoTranslations[key]) return;
22
+ Object.defineProperty(exports, key, {
23
+ enumerable: true,
24
+ get: function() {
25
+ return _useSeoTranslations[key];
26
+ }
27
+ });
28
+ });
15
29
  function _interopRequireWildcard(obj) {
16
30
  if (obj && obj.__esModule) {
17
31
  return obj;
@@ -0,0 +1,90 @@
1
+ Object.defineProperty(exports, "__esModule", {
2
+ value: true
3
+ });
4
+ exports.useSeoTranslations = exports.SeoTranslationsProvider = void 0;
5
+ var _react = _interopRequireDefault(require("react"));
6
+ var _router = require("next/router");
7
+ function _defineProperty(obj, key, value) {
8
+ if (key in obj) {
9
+ Object.defineProperty(obj, key, {
10
+ value: value,
11
+ enumerable: true,
12
+ configurable: true,
13
+ writable: true
14
+ });
15
+ } else {
16
+ obj[key] = value;
17
+ }
18
+ return obj;
19
+ }
20
+ function _interopRequireDefault(obj) {
21
+ return obj && obj.__esModule ? obj : {
22
+ default: obj
23
+ };
24
+ }
25
+ function _objectSpread(target) {
26
+ for(var i = 1; i < arguments.length; i++){
27
+ var source = arguments[i] != null ? arguments[i] : {};
28
+ var ownKeys = Object.keys(source);
29
+ if (typeof Object.getOwnPropertySymbols === "function") {
30
+ ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function(sym) {
31
+ return Object.getOwnPropertyDescriptor(source, sym).enumerable;
32
+ }));
33
+ }
34
+ ownKeys.forEach(function(key) {
35
+ _defineProperty(target, key, source[key]);
36
+ });
37
+ }
38
+ return target;
39
+ }
40
+ var SeoTranslationsContext = /*#__PURE__*/ _react.default.createContext({});
41
+ var SeoTranslationsProvider = function(param) {
42
+ var children = param.children, translations = param.translations, defaultLocale = param.defaultLocale, localesMap = param.localesMap;
43
+ var router = (0, _router).useRouter();
44
+ var currentLocale = router.locale;
45
+ var currentPath = router.asPath;
46
+ var data1 = _react.default.useMemo(function() {
47
+ if (!translations) translations = {};
48
+ translations[currentLocale] = {
49
+ slug: currentPath.split('?')[0].replace("/".concat(currentLocale), ''),
50
+ title: '',
51
+ id: Date.now().toString()
52
+ };
53
+ var map = Object.keys(translations || {}).filter(function(lang) {
54
+ return Boolean(localesMap[lang]);
55
+ }).reduce(function(acc, lang) {
56
+ var ref;
57
+ var data = translations === null || translations === void 0 ? void 0 : translations[lang];
58
+ var localeData = localesMap[lang];
59
+ var isDefault = defaultLocale === lang;
60
+ var isFrontPage = data.slug === '/';
61
+ var prefix = ((ref = data.slug) === null || ref === void 0 ? void 0 : ref[0]) === '/' ? '' : '/';
62
+ var slug = "".concat(isDefault ? '' : "/".concat(lang)).concat(prefix).concat(isFrontPage ? '' : data.slug);
63
+ return _objectSpread({}, acc, _defineProperty({}, lang, {
64
+ slug: slug,
65
+ locale: lang,
66
+ isDefault: isDefault,
67
+ domain: "https://".concat(localeData.domain)
68
+ }));
69
+ }, {});
70
+ return {
71
+ translationsMap: map,
72
+ defaultLocale: defaultLocale,
73
+ allLocales: Object.keys(localesMap)
74
+ };
75
+ }, [
76
+ defaultLocale,
77
+ translations,
78
+ localesMap,
79
+ currentLocale,
80
+ currentPath
81
+ ]);
82
+ return(/*#__PURE__*/ _react.default.createElement(SeoTranslationsContext.Provider, {
83
+ value: data1
84
+ }, children));
85
+ };
86
+ exports.SeoTranslationsProvider = SeoTranslationsProvider;
87
+ var useSeoTranslations = function() {
88
+ return _react.default.useContext(SeoTranslationsContext) || {};
89
+ };
90
+ exports.useSeoTranslations = useSeoTranslations;