@sentecacommerce-theme/lib 0.13.1 → 0.13.2

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 (89) 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/basket/api/mutations/index.js +14 -0
  5. package/dist/cjs/basket/api/mutations/useChangeGiftVariant.js +116 -0
  6. package/dist/cjs/basket/hooks/index.js +12 -0
  7. package/dist/cjs/basket/hooks/useChangeGiftVariant.js +16 -0
  8. package/dist/cjs/config/SentecaProvider.js +3 -1
  9. package/dist/cjs/hooks/useAggregateResult/index.js +5 -1
  10. package/dist/cjs/hooks/useAvailability/index.js +1 -1
  11. package/dist/cjs/hooks/useClearAllFilters/index.js +2 -0
  12. package/dist/cjs/hooks/useProduct/index.js +36 -26
  13. package/dist/cjs/hooks/wishlist-hooks/useWishlistItem/index.js +39 -15
  14. package/dist/cjs/listing/api/queries/useListingQuery.js +1 -1
  15. package/dist/cjs/listing/hooks/useListingBreadcrumbs.js +20 -8
  16. package/dist/cjs/listing/hooks/useListingCategories.js +2 -2
  17. package/dist/cjs/listing/hooks/useListingFilters.js +7 -1
  18. package/dist/cjs/listing/hooks/useListingMeta.js +51 -40
  19. package/dist/cjs/listing/hooks/useSlideFilter.js +27 -4
  20. package/dist/cjs/listing/ssr/prefetchCategories.js +5 -6
  21. package/dist/cjs/listing/ssr/prefetchPredicate.js +4 -4
  22. package/dist/cjs/listing/utils/buildCategoryQuery.js +22 -1
  23. package/dist/cjs/navigation/components/SearchBox/Components/EmptyBox/index.js +7 -7
  24. package/dist/cjs/navigation/components/SearchBox/index.js +4 -4
  25. package/dist/cjs/seo/components/TranslationsMeta/index.js +43 -14
  26. package/dist/cjs/seo/components/index.js +12 -0
  27. package/dist/cjs/seo/hooks/useSeoTranslations.js +55 -14
  28. package/dist/cjs/ui/components/GridStyles.js +2 -2
  29. package/dist/cjs/ui/components/RangeSliderInput.js +14 -1
  30. package/dist/cjs/user/api/queries/useGetMyLoyaltyCardQuery.js +49 -3
  31. package/dist/cjs/utils/getLocaleFromPath.js +13 -0
  32. package/dist/cjs/utils/getSelectedFilters.js +3 -1
  33. package/dist/cjs/utils/index.js +12 -0
  34. package/dist/cjs/utils/isTouchDevice.js +2 -1
  35. package/dist/cjs/utils/localStorage.js +7 -2
  36. package/dist/esm/analytics/Pixel/mainScript.js +2 -1
  37. package/dist/esm/api/getSDKConfig.js +5 -3
  38. package/dist/esm/api/myCartApi/index.js +8 -2
  39. package/dist/esm/basket/api/mutations/index.js +1 -0
  40. package/dist/esm/basket/api/mutations/useChangeGiftVariant.js +106 -0
  41. package/dist/esm/basket/hooks/index.js +1 -0
  42. package/dist/esm/basket/hooks/useChangeGiftVariant.js +3 -0
  43. package/dist/esm/config/SentecaProvider.js +3 -1
  44. package/dist/esm/hooks/useAggregateResult/index.js +5 -1
  45. package/dist/esm/hooks/useAvailability/index.js +1 -1
  46. package/dist/esm/hooks/useClearAllFilters/index.js +2 -0
  47. package/dist/esm/hooks/useProduct/index.js +28 -18
  48. package/dist/esm/hooks/wishlist-hooks/useWishlistItem/index.js +21 -13
  49. package/dist/esm/listing/api/queries/useListingQuery.js +1 -1
  50. package/dist/esm/listing/hooks/useListingBreadcrumbs.js +15 -3
  51. package/dist/esm/listing/hooks/useListingCategories.js +2 -2
  52. package/dist/esm/listing/hooks/useListingFilters.js +7 -1
  53. package/dist/esm/listing/hooks/useListingMeta.js +51 -42
  54. package/dist/esm/listing/hooks/useSlideFilter.js +27 -4
  55. package/dist/esm/listing/ssr/prefetchCategories.js +6 -7
  56. package/dist/esm/listing/ssr/prefetchPredicate.js +4 -4
  57. package/dist/esm/listing/utils/buildCategoryQuery.js +22 -1
  58. package/dist/esm/navigation/components/SearchBox/Components/EmptyBox/index.js +7 -7
  59. package/dist/esm/navigation/components/SearchBox/index.js +4 -4
  60. package/dist/esm/seo/components/TranslationsMeta/index.js +43 -14
  61. package/dist/esm/seo/components/index.js +1 -0
  62. package/dist/esm/seo/hooks/useSeoTranslations.js +55 -14
  63. package/dist/esm/ui/components/GridStyles.js +2 -2
  64. package/dist/esm/ui/components/RangeSliderInput.js +14 -1
  65. package/dist/esm/user/api/queries/useGetMyLoyaltyCardQuery.js +44 -3
  66. package/dist/esm/utils/getLocaleFromPath.js +8 -0
  67. package/dist/esm/utils/getSelectedFilters.js +3 -1
  68. package/dist/esm/utils/index.js +1 -0
  69. package/dist/esm/utils/isTouchDevice.js +2 -1
  70. package/dist/esm/utils/localStorage.js +7 -2
  71. package/dist/types/basket/api/mutations/index.d.ts +1 -0
  72. package/dist/types/basket/api/mutations/useChangeGiftVariant.d.ts +2 -0
  73. package/dist/types/basket/hooks/index.d.ts +1 -0
  74. package/dist/types/basket/hooks/useChangeGiftVariant.d.ts +2 -0
  75. package/dist/types/hooks/basket-hooks/useBasketLineItem/index.d.ts +1 -2
  76. package/dist/types/hooks/useProduct/index.d.ts +2 -1
  77. package/dist/types/listing/hooks/useListingMeta.d.ts +4 -0
  78. package/dist/types/listing/hooks/useSlideFilter.d.ts +4 -0
  79. package/dist/types/listing/types.d.ts +10 -0
  80. package/dist/types/navigation/components/SearchBox/Components/EmptyBox/index.d.ts +5 -4
  81. package/dist/types/navigation/components/SearchBox/index.d.ts +7 -6
  82. package/dist/types/seo/components/TranslationsMeta/index.d.ts +1 -0
  83. package/dist/types/seo/components/index.d.ts +1 -0
  84. package/dist/types/seo/hooks/useSeoTranslations.d.ts +5 -3
  85. package/dist/types/ui/components/GridStyles.d.ts +2 -1
  86. package/dist/types/ui/components/RangeSliderInput.d.ts +2 -1
  87. package/dist/types/utils/getLocaleFromPath.d.ts +1 -0
  88. package/dist/types/utils/index.d.ts +1 -0
  89. package/package.json +2 -2
