@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
@@ -148,7 +148,7 @@ var RangeSlideClasses = {
148
148
  };
149
149
  exports.RangeSlideClasses = RangeSlideClasses;
150
150
  var RangeSliderInput = function(param) {
151
- var defaultValue = param.defaultValue, onChange = param.onChange, _min = param.min, min = _min === void 0 ? 0 : _min, _max = param.max, max = _max === void 0 ? 100 : _max, _step = param.step, step = _step === void 0 ? 1 : _step;
151
+ var defaultValue = param.defaultValue, onChange = param.onChange, onSlide = param.onSlide, _min = param.min, min = _min === void 0 ? 0 : _min, _max = param.max, max = _max === void 0 ? 100 : _max, _step = param.step, step = _step === void 0 ? 1 : _step;
152
152
  var ref1 = _slicedToArray((0, _react).useState(defaultValue), 2), value = ref1[0], setValue = ref1[1];
153
153
  var inputLeftRef = _react.default.useRef(null);
154
154
  var inputRightRef = _react.default.useRef(null);
@@ -161,6 +161,17 @@ var RangeSliderInput = function(param) {
161
161
  }, [
162
162
  defaultValue
163
163
  ]);
164
+ var onSlideGeneric = function() {
165
+ var inputLeft = inputLeftRef.current;
166
+ var inputRight = inputRightRef.current;
167
+ if (!inputLeft || !inputRight) return;
168
+ var leftValue = Math.min(Number(inputLeft.value), Number(inputRight.value) - 1);
169
+ var rightValue = Math.max(Number(inputRight.value), Number(inputLeft.value) + 1);
170
+ onSlide === null || onSlide === void 0 ? void 0 : onSlide({
171
+ left: leftValue,
172
+ right: rightValue
173
+ });
174
+ };
164
175
  var updateLeftValue = (0, _react).useCallback(function() {
165
176
  var inputLeft = inputLeftRef.current;
166
177
  var inputRight = inputRightRef.current;
@@ -169,6 +180,7 @@ var RangeSliderInput = function(param) {
169
180
  setValue(_objectSpread({}, value, {
170
181
  left: leftValue
171
182
  }));
183
+ onSlideGeneric();
172
184
  }, [
173
185
  setValue,
174
186
  value
@@ -181,6 +193,7 @@ var RangeSliderInput = function(param) {
181
193
  setValue(_objectSpread({}, value, {
182
194
  right: rightValue
183
195
  }));
196
+ onSlideGeneric();
184
197
  }, [
185
198
  setValue,
186
199
  value
@@ -2,12 +2,58 @@ Object.defineProperty(exports, "__esModule", {
2
2
  value: true
3
3
  });
4
4
  exports.useGetMyLoyaltyCardQuery = void 0;
5
+ var _regeneratorRuntime = _interopRequireDefault(require("regenerator-runtime"));
5
6
  var _sdk = require("@sentecacommerce/sdk");
6
7
  var _reactQuery = require("react-query");
8
+ function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {
9
+ try {
10
+ var info = gen[key](arg);
11
+ var value = info.value;
12
+ } catch (error) {
13
+ reject(error);
14
+ return;
15
+ }
16
+ if (info.done) {
17
+ resolve(value);
18
+ } else {
19
+ Promise.resolve(value).then(_next, _throw);
20
+ }
21
+ }
22
+ function _asyncToGenerator(fn) {
23
+ return function() {
24
+ var self = this, args = arguments;
25
+ return new Promise(function(resolve, reject) {
26
+ var gen = fn.apply(self, args);
27
+ function _next(value) {
28
+ asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value);
29
+ }
30
+ function _throw(err) {
31
+ asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err);
32
+ }
33
+ _next(undefined);
34
+ });
35
+ };
36
+ }
37
+ function _interopRequireDefault(obj) {
38
+ return obj && obj.__esModule ? obj : {
39
+ default: obj
40
+ };
41
+ }
7
42
  var useGetMyLoyaltyCardQuery = function(callback) {
8
- return (0, _reactQuery).useQuery('get-loyalty-card-key', function() {
9
- return (0, _sdk).MyWalletGetByType('loyalty-program');
10
- }, {
43
+ return (0, _reactQuery).useQuery('get-loyalty-card-key', _asyncToGenerator(_regeneratorRuntime.default.mark(function _callee() {
44
+ return _regeneratorRuntime.default.wrap(function _callee$(_ctx) {
45
+ while(1)switch(_ctx.prev = _ctx.next){
46
+ case 0:
47
+ return _ctx.abrupt("return", (0, _sdk).MyWalletGetByType('loyalty-program'));
48
+ case 1:
49
+ case "end":
50
+ return _ctx.stop();
51
+ }
52
+ }, _callee);
53
+ })), {
54
+ refetchOnMount: false,
55
+ refetchOnWindowFocus: false,
56
+ retry: false,
11
57
  onSuccess: function() {
12
58
  var ref;
13
59
  return callback === null || callback === void 0 ? void 0 : (ref = callback.onSuccess) === null || ref === void 0 ? void 0 : ref.call(callback);
@@ -0,0 +1,13 @@
1
+ Object.defineProperty(exports, "__esModule", {
2
+ value: true
3
+ });
4
+ exports.getLocaleFromPath = void 0;
5
+ var _canUseDom = require("./canUseDom");
6
+ var getLocaleFromPath = function() {
7
+ if (!(0, _canUseDom).canUseDOM()) return '';
8
+ var locale = window.location.pathname.split('/')[1] || '';
9
+ // the allowed standards: bg bg-BG, en en-US/en-UK
10
+ if (locale.length !== 2 && locale.length !== 5) return '';
11
+ return locale;
12
+ };
13
+ exports.getLocaleFromPath = getLocaleFromPath;
@@ -99,7 +99,9 @@ var getSelectedFilters = function(router, slug, data, config) {
99
99
  aggType: key,
100
100
  aggKey: "".concat(valueFrom, ",").concat(valueTo),
101
101
  aggOperator: _listing.filtersOperatorsMap.stats
102
- }, true, router));
102
+ }, true, router), undefined, {
103
+ shallow: true
104
+ });
103
105
  },
104
106
  selected: true,
105
107
  data: _objectSpread({}, data.raw, {
@@ -170,6 +170,18 @@ Object.keys(_adjustColor).forEach(function(key) {
170
170
  }
171
171
  });
172
172
  });
173
+ var _getLocaleFromPath = _interopRequireWildcard(require("./getLocaleFromPath"));
174
+ Object.keys(_getLocaleFromPath).forEach(function(key) {
175
+ if (key === "default" || key === "__esModule") return;
176
+ if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
177
+ if (key in exports && exports[key] === _getLocaleFromPath[key]) return;
178
+ Object.defineProperty(exports, key, {
179
+ enumerable: true,
180
+ get: function() {
181
+ return _getLocaleFromPath[key];
182
+ }
183
+ });
184
+ });
173
185
  var _calcDiscount = _interopRequireWildcard(require("./calcDiscount"));
174
186
  Object.keys(_calcDiscount).forEach(function(key) {
175
187
  if (key === "default" || key === "__esModule") return;
@@ -2,6 +2,7 @@ Object.defineProperty(exports, "__esModule", {
2
2
  value: true
3
3
  });
4
4
  exports.isTouchDevice = isTouchDevice;
5
+ var _canUseDom = require("./canUseDom");
5
6
  function isTouchDevice() {
6
- return 'ontouchstart' in window || navigator.maxTouchPoints > 0 || navigator.msMaxTouchPoints > 0;
7
+ return (0, _canUseDom).canUseDOM() && ('ontouchstart' in window || navigator.maxTouchPoints > 0 || navigator.msMaxTouchPoints > 0);
7
8
  }
@@ -4,12 +4,17 @@ Object.defineProperty(exports, "__esModule", {
4
4
  exports.writeToLocalStorage = exports.readFromLocalStorage = void 0;
5
5
  var readFromLocalStorage = function(key) {
6
6
  if (typeof window !== 'undefined') {
7
- return JSON.parse(localStorage.getItem(key));
7
+ try {
8
+ return JSON.parse(localStorage.getItem(key));
9
+ } catch (e) {
10
+ console.log(e);
11
+ return null;
12
+ }
8
13
  }
9
14
  };
10
15
  exports.readFromLocalStorage = readFromLocalStorage;
11
16
  var writeToLocalStorage = function(key, data) {
12
- if (typeof window !== 'undefined') {
17
+ if (typeof window !== 'undefined' && data !== undefined) {
13
18
  localStorage.setItem(key, JSON.stringify(data));
14
19
  }
15
20
  };
@@ -246,7 +246,8 @@ function _objectSpread(target) {
246
246
  mode: 'cors',
247
247
  cache: 'no-cache',
248
248
  headers: {
249
- 'Content-Type': 'application/json'
249
+ 'Content-Type': 'application/json',
250
+ 'senteca-locale': global.location.pathname.split('/')[1] || ''
250
251
  },
251
252
  body: JSON.stringify(payload)
252
253
  });
@@ -1,6 +1,6 @@
1
1
  import { Configuration, HttpClient } from '@sentecacommerce/sdk';
2
2
  import Cookies from 'js-cookie';
3
- import { ANONYMOUS_TOKEN_KEY, AUTH_TOKEN_KEY } from '../utils';
3
+ import { ANONYMOUS_TOKEN_KEY, AUTH_TOKEN_KEY, getLocaleFromPath, canUseDOM } from '../utils';
4
4
  function _defineProperty(obj, key, value) {
5
5
  if (key in obj) {
6
6
  Object.defineProperty(obj, key, {
@@ -35,13 +35,15 @@ export var getSDKConfig = function() {
35
35
  var defaultConfig = getOptions(options);
36
36
  var headers = ((ref = HttpClient.defaultConfig) === null || ref === void 0 ? void 0 : ref.options.headers) || (defaultConfig === null || defaultConfig === void 0 ? void 0 : defaultConfig.headers) || {};
37
37
  var config = new Configuration(_objectSpread({}, ((ref1 = HttpClient.defaultConfig) === null || ref1 === void 0 ? void 0 : ref1.options) || defaultConfig, options, {
38
- headers: _objectSpread({}, headers, options.headers || {})
38
+ headers: _objectSpread({}, headers, options.headers || {}, {
39
+ 'senteca-locale': getLocaleFromPath()
40
+ })
39
41
  }));
40
42
  return config;
41
43
  };
42
44
  export var getOptions = function() {
43
45
  var options = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : {};
44
- if (typeof window === 'undefined') {
46
+ if (!canUseDOM()) {
45
47
  // eslint-disable-next-line @typescript-eslint/no-var-requires
46
48
  var nodeFetch = require('node-fetch');
47
49
  var ref;
@@ -6,6 +6,7 @@ import { readFromLocalStorage, writeToLocalStorage, getTranslatableField } from
6
6
  import { getSDKConfig } from '../getSDKConfig';
7
7
  import { syncResponse, getLineItemId, onMutate } from './utils';
8
8
  import { queryKey as promoCodeQueryKey } from '../../api.v2/core/misc/promo-code';
9
+ import { useIsAuthenticated } from '../..';
9
10
  function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {
10
11
  try {
11
12
  var info = gen[key](arg);
@@ -110,6 +111,7 @@ export var MyCartApiFactory = function() {
110
111
  }(),
111
112
  useGet: function() {
112
113
  var queryCache = useQueryCache();
114
+ var isLoading = useIsAuthenticated().isLoading;
113
115
  return useQuery(myCartCacheKeys.useGet, _asyncToGenerator(regeneratorRuntime.mark(function _callee() {
114
116
  var data;
115
117
  return regeneratorRuntime.wrap(function _callee$(_ctx) {
@@ -128,12 +130,14 @@ export var MyCartApiFactory = function() {
128
130
  }
129
131
  }, _callee);
130
132
  })), {
133
+ enabled: !isLoading,
131
134
  retry: false,
132
- refetchOnMount: false,
135
+ refetchOnMount: true,
133
136
  refetchOnWindowFocus: false
134
137
  });
135
138
  },
136
139
  useGetCompact: function() {
140
+ var isLoading = useIsAuthenticated().isLoading;
137
141
  return useQuery(myCartCacheKeys.useGetCompact, _asyncToGenerator(regeneratorRuntime.mark(function _callee() {
138
142
  var compactBasket;
139
143
  return regeneratorRuntime.wrap(function _callee$(_ctx) {
@@ -146,7 +150,9 @@ export var MyCartApiFactory = function() {
146
150
  return _ctx.stop();
147
151
  }
148
152
  }, _callee);
149
- })));
153
+ })), {
154
+ enabled: !isLoading
155
+ });
150
156
  },
151
157
  useIsExisting: function(productId, variantId, collapseKey) {
152
158
  return useQuery([
@@ -1 +1,2 @@
1
1
  export * from './useReplaceBasketMutation';
2
+ export * from './useChangeGiftVariant';
@@ -0,0 +1,106 @@
1
+ import regeneratorRuntime from "regenerator-runtime";
2
+ import React from 'react';
3
+ import { useMutation } from 'react-query';
4
+ import { MyCartChangeSelectableGiftLineItemVariant } from '@sentecacommerce/sdk';
5
+ import { useReplaceBasket } from '../../index';
6
+ function _arrayLikeToArray(arr, len) {
7
+ if (len == null || len > arr.length) len = arr.length;
8
+ for(var i = 0, arr2 = new Array(len); i < len; i++)arr2[i] = arr[i];
9
+ return arr2;
10
+ }
11
+ function _arrayWithHoles(arr) {
12
+ if (Array.isArray(arr)) return arr;
13
+ }
14
+ function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {
15
+ try {
16
+ var info = gen[key](arg);
17
+ var value = info.value;
18
+ } catch (error) {
19
+ reject(error);
20
+ return;
21
+ }
22
+ if (info.done) {
23
+ resolve(value);
24
+ } else {
25
+ Promise.resolve(value).then(_next, _throw);
26
+ }
27
+ }
28
+ function _asyncToGenerator(fn) {
29
+ return function() {
30
+ var self = this, args = arguments;
31
+ return new Promise(function(resolve, reject) {
32
+ var gen = fn.apply(self, args);
33
+ function _next(value) {
34
+ asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value);
35
+ }
36
+ function _throw(err) {
37
+ asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err);
38
+ }
39
+ _next(undefined);
40
+ });
41
+ };
42
+ }
43
+ function _iterableToArrayLimit(arr, i) {
44
+ var _i = arr == null ? null : typeof Symbol !== "undefined" && arr[Symbol.iterator] || arr["@@iterator"];
45
+ if (_i == null) return;
46
+ var _arr = [];
47
+ var _n = true;
48
+ var _d = false;
49
+ var _s, _e;
50
+ try {
51
+ for(_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true){
52
+ _arr.push(_s.value);
53
+ if (i && _arr.length === i) break;
54
+ }
55
+ } catch (err) {
56
+ _d = true;
57
+ _e = err;
58
+ } finally{
59
+ try {
60
+ if (!_n && _i["return"] != null) _i["return"]();
61
+ } finally{
62
+ if (_d) throw _e;
63
+ }
64
+ }
65
+ return _arr;
66
+ }
67
+ function _nonIterableRest() {
68
+ throw new TypeError("Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
69
+ }
70
+ function _slicedToArray(arr, i) {
71
+ return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest();
72
+ }
73
+ function _unsupportedIterableToArray(o, minLen) {
74
+ if (!o) return;
75
+ if (typeof o === "string") return _arrayLikeToArray(o, minLen);
76
+ var n = Object.prototype.toString.call(o).slice(8, -1);
77
+ if (n === "Object" && o.constructor) n = o.constructor.name;
78
+ if (n === "Map" || n === "Set") return Array.from(n);
79
+ if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);
80
+ }
81
+ export var useChangeGiftVariantMutation = function() {
82
+ var ref = _slicedToArray(useReplaceBasket(), 1), replaceBasket = ref[0];
83
+ return useMutation(function() {
84
+ var _ref = _asyncToGenerator(regeneratorRuntime.mark(function _callee(props) {
85
+ return regeneratorRuntime.wrap(function _callee$(_ctx) {
86
+ while(1)switch(_ctx.prev = _ctx.next){
87
+ case 0:
88
+ _ctx.next = 2;
89
+ return MyCartChangeSelectableGiftLineItemVariant(props);
90
+ case 2:
91
+ return _ctx.abrupt("return", _ctx.sent);
92
+ case 3:
93
+ case "end":
94
+ return _ctx.stop();
95
+ }
96
+ }, _callee);
97
+ }));
98
+ return function(props) {
99
+ return _ref.apply(this, arguments);
100
+ };
101
+ }(), {
102
+ onSuccess: function(data) {
103
+ return replaceBasket(data);
104
+ }
105
+ });
106
+ };
@@ -1,2 +1,3 @@
1
1
  export * from './useReplaceBasket';
2
2
  export * from './useBasketCrossSaleItems';
3
+ export * from './useChangeGiftVariant';
@@ -0,0 +1,3 @@
1
+ import React from 'react';
2
+ import { useChangeGiftVariantMutation } from '../api/mutations';
3
+ export { useChangeGiftVariantMutation as useChangeGiftVariant };
@@ -4,6 +4,7 @@ import fetch from 'node-fetch';
4
4
  import { getOptions } from '../api/getSDKConfig';
5
5
  import { ReactQueryConfigProvider, useQueryCache } from 'react-query';
6
6
  import { removeAnonToken, removeAuthToken } from '../utils/tokens';
7
+ import { getLocaleFromPath } from '../utils';
7
8
  import { useRouter } from 'next/router';
8
9
  function _defineProperty(obj, key, value) {
9
10
  if (key in obj) {
@@ -42,7 +43,8 @@ export function SentecaProvider(param) {
42
43
  if (localeData) {
43
44
  options.headers = _objectSpread({}, options.headers || {}, {
44
45
  InterfaceKey: localeData.interfaceKey,
45
- StoreKey: localeData.storeKey
46
+ StoreKey: localeData.storeKey,
47
+ 'senteca-locale': getLocaleFromPath()
46
48
  });
47
49
  }
48
50
  HttpClient.defaultConfig = new Configuration(options);
@@ -87,7 +87,9 @@ export var useAggregateResult = function(type, aggregates, slug, predicate, quer
87
87
  aggType: a.filterDefinition,
88
88
  aggKey: filterKey,
89
89
  aggOperator: operatorMap[a.aggregationType]
90
- }, selected, router));
90
+ }, selected, router), undefined, {
91
+ shallow: true
92
+ });
91
93
  }
92
94
  },
93
95
  ]);
@@ -104,6 +106,8 @@ export var useAggregateResult = function(type, aggregates, slug, predicate, quer
104
106
  query: _objectSpread({}, router.query, {
105
107
  filter: filterByType(router.query.filter, a.filterDefinition)
106
108
  })
109
+ }, undefined, {
110
+ shallow: true
107
111
  });
108
112
  },
109
113
  type: a.aggregationType
@@ -65,7 +65,7 @@ export var useAvailability = function(param) {
65
65
  setStatus(ProductQuantityStatusEnum.OutOfStock);
66
66
  return;
67
67
  }
68
- if ((quantity !== null && quantity !== void 0 ? quantity : 0) < (quantityInBasket || 1)) {
68
+ if (quantity - (quantityInBasket || 0) < 1) {
69
69
  setStatus(ProductQuantityStatusEnum.MaxQuantityReached);
70
70
  return;
71
71
  }
@@ -35,6 +35,8 @@ export var useClearAllFilters = function() {
35
35
  router.push({
36
36
  pathname: router.pathname,
37
37
  query: query
38
+ }, undefined, {
39
+ shallow: true
38
40
  });
39
41
  };
40
42
  };
@@ -92,7 +92,7 @@ function _unsupportedIterableToArray(o, minLen) {
92
92
  var ProductStateContext = /*#__PURE__*/ React.createContext(undefined);
93
93
  var CountDispatchContext = /*#__PURE__*/ React.createContext(undefined);
94
94
  export function ProductProvider(param) {
95
- var product = param.product, children = param.children, defaultVariantId = param.defaultVariantId;
95
+ var product = param.product, children = param.children, defaultVariantId = param.defaultVariantId, _includeBrandInName = param.includeBrandInName, includeBrandInName = _includeBrandInName === void 0 ? false : _includeBrandInName;
96
96
  var getVariantsWithInventory = function getVariantsWithInventory() {
97
97
  var ref9;
98
98
  var variantsWithInventory = product === null || product === void 0 ? void 0 : (ref9 = product.variants) === null || ref9 === void 0 ? void 0 : ref9.reduce(function(map, _, index, arr) {
@@ -221,16 +221,26 @@ export function ProductProvider(param) {
221
221
  return variants === null || variants === void 0 ? void 0 : variants[id];
222
222
  };
223
223
  var getVariantByCombination = function getVariantByCombination(key, value) {
224
- var ref;
225
- var id = (ref = combinations[key]) === null || ref === void 0 ? void 0 : ref.params[value];
226
- return variants === null || variants === void 0 ? void 0 : variants[id];
224
+ var ref11;
225
+ var split = value === null || value === void 0 ? void 0 : value.split(':');
226
+ if ((split === null || split === void 0 ? void 0 : split[0]) === 'collapseKey') {
227
+ var id = Object.keys(variants).find(function(el) {
228
+ var ref;
229
+ return variants[el].collapseKey === (split === null || split === void 0 ? void 0 : split[1]) && ((ref = variants[el].attributes.find(function(attr) {
230
+ return attr.name === 'size';
231
+ })) === null || ref === void 0 ? void 0 : ref.value) === key;
232
+ });
233
+ return variants[id];
234
+ }
235
+ var id3 = (ref11 = combinations[key]) === null || ref11 === void 0 ? void 0 : ref11.params[value];
236
+ return variants === null || variants === void 0 ? void 0 : variants[id3];
227
237
  };
228
238
  var getCustomFieldValue = function getCustomFieldValue(field) {
229
239
  return customFields === null || customFields === void 0 ? void 0 : customFields[field];
230
240
  };
231
241
  var getCombinationsForAttributeRule = function getCombinationsForAttributeRule(key, id) {
232
- var ref, ref11;
233
- var result = attributeRules === null || attributeRules === void 0 ? void 0 : (ref = attributeRules[key]) === null || ref === void 0 ? void 0 : (ref11 = ref.values) === null || ref11 === void 0 ? void 0 : ref11[id];
242
+ var ref, ref12;
243
+ var result = attributeRules === null || attributeRules === void 0 ? void 0 : (ref = attributeRules[key]) === null || ref === void 0 ? void 0 : (ref12 = ref.values) === null || ref12 === void 0 ? void 0 : ref12[id];
234
244
  return result;
235
245
  };
236
246
  var ref5 = _slicedToArray(React.useState(false), 2), mounted = ref5[0], setMounted = ref5[1];
@@ -238,34 +248,34 @@ export function ProductProvider(param) {
238
248
  var ref3 = _slicedToArray(React.useState(getVariantsWithInventory), 2), variants = ref3[0], setVariants = ref3[1];
239
249
  var ref4 = _slicedToArray(React.useState(getDefaultVariant), 2), selectedVariant = ref4[0], setSelectedVariant = ref4[1];
240
250
  var metaData = React.useMemo(function() {
241
- var ref, 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, ref42;
251
+ var ref, 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, ref42, ref43, ref44, ref45, ref46, ref47, ref48, ref49;
242
252
  var rootCategory = product === null || product === void 0 ? void 0 : (ref = product.categories) === null || ref === void 0 ? void 0 : ref[0];
243
253
  var rootCategoryId = rootCategory === null || rootCategory === void 0 ? void 0 : rootCategory.resourceId;
244
254
  var metaObj = {
245
255
  _id: product === null || product === void 0 ? void 0 : product._id,
246
- name: getTranslatableField(selectedVariant === null || selectedVariant === void 0 ? void 0 : selectedVariant.name) || getTranslatableField(product === null || product === void 0 ? void 0 : product.name),
256
+ name: includeBrandInName && (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) ? "".concat(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.name), " ").concat(getTranslatableField(selectedVariant === null || selectedVariant === void 0 ? void 0 : selectedVariant.name) || getTranslatableField(product === null || product === void 0 ? void 0 : product.name)) : getTranslatableField(selectedVariant === null || selectedVariant === void 0 ? void 0 : selectedVariant.name) || getTranslatableField(product === null || product === void 0 ? void 0 : product.name),
247
257
  slug: getTranslatableField(product === null || product === void 0 ? void 0 : product.slug),
248
258
  description: getTranslatableField(selectedVariant === null || selectedVariant === void 0 ? void 0 : selectedVariant.description) || getTranslatableField(product === null || product === void 0 ? void 0 : product.description),
249
259
  shortDescription: getTranslatableField(selectedVariant === null || selectedVariant === void 0 ? void 0 : selectedVariant.metaDescription) || getTranslatableField(product === null || product === void 0 ? void 0 : product.metaDescription),
250
260
  brand: {
251
- _id: product === null || product === void 0 ? void 0 : (ref12 = product.brands) === null || ref12 === void 0 ? void 0 : (ref13 = ref12[0]) === null || ref13 === void 0 ? void 0 : ref13.resourceId,
252
- name: getTranslatableField(product === null || product === void 0 ? void 0 : (ref14 = product.brands) === null || ref14 === void 0 ? void 0 : (ref15 = ref14[0]) === null || ref15 === void 0 ? void 0 : (ref16 = ref15.resource) === null || ref16 === void 0 ? void 0 : ref16.name),
253
- slug: getTranslatableField(product === null || product === void 0 ? void 0 : (ref17 = product.brands) === null || ref17 === void 0 ? void 0 : (ref18 = ref17[0]) === null || ref18 === void 0 ? void 0 : (ref19 = ref18.resource) === null || ref19 === void 0 ? void 0 : ref19.slug),
254
- logo: product === null || product === void 0 ? void 0 : (ref20 = product.brands) === null || ref20 === void 0 ? void 0 : (ref21 = ref20[0]) === null || ref21 === void 0 ? void 0 : (ref22 = ref21.resource) === null || ref22 === void 0 ? void 0 : (ref23 = ref22.assets) === null || ref23 === void 0 ? void 0 : (ref24 = ref23[0]) === null || ref24 === void 0 ? void 0 : (ref25 = ref24.sources) === null || ref25 === void 0 ? void 0 : (ref26 = ref25[0]) === null || ref26 === void 0 ? void 0 : ref26.url
261
+ _id: 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 : ref20.resourceId,
262
+ name: getTranslatableField(product === null || product === void 0 ? void 0 : (ref21 = product.brands) === null || ref21 === void 0 ? void 0 : (ref22 = ref21[0]) === null || ref22 === void 0 ? void 0 : (ref23 = ref22.resource) === null || ref23 === void 0 ? void 0 : ref23.name),
263
+ slug: getTranslatableField(product === null || product === void 0 ? void 0 : (ref24 = product.brands) === null || ref24 === void 0 ? void 0 : (ref25 = ref24[0]) === null || ref25 === void 0 ? void 0 : (ref26 = ref25.resource) === null || ref26 === void 0 ? void 0 : ref26.slug),
264
+ logo: product === null || product === void 0 ? void 0 : (ref27 = product.brands) === null || ref27 === void 0 ? void 0 : (ref28 = ref27[0]) === null || ref28 === void 0 ? void 0 : (ref29 = ref28.resource) === null || ref29 === void 0 ? void 0 : (ref30 = ref29.assets) === null || ref30 === void 0 ? void 0 : (ref31 = ref30[0]) === null || ref31 === void 0 ? void 0 : (ref32 = ref31.sources) === null || ref32 === void 0 ? void 0 : (ref33 = ref32[0]) === null || ref33 === void 0 ? void 0 : ref33.url
255
265
  },
256
266
  category: {
257
- _id: 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 : ref29.resourceId,
258
- name: getTranslatableField(product === null || product === void 0 ? void 0 : (ref31 = product.categories) === null || ref31 === void 0 ? void 0 : (ref32 = ref31[(product === null || product === void 0 ? void 0 : (ref30 = product.categories) === null || ref30 === void 0 ? void 0 : ref30.length) - 1]) === null || ref32 === void 0 ? void 0 : (ref33 = ref32.resource) === null || ref33 === void 0 ? void 0 : ref33.name),
259
- slug: getTranslatableField(product === null || product === void 0 ? void 0 : (ref35 = product.categories) === null || ref35 === void 0 ? void 0 : (ref36 = ref35[(product === null || product === void 0 ? void 0 : (ref34 = product.categories) === null || ref34 === void 0 ? void 0 : ref34.length) - 1]) === null || ref36 === void 0 ? void 0 : (ref37 = ref36.resource) === null || ref37 === void 0 ? void 0 : ref37.slug)
267
+ _id: product === null || product === void 0 ? void 0 : (ref35 = product.categories) === null || ref35 === void 0 ? void 0 : (ref36 = ref35[(product === null || product === void 0 ? void 0 : (ref34 = product.categories) === null || ref34 === void 0 ? void 0 : ref34.length) - 1]) === null || ref36 === void 0 ? void 0 : ref36.resourceId,
268
+ name: getTranslatableField(product === null || product === void 0 ? void 0 : (ref38 = product.categories) === null || ref38 === void 0 ? void 0 : (ref39 = ref38[(product === null || product === void 0 ? void 0 : (ref37 = product.categories) === null || ref37 === void 0 ? void 0 : ref37.length) - 1]) === null || ref39 === void 0 ? void 0 : (ref40 = ref39.resource) === null || ref40 === void 0 ? void 0 : ref40.name),
269
+ slug: getTranslatableField(product === null || product === void 0 ? void 0 : (ref42 = product.categories) === null || ref42 === void 0 ? void 0 : (ref43 = ref42[(product === null || product === void 0 ? void 0 : (ref41 = product.categories) === null || ref41 === void 0 ? void 0 : ref41.length) - 1]) === null || ref43 === void 0 ? void 0 : (ref44 = ref43.resource) === null || ref44 === void 0 ? void 0 : ref44.slug)
260
270
  },
261
271
  rootCategory: {
262
272
  _id: rootCategoryId,
263
- name: getTranslatableField(rootCategory === null || rootCategory === void 0 ? void 0 : (ref38 = rootCategory.resource) === null || ref38 === void 0 ? void 0 : ref38.name),
264
- slug: getTranslatableField(rootCategory === null || rootCategory === void 0 ? void 0 : (ref39 = rootCategory.resource) === null || ref39 === void 0 ? void 0 : ref39.slug)
273
+ name: getTranslatableField(rootCategory === null || rootCategory === void 0 ? void 0 : (ref45 = rootCategory.resource) === null || ref45 === void 0 ? void 0 : ref45.name),
274
+ slug: getTranslatableField(rootCategory === null || rootCategory === void 0 ? void 0 : (ref46 = rootCategory.resource) === null || ref46 === void 0 ? void 0 : ref46.slug)
265
275
  },
266
276
  categories: formatCategories(product === null || product === void 0 ? void 0 : product.categories, rootCategoryId),
267
277
  reviewRatingStatistics: product === null || product === void 0 ? void 0 : product.reviewRatingStatistics,
268
- content: Boolean(selectedVariant === null || selectedVariant === void 0 ? void 0 : (ref40 = selectedVariant.content) === null || ref40 === void 0 ? void 0 : ref40.map(createProductContent).length) ? selectedVariant === null || selectedVariant === void 0 ? void 0 : (ref41 = selectedVariant.content) === null || ref41 === void 0 ? void 0 : ref41.map(createProductContent) : product === null || product === void 0 ? void 0 : (ref42 = product.content) === null || ref42 === void 0 ? void 0 : ref42.map(createProductContent),
278
+ content: Boolean(selectedVariant === null || selectedVariant === void 0 ? void 0 : (ref47 = selectedVariant.content) === null || ref47 === void 0 ? void 0 : ref47.map(createProductContent).length) ? selectedVariant === null || selectedVariant === void 0 ? void 0 : (ref48 = selectedVariant.content) === null || ref48 === void 0 ? void 0 : ref48.map(createProductContent) : product === null || product === void 0 ? void 0 : (ref49 = product.content) === null || ref49 === void 0 ? void 0 : ref49.map(createProductContent),
269
279
  assets: assetsFieldsToMap(product === null || product === void 0 ? void 0 : product.assets)
270
280
  };
271
281
  return metaObj;
@@ -1,7 +1,7 @@
1
- import React from 'react';
2
- import { wishlistApi } from '../../../';
1
+ import React, { useEffect } from 'react';
2
+ import { useBoolean, wishlistApi } from '../../../';
3
3
  import { usePrefetchProduct, getTranslatableField } from '../../../';
4
- import { getTimeStamp, createMappedAttributes } from '../../basket-hooks/useBasketLineItem/utils';
4
+ import { createMappedAttributes } from '../../basket-hooks/useBasketLineItem/utils';
5
5
  import { customFieldsToMap } from '../../../utils';
6
6
  function _arrayLikeToArray(arr, len) {
7
7
  if (len == null || len > arr.length) len = arr.length;
@@ -51,15 +51,19 @@ function _unsupportedIterableToArray(o, minLen) {
51
51
  }
52
52
  export var useWishlistItem = function(props) {
53
53
  var ref16;
54
- var ref1 = _slicedToArray(React.useState(false), 2), isExpired = ref1[0], setIsExpired = ref1[1];
54
+ var item = props.item, expiry = props.expiry;
55
+ var ref1 = _slicedToArray(useBoolean(false), 2), isExpired = ref1[0], setIsExpired = ref1[1];
55
56
  var ref2 = _slicedToArray(wishlistApi.useSync(), 1), syncWishlist = ref2[0];
56
57
  var ref3 = usePrefetchProduct(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;
58
+ useEffect(function() {
59
+ if (expiry) {
60
+ if (Date.now() > expiry + (item === null || item === void 0 ? void 0 : item.snapshotFrom)) {
61
+ setIsExpired.on();
62
+ }
63
+ }
64
+ }, []);
57
65
  var data = React.useMemo(function() {
58
66
  var ref, ref4, ref5, ref6, ref7, ref8, ref9, ref10, ref11, ref12, ref13, ref14, ref15;
59
- var item = props.item;
60
- if (props.expiry && getTimeStamp(props.expiry) < (item === null || item === void 0 ? void 0 : item.snapshotFrom)) {
61
- setIsExpired(true);
62
- }
63
67
  var offer = item === null || item === void 0 ? void 0 : (ref = item.productVariant) === null || ref === void 0 ? void 0 : ref.offer;
64
68
  var mappedAttributes = createMappedAttributes(item === null || item === void 0 ? void 0 : (ref4 = item.productVariant) === null || ref4 === void 0 ? void 0 : ref4.attributes) || {};
65
69
  var mappedCustomField = customFieldsToMap(item.custom);
@@ -99,11 +103,15 @@ export var useWishlistItem = function(props) {
99
103
  }
100
104
  };
101
105
  }, [
102
- props.item
106
+ item
107
+ ]);
108
+ useEffect(function() {
109
+ if (isExpired) {
110
+ syncWishlist();
111
+ setIsExpired.off();
112
+ }
113
+ }, [
114
+ isExpired
103
115
  ]);
104
- if (isExpired) {
105
- syncWishlist();
106
- setIsExpired(false);
107
- }
108
116
  return data;
109
117
  };
@@ -126,7 +126,7 @@ export var useListingQuery = function() {
126
126
  predicate: predicate,
127
127
  sort: sort,
128
128
  postFilter: postFilter,
129
- slug: slug,
129
+ slug: aliasedSlug,
130
130
  offset: offset
131
131
  });
132
132
  return useQuery(queryKeys, _asyncToGenerator(regeneratorRuntime.mark(function _callee() {