@bonlineza/luxity-lib 2.36.1-uk-platform.1 → 2.36.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 (94) hide show
  1. package/Accordion.js +116 -76
  2. package/AddInterest.js +777 -440
  3. package/AddProductInterest.js +644 -485
  4. package/BrandSelector.js +336 -176
  5. package/Checkbox.js +101 -68
  6. package/CheckboxButton.js +124 -79
  7. package/CommunicationPreferenceOptionsRenderer.js +169 -159
  8. package/CommunicationPreferenceSection.js +178 -166
  9. package/CommunicationPreferences.js +427 -549
  10. package/ConditionSelector.js +336 -174
  11. package/CountryCodeSelect.js +10 -7
  12. package/CurrencyInputFormatter.js +56 -29
  13. package/CurrencySelect.js +49 -23
  14. package/DropdownSelector.js +92 -68
  15. package/GALink.js +16 -6
  16. package/GenderSelector.js +142 -88
  17. package/GraphQLDropdownSelector.js +1508 -929
  18. package/GraphQLMultiSelector.js +274 -141
  19. package/IconHeader.js +25 -11
  20. package/IconWrapper.js +7 -3
  21. package/InterestCatSelector.js +74 -34
  22. package/InterestItem.js +187 -103
  23. package/Interests.js +1463 -913
  24. package/InterestsSubheading.js +10 -5
  25. package/InvertedTextButton.js +63 -27
  26. package/LuxityAppSideNav.js +21 -18
  27. package/LuxityDesktopHeader.js +451 -298
  28. package/LuxityFooter.js +321 -430
  29. package/LuxityGraphQLDropdownSelector.js +1540 -945
  30. package/LuxityGraphQLMultiselector.js +321 -167
  31. package/LuxityMobileHeader.js +544 -353
  32. package/LuxityPageReady.js +136 -74
  33. package/LuxityProductInterestItem.js +175 -97
  34. package/LuxitySideNav.js +244 -176
  35. package/MaterialSelector.js +1547 -951
  36. package/ModelSelector.js +1547 -951
  37. package/NotificationDropDown.js +218 -118
  38. package/Notify.js +1 -0
  39. package/OutlinePrimaryButton.js +58 -26
  40. package/PriceRangeSelector.js +281 -168
  41. package/PrimaryButton.js +58 -26
  42. package/RadioButtons.js +140 -114
  43. package/RangeSlider.js +242 -152
  44. package/RareStepFooter.js +41 -27
  45. package/RareStepHeader.js +190 -139
  46. package/ReactSelectWrapper.js +1 -0
  47. package/SecondaryButton.js +58 -26
  48. package/ShoeSizeRangeSelector.js +260 -162
  49. package/ShoeSizeSelector.js +263 -158
  50. package/SimpleErrorBoundary.js +106 -59
  51. package/StyleSelector.js +336 -176
  52. package/TestComponent.js +15 -0
  53. package/TextButton.js +58 -26
  54. package/Tooltip.js +39 -17
  55. package/Tracking.js +1 -0
  56. package/WrapperButton.js +43 -20
  57. package/build/CountryCodeSelect/index.js +18 -0
  58. package/build/ReactSelectWrapper/index.js +34 -0
  59. package/build/bundle.css +1 -1
  60. package/build/bundle.js +2616 -1974
  61. package/package.json +1 -1
  62. package/postcss.config.js +6 -0
  63. package/svg/Accessories.js +13 -6
  64. package/svg/Account.js +13 -6
  65. package/svg/Add.js +13 -6
  66. package/svg/ArrowRight.js +13 -6
  67. package/svg/Bags.js +13 -6
  68. package/svg/BurgerMenu.js +13 -6
  69. package/svg/Calendar.js +13 -6
  70. package/svg/CalendarCircled.js +13 -6
  71. package/svg/CheckCircled.js +13 -6
  72. package/svg/Close.js +13 -6
  73. package/svg/Clothing.js +13 -6
  74. package/svg/Dot.js +13 -6
  75. package/svg/Edit.js +13 -6
  76. package/svg/Eye.js +13 -6
  77. package/svg/FileAttach.js +13 -6
  78. package/svg/FileAttachCircled.js +13 -6
  79. package/svg/LightBulb.js +13 -6
  80. package/svg/Logo.js +13 -6
  81. package/svg/LuxityMenu.js +13 -6
  82. package/svg/Minus.js +13 -6
  83. package/svg/MobileAvatar.js +13 -6
  84. package/svg/MyOrder.js +13 -6
  85. package/svg/MyPayment.js +13 -6
  86. package/svg/MyProfile.js +14 -8
  87. package/svg/MySale.js +13 -6
  88. package/svg/Notification.js +13 -6
  89. package/svg/PointerDown.js +13 -6
  90. package/svg/Search.js +13 -6
  91. package/svg/Shoes.js +13 -6
  92. package/svg/SvgWrapper.js +7 -3
  93. package/svg/Trash.js +13 -6
  94. package/svg/Watches.js +13 -6
@@ -8,128 +8,149 @@
8
8
  axios = axios && Object.prototype.hasOwnProperty.call(axios, 'default') ? axios['default'] : axios;
9
9
  var styled__default = 'default' in styled ? styled['default'] : styled;
10
10
 