@@ -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([
@@ -1,9 +1,11 @@
1
1
  Object.defineProperty(exports, "__esModule", {
2
2
  value: true
3
3
  });
4
+ var _exportNames = {};
4
5
  var _useReplaceBasketMutation = _interopRequireWildcard(require("./useReplaceBasketMutation"));
5
6
  Object.keys(_useReplaceBasketMutation).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] === _useReplaceBasketMutation[key]) return;
8
10
  Object.defineProperty(exports, key, {
9
11
  enumerable: true,
@@ -12,6 +14,18 @@ Object.keys(_useReplaceBasketMutation).forEach(function(key) {
12
14
  }
13
15
  });
14
16
  });
17
+ var _useChangeGiftVariant = _interopRequireWildcard(require("./useChangeGiftVariant"));
18
+ Object.keys(_useChangeGiftVariant).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] === _useChangeGiftVariant[key]) return;
22
+ Object.defineProperty(exports, key, {
23
+ enumerable: true,
24
+ get: function() {
25
+ return _useChangeGiftVariant[key];
26
+ }
27
+ });
28
+ });
15
29
  function _interopRequireWildcard(obj) {
16
30
  if (obj && obj.__esModule) {
17
31
  return obj;
@@ -0,0 +1,116 @@
1
+ Object.defineProperty(exports, "__esModule", {
2
+ value: true
3
+ });
4
+ exports.useChangeGiftVariantMutation = void 0;
5
+ var _regeneratorRuntime = _interopRequireDefault(require("regenerator-runtime"));
6
+ var _react = _interopRequireDefault(require("react"));
7
+ var _reactQuery = require("react-query");
8
+ var _sdk = require("@sentecacommerce/sdk");
9
+ var _index = require("../../index");
10
+ function _arrayLikeToArray(arr, len) {
11
+ if (len == null || len > arr.length) len = arr.length;
12
+ for(var i = 0, arr2 = new Array(len); i < len; i++)arr2[i] = arr[i];
13
+ return arr2;
14
+ }
15
+ function _arrayWithHoles(arr) {
16
+ if (Array.isArray(arr)) return arr;
17
+ }
18
+ function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {
19
+ try {
20
+ var info = gen[key](arg);
21
+ var value = info.value;
22
+ } catch (error) {
23
+ reject(error);
24
+ return;
25
+ }
26
+ if (info.done) {
27
+ resolve(value);
28
+ } else {
29
+ Promise.resolve(value).then(_next, _throw);
30
+ }
31
+ }
32
+ function _asyncToGenerator(fn) {
33
+ return function() {
34
+ var self = this, args = arguments;
35
+ return new Promise(function(resolve, reject) {
36
+ var gen = fn.apply(self, args);
37
+ function _next(value) {
38
+ asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value);
39
+ }
40
+ function _throw(err) {
41
+ asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err);
42
+ }
43
+ _next(undefined);
44
+ });
45
+ };
46
+ }
47
+ function _interopRequireDefault(obj) {
48
+ return obj && obj.__esModule ? obj : {
49
+ default: obj
50
+ };
51
+ }
52
+ function _iterableToArrayLimit(arr, i) {
53
+ var _i = arr == null ? null : typeof Symbol !== "undefined" && arr[Symbol.iterator] || arr["@@iterator"];
54
+ if (_i == null) return;
55
+ var _arr = [];
56
+ var _n = true;
57
+ var _d = false;
58
+ var _s, _e;
59
+ try {
60
+ for(_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true){
61
+ _arr.push(_s.value);
62
+ if (i && _arr.length === i) break;
63
+ }
64
+ } catch (err) {
65
+ _d = true;
66
+ _e = err;
67
+ } finally{
68
+ try {
69
+ if (!_n && _i["return"] != null) _i["return"]();
70
+ } finally{
71
+ if (_d) throw _e;
72
+ }
73
+ }
74
+ return _arr;
75
+ }
76
+ function _nonIterableRest() {
77
+ throw new TypeError("Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
78
+ }
79
+ function _slicedToArray(arr, i) {
80
+ return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest();
81
+ }
82
+ function _unsupportedIterableToArray(o, minLen) {
83
+ if (!o) return;
84
+ if (typeof o === "string") return _arrayLikeToArray(o, minLen);
85
+ var n = Object.prototype.toString.call(o).slice(8, -1);
86
+ if (n === "Object" && o.constructor) n = o.constructor.name;
87
+ if (n === "Map" || n === "Set") return Array.from(n);
88
+ if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);
89
+ }
90
+ var useChangeGiftVariantMutation = function() {
91
+ var ref = _slicedToArray((0, _index).useReplaceBasket(), 1), replaceBasket = ref[0];
92
+ return (0, _reactQuery).useMutation(function() {
93
+ var _ref = _asyncToGenerator(_regeneratorRuntime.default.mark(function _callee(props) {
94
+ return _regeneratorRuntime.default.wrap(function _callee$(_ctx) {
95
+ while(1)switch(_ctx.prev = _ctx.next){
96
+ case 0:
97
+ _ctx.next = 2;
98
+ return (0, _sdk).MyCartChangeSelectableGiftLineItemVariant(props);
99
+ case 2:
100
+ return _ctx.abrupt("return", _ctx.sent);
101
+ case 3:
102
+ case "end":
103
+ return _ctx.stop();
104
+ }
105
+ }, _callee);
106
+ }));
107
+ return function(props) {
108
+ return _ref.apply(this, arguments);
109
+ };
110
+ }(), {
111
+ onSuccess: function(data) {
112
+ return replaceBasket(data);
113
+ }
114
+ });
115
+ };
116
+ exports.useChangeGiftVariantMutation = useChangeGiftVariantMutation;
@@ -26,6 +26,18 @@ Object.keys(_useBasketCrossSaleItems).forEach(function(key) {
26
26
  }
27
27
  });
28
28
  });
29
+ var _useChangeGiftVariant = _interopRequireWildcard(require("./useChangeGiftVariant"));
30
+ Object.keys(_useChangeGiftVariant).forEach(function(key) {
31
+ if (key === "default" || key === "__esModule") return;
32
+ if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
33
+ if (key in exports && exports[key] === _useChangeGiftVariant[key]) return;
34
+ Object.defineProperty(exports, key, {
35
+ enumerable: true,
36
+ get: function() {
37
+ return _useChangeGiftVariant[key];
38
+ }
39
+ });
40
+ });
29
41
  function _interopRequireWildcard(obj) {
30
42
  if (obj && obj.__esModule) {
31
43
  return obj;
@@ -0,0 +1,16 @@
1
+ Object.defineProperty(exports, "__esModule", {
2
+ value: true
3
+ });
4
+ Object.defineProperty(exports, "useChangeGiftVariant", {
5
+ enumerable: true,
6
+ get: function() {
7
+ return _mutations.useChangeGiftVariantMutation;
8
+ }
9
+ });
10
+ var _react = _interopRequireDefault(require("react"));
11
+ var _mutations = require("../api/mutations");
12
+ function _interopRequireDefault(obj) {
13
+ return obj && obj.__esModule ? obj : {
14
+ default: obj
15
+ };
16
+ }
@@ -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);
@@ -91,7 +91,9 @@ var useAggregateResult = function(type, aggregates, slug, predicate, query) {
91
91
  aggType: a.filterDefinition,
92
92
  aggKey: filterKey,
93
93
  aggOperator: operatorMap[a.aggregationType]
94
- }, selected, router));
94
+ }, selected, router), undefined, {
95
+ shallow: true
96
+ });
95
97
  }