11
- function _arrayLikeToArray(r, a) {
12
- (null == a || a > r.length) && (a = r.length);
13
- for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e];
14
- return n;
15
- }
16
- function _arrayWithHoles(r) {
17
- if (Array.isArray(r)) return r;
18
- }
19
- function _defineProperty(e, r, t) {
20
- return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, {
21
- value: t,
22
- enumerable: !0,
23
- configurable: !0,
24
- writable: !0
25
- }) : e[r] = t, e;
26
- }
27
- function _extends() {
28
- return _extends = Object.assign ? Object.assign.bind() : function (n) {
29
- for (var e = 1; e < arguments.length; e++) {
30
- var t = arguments[e];
31
- for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]);
32
- }
33
- return n;
34
- }, _extends.apply(null, arguments);
35
- }
36
- function _iterableToArrayLimit(r, l) {
37
- var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"];
38
- if (null != t) {
39
- var e,
40
- n,
41
- i,
42
- u,
43
- a = [],
44
- f = !0,
45
- o = !1;
46
- try {
47
- if (i = (t = t.call(r)).next, 0 === l) {
48
- if (Object(t) !== t) return;
49
- f = !1;
50
- } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0);
51
- } catch (r) {
52
- o = !0, n = r;
53
- } finally {
54
- try {
55
- if (!f && null != t.return && (u = t.return(), Object(u) !== u)) return;
56
- } finally {
57
- if (o) throw n;
58
- }
59
- }
60
- return a;
11
+ function ownKeys(object, enumerableOnly) {
12
+ var keys = Object.keys(object);
13
+
14
+ if (Object.getOwnPropertySymbols) {
15
+ var symbols = Object.getOwnPropertySymbols(object);
16
+ enumerableOnly && (symbols = symbols.filter(function (sym) {
17
+ return Object.getOwnPropertyDescriptor(object, sym).enumerable;
18
+ })), keys.push.apply(keys, symbols);
61
19
  }
20
+
21
+ return keys;
62
22
  }
63
- function _nonIterableRest() {
64
- throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
65
- }
66
- function ownKeys(e, r) {
67
- var t = Object.keys(e);
68
- if (Object.getOwnPropertySymbols) {
69
- var o = Object.getOwnPropertySymbols(e);
70
- r && (o = o.filter(function (r) {
71
- return Object.getOwnPropertyDescriptor(e, r).enumerable;
72
- })), t.push.apply(t, o);
23
+
24
+ function _objectSpread2(target) {
25
+ for (var i = 1; i < arguments.length; i++) {
26
+ var source = null != arguments[i] ? arguments[i] : {};
27
+ i % 2 ? ownKeys(Object(source), !0).forEach(function (key) {
28
+ _defineProperty(target, key, source[key]);
29
+ }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) {
30
+ Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));
31
+ });
73
32
  }
74
- return t;
33
+
34
+ return target;
75
35
  }
76
- function _objectSpread2(e) {
77
- for (var r = 1; r < arguments.length; r++) {
78
- var t = null != arguments[r] ? arguments[r] : {};
79
- r % 2 ? ownKeys(Object(t), !0).forEach(function (r) {
80
- _defineProperty(e, r, t[r]);
81
- }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) {
82
- Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r));
36
+
37
+ function _defineProperty(obj, key, value) {
38
+ if (key in obj) {
39
+ Object.defineProperty(obj, key, {
40
+ value: value,
41
+ enumerable: true,
42
+ configurable: true,
43
+ writable: true
83
44
  });
45
+ } else {
46
+ obj[key] = value;
84
47
  }
85
- return e;
48
+
49
+ return obj;
86
50
  }
87
- function _slicedToArray(r, e) {
88
- return _arrayWithHoles(r) || _iterableToArrayLimit(r, e) || _unsupportedIterableToArray(r, e) || _nonIterableRest();
51
+
52
+ function _extends() {
53
+ _extends = Object.assign ? Object.assign.bind() : function (target) {
54
+ for (var i = 1; i < arguments.length; i++) {
55
+ var source = arguments[i];
56
+
57
+ for (var key in source) {
58
+ if (Object.prototype.hasOwnProperty.call(source, key)) {
59
+ target[key] = source[key];
60
+ }
61
+ }
62
+ }
63
+
64
+ return target;
65
+ };
66
+ return _extends.apply(this, arguments);
89
67
  }
90
- function _taggedTemplateLiteral(e, t) {
91
- return t || (t = e.slice(0)), Object.freeze(Object.defineProperties(e, {
68
+
69
+ function _taggedTemplateLiteral(strings, raw) {
70
+ if (!raw) {
71
+ raw = strings.slice(0);
72
+ }
73
+
74
+ return Object.freeze(Object.defineProperties(strings, {
92
75
  raw: {
93
- value: Object.freeze(t)
76
+ value: Object.freeze(raw)
94
77
  }
95
78
  }));
96
79
  }
97
- function _toPrimitive(t, r) {
98
- if ("object" != typeof t || !t) return t;
99
- var e = t[Symbol.toPrimitive];
100
- if (void 0 !== e) {
101
- var i = e.call(t, r || "default");
102
- if ("object" != typeof i) return i;
103
- throw new TypeError("@@toPrimitive must return a primitive value.");
104
- }
105
- return ("string" === r ? String : Number)(t);
80
+
81
+ function _slicedToArray(arr, i) {
82
+ return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest();
106
83
  }
107
- function _toPropertyKey(t) {
108
- var i = _toPrimitive(t, "string");
109
- return "symbol" == typeof i ? i : i + "";
84
+
85
+ function _arrayWithHoles(arr) {
86
+ if (Array.isArray(arr)) return arr;
110
87
  }
111
- function _unsupportedIterableToArray(r, a) {
112
- if (r) {
113
- if ("string" == typeof r) return _arrayLikeToArray(r, a);
114
- var t = {}.toString.call(r).slice(8, -1);
115
- return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0;
88
+
89
+ function _iterableToArrayLimit(arr, i) {
90
+ var _i = arr == null ? null : typeof Symbol !== "undefined" && arr[Symbol.iterator] || arr["@@iterator"];
91
+
92
+ if (_i == null) return;
93
+ var _arr = [];
94
+ var _n = true;
95
+ var _d = false;
96
+
97
+ var _s, _e;
98
+
99
+ try {
100
+ for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) {
101
+ _arr.push(_s.value);
102
+
103
+ if (i && _arr.length === i) break;
104
+ }
105
+ } catch (err) {
106
+ _d = true;
107
+ _e = err;
108
+ } finally {
109
+ try {
110
+ if (!_n && _i["return"] != null) _i["return"]();
111
+ } finally {
112
+ if (_d) throw _e;
113
+ }
116
114
  }
115
+
116
+ return _arr;
117
+ }
118
+
119
+ function _unsupportedIterableToArray(o, minLen) {
120
+ if (!o) return;
121
+ if (typeof o === "string") return _arrayLikeToArray(o, minLen);
122
+ var n = Object.prototype.toString.call(o).slice(8, -1);
123
+ if (n === "Object" && o.constructor) n = o.constructor.name;
124
+ if (n === "Map" || n === "Set") return Array.from(o);
125
+ if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);
126
+ }
127
+
128
+ function _arrayLikeToArray(arr, len) {
129
+ if (len == null || len > arr.length) len = arr.length;
130
+
131
+ for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i];
132
+
133
+ return arr2;
134
+ }
135
+
136
+ function _nonIterableRest() {
137
+ throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
117
138
  }
118
139
 
119
140
  var Dropdown = function Dropdown(_ref) {
120
141
  var title = _ref.title,
121
- imageSrc = _ref.imageSrc,
122
- _ref$categoryElements = _ref.categoryElements,
123
- categoryElements = _ref$categoryElements === void 0 ? [] : _ref$categoryElements,
124
- _ref$brandElements = _ref.brandElements,
125
- brandElements = _ref$brandElements === void 0 ? [] : _ref$brandElements,
126
- productsUrl = _ref.productsUrl,
127
- LinkComponent = _ref.LinkComponent,
128
- categorySlug = _ref.categorySlug,
129
- categoryTitle = _ref.categoryTitle,
130
- isLoading = _ref.isLoading,
131
- hasError = _ref.hasError,
132
- onMenuItemClick = _ref.onMenuItemClick;
142
+ imageSrc = _ref.imageSrc,
143
+ _ref$categoryElements = _ref.categoryElements,
144
+ categoryElements = _ref$categoryElements === void 0 ? [] : _ref$categoryElements,
145
+ _ref$brandElements = _ref.brandElements,
146
+ brandElements = _ref$brandElements === void 0 ? [] : _ref$brandElements,
147
+ productsUrl = _ref.productsUrl,
148
+ LinkComponent = _ref.LinkComponent,
149
+ categorySlug = _ref.categorySlug,
150
+ categoryTitle = _ref.categoryTitle,
151
+ isLoading = _ref.isLoading,
152
+ hasError = _ref.hasError,
153
+ onMenuItemClick = _ref.onMenuItemClick;
133
154
  return /*#__PURE__*/React__default.createElement(React__default.Fragment, null, hasError ? /*#__PURE__*/React__default.createElement("div", {
134
155
  className: "dropdown__errors"
135
156
  }, "Failed to load data.") : /*#__PURE__*/React__default.createElement("div", {
@@ -168,11 +189,11 @@
168
189
  onClick: onMenuItemClick
169
190
  }, "All ", categoryTitle)), !!brandElements.length && brandElements.map(function (brand) {
170
191
  return /*#__PURE__*/React__default.createElement("div", {
171
- className: "dropdown__brand-element"
192
+ className: "dropdown__brand-element",
193
+ key: brand.name
172
194
  }, /*#__PURE__*/React__default.createElement(LinkComponent, {
173
195
  href: "".concat(productsUrl, "/").concat(categorySlug, "/").concat(brand === null || brand === void 0 ? void 0 : brand.slug),
174
196
  className: "dropdown__element",
175
- key: brand.name,
176
197
  onClick: onMenuItemClick
177
198
  }, brand === null || brand === void 0 ? void 0 : brand.name));
178
199
  }))), /*#__PURE__*/React__default.createElement("div", {
@@ -185,22 +206,25 @@
185
206
 
186
207
  var DropdownLink = function DropdownLink(_ref) {
187
208
  var title = _ref.title,
188
- imageSrc = _ref.imageSrc,
189
- categoryElements = _ref.categoryElements,
190
- brandElements = _ref.brandElements,
191
- productsUrl = _ref.productsUrl,
192
- LinkComponent = _ref.LinkComponent,
193
- categorySlug = _ref.categorySlug,
194
- categoryTitle = _ref.categoryTitle,
195
- isLoading = _ref.isLoading,
196
- hasError = _ref.hasError;
209
+ imageSrc = _ref.imageSrc,
210
+ categoryElements = _ref.categoryElements,
211
+ brandElements = _ref.brandElements,
212
+ productsUrl = _ref.productsUrl,
213
+ LinkComponent = _ref.LinkComponent,
214
+ categorySlug = _ref.categorySlug,
215
+ categoryTitle = _ref.categoryTitle,
216
+ isLoading = _ref.isLoading,
217
+ hasError = _ref.hasError;
218
+
197
219
  var _useState = React.useState(false),
198
- _useState2 = _slicedToArray(_useState, 2),
199
- dropdownVisible = _useState2[0],
200
- setDropdownVisible = _useState2[1];
220
+ _useState2 = _slicedToArray(_useState, 2),
221
+ dropdownVisible = _useState2[0],
222
+ setDropdownVisible = _useState2[1];
223
+
201
224
  var handleMenuItemClick = function handleMenuItemClick() {
202
225
  setDropdownVisible(false);
203
226
  };
227
+
204
228
  return /*#__PURE__*/React__default.createElement("li", {
205
229
  className: "navbar__link",
206
230
  onMouseEnter: function onMouseEnter() {
@@ -232,8 +256,8 @@
232
256
 
233
257
  var StoresDropdown = function StoresDropdown(_ref) {
234
258
  var _ref$stores = _ref.stores,
235
- stores = _ref$stores === void 0 ? [] : _ref$stores,
236
- contactNumber = _ref.contactNumber;
259
+ stores = _ref$stores === void 0 ? [] : _ref$stores,
260
+ contactNumber = _ref.contactNumber;
237
261
  return /*#__PURE__*/React__default.createElement("div", {
238
262
  className: "stores-dropdown"
239
263
  }, !!stores.length && stores.map(function (store) {
@@ -275,25 +299,29 @@
275
299
 
276
300
  var SearchResults = function SearchResults(_ref) {
277
301
  var _searchResults$brands, _searchResults$produc, _searchResults$brands2, _searchResults$produc2, _initialSearchData$tr, _initialSearchData$la, _limitBrands, _limitBrands2, _initialSearchData$la2, _searchResults$produc3;
302
+
278
303
  var searchValue = _ref.searchValue,
279
- searchResults = _ref.searchResults,
280
- onViewAll = _ref.onViewAll,
281
- searchResultsRef = _ref.searchResultsRef,
282
- onSearchSubmit = _ref.onSearchSubmit,
283
- setSearchValue = _ref.setSearchValue,
284
- initialSearchData = _ref.initialSearchData,
285
- isSearchFocused = _ref.isSearchFocused,
286
- setIsSearchFocused = _ref.setIsSearchFocused,
287
- currency = _ref.currency,
288
- currencySymbol = _ref.currencySymbol;
304
+ searchResults = _ref.searchResults,
305
+ onViewAll = _ref.onViewAll,
306
+ searchResultsRef = _ref.searchResultsRef,
307
+ onSearchSubmit = _ref.onSearchSubmit,
308
+ setSearchValue = _ref.setSearchValue,
309
+ initialSearchData = _ref.initialSearchData,
310
+ isSearchFocused = _ref.isSearchFocused,
311
+ setIsSearchFocused = _ref.setIsSearchFocused,
312
+ currency = _ref.currency,
313
+ currencySymbol = _ref.currencySymbol;
314
+
289
315
  var _useState = React.useState(false),
290
- _useState2 = _slicedToArray(_useState, 2),
291
- isMobile = _useState2[0],
292
- setIsMobile = _useState2[1];
316
+ _useState2 = _slicedToArray(_useState, 2),
317
+ isMobile = _useState2[0],
318
+ setIsMobile = _useState2[1];
319
+
293
320
  React.useEffect(function () {
294
321
  var checkIfMobile = function checkIfMobile() {
295
322
  setIsMobile(window.innerWidth <= 1024);
296
323
  };
324
+
297
325
  checkIfMobile();
298
326
  window.addEventListener('resize', checkIfMobile);
299
327
  return function () {
@@ -303,12 +331,15 @@
303
331
  var shouldShowInitialData = isSearchFocused && (!searchValue || searchValue.trim().length < 3) || (searchValue === null || searchValue === void 0 ? void 0 : searchValue.trim().length) >= 3 && !(searchResults !== null && searchResults !== void 0 && (_searchResults$brands = searchResults.brands) !== null && _searchResults$brands !== void 0 && _searchResults$brands.length) && !(searchResults !== null && searchResults !== void 0 && (_searchResults$produc = searchResults.products) !== null && _searchResults$produc !== void 0 && _searchResults$produc.length);
304
332
  var hasResults = (searchResults === null || searchResults === void 0 ? void 0 : (_searchResults$brands2 = searchResults.brands) === null || _searchResults$brands2 === void 0 ? void 0 : _searchResults$brands2.length) > 0 || (searchResults === null || searchResults === void 0 ? void 0 : (_searchResults$produc2 = searchResults.products) === null || _searchResults$produc2 === void 0 ? void 0 : _searchResults$produc2.length) > 0;
305
333
  var hasInitialData = (initialSearchData === null || initialSearchData === void 0 ? void 0 : (_initialSearchData$tr = initialSearchData.trending_brands) === null || _initialSearchData$tr === void 0 ? void 0 : _initialSearchData$tr.length) > 0 || (initialSearchData === null || initialSearchData === void 0 ? void 0 : (_initialSearchData$la = initialSearchData.latest_products) === null || _initialSearchData$la === void 0 ? void 0 : _initialSearchData$la.length) > 0;
334
+
306
335
  if (!hasResults && !hasInitialData) {
307
336
  return null;
308
337
  }
309
- if (!isSearchFocused && !hasResults) {
338
+
339
+ if (!isSearchFocused) {
310
340
  return null;
311
341
  }
342
+
312
343
  var formatPrice = function formatPrice(price) {
313
344
  var formatter = new Intl.NumberFormat(undefined, {
314
345
  minimumFractionDigits: 0,
@@ -316,6 +347,7 @@
316
347
  });
317
348
  return "".concat(currencySymbol).concat(formatter.format(price));
318
349
  };
350
+
319
351
  var renderProductCard = function renderProductCard(product) {
320
352
  var selectedPrice = product.prices ? product.prices.find(function (p) {
321
353
  return p.currency === currency;
@@ -327,7 +359,7 @@
327
359
  key: product.link,
328
360
  href: product.link,
329
361
  className: "product-card"
330
- }, (product.image_url || product.featured_image) && /*#__PURE__*/React__default.createElement("div", {
362
+ }, product.featured_image && /*#__PURE__*/React__default.createElement("div", {
331
363
  className: "product-card__image-container"
332
364
  }, /*#__PURE__*/React__default.createElement("img", {
333
365
  src: product.featured_image,
@@ -353,15 +385,19 @@
353
385
  className: "product-card__condition-label"
354
386
  }, "Condition:"), product.condition))));
355
387
  };
388
+
356
389
  var getBrandLink = function getBrandLink(brand) {
357
390
  return "/products/brands/".concat(brand.slug);
358
391
  };
392
+
359
393
  var limitBrands = function limitBrands(brands) {
360
394
  if (isMobile && brands && brands.length > 4) {
361
395
  return brands.slice(0, 4);
362
396
  }
397
+
363
398
  return brands;
364
399
  };
400
+
365
401
  return /*#__PURE__*/React__default.createElement("div", {
366
402
  className: "search-results",
367
403
  ref: searchResultsRef
@@ -402,6 +438,7 @@
402
438
  className: "search-results__view-all-button",
403
439
  onClick: function onClick() {
404
440
  onViewAll();
441
+
405
442
  if (!shouldShowInitialData) {
406
443
  onSearchSubmit(searchValue);
407
444
  setSearchValue('');
@@ -412,8 +449,8 @@
412
449
  };
413
450
 
414
451
  var _templateObject, _templateObject2, _templateObject3, _templateObject4, _templateObject5;
415
-
416
452
  /* position relative is required for the Body element to be positioned correctly */
453
+
417
454
  var relativeInlineStyle = styled.css(_templateObject || (_templateObject = _taggedTemplateLiteral(["\n position: relative;\n"])));
418
455
  var topMiddleBodyStyle = styled.css(_templateObject2 || (_templateObject2 = _taggedTemplateLiteral(["\n position: absolute;\n z-index: 1;\n bottom: 50%;\n left: 50%;\n transform: translate(-50%, -50%);\n"])));
419
456
  var getTopMiddleArrowAfterStyle = function getTopMiddleArrowAfterStyle(props) {
@@ -427,31 +464,40 @@
427
464
  };
428
465
 
429
466
  var _templateObject$1;
467
+
430
468
  var getBodyStyle = function getBodyStyle() {
431
469
  var props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
432
470
  var _props$toolTipPositio = props.toolTipPosition,
433
- toolTipPosition = _props$toolTipPositio === void 0 ? '' : _props$toolTipPositio;
471
+ toolTipPosition = _props$toolTipPositio === void 0 ? '' : _props$toolTipPositio;
472
+
434
473
  switch (toolTipPosition) {
435
474
  case 'top':
436
475
  return topMiddleBodyStyle;
476
+
437
477
  case 'bottom':
438
478
  return getBottomMiddleBodyStyle(props);
479
+
439
480
  default:
440
481
  return null;
441
482
  }
442
483
  };
484
+
443
485
  var getAfterStyling = function getAfterStyling() {
444
486
  var props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
445
487
  var toolTipPosition = props.toolTipPosition;
488
+
446
489
  switch (toolTipPosition) {
447
490
  case 'top':
448
491
  return getTopMiddleArrowAfterStyle(props);
492
+
449
493
  case 'bottom':
450
494
  return getBottomMiddleArrowAfterStyle(props);
495
+
451
496
  default:
452
497
  return '';
453
498
  }
454
499
  };
500
+
455
501
  var Body = styled__default.span(_templateObject$1 || (_templateObject$1 = _taggedTemplateLiteral(["\n ", ";\n visibility: hidden;\n opacity: 0;\n width: ", ";\n transition: visibility 0.3s linear, opacity 0.3s linear;\n background-color: ", ";\n color: white;\n text-align: center;\n border-radius: 5px;\n ", "\n &::after {\n content: ' ';\n position: absolute;\n ", "\n }\n"])), relativeInlineStyle, function (props) {
456
502
  return props.bodyWidth;
457
503
  }, function (props) {
@@ -531,12 +577,12 @@
531
577
 
532
578
  var Tooltip = function Tooltip(_ref) {
533
579
  var children = _ref.children,
534
- toolTipText = _ref.toolTipText,
535
- toolTipPosition = _ref.toolTipPosition,
536
- bodyWidth = _ref.bodyWidth,
537
- apexWidth = _ref.apexWidth,
538
- containerClassName = _ref.containerClassName,
539
- bodyClassName = _ref.bodyClassName;
580
+ toolTipText = _ref.toolTipText,
581
+ toolTipPosition = _ref.toolTipPosition,
582
+ bodyWidth = _ref.bodyWidth,
583
+ apexWidth = _ref.apexWidth,
584
+ containerClassName = _ref.containerClassName,
585
+ bodyClassName = _ref.bodyClassName;
540
586
  return /*#__PURE__*/React__default.createElement(Container, {
541
587
  className: containerClassName
542
588
  }, children, /*#__PURE__*/React__default.createElement(Body, {
@@ -546,6 +592,7 @@
546
592
  className: bodyClassName
547
593
  }, toolTipText));
548
594
  };
595
+
549
596
  Tooltip.defaultProps = {
550
597
  children: null,
551
598
  toolTipText: '',
@@ -559,21 +606,25 @@
559
606
 
560
607
  var CurrencySelect = function CurrencySelect(_ref) {
561
608
  var currency = _ref.currency,
562
- currencyOptions = _ref.currencyOptions,
563
- onCurrencyChange = _ref.onCurrencyChange,
564
- _ref$isCurrencySelect = _ref.isCurrencySelectionDisabled,
565
- isCurrencySelectionDisabled = _ref$isCurrencySelect === void 0 ? false : _ref$isCurrencySelect,
566
- _ref$tooltipContent = _ref.tooltipContent,
567
- tooltipContent = _ref$tooltipContent === void 0 ? '' : _ref$tooltipContent;
609
+ currencyOptions = _ref.currencyOptions,
610
+ onCurrencyChange = _ref.onCurrencyChange,
611
+ _ref$isCurrencySelect = _ref.isCurrencySelectionDisabled,
612
+ isCurrencySelectionDisabled = _ref$isCurrencySelect === void 0 ? false : _ref$isCurrencySelect,
613
+ _ref$tooltipContent = _ref.tooltipContent,
614
+ tooltipContent = _ref$tooltipContent === void 0 ? '' : _ref$tooltipContent;
615
+
568
616
  if (!currencyOptions || currencyOptions.length === 0) {
569
617
  return null;
570
618
  }
619
+
571
620
  var selectedOption = currencyOptions.find(function (opt) {
572
621
  return opt.value === currency;
573
622
  });
623
+
574
624
  if (!selectedOption) {
575
625
  return null;
576
626
  }
627
+
577
628
  return /*#__PURE__*/React__default.createElement(Tooltip$1, {
578
629
  toolTipText: isCurrencySelectionDisabled ? tooltipContent : '',
579
630
  toolTipPosition: "bottom",
@@ -613,18 +664,21 @@
613
664
 
614
665
  var useSearch = function useSearch(_ref) {
615
666
  var endpoint = _ref.endpoint,
616
- onProductIdsReceived = _ref.onProductIdsReceived,
617
- currency = _ref.currency;
667
+ onProductIdsReceived = _ref.onProductIdsReceived,
668
+ currency = _ref.currency;
669
+ var currentSearchRequestToken = React.useRef(null);
618
670
  var debounce = React.useCallback(function (func, wait) {
619
671
  var timeout;
620
672
  return function executedFunction() {
621
673
  for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
622
674
  args[_key] = arguments[_key];
623
675
  }
676
+
624
677
  var later = function later() {
625
678
  clearTimeout(timeout);
626
679
  func.apply(void 0, args);
627
680
  };
681
+
628
682
  clearTimeout(timeout);
629
683
  timeout = setTimeout(later, wait);
630
684
  };
@@ -643,47 +697,75 @@
643
697
  });
644
698
  });
645
699
  }, []);
646
- var performSearch = React.useCallback(function (nextValue, setSearchResults) {
647
- if (!nextValue || nextValue.trim() === '') {
700
+ var performSearch = React.useCallback(function (searchQuery, setSearchResults) {
701
+ if (!searchQuery || searchQuery.trim() === '') {
648
702
  setSearchResults({
649
703
  brands: [],
650
704
  products: [],
651
705
  luxity_product_ids: []
652
706
  });
653
707
  return;
654
- }
655
- axios.post(endpoint, searchProducts(nextValue, 3, currency)).then(function (response) {
656
- var searchResults = response.data.data.luxity_products_serach_results;
657
- setSearchResults(searchResults);
658
- if (searchResults && searchResults.luxity_product_ids) {
659
- onProductIdsReceived(searchResults.luxity_product_ids);
708
+ } // Cancel any ongoing search request to prevent race conditions
709
+
710
+
711
+ if (currentSearchRequestToken.current) {
712
+ currentSearchRequestToken.current.cancel();
713
+ } // Create a new token for this specific search request
714
+
715
+
716
+ var newSearchToken = axios.CancelToken.source();
717
+ currentSearchRequestToken.current = newSearchToken;
718
+ axios.post(endpoint, searchProducts(searchQuery, 3, currency), {
719
+ cancelToken: newSearchToken.token
720
+ }).then(function (response) {
721
+ if (currentSearchRequestToken.current === newSearchToken) {
722
+ var searchResults = response.data.data.luxity_products_serach_results;
723
+ setSearchResults(searchResults);
724
+
725
+ if (searchResults && searchResults.luxity_product_ids) {
726
+ onProductIdsReceived(searchResults.luxity_product_ids);
727
+ }
728
+
729
+ currentSearchRequestToken.current = null;
730
+ }
731
+ }).catch(function (error) {
732
+ if (!axios.isCancel(error)) {
733
+ setSearchResults({
734
+ brands: [],
735
+ products: [],
736
+ luxity_product_ids: []
737
+ });
738
+ currentSearchRequestToken.current = null;
660
739
  }
661
- }).catch(function () {
662
- setSearchResults({
663
- brands: [],
664
- products: [],
665
- luxity_product_ids: []
666
- });
667
740
  });
668
741
  }, [endpoint, currency, onProductIdsReceived]);
669
742
  var debouncedSearch = React.useMemo(function () {
670
- return debounce(function (nextValue, setSearchResults) {
671
- return performSearch(nextValue, setSearchResults);
743
+ return debounce(function (searchQuery, setSearchResults) {
744
+ return performSearch(searchQuery, setSearchResults);
672
745
  }, 500);
673
746
  }, [debounce, performSearch]);
674
747
  var createDebouncedSearch = React.useCallback(function (setSearchResults) {
675
- return function (nextValue) {
676
- return debouncedSearch(nextValue, setSearchResults);
748
+ return function (searchQuery) {
749
+ return debouncedSearch(searchQuery, setSearchResults);
677
750
  };
678
751
  }, [debouncedSearch]);
679
752
  var createImmediateSearch = React.useCallback(function (setSearchValue, setSearchResults, onSearchSubmit) {
680
- return function (value) {
753
+ return function (searchQuery) {
754
+ /*
755
+ * Cancel any pending search request when immediate search is performed
756
+ * Immediate search is when the user types a search query and presses enter
757
+ */
758
+ if (currentSearchRequestToken.current) {
759
+ currentSearchRequestToken.current.cancel();
760
+ currentSearchRequestToken.current = null;
761
+ }
762
+
681
763
  setSearchValue('');
682
764
  setSearchResults({
683
765
  brands: [],
684
766
  products: []
685
767
  });
686
- onSearchSubmit(value);
768
+ onSearchSubmit(searchQuery);
687
769
  };
688
770
  }, []);
689
771
  return {
@@ -693,111 +775,11 @@
693
775
  };
694
776
  };
695
777
 
696
- var removeCategoryByName = function removeCategoryByName(categories, name) {
697
- var _categories$filter;
698
- return (_categories$filter = categories === null || categories === void 0 ? void 0 : categories.filter(function (category) {
699
- return category.name.toLowerCase() !== name.toLowerCase();
700
- })) !== null && _categories$filter !== void 0 ? _categories$filter : [];
701
- };
702
-
703
- var LuxityDesktopHeader = function LuxityDesktopHeader(_ref) {
704
- var accountIcon = _ref.accountIcon,
705
- cartIcon = _ref.cartIcon,
706
- interestIcon = _ref.interestIcon,
707
- cartCount = _ref.cartCount,
708
- logoSrc = _ref.logoSrc,
709
- categoryElements = _ref.categoryElements,
710
- stores = _ref.stores,
711
- contactNumber = _ref.contactNumber,
712
- productsUrl = _ref.productsUrl,
713
- LinkComponent = _ref.LinkComponent,
714
- onInterestClick = _ref.onInterestClick,
715
- onCartClick = _ref.onCartClick,
716
- onAccountClick = _ref.onAccountClick,
717
- inputSearchIcon = _ref.inputSearchIcon,
718
- onSearch = _ref.onSearch,
719
- onSellToUsClick = _ref.onSellToUsClick,
720
- contactUsLink = _ref.contactUsLink,
721
- ourStoryLink = _ref.ourStoryLink,
722
- onLogoClick = _ref.onLogoClick,
723
- endpoint = _ref.endpoint,
724
- initialSearchData = _ref.initialSearchData,
725
- onSearchSubmit = _ref.onSearchSubmit,
726
- onProductIdsReceived = _ref.onProductIdsReceived,
727
- currency = _ref.currency,
728
- currencySymbol = _ref.currencySymbol,
729
- currencyOptions = _ref.currencyOptions,
730
- onCurrencyChange = _ref.onCurrencyChange,
731
- isCurrencySelectionDisabled = _ref.isCurrencySelectionDisabled,
732
- tooltipContent = _ref.tooltipContent,
733
- vipIcon = _ref.vipIcon,
734
- name = _ref.name,
735
- isVip = _ref.isVip,
736
- shop = _ref.shop,
737
- app = _ref.app,
738
- categoryConfig = _ref.categoryConfig;
739
- var _useSearch = useSearch({
740
- endpoint: endpoint,
741
- onProductIdsReceived: onProductIdsReceived,
742
- currency: currency
743
- }),
744
- fetchInitialSearchData = _useSearch.fetchInitialSearchData,
745
- createDebouncedSearch = _useSearch.createDebouncedSearch,
746
- createImmediateSearch = _useSearch.createImmediateSearch;
747
- var _useState = React.useState(''),
748
- _useState2 = _slicedToArray(_useState, 2),
749
- searchValue = _useState2[0],
750
- setSearchValue = _useState2[1];
751
- var _useState3 = React.useState(false),
752
- _useState4 = _slicedToArray(_useState3, 2),
753
- loading = _useState4[0],
754
- setLoading = _useState4[1];
755
- var _useState5 = React.useState(false),
756
- _useState6 = _slicedToArray(_useState5, 2),
757
- isSearchFocused = _useState6[0],
758
- setIsSearchFocused = _useState6[1];
759
- var _useState7 = React.useState({
760
- trending_brands: [],
761
- latest_products: []
762
- }),
763
- _useState8 = _slicedToArray(_useState7, 2),
764
- initialSearchView = _useState8[0],
765
- setInitialSearchView = _useState8[1];
766
- var _useState9 = React.useState({}),
767
- _useState10 = _slicedToArray(_useState9, 2),
768
- dropdownData = _useState10[0],
769
- setDropdownData = _useState10[1];
770
- var _useState11 = React.useState(false),
771
- _useState12 = _slicedToArray(_useState11, 2),
772
- hasError = _useState12[0],
773
- setHasError = _useState12[1];
774
- var _useState13 = React.useState({
775
- brands: [],
776
- products: []
777
- }),
778
- _useState14 = _slicedToArray(_useState13, 2),
779
- searchResults = _useState14[0],
780
- setSearchResults = _useState14[1];
781
- var searchResultsRef = React.useRef(null);
782
- var debouncedSearch = createDebouncedSearch(setSearchResults);
783
- var immediateSearch = createImmediateSearch(setSearchValue, setSearchResults, onSearchSubmit);
784
- var handleChange = function handleChange(event) {
785
- var value = event.target.value;
786
- setSearchValue(value);
787
- setIsSearchFocused(true);
788
- if (value.trim().length >= 3) {
789
- debouncedSearch(value);
790
- } else {
791
- setSearchResults({
792
- brands: [],
793
- products: []
794
- });
795
- }
796
- };
778
+ var useSearchClickOutside = function useSearchClickOutside(ref, searchResults, setCachedResults, setIsSearchFocused, setSearchResults) {
797
779
  React.useEffect(function () {
798
780
  var handleClickOutside = function handleClickOutside(event) {
799
- if (searchResultsRef.current && !searchResultsRef.current.contains(event.target)) {
800
- setSearchValue('');
781
+ if (ref.current && !ref.current.contains(event.target)) {
782
+ setCachedResults(searchResults);
801
783
  setIsSearchFocused(false);
802
784
  setSearchResults({
803
785
  brands: [],
@@ -805,22 +787,195 @@
805
787
  });
806
788
  }
807
789
  };
790
+
808
791
  document.addEventListener('mousedown', handleClickOutside);
809
792
  return function () {
810
793
  document.removeEventListener('mousedown', handleClickOutside);
811
794
  };
812
- }, []);
813
- var handleKeyDown = function handleKeyDown(event) {
795
+ }, [ref, searchResults, setCachedResults, setIsSearchFocused, setSearchResults]);
796
+ };
797
+ var useSearchInputChange = function useSearchInputChange(setSearchValue, setIsSearchFocused, debouncedSearch, setSearchResults, setCachedResults) {
798
+ return React.useCallback(function (event) {
799
+ var value = event.target.value;
800
+ setSearchValue(value);
801
+ setIsSearchFocused(true);
802
+
803
+ if (value.trim().length >= 3) {
804
+ debouncedSearch(value);
805
+ } else {
806
+ setSearchResults({
807
+ brands: [],
808
+ products: []
809
+ });
810
+ setCachedResults({
811
+ brands: [],
812
+ products: []
813
+ });
814
+ }
815
+ }, [setSearchValue, setIsSearchFocused, debouncedSearch, setSearchResults, setCachedResults]);
816
+ };
817
+ var useSearchInputFocus = function useSearchInputFocus(searchValue, setIsSearchFocused, cachedResults, setSearchResults) {
818
+ var handleSearchClick = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : undefined;
819
+ return React.useCallback(function () {
820
+ setIsSearchFocused(true);
821
+
822
+ if (typeof handleSearchClick === 'function') {
823
+ handleSearchClick();
824
+ } else if (searchValue.trim().length >= 3) {
825
+ setSearchResults(cachedResults);
826
+ }
827
+ }, [searchValue, setIsSearchFocused, cachedResults, setSearchResults, handleSearchClick]);
828
+ };
829
+ var useSearchInputKeyDown = function useSearchInputKeyDown(searchValue, immediateSearch, setIsSearchFocused) {
830
+ var setSearchValue = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : null;
831
+ return React.useCallback(function (event) {
814
832
  if (event.key === 'Enter') {
815
833
  event.preventDefault();
834
+
816
835
  if (searchValue.trim().length >= 3) {
817
836
  immediateSearch(searchValue);
818
837
  }
819
- } else if (event.key === 'Escape') {
838
+
839
+ setIsSearchFocused(false);
840
+ } else if (event.key === 'Escape' && setSearchValue) {
820
841
  setSearchValue('');
842
+ setIsSearchFocused(false);
821
843
  }
822
- setIsSearchFocused(false);
844
+ }, [searchValue, immediateSearch, setIsSearchFocused, setSearchValue]);
845
+ };
846
+
847
+ var removeCategoryByName = function removeCategoryByName(categories, name) {
848
+ var _categories$filter;
849
+
850
+ return (_categories$filter = categories === null || categories === void 0 ? void 0 : categories.filter(function (category) {
851
+ return category.name.toLowerCase() !== name.toLowerCase();
852
+ })) !== null && _categories$filter !== void 0 ? _categories$filter : [];
853
+ };
854
+
855
+ var LuxityDesktopHeader = function LuxityDesktopHeader(_ref) {
856
+ var accountIcon = _ref.accountIcon,
857
+ cartIcon = _ref.cartIcon,
858
+ interestIcon = _ref.interestIcon,
859
+ cartCount = _ref.cartCount,
860
+ logoSrc = _ref.logoSrc,
861
+ categoryElements = _ref.categoryElements,
862
+ stores = _ref.stores,
863
+ contactNumber = _ref.contactNumber,
864
+ productsUrl = _ref.productsUrl,
865
+ LinkComponent = _ref.LinkComponent,
866
+ onInterestClick = _ref.onInterestClick,
867
+ onCartClick = _ref.onCartClick,
868
+ onAccountClick = _ref.onAccountClick,
869
+ inputSearchIcon = _ref.inputSearchIcon,
870
+ onSellToUsClick = _ref.onSellToUsClick,
871
+ contactUsLink = _ref.contactUsLink,
872
+ ourStoryLink = _ref.ourStoryLink,
873
+ onLogoClick = _ref.onLogoClick,
874
+ endpoint = _ref.endpoint,
875
+ initialSearchData = _ref.initialSearchData,
876
+ onSearchSubmit = _ref.onSearchSubmit,
877
+ onSearchClick = _ref.onSearchClick,
878
+ onProductIdsReceived = _ref.onProductIdsReceived,
879
+ currency = _ref.currency,
880
+ currencySymbol = _ref.currencySymbol,
881
+ currencyOptions = _ref.currencyOptions,
882
+ onCurrencyChange = _ref.onCurrencyChange,
883
+ isCurrencySelectionDisabled = _ref.isCurrencySelectionDisabled,
884
+ tooltipContent = _ref.tooltipContent,
885
+ vipIcon = _ref.vipIcon,
886
+ name = _ref.name,
887
+ isVip = _ref.isVip,
888
+ shop = _ref.shop,
889
+ app = _ref.app,
890
+ categoryConfig = _ref.categoryConfig;
891
+
892
+ var _useSearch = useSearch({
893
+ endpoint: endpoint,
894
+ onProductIdsReceived: onProductIdsReceived,
895
+ currency: currency
896
+ }),
897
+ fetchInitialSearchData = _useSearch.fetchInitialSearchData,
898
+ createDebouncedSearch = _useSearch.createDebouncedSearch,
899
+ createImmediateSearch = _useSearch.createImmediateSearch;
900
+
901
+ var _useState = React.useState(''),
902
+ _useState2 = _slicedToArray(_useState, 2),
903
+ searchValue = _useState2[0],
904
+ setSearchValue = _useState2[1];
905
+
906
+ var _useState3 = React.useState(false),
907
+ _useState4 = _slicedToArray(_useState3, 2),
908
+ loading = _useState4[0],
909
+ setLoading = _useState4[1];
910
+
911
+ var _useState5 = React.useState(false),
912
+ _useState6 = _slicedToArray(_useState5, 2),
913
+ isSearchFocused = _useState6[0],
914
+ setIsSearchFocused = _useState6[1];
915
+
916
+ var _useState7 = React.useState({
917
+ trending_brands: [],
918
+ latest_products: []
919
+ }),
920
+ _useState8 = _slicedToArray(_useState7, 2),
921
+ initialSearchView = _useState8[0],
922
+ setInitialSearchView = _useState8[1];
923
+
924
+ var _useState9 = React.useState({}),
925
+ _useState10 = _slicedToArray(_useState9, 2),
926
+ dropdownData = _useState10[0],
927
+ setDropdownData = _useState10[1];
928
+
929
+ var _useState11 = React.useState(false),
930
+ _useState12 = _slicedToArray(_useState11, 2),
931
+ hasError = _useState12[0],
932
+ setHasError = _useState12[1];
933
+
934
+ var _useState13 = React.useState({
935
+ brands: [],
936
+ products: []
937
+ }),
938
+ _useState14 = _slicedToArray(_useState13, 2),
939
+ searchResults = _useState14[0],
940
+ setSearchResults = _useState14[1];
941
+
942
+ var _useState15 = React.useState({
943
+ brands: [],
944
+ products: []
945
+ }),
946
+ _useState16 = _slicedToArray(_useState15, 2),
947
+ cachedResults = _useState16[0],
948
+ setCachedResults = _useState16[1];
949
+
950
+ var searchResultsRef = React.useRef(null);
951
+ var debouncedSearch = createDebouncedSearch(function (results) {
952
+ setSearchResults(results);
953
+ setCachedResults(results);
954
+ });
955
+ var immediateSearch = createImmediateSearch(setSearchValue, setSearchResults, onSearchSubmit);
956
+ var handleChange = useSearchInputChange(setSearchValue, setIsSearchFocused, debouncedSearch, setSearchResults, setCachedResults);
957
+ useSearchClickOutside(searchResultsRef, searchResults, setCachedResults, setIsSearchFocused, setSearchResults);
958
+
959
+ var handleSearchClick = function handleSearchClick() {
960
+ if (typeof onSearchClick === 'function') {
961
+ onSearchClick();
962
+ return;
963
+ }
964
+
965
+ handleSearchFocus();
823
966
  };
967
+
968
+ var handleSearchFocus = useSearchInputFocus(searchValue, setIsSearchFocused, cachedResults, setSearchResults, onSearchClick);
969
+ var handleKeyDown = useSearchInputKeyDown(searchValue, immediateSearch, setIsSearchFocused);
970
+
971
+ function addCategoryToElements(elements, categoryName) {
972
+ return elements.map(function (element) {
973
+ return _objectSpread2(_objectSpread2({}, element), {}, {
974
+ category: categoryName
975
+ });
976
+ });
977
+ }
978
+
824
979
  React.useMemo(function () {
825
980
  setLoading(true);
826
981
  axios.get("".concat(categoryConfig.menuData)).then(function (_ref2) {
@@ -832,25 +987,24 @@
832
987
  });
833
988
  }, [categoryConfig.menuData]);
834
989
  React.useMemo(function () {
990
+ if (!initialSearchData) {
991
+ return;
992
+ }
993
+
835
994
  fetchInitialSearchData(initialSearchData, setInitialSearchView);
836
995
  }, [initialSearchData, fetchInitialSearchData]);
837
- var addCategoryToElements = function addCategoryToElements(elements, categoryName) {
838
- return elements.map(function (element) {
839
- return _objectSpread2(_objectSpread2({}, element), {}, {
840
- category: categoryName
841
- });
842
- });
843
- };
996
+
844
997
  var renderDropdownLinks = function renderDropdownLinks() {
845
998
  return categoryConfig.categories.map(function (category) {
846
999
  var title = category.title,
847
- imageSrc = category.imageSrc,
848
- categorySlug = category.categorySlug,
849
- categoryName = category.categoryName,
850
- elementsKey = category.elementsKey,
851
- subCategoryElementsKey = category.subCategoryElementsKey,
852
- styleElementsKey = category.styleElementsKey;
1000
+ imageSrc = category.imageSrc,
1001
+ categorySlug = category.categorySlug,
1002
+ categoryName = category.categoryName,
1003
+ elementsKey = category.elementsKey,
1004
+ subCategoryElementsKey = category.subCategoryElementsKey,
1005
+ styleElementsKey = category.styleElementsKey;
853
1006
  var categoryElementsProcessed = categoryElements;
1007
+
854
1008
  if (subCategoryElementsKey && dropdownData[subCategoryElementsKey]) {
855
1009
  // show subcategory elements
856
1010
  categoryElementsProcessed = removeCategoryByName(dropdownData[subCategoryElementsKey], categoryName);
@@ -859,6 +1013,7 @@
859
1013
  } else {
860
1014
  categoryElementsProcessed = addCategoryToElements(categoryElementsProcessed, categorySlug);
861
1015
  }
1016
+
862
1017
  return /*#__PURE__*/React__default.createElement(DropdownLink, {
863
1018
  key: categorySlug,
864
1019
  title: title,
@@ -874,11 +1029,13 @@
874
1029
  });
875
1030
  });
876
1031
  };
1032
+
877
1033
  var getMarginRight = function getMarginRight(userIsVip, userName) {
878
1034
  if (userIsVip) return '15px';
879
1035
  if (userName) return '5px';
880
1036
  return '18px';
881
1037
  };
1038
+
882
1039
  return /*#__PURE__*/React__default.createElement("div", {
883
1040
  className: "navbar"
884
1041
  }, /*#__PURE__*/React__default.createElement("div", {
@@ -891,7 +1048,8 @@
891
1048
  className: "navbar__logo"
892
1049
  }, /*#__PURE__*/React__default.createElement("img", {
893
1050
  src: logoSrc,
894
- alt: "luxity-logo"
1051
+ alt: "luxity-logo",
1052
+ loading: "eager"
895
1053
  }))), /*#__PURE__*/React__default.createElement("div", {
896
1054
  className: "navbar__section"
897
1055
  }, /*#__PURE__*/React__default.createElement("div", {
@@ -909,13 +1067,8 @@
909
1067
  value: searchValue,
910
1068
  onChange: handleChange,
911
1069
  onKeyDown: handleKeyDown,
912
- onClick: function onClick() {
913
- onSearch();
914
- setIsSearchFocused(true);
915
- },
916
- onFocus: function onFocus() {
917
- return setIsSearchFocused(true);
918
- }
1070
+ onClick: handleSearchClick,
1071
+ onFocus: handleSearchFocus
919
1072
  })), /*#__PURE__*/React__default.createElement(SearchResults, {
920
1073
  searchValue: searchValue,
921
1074
  searchResults: searchResults,