96
98
  },
97
99
  ]);
@@ -108,6 +110,8 @@ var useAggregateResult = function(type, aggregates, slug, predicate, query) {
108
110
  query: _objectSpread({}, router.query, {
109
111
  filter: filterByType(router.query.filter, a.filterDefinition)
110
112
  })
113
+ }, undefined, {
114
+ shallow: true
111
115
  });
112
116
  },
113
117
  type: a.aggregationType
@@ -70,7 +70,7 @@ var useAvailability = function(param) {
70
70
  setStatus(ProductQuantityStatusEnum.OutOfStock);
71
71
  return;
72
72
  }
73
- if ((quantity !== null && quantity !== void 0 ? quantity : 0) < (quantityInBasket || 1)) {
73
+ if (quantity - (quantityInBasket || 0) < 1) {
74
74
  setStatus(ProductQuantityStatusEnum.MaxQuantityReached);
75
75
  return;
76
76
  }
@@ -39,6 +39,8 @@ var useClearAllFilters = function() {
39
39
  router.push({
40
40
  pathname: router.pathname,
41
41
  query: query
42
+ }, undefined, {
43
+ shallow: true
42
44
  });
43
45
  };
44
46
  };
@@ -104,40 +104,40 @@ function _unsupportedIterableToArray(o, minLen) {
104
104
  var ProductStateContext = /*#__PURE__*/ _react.default.createContext(undefined);
105
105
  var CountDispatchContext = /*#__PURE__*/ _react.default.createContext(undefined);
106
106
  function ProductProvider(param) {
107
- var product = param.product, children = param.children, defaultVariantId = param.defaultVariantId;
108
- var ref36 = _slicedToArray(_react.default.useState(false), 2), mounted = ref36[0], setMounted = ref36[1];
107
+ var product = param.product, children = param.children, defaultVariantId = param.defaultVariantId, _includeBrandInName = param.includeBrandInName, includeBrandInName = _includeBrandInName === void 0 ? false : _includeBrandInName;
108
+ var ref42 = _slicedToArray(_react.default.useState(false), 2), mounted = ref42[0], setMounted = ref42[1];
109
109
  var ref1 = _slicedToArray(_react.default.useState(getCombinationsAndAttributeRules), 2), ref2 = ref1[0], combinations = ref2.combinations, attributeRules = ref2.attributeRules, setCombinationsAndAttributeRules = ref1[1];
110
110
  var ref3 = _slicedToArray(_react.default.useState(getVariantsWithInventory), 2), variants = ref3[0], setVariants = ref3[1];
111
111
  var ref4 = _slicedToArray(_react.default.useState(getDefaultVariant), 2), selectedVariant = ref4[0], setSelectedVariant = ref4[1];
112
112
  var metaData = _react.default.useMemo(function() {
113
- var ref, ref5, ref6, ref7, ref8, ref9, ref10, ref11, ref12, ref13, ref14, ref15, ref16, ref17, ref18, ref19, ref20, ref21, ref22, ref23, ref24, ref25, ref26, ref27, ref28, ref29, ref30, ref31, ref32, ref33, ref34, ref35;
113
+ var ref, ref5, ref6, ref7, ref8, ref9, ref10, ref11, ref12, ref13, ref14, ref15, ref16, ref17, ref18, ref19, ref20, ref21, ref22, ref23, ref24, ref25, ref26, ref27, ref28, ref29, ref30, ref31, ref32, ref33, ref34, ref35, ref36, ref37, ref38, ref39, ref40, ref41;
114
114
  var rootCategory = product === null || product === void 0 ? void 0 : (ref = product.categories) === null || ref === void 0 ? void 0 : ref[0];
115
115
  var rootCategoryId = rootCategory === null || rootCategory === void 0 ? void 0 : rootCategory.resourceId;
116
116
  var metaObj = {
117
117
  _id: product === null || product === void 0 ? void 0 : product._id,
118
- name: (0, _).getTranslatableField(selectedVariant === null || selectedVariant === void 0 ? void 0 : selectedVariant.name) || (0, _).getTranslatableField(product === null || product === void 0 ? void 0 : product.name),
118
+ name: includeBrandInName && (product === null || product === void 0 ? void 0 : (ref5 = product.brands) === null || ref5 === void 0 ? void 0 : (ref6 = ref5[0]) === null || ref6 === void 0 ? void 0 : (ref7 = ref6.resource) === null || ref7 === void 0 ? void 0 : ref7.name) ? "".concat((0, _).getTranslatableField(product === null || product === void 0 ? void 0 : (ref8 = product.brands) === null || ref8 === void 0 ? void 0 : (ref9 = ref8[0]) === null || ref9 === void 0 ? void 0 : (ref10 = ref9.resource) === null || ref10 === void 0 ? void 0 : ref10.name), " ").concat((0, _).getTranslatableField(selectedVariant === null || selectedVariant === void 0 ? void 0 : selectedVariant.name) || (0, _).getTranslatableField(product === null || product === void 0 ? void 0 : product.name)) : (0, _).getTranslatableField(selectedVariant === null || selectedVariant === void 0 ? void 0 : selectedVariant.name) || (0, _).getTranslatableField(product === null || product === void 0 ? void 0 : product.name),
119
119
  slug: (0, _).getTranslatableField(product === null || product === void 0 ? void 0 : product.slug),
120
120
  description: (0, _).getTranslatableField(selectedVariant === null || selectedVariant === void 0 ? void 0 : selectedVariant.description) || (0, _).getTranslatableField(product === null || product === void 0 ? void 0 : product.description),
121
121
  shortDescription: (0, _).getTranslatableField(selectedVariant === null || selectedVariant === void 0 ? void 0 : selectedVariant.metaDescription) || (0, _).getTranslatableField(product === null || product === void 0 ? void 0 : product.metaDescription),
122
122
  brand: {
123
- _id: product === null || product === void 0 ? void 0 : (ref5 = product.brands) === null || ref5 === void 0 ? void 0 : (ref6 = ref5[0]) === null || ref6 === void 0 ? void 0 : ref6.resourceId,
124
- name: (0, _).getTranslatableField(product === null || product === void 0 ? void 0 : (ref7 = product.brands) === null || ref7 === void 0 ? void 0 : (ref8 = ref7[0]) === null || ref8 === void 0 ? void 0 : (ref9 = ref8.resource) === null || ref9 === void 0 ? void 0 : ref9.name),
125
- slug: (0, _).getTranslatableField(product === null || product === void 0 ? void 0 : (ref10 = product.brands) === null || ref10 === void 0 ? void 0 : (ref11 = ref10[0]) === null || ref11 === void 0 ? void 0 : (ref12 = ref11.resource) === null || ref12 === void 0 ? void 0 : ref12.slug),
126
- logo: product === null || product === void 0 ? void 0 : (ref13 = product.brands) === null || ref13 === void 0 ? void 0 : (ref14 = ref13[0]) === null || ref14 === void 0 ? void 0 : (ref15 = ref14.resource) === null || ref15 === void 0 ? void 0 : (ref16 = ref15.assets) === null || ref16 === void 0 ? void 0 : (ref17 = ref16[0]) === null || ref17 === void 0 ? void 0 : (ref18 = ref17.sources) === null || ref18 === void 0 ? void 0 : (ref19 = ref18[0]) === null || ref19 === void 0 ? void 0 : ref19.url
123
+ _id: product === null || product === void 0 ? void 0 : (ref11 = product.brands) === null || ref11 === void 0 ? void 0 : (ref12 = ref11[0]) === null || ref12 === void 0 ? void 0 : ref12.resourceId,
124
+ name: (0, _).getTranslatableField(product === null || product === void 0 ? void 0 : (ref13 = product.brands) === null || ref13 === void 0 ? void 0 : (ref14 = ref13[0]) === null || ref14 === void 0 ? void 0 : (ref15 = ref14.resource) === null || ref15 === void 0 ? void 0 : ref15.name),
125
+ slug: (0, _).getTranslatableField(product === null || product === void 0 ? void 0 : (ref16 = product.brands) === null || ref16 === void 0 ? void 0 : (ref17 = ref16[0]) === null || ref17 === void 0 ? void 0 : (ref18 = ref17.resource) === null || ref18 === void 0 ? void 0 : ref18.slug),
126
+ logo: product === null || product === void 0 ? void 0 : (ref19 = product.brands) === null || ref19 === void 0 ? void 0 : (ref20 = ref19[0]) === null || ref20 === void 0 ? void 0 : (ref21 = ref20.resource) === null || ref21 === void 0 ? void 0 : (ref22 = ref21.assets) === null || ref22 === void 0 ? void 0 : (ref23 = ref22[0]) === null || ref23 === void 0 ? void 0 : (ref24 = ref23.sources) === null || ref24 === void 0 ? void 0 : (ref25 = ref24[0]) === null || ref25 === void 0 ? void 0 : ref25.url
127
127
  },
128
128
  category: {
129
- _id: product === null || product === void 0 ? void 0 : (ref21 = product.categories) === null || ref21 === void 0 ? void 0 : (ref22 = ref21[(product === null || product === void 0 ? void 0 : (ref20 = product.categories) === null || ref20 === void 0 ? void 0 : ref20.length) - 1]) === null || ref22 === void 0 ? void 0 : ref22.resourceId,
130
- name: (0, _).getTranslatableField(product === null || product === void 0 ? void 0 : (ref24 = product.categories) === null || ref24 === void 0 ? void 0 : (ref25 = ref24[(product === null || product === void 0 ? void 0 : (ref23 = product.categories) === null || ref23 === void 0 ? void 0 : ref23.length) - 1]) === null || ref25 === void 0 ? void 0 : (ref26 = ref25.resource) === null || ref26 === void 0 ? void 0 : ref26.name),
131
- slug: (0, _).getTranslatableField(product === null || product === void 0 ? void 0 : (ref28 = product.categories) === null || ref28 === void 0 ? void 0 : (ref29 = ref28[(product === null || product === void 0 ? void 0 : (ref27 = product.categories) === null || ref27 === void 0 ? void 0 : ref27.length) - 1]) === null || ref29 === void 0 ? void 0 : (ref30 = ref29.resource) === null || ref30 === void 0 ? void 0 : ref30.slug)
129
+ _id: product === null || product === void 0 ? void 0 : (ref27 = product.categories) === null || ref27 === void 0 ? void 0 : (ref28 = ref27[(product === null || product === void 0 ? void 0 : (ref26 = product.categories) === null || ref26 === void 0 ? void 0 : ref26.length) - 1]) === null || ref28 === void 0 ? void 0 : ref28.resourceId,
130
+ name: (0, _).getTranslatableField(product === null || product === void 0 ? void 0 : (ref30 = product.categories) === null || ref30 === void 0 ? void 0 : (ref31 = ref30[(product === null || product === void 0 ? void 0 : (ref29 = product.categories) === null || ref29 === void 0 ? void 0 : ref29.length) - 1]) === null || ref31 === void 0 ? void 0 : (ref32 = ref31.resource) === null || ref32 === void 0 ? void 0 : ref32.name),
131
+ slug: (0, _).getTranslatableField(product === null || product === void 0 ? void 0 : (ref34 = product.categories) === null || ref34 === void 0 ? void 0 : (ref35 = ref34[(product === null || product === void 0 ? void 0 : (ref33 = product.categories) === null || ref33 === void 0 ? void 0 : ref33.length) - 1]) === null || ref35 === void 0 ? void 0 : (ref36 = ref35.resource) === null || ref36 === void 0 ? void 0 : ref36.slug)
132
132
  },
133
133
  rootCategory: {
134
134
  _id: rootCategoryId,
135
- name: (0, _).getTranslatableField(rootCategory === null || rootCategory === void 0 ? void 0 : (ref31 = rootCategory.resource) === null || ref31 === void 0 ? void 0 : ref31.name),
136
- slug: (0, _).getTranslatableField(rootCategory === null || rootCategory === void 0 ? void 0 : (ref32 = rootCategory.resource) === null || ref32 === void 0 ? void 0 : ref32.slug)
135
+ name: (0, _).getTranslatableField(rootCategory === null || rootCategory === void 0 ? void 0 : (ref37 = rootCategory.resource) === null || ref37 === void 0 ? void 0 : ref37.name),
136
+ slug: (0, _).getTranslatableField(rootCategory === null || rootCategory === void 0 ? void 0 : (ref38 = rootCategory.resource) === null || ref38 === void 0 ? void 0 : ref38.slug)
137
137
  },
138
138
  categories: (0, _utils).formatCategories(product === null || product === void 0 ? void 0 : product.categories, rootCategoryId),
139
139
  reviewRatingStatistics: product === null || product === void 0 ? void 0 : product.reviewRatingStatistics,
140
- content: Boolean(selectedVariant === null || selectedVariant === void 0 ? void 0 : (ref33 = selectedVariant.content) === null || ref33 === void 0 ? void 0 : ref33.map(_utils.createProductContent).length) ? selectedVariant === null || selectedVariant === void 0 ? void 0 : (ref34 = selectedVariant.content) === null || ref34 === void 0 ? void 0 : ref34.map(_utils.createProductContent) : product === null || product === void 0 ? void 0 : (ref35 = product.content) === null || ref35 === void 0 ? void 0 : ref35.map(_utils.createProductContent),
140
+ content: Boolean(selectedVariant === null || selectedVariant === void 0 ? void 0 : (ref39 = selectedVariant.content) === null || ref39 === void 0 ? void 0 : ref39.map(_utils.createProductContent).length) ? selectedVariant === null || selectedVariant === void 0 ? void 0 : (ref40 = selectedVariant.content) === null || ref40 === void 0 ? void 0 : ref40.map(_utils.createProductContent) : product === null || product === void 0 ? void 0 : (ref41 = product.content) === null || ref41 === void 0 ? void 0 : ref41.map(_utils.createProductContent),
141
141
  assets: (0, _assetsToMap).assetsFieldsToMap(product === null || product === void 0 ? void 0 : product.assets)
142
142
  };
143
143
  return metaObj;
@@ -190,20 +190,20 @@ function ProductProvider(param) {
190
190
  variants
191
191
  ]);
192
192
  function getVariantsWithInventory() {
193
- var ref40;
194
- var variantsWithInventory = product === null || product === void 0 ? void 0 : (ref40 = product.variants) === null || ref40 === void 0 ? void 0 : ref40.reduce(function(map, _, index, arr) {
195
- var ref41, ref37, ref38, ref39;
193
+ var ref46;
194
+ var variantsWithInventory = product === null || product === void 0 ? void 0 : (ref46 = product.variants) === null || ref46 === void 0 ? void 0 : ref46.reduce(function(map, _, index, arr) {
195
+ var ref47, ref43, ref44, ref45;
196
196
  var currentVariant = arr[index];
197
197
  var mappedAttributes = (0, _utils).createMappedAttributes(currentVariant);
198
198
  var mappedOptions = (0, _utils).createMappedOptions(currentVariant === null || currentVariant === void 0 ? void 0 : currentVariant.availableOptions) || [];
199
- var isAvailable = currentVariant === null || currentVariant === void 0 ? void 0 : (ref41 = currentVariant.inventorySnapshot) === null || ref41 === void 0 ? void 0 : ref41.canOrder;
199
+ var isAvailable = currentVariant === null || currentVariant === void 0 ? void 0 : (ref47 = currentVariant.inventorySnapshot) === null || ref47 === void 0 ? void 0 : ref47.canOrder;
200
200
  var updatedVariant = _objectSpread({}, currentVariant, {
201
201
  inventory: {
202
- hasAvailableQuantity: (ref37 = currentVariant.inventorySnapshot) === null || ref37 === void 0 ? void 0 : ref37.canOrder,
203
- availableQuantity: (ref38 = currentVariant.inventorySnapshot) === null || ref38 === void 0 ? void 0 : ref38.availableQuantity
202
+ hasAvailableQuantity: (ref43 = currentVariant.inventorySnapshot) === null || ref43 === void 0 ? void 0 : ref43.canOrder,
203
+ availableQuantity: (ref44 = currentVariant.inventorySnapshot) === null || ref44 === void 0 ? void 0 : ref44.availableQuantity
204
204
  },
205
205
  isAvailable: isAvailable ? true : false,
206
- quantity: isAvailable ? currentVariant === null || currentVariant === void 0 ? void 0 : (ref39 = currentVariant.inventorySnapshot) === null || ref39 === void 0 ? void 0 : ref39.availableQuantity : 0,
206
+ quantity: isAvailable ? currentVariant === null || currentVariant === void 0 ? void 0 : (ref45 = currentVariant.inventorySnapshot) === null || ref45 === void 0 ? void 0 : ref45.availableQuantity : 0,
207
207
  attributes: mappedAttributes,
208
208
  options: mappedOptions,
209
209
  selectedOptions: [],
@@ -317,16 +317,26 @@ function ProductProvider(param) {
317
317
  return variants === null || variants === void 0 ? void 0 : variants[id];
318
318
  }
319
319
  function getVariantByCombination(key, value) {
320
- var ref;
321
- var id = (ref = combinations[key]) === null || ref === void 0 ? void 0 : ref.params[value];
322
- return variants === null || variants === void 0 ? void 0 : variants[id];
320
+ var ref48;
321
+ var split = value === null || value === void 0 ? void 0 : value.split(':');
322
+ if ((split === null || split === void 0 ? void 0 : split[0]) === 'collapseKey') {
323
+ var id = Object.keys(variants).find(function(el) {
324
+ var ref;
325
+ return variants[el].collapseKey === (split === null || split === void 0 ? void 0 : split[1]) && ((ref = variants[el].attributes.find(function(attr) {
326
+ return attr.name === 'size';
327
+ })) === null || ref === void 0 ? void 0 : ref.value) === key;
328
+ });
329
+ return variants[id];
330
+ }
331
+ var id3 = (ref48 = combinations[key]) === null || ref48 === void 0 ? void 0 : ref48.params[value];
332
+ return variants === null || variants === void 0 ? void 0 : variants[id3];
323
333
  }
324
334
  function getCustomFieldValue(field) {
325
335
  return customFields === null || customFields === void 0 ? void 0 : customFields[field];
326
336
  }
327
337
  function getCombinationsForAttributeRule(key, id) {
328
- var ref, ref42;
329
- var result = attributeRules === null || attributeRules === void 0 ? void 0 : (ref = attributeRules[key]) === null || ref === void 0 ? void 0 : (ref42 = ref.values) === null || ref42 === void 0 ? void 0 : ref42[id];
338
+ var ref, ref49;
339
+ var result = attributeRules === null || attributeRules === void 0 ? void 0 : (ref = attributeRules[key]) === null || ref === void 0 ? void 0 : (ref49 = ref.values) === null || ref49 === void 0 ? void 0 : ref49[id];
330
340
  return result;
331
341
  }
332
342
  var collapsedImages = (0, _utils).createCollapseKeyImagesMap(product);
@@ -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() {
@@ -5,11 +5,11 @@ exports.useListingBreadcrumbs = void 0;
5
5
  var _react = _interopRequireDefault(require("react"));
6
6
  var _router = require("next/router");
7
7
  var _api = require("../api");
8
- var _ = require("./");
9
- var _index = require("../../index");
8
+ var _index = require("./index");
9
+ var _index1 = require("../../index");
10
10
  var _typeToSuffix = require("../../utils/typeToSuffix");
11
11
  var _getTranslatableField = require("../../utils/getTranslatableField");
12
- var _1 = require("..");
12
+ var _ = require("..");
13
13
  function _arrayLikeToArray(arr, len) {
14
14
  if (len == null || len > arr.length) len = arr.length;
15
15
  for(var i = 0, arr2 = new Array(len); i < len; i++)arr2[i] = arr[i];
@@ -42,12 +42,15 @@ function _unsupportedIterableToArray(o, minLen) {
42
42
  }
43
43
  var _instance;
44
44
  var useListingBreadcrumbs = function() {
45
- var ref1 = (0, _api).usePredicate(), data = ref1.data, isLoading = ref1.isLoading;
46
- var config = (0, _).useListingConfig();
45
+ var ref3 = (0, _api).usePredicate(), data = ref3.data, isLoading = ref3.isLoading;
46
+ var config = (0, _index).useListingConfig();
47
47
  var router = (0, _router).useRouter();
48
- var slug = (0, _index).useListingAlias(config.meta).slug;
48
+ var slug = (0, _index1).useListingAlias(config.meta).slug;
49
+ var ref1 = (0, _index).useListingCategories(), categoriesData = ref1.data;
50
+ var categoryName = (0, _index).getCategoryName(router, categoriesData);
51
+ var categoryId = (0, _index).getFilterByType('category', router);
49
52
  var result = _react.default.useMemo(function() {
50
- if (config.type === _1.ListingTypesEnum.AttrPage) {
53
+ if (config.type === _.ListingTypesEnum.AttrPage) {
51
54
  var ref;
52
55
  return [
53
56
  {
@@ -66,7 +69,16 @@ var useListingBreadcrumbs = function() {
66
69
  },
67
70
  ];
68
71
  }
69
- return createCatalogBreadcrumb(data, config.type, router);
72
+ var breadcrumbData = createCatalogBreadcrumb(data, config.type, router);
73
+ if (config.type === _.ListingTypesEnum.View || config.type === _.ListingTypesEnum.Brand) {
74
+ var ref2;
75
+ breadcrumbData.push({
76
+ name: categoryName || '',
77
+ id: categoryId,
78
+ link: processLink((ref2 = data) === null || ref2 === void 0 ? void 0 : ref2.slug, config.type, router.query.slug) + applyFilters(router)
79
+ });
80
+ }
81
+ return breadcrumbData;
70
82
  }, [
71
83
  data,
72
84
  config.type,
@@ -103,14 +103,14 @@ function generateUrl(current, router, slug, config) {
103
103
  res = "/".concat(router.query.slug, "/").concat((0, _utils).getTranslatableField(current.meta.slug), "/").concat(suffix);
104
104
  }
105
105
  if (pageType === _types.ListingTypesEnum.View) {
106
- res = "/".concat(router.query.slug, "/").concat((0, _utils).getTranslatableField(current.meta.slug), "/").concat(suffix);
106
+ res = "/".concat(router.query.slug, "/").concat(suffix);
107
107
  }
108
108
  if (pageType === _types.ListingTypesEnum.Search) {
109
109
  var _q;
110
110
  res = "/".concat((0, _utils).getTranslatableField(current.meta.slug), "/c?search=").concat((_q = router.query.q) !== null && _q !== void 0 ? _q : router.query.search);
111
111
  }
112
112
  var filter = router.query.filter;
113
- if (suffix === 'b') {
113
+ if (suffix === 'b' || suffix === 'v') {
114
114
  if (filter) {
115
115
  if (Array.isArray(filter)) {
116
116
  filter = _toConsumableArray(filter);
@@ -136,6 +136,8 @@ function ListingFiltersProvider(param) {
136
136
  query: _objectSpread({}, router.query, {
137
137
  filter: filterByType(router.query.filter, filter)
138
138
  })
139
+ }, undefined, {
140
+ shallow: true
139
141
  });
140
142
  },
141
143
  type: type
@@ -155,6 +157,8 @@ function ListingFiltersProvider(param) {
155
157
  router.push({
156
158
  pathname: router.pathname,
157
159
  query: query
160
+ }, undefined, {
161
+ shallow: true
158
162
  });
159
163
  };
160
164
  var selectedFilters = _react.default.useMemo(function() {
@@ -197,7 +201,9 @@ function generateFilters(param) {
197
201
  aggType: filter,
198
202
  aggKey: filterKey,
199
203
  aggOperator: filtersOperatorsMap[type]
200
- }, Boolean(selected), router));
204
+ }, Boolean(selected), router), undefined, {
205
+ shallow: true
206
+ });
201
207
  }
202
208
  };
203
209
  });