@sonic-equipment/ui 219.0.0 → 221.0.0

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 (112) hide show
  1. package/dist/algolia/algolia-search-provider.js +7 -5
  2. package/dist/algolia/algolia-sonic-searchclient.js +2 -2
  3. package/dist/algolia/use-algolia-insights.d.ts +7 -0
  4. package/dist/algolia/use-algolia-insights.js +45 -7
  5. package/dist/algolia/use-algolia-search.d.ts +2 -1
  6. package/dist/buttons/favorite/connected-favorite-button.d.ts +1 -1
  7. package/dist/buttons/favorite/connected-favorite-button.js +0 -2
  8. package/dist/cards/product-card/product-card.js +5 -2
  9. package/dist/exports.d.ts +1 -0
  10. package/dist/global-search/plugins/categories-plugin.d.ts +1 -1
  11. package/dist/global-search/plugins/categories-plugin.js +1 -1
  12. package/dist/global-search/plugins/popular-categories-plugin.d.ts +1 -1
  13. package/dist/global-search/plugins/popular-categories-plugin.js +1 -1
  14. package/dist/global-search/plugins/popular-searches-plugin.d.ts +1 -1
  15. package/dist/global-search/plugins/popular-searches-plugin.js +1 -1
  16. package/dist/global-search/plugins/query-suggestions-plugin.d.ts +1 -1
  17. package/dist/global-search/plugins/query-suggestions-plugin.js +1 -1
  18. package/dist/global-search/plugins/quick-access-plugin.d.ts +1 -1
  19. package/dist/global-search/plugins/quick-access-plugin.js +1 -1
  20. package/dist/global-search/plugins/recent-searches-plugin.d.ts +1 -1
  21. package/dist/global-search/plugins/recent-searches-plugin.js +2 -1
  22. package/dist/global-search/search-highlight/highlight.d.ts +1 -1
  23. package/dist/global-search/search-highlight/highlight.js +1 -1
  24. package/dist/global-search/types.d.ts +3 -1
  25. package/dist/header/buttons/account/connected-account-button.js +1 -1
  26. package/dist/index.js +2 -1
  27. package/dist/intl/translation-id.d.ts +1 -1
  28. package/dist/navigation/quick-access-menu/quick-access-menu.d.ts +2 -1
  29. package/dist/navigation/quick-access-menu/quick-access-menu.js +2 -2
  30. package/dist/node_modules/.pnpm/@algolia_autocomplete-core@1.19.2_@algolia_client-search@4.24.0_algoliasearch@4.24.0_search-insights@2.17.3/node_modules/@algolia/autocomplete-core/dist/esm/checkOptions.js +7 -0
  31. package/dist/node_modules/.pnpm/@algolia_autocomplete-core@1.19.2_@algolia_client-search@4.24.0_algoliasearch@4.24.0_search-insights@2.17.3/node_modules/@algolia/autocomplete-core/dist/esm/createAutocomplete.js +109 -0
  32. package/dist/node_modules/.pnpm/@algolia_autocomplete-core@1.19.2_@algolia_client-search@4.24.0_algoliasearch@4.24.0_search-insights@2.17.3/node_modules/@algolia/autocomplete-core/dist/esm/createStore.js +31 -0
  33. package/dist/node_modules/.pnpm/@algolia_autocomplete-core@1.19.2_@algolia_client-search@4.24.0_algoliasearch@4.24.0_search-insights@2.17.3/node_modules/@algolia/autocomplete-core/dist/esm/getAutocompleteSetters.js +51 -0
  34. package/dist/node_modules/.pnpm/@algolia_autocomplete-core@1.19.2_@algolia_client-search@4.24.0_algoliasearch@4.24.0_search-insights@2.17.3/node_modules/@algolia/autocomplete-core/dist/esm/getCompletion.js +12 -0
  35. package/dist/node_modules/.pnpm/@algolia_autocomplete-core@1.19.2_@algolia_client-search@4.24.0_algoliasearch@4.24.0_search-insights@2.17.3/node_modules/@algolia/autocomplete-core/dist/esm/getDefaultProps.js +135 -0
  36. package/dist/node_modules/.pnpm/@algolia_autocomplete-core@1.19.2_@algolia_client-search@4.24.0_algoliasearch@4.24.0_search-insights@2.17.3/node_modules/@algolia/autocomplete-core/dist/esm/getPropGetters.js +355 -0
  37. package/dist/node_modules/.pnpm/@algolia_autocomplete-core@1.19.2_@algolia_client-search@4.24.0_algoliasearch@4.24.0_search-insights@2.17.3/node_modules/@algolia/autocomplete-core/dist/esm/metadata.js +44 -0
  38. package/dist/node_modules/.pnpm/@algolia_autocomplete-core@1.19.2_@algolia_client-search@4.24.0_algoliasearch@4.24.0_search-insights@2.17.3/node_modules/@algolia/autocomplete-core/dist/esm/onInput.js +148 -0
  39. package/dist/node_modules/.pnpm/@algolia_autocomplete-core@1.19.2_@algolia_client-search@4.24.0_algoliasearch@4.24.0_search-insights@2.17.3/node_modules/@algolia/autocomplete-core/dist/esm/onKeyDown.js +202 -0
  40. package/dist/node_modules/.pnpm/@algolia_autocomplete-core@1.19.2_@algolia_client-search@4.24.0_algoliasearch@4.24.0_search-insights@2.17.3/node_modules/@algolia/autocomplete-core/dist/esm/reshape.js +48 -0
  41. package/dist/node_modules/.pnpm/@algolia_autocomplete-core@1.19.2_@algolia_client-search@4.24.0_algoliasearch@4.24.0_search-insights@2.17.3/node_modules/@algolia/autocomplete-core/dist/esm/resolve.js +119 -0
  42. package/dist/node_modules/.pnpm/@algolia_autocomplete-core@1.19.2_@algolia_client-search@4.24.0_algoliasearch@4.24.0_search-insights@2.17.3/node_modules/@algolia/autocomplete-core/dist/esm/stateReducer.js +149 -0
  43. package/dist/node_modules/.pnpm/@algolia_autocomplete-core@1.19.2_@algolia_client-search@4.24.0_algoliasearch@4.24.0_search-insights@2.17.3/node_modules/@algolia/autocomplete-core/dist/esm/utils/createCancelablePromise.js +50 -0
  44. package/dist/node_modules/.pnpm/@algolia_autocomplete-core@1.19.2_@algolia_client-search@4.24.0_algoliasearch@4.24.0_search-insights@2.17.3/node_modules/@algolia/autocomplete-core/dist/esm/utils/createCancelablePromiseList.js +42 -0
  45. package/dist/node_modules/.pnpm/@algolia_autocomplete-core@1.19.2_@algolia_client-search@4.24.0_algoliasearch@4.24.0_search-insights@2.17.3/node_modules/@algolia/autocomplete-core/dist/esm/utils/createConcurrentSafePromise.js +38 -0
  46. package/dist/node_modules/.pnpm/@algolia_autocomplete-core@1.19.2_@algolia_client-search@4.24.0_algoliasearch@4.24.0_search-insights@2.17.3/node_modules/@algolia/autocomplete-core/dist/esm/utils/getActiveItem.js +79 -0
  47. package/dist/node_modules/.pnpm/@algolia_autocomplete-core@1.19.2_@algolia_client-search@4.24.0_algoliasearch@4.24.0_search-insights@2.17.3/node_modules/@algolia/autocomplete-core/dist/esm/utils/getAutocompleteElementId.js +12 -0
  48. package/dist/node_modules/.pnpm/@algolia_autocomplete-core@1.19.2_@algolia_client-search@4.24.0_algoliasearch@4.24.0_search-insights@2.17.3/node_modules/@algolia/autocomplete-core/dist/esm/utils/getNativeEvent.js +5 -0
  49. package/dist/node_modules/.pnpm/@algolia_autocomplete-core@1.19.2_@algolia_client-search@4.24.0_algoliasearch@4.24.0_search-insights@2.17.3/node_modules/@algolia/autocomplete-core/dist/esm/utils/getNextActiveItemId.js +31 -0
  50. package/dist/node_modules/.pnpm/@algolia_autocomplete-core@1.19.2_@algolia_client-search@4.24.0_algoliasearch@4.24.0_search-insights@2.17.3/node_modules/@algolia/autocomplete-core/dist/esm/utils/getNormalizedSources.js +53 -0
  51. package/dist/node_modules/.pnpm/@algolia_autocomplete-core@1.19.2_@algolia_client-search@4.24.0_algoliasearch@4.24.0_search-insights@2.17.3/node_modules/@algolia/autocomplete-core/dist/esm/utils/getPluginSubmitPromise.js +39 -0
  52. package/dist/node_modules/.pnpm/@algolia_autocomplete-core@1.19.2_@algolia_client-search@4.24.0_algoliasearch@4.24.0_search-insights@2.17.3/node_modules/@algolia/autocomplete-core/dist/esm/utils/isOrContainsNode.js +5 -0
  53. package/dist/node_modules/.pnpm/@algolia_autocomplete-core@1.19.2_@algolia_client-search@4.24.0_algoliasearch@4.24.0_search-insights@2.17.3/node_modules/@algolia/autocomplete-core/dist/esm/utils/isSamsung.js +6 -0
  54. package/dist/node_modules/.pnpm/@algolia_autocomplete-core@1.19.2_@algolia_client-search@4.24.0_algoliasearch@4.24.0_search-insights@2.17.3/node_modules/@algolia/autocomplete-core/dist/esm/utils/mapToAlgoliaResponse.js +25 -0
  55. package/dist/node_modules/.pnpm/@algolia_autocomplete-js@1.19.2_@algolia_client-search@4.24.0_algoliasearch@4.24.0_search-insights@2.17.3/node_modules/@algolia/autocomplete-js/dist/esm/requesters/createAlgoliaRequester.js +16 -0
  56. package/dist/node_modules/.pnpm/@algolia_autocomplete-js@1.19.2_@algolia_client-search@4.24.0_algoliasearch@4.24.0_search-insights@2.17.3/node_modules/@algolia/autocomplete-js/dist/esm/requesters/getAlgoliaResults.js +12 -0
  57. package/dist/node_modules/.pnpm/@algolia_autocomplete-js@1.19.2_@algolia_client-search@4.24.0_algoliasearch@4.24.0_search-insights@2.17.3/node_modules/@algolia/autocomplete-js/dist/esm/userAgents.js +8 -0
  58. package/dist/node_modules/.pnpm/@algolia_autocomplete-plugin-algolia-insights@1.19.2_@algolia_client-search@4.24.0_algoliasea_57b3nqmtgbeobm4sw3iw2qdpxy/node_modules/@algolia/autocomplete-plugin-algolia-insights/dist/esm/createAlgoliaInsightsPlugin.js +252 -0
  59. package/dist/node_modules/.pnpm/@algolia_autocomplete-plugin-algolia-insights@1.19.2_@algolia_client-search@4.24.0_algoliasea_57b3nqmtgbeobm4sw3iw2qdpxy/node_modules/@algolia/autocomplete-plugin-algolia-insights/dist/esm/createClickedEvent.js +16 -0
  60. package/dist/node_modules/.pnpm/@algolia_autocomplete-plugin-algolia-insights@1.19.2_@algolia_client-search@4.24.0_algoliasea_57b3nqmtgbeobm4sw3iw2qdpxy/node_modules/@algolia/autocomplete-plugin-algolia-insights/dist/esm/createSearchInsightsApi.js +209 -0
  61. package/dist/node_modules/.pnpm/@algolia_autocomplete-plugin-algolia-insights@1.19.2_@algolia_client-search@4.24.0_algoliasea_57b3nqmtgbeobm4sw3iw2qdpxy/node_modules/@algolia/autocomplete-plugin-algolia-insights/dist/esm/createViewedEvents.js +18 -0
  62. package/dist/node_modules/.pnpm/@algolia_autocomplete-plugin-algolia-insights@1.19.2_@algolia_client-search@4.24.0_algoliasea_57b3nqmtgbeobm4sw3iw2qdpxy/node_modules/@algolia/autocomplete-plugin-algolia-insights/dist/esm/isAlgoliaInsightsHit.js +5 -0
  63. package/dist/node_modules/.pnpm/@algolia_autocomplete-plugin-algolia-insights@1.19.2_@algolia_client-search@4.24.0_algoliasea_57b3nqmtgbeobm4sw3iw2qdpxy/node_modules/@algolia/autocomplete-plugin-algolia-insights/dist/esm/isModernInsightsClient.js +25 -0
  64. package/dist/node_modules/.pnpm/@algolia_autocomplete-plugin-query-suggestions@1.19.2_@algolia_client-search@4.24.0_algoliase_q33j3oaxy2utuyscyksb32r6mu/node_modules/@algolia/autocomplete-plugin-query-suggestions/dist/esm/constants.js +7 -0
  65. package/dist/node_modules/.pnpm/@algolia_autocomplete-plugin-query-suggestions@1.19.2_@algolia_client-search@4.24.0_algoliase_q33j3oaxy2utuyscyksb32r6mu/node_modules/@algolia/autocomplete-plugin-query-suggestions/dist/esm/createQuerySuggestionsPlugin.js +118 -0
  66. package/dist/node_modules/.pnpm/@algolia_autocomplete-plugin-query-suggestions@1.19.2_@algolia_client-search@4.24.0_algoliase_q33j3oaxy2utuyscyksb32r6mu/node_modules/@algolia/autocomplete-plugin-query-suggestions/dist/esm/getTemplates.js +64 -0
  67. package/dist/node_modules/.pnpm/@algolia_autocomplete-plugin-recent-searches@1.19.2_@algolia_client-search@4.24.0_algoliasear_fyqsds3bt3rvcvjy7dxjzgxvaa/node_modules/@algolia/autocomplete-plugin-recent-searches/dist/esm/addHighlightedAttribute.js +21 -0
  68. package/dist/node_modules/.pnpm/@algolia_autocomplete-plugin-recent-searches@1.19.2_@algolia_client-search@4.24.0_algoliasear_fyqsds3bt3rvcvjy7dxjzgxvaa/node_modules/@algolia/autocomplete-plugin-recent-searches/dist/esm/constants.js +10 -0
  69. package/dist/node_modules/.pnpm/@algolia_autocomplete-plugin-recent-searches@1.19.2_@algolia_client-search@4.24.0_algoliasear_fyqsds3bt3rvcvjy7dxjzgxvaa/node_modules/@algolia/autocomplete-plugin-recent-searches/dist/esm/createLocalStorage.js +36 -0
  70. package/dist/node_modules/.pnpm/@algolia_autocomplete-plugin-recent-searches@1.19.2_@algolia_client-search@4.24.0_algoliasear_fyqsds3bt3rvcvjy7dxjzgxvaa/node_modules/@algolia/autocomplete-plugin-recent-searches/dist/esm/createLocalStorageRecentSearchesPlugin.js +49 -0
  71. package/dist/node_modules/.pnpm/@algolia_autocomplete-plugin-recent-searches@1.19.2_@algolia_client-search@4.24.0_algoliasear_fyqsds3bt3rvcvjy7dxjzgxvaa/node_modules/@algolia/autocomplete-plugin-recent-searches/dist/esm/createRecentSearchesPlugin.js +137 -0
  72. package/dist/node_modules/.pnpm/@algolia_autocomplete-plugin-recent-searches@1.19.2_@algolia_client-search@4.24.0_algoliasear_fyqsds3bt3rvcvjy7dxjzgxvaa/node_modules/@algolia/autocomplete-plugin-recent-searches/dist/esm/createStorageApi.js +16 -0
  73. package/dist/node_modules/.pnpm/@algolia_autocomplete-plugin-recent-searches@1.19.2_@algolia_client-search@4.24.0_algoliasear_fyqsds3bt3rvcvjy7dxjzgxvaa/node_modules/@algolia/autocomplete-plugin-recent-searches/dist/esm/getLocalStorage.js +33 -0
  74. package/dist/node_modules/.pnpm/@algolia_autocomplete-plugin-recent-searches@1.19.2_@algolia_client-search@4.24.0_algoliasear_fyqsds3bt3rvcvjy7dxjzgxvaa/node_modules/@algolia/autocomplete-plugin-recent-searches/dist/esm/getTemplates.js +72 -0
  75. package/dist/node_modules/.pnpm/@algolia_autocomplete-plugin-recent-searches@1.19.2_@algolia_client-search@4.24.0_algoliasear_fyqsds3bt3rvcvjy7dxjzgxvaa/node_modules/@algolia/autocomplete-plugin-recent-searches/dist/esm/search.js +25 -0
  76. package/dist/node_modules/.pnpm/@algolia_autocomplete-preset-algolia@1.19.2_@algolia_client-search@4.24.0_algoliasearch@4.24.0/node_modules/@algolia/autocomplete-preset-algolia/dist/esm/constants/index.js +4 -0
  77. package/dist/node_modules/.pnpm/@algolia_autocomplete-preset-algolia@1.19.2_@algolia_client-search@4.24.0_algoliasearch@4.24.0/node_modules/@algolia/autocomplete-preset-algolia/dist/esm/highlight/parseAlgoliaHitHighlight.js +25 -0
  78. package/dist/node_modules/.pnpm/@algolia_autocomplete-preset-algolia@1.19.2_@algolia_client-search@4.24.0_algoliasearch@4.24.0/node_modules/@algolia/autocomplete-preset-algolia/dist/esm/highlight/parseAttribute.js +51 -0
  79. package/dist/node_modules/.pnpm/@algolia_autocomplete-preset-algolia@1.19.2_@algolia_client-search@4.24.0_algoliasearch@4.24.0/node_modules/@algolia/autocomplete-preset-algolia/dist/esm/requester/createAlgoliaRequester.js +6 -0
  80. package/dist/node_modules/.pnpm/@algolia_autocomplete-preset-algolia@1.19.2_@algolia_client-search@4.24.0_algoliasearch@4.24.0/node_modules/@algolia/autocomplete-preset-algolia/dist/esm/requester/createRequester.js +37 -0
  81. package/dist/node_modules/.pnpm/@algolia_autocomplete-preset-algolia@1.19.2_@algolia_client-search@4.24.0_algoliasearch@4.24.0/node_modules/@algolia/autocomplete-preset-algolia/dist/esm/requester/getAlgoliaResults.js +19 -0
  82. package/dist/node_modules/.pnpm/@algolia_autocomplete-preset-algolia@1.19.2_@algolia_client-search@4.24.0_algoliasearch@4.24.0/node_modules/@algolia/autocomplete-preset-algolia/dist/esm/search/fetchAlgoliaResults.js +69 -0
  83. package/dist/node_modules/.pnpm/@algolia_autocomplete-preset-algolia@1.19.2_@algolia_client-search@4.24.0_algoliasearch@4.24.0/node_modules/@algolia/autocomplete-preset-algolia/dist/esm/utils/getAppIdAndApiKey.js +16 -0
  84. package/dist/node_modules/.pnpm/@algolia_autocomplete-shared@1.19.2_@algolia_client-search@4.24.0_algoliasearch@4.24.0/node_modules/@algolia/autocomplete-shared/dist/esm/createRef.js +7 -0
  85. package/dist/node_modules/.pnpm/@algolia_autocomplete-shared@1.19.2_@algolia_client-search@4.24.0_algoliasearch@4.24.0/node_modules/@algolia/autocomplete-shared/dist/esm/debounce.js +16 -0
  86. package/dist/node_modules/.pnpm/@algolia_autocomplete-shared@1.19.2_@algolia_client-search@4.24.0_algoliasearch@4.24.0/node_modules/@algolia/autocomplete-shared/dist/esm/decycle.js +34 -0
  87. package/dist/node_modules/.pnpm/@algolia_autocomplete-shared@1.19.2_@algolia_client-search@4.24.0_algoliasearch@4.24.0/node_modules/@algolia/autocomplete-shared/dist/esm/flatten.js +7 -0
  88. package/dist/node_modules/.pnpm/@algolia_autocomplete-shared@1.19.2_@algolia_client-search@4.24.0_algoliasearch@4.24.0/node_modules/@algolia/autocomplete-shared/dist/esm/generateAutocompleteId.js +6 -0
  89. package/dist/node_modules/.pnpm/@algolia_autocomplete-shared@1.19.2_@algolia_client-search@4.24.0_algoliasearch@4.24.0/node_modules/@algolia/autocomplete-shared/dist/esm/getAttributeValueByPath.js +7 -0
  90. package/dist/node_modules/.pnpm/@algolia_autocomplete-shared@1.19.2_@algolia_client-search@4.24.0_algoliasearch@4.24.0/node_modules/@algolia/autocomplete-shared/dist/esm/getItemsCount.js +10 -0
  91. package/dist/node_modules/.pnpm/@algolia_autocomplete-shared@1.19.2_@algolia_client-search@4.24.0_algoliasearch@4.24.0/node_modules/@algolia/autocomplete-shared/dist/esm/invariant.js +15 -0
  92. package/dist/node_modules/.pnpm/@algolia_autocomplete-shared@1.19.2_@algolia_client-search@4.24.0_algoliasearch@4.24.0/node_modules/@algolia/autocomplete-shared/dist/esm/isEqual.js +26 -0
  93. package/dist/node_modules/.pnpm/@algolia_autocomplete-shared@1.19.2_@algolia_client-search@4.24.0_algoliasearch@4.24.0/node_modules/@algolia/autocomplete-shared/dist/esm/noop.js +3 -0
  94. package/dist/node_modules/.pnpm/@algolia_autocomplete-shared@1.19.2_@algolia_client-search@4.24.0_algoliasearch@4.24.0/node_modules/@algolia/autocomplete-shared/dist/esm/safelyRunOnBrowser.js +13 -0
  95. package/dist/node_modules/.pnpm/@algolia_autocomplete-shared@1.19.2_@algolia_client-search@4.24.0_algoliasearch@4.24.0/node_modules/@algolia/autocomplete-shared/dist/esm/userAgents.js +8 -0
  96. package/dist/node_modules/.pnpm/@algolia_autocomplete-shared@1.19.2_@algolia_client-search@4.24.0_algoliasearch@4.24.0/node_modules/@algolia/autocomplete-shared/dist/esm/version.js +3 -0
  97. package/dist/node_modules/.pnpm/@algolia_autocomplete-shared@1.19.2_@algolia_client-search@4.24.0_algoliasearch@4.24.0/node_modules/@algolia/autocomplete-shared/dist/esm/warn.js +26 -0
  98. package/dist/pages/account/sign-in-page/sign-in-page.js +1 -1
  99. package/dist/pages/my-sonic/layouts/my-sonic-layout/my-sonic-layout-page.d.ts +1 -1
  100. package/dist/pages/my-sonic/layouts/my-sonic-layout/my-sonic-layout-page.js +1 -1
  101. package/dist/pages/my-sonic/pages/favorites/favorites-page.js +26 -1
  102. package/dist/shared/api/bff/hooks/use-fetch-favorites.d.ts +2 -0
  103. package/dist/shared/api/bff/hooks/use-fetch-favorites.js +29 -0
  104. package/dist/shared/api/storefront/hooks/wishlist/use-add-wishlist-item-to-current-wishlist.js +5 -12
  105. package/dist/shared/api/storefront/hooks/wishlist/use-add-wishlist-item-to-wishlist.js +6 -9
  106. package/dist/shared/api/storefront/hooks/wishlist/use-delete-wishlist-item-from-wishlist.js +4 -7
  107. package/dist/shared/api/storefront/hooks/wishlist/use-fetch-all-wishlists-items.js +10 -20
  108. package/dist/shared/api/storefront/services/wishlist-service.d.ts +4 -1
  109. package/dist/shared/api/storefront/services/wishlist-service.js +16 -1
  110. package/dist/shared/utils/uuid.js +1 -1
  111. package/dist/styles.css +6 -6
  112. package/package.json +1 -1
@@ -0,0 +1,15 @@
1
+ /**
2
+ * Throws an error if the condition is not met in development mode.
3
+ * This is used to make development a better experience to provide guidance as
4
+ * to where the error comes from.
5
+ */
6
+ function invariant(condition, message) {
7
+ if (!(process.env.NODE_ENV !== 'production')) {
8
+ return;
9
+ }
10
+ if (!condition) {
11
+ throw new Error("[Autocomplete] ".concat(typeof message === 'function' ? message() : message));
12
+ }
13
+ }
14
+
15
+ export { invariant };
@@ -0,0 +1,26 @@
1
+ function isPrimitive(obj) {
2
+ return obj !== Object(obj);
3
+ }
4
+ function isEqual(first, second) {
5
+ if (first === second) {
6
+ return true;
7
+ }
8
+ if (isPrimitive(first) || isPrimitive(second) || typeof first === 'function' || typeof second === 'function') {
9
+ return first === second;
10
+ }
11
+ if (Object.keys(first).length !== Object.keys(second).length) {
12
+ return false;
13
+ }
14
+ for (var _i = 0, _Object$keys = Object.keys(first); _i < _Object$keys.length; _i++) {
15
+ var key = _Object$keys[_i];
16
+ if (!(key in second)) {
17
+ return false;
18
+ }
19
+ if (!isEqual(first[key], second[key])) {
20
+ return false;
21
+ }
22
+ }
23
+ return true;
24
+ }
25
+
26
+ export { isEqual };
@@ -0,0 +1,13 @@
1
+ /**
2
+ * Safely runs code meant for browser environments only.
3
+ */
4
+ function safelyRunOnBrowser(callback) {
5
+ if (typeof window !== 'undefined') {
6
+ return callback({
7
+ window: window
8
+ });
9
+ }
10
+ return undefined;
11
+ }
12
+
13
+ export { safelyRunOnBrowser };
@@ -0,0 +1,8 @@
1
+ import { version } from './version.js';
2
+
3
+ var userAgents = [{
4
+ segment: 'autocomplete-core',
5
+ version: version
6
+ }];
7
+
8
+ export { userAgents };
@@ -0,0 +1,26 @@
1
+ var warnCache = {
2
+ current: {}
3
+ };
4
+
5
+ /**
6
+ * Logs a warning if the condition is not met.
7
+ * This is used to log issues in development environment only.
8
+ */
9
+ function warn(condition, message) {
10
+ if (!(process.env.NODE_ENV !== 'production')) {
11
+ return;
12
+ }
13
+ if (condition) {
14
+ return;
15
+ }
16
+ var sanitizedMessage = message.trim();
17
+ var hasAlreadyPrinted = warnCache.current[sanitizedMessage];
18
+ if (!hasAlreadyPrinted) {
19
+ warnCache.current[sanitizedMessage] = true;
20
+
21
+ // eslint-disable-next-line no-console
22
+ console.warn("[Autocomplete] ".concat(sanitizedMessage));
23
+ }
24
+ }
25
+
26
+ export { warn, warnCache };
@@ -36,7 +36,7 @@ function SignInPage({ returnUrl } = {}) {
36
36
  setIsSuccess(true);
37
37
  navigate(returnUrl || paths.HOME, { reload: true });
38
38
  };
39
- const allowGuestSignIn = returnUrl === paths.CHECKOUT_SHIPPING;
39
+ const allowGuestSignIn = returnUrl?.toLowerCase() === paths.CHECKOUT_SHIPPING.toLowerCase();
40
40
  const createAccountPath = `${paths.ACCOUNT_CREATE}${returnUrl ? `?returnUrl=${encodeURIComponent(returnUrl)}` : ''}`;
41
41
  const onSubmit = ({ data }) => {
42
42
  resetSignIn();
@@ -1,5 +1,5 @@
1
1
  import { ReactNode } from 'react';
2
2
  export declare function MySonicLayoutPage({ children, title, }: {
3
3
  children?: ReactNode;
4
- title: string;
4
+ title?: string;
5
5
  }): import("react/jsx-runtime").JSX.Element;
@@ -4,7 +4,7 @@ import { MySonicLayoutMain } from './my-sonic-layout-main.js';
4
4
  import { MySonicLayoutTitle } from './my-sonic-layout-title.js';
5
5
 
6
6
  function MySonicLayoutPage({ children, title, }) {
7
- return (jsxs(Fragment, { children: [jsx(MySonicLayoutTitle, { children: title }), jsx(MySonicLayoutMain, { children: children })] }));
7
+ return (jsxs(Fragment, { children: [title && jsx(MySonicLayoutTitle, { children: title }), jsx(MySonicLayoutMain, { children: children })] }));
8
8
  }
9
9
 
10
10
  export { MySonicLayoutPage };
@@ -1,14 +1,39 @@
1
1
  "use client";
2
2
  import { jsx } from 'react/jsx-runtime';
3
+ import { useAlgoliaInsights } from '../../../../algolia/use-algolia-insights.js';
3
4
  import { Breadcrumb } from '../../../../breadcrumbs/breadcrumb.js';
5
+ import { ConnectedProductCard } from '../../../../cards/product-card/connected-product-card.js';
4
6
  import { useFormattedMessage } from '../../../../intl/use-formatted-message.js';
7
+ import { ProductOverviewGrid } from '../../../../lists/product-overview-grid/product-overview-grid.js';
8
+ import { useFetchFavorites } from '../../../../shared/api/bff/hooks/use-fetch-favorites.js';
5
9
  import { usePaths } from '../../../../shared/routing/use-paths.js';
10
+ import { ErrorPage } from '../../../error-page/error-page.js';
6
11
  import { MySonicLayoutBreadcrumb } from '../../layouts/my-sonic-layout/my-sonic-layout-breadcrumb.js';
7
12
  import { MySonicLayoutPage } from '../../layouts/my-sonic-layout/my-sonic-layout-page.js';
8
13
 
9
14
  function FavoritesPage() {
10
15
  const t = useFormattedMessage();
11
- return (jsx(MySonicLayoutPage, { title: t('Favorites'), children: "Not implemented yet" }));
16
+ const { data: favorites, error, isFetching, isLoading } = useFetchFavorites();
17
+ const { sendAddToCartFromFavoritesPageEvent, sendProductClickFromFavoritesPageEvent, } = useAlgoliaInsights();
18
+ if (error)
19
+ return (jsx(MySonicLayoutPage, { children: jsx(ErrorPage, { error: error }) }));
20
+ return (jsx(MySonicLayoutPage, { title: t('Favorites'), children: (favorites && favorites.length > 0) || isFetching ? (jsx(ProductOverviewGrid, { isLoading: isLoading, children: favorites?.map(favorite => (jsx(ConnectedProductCard, { href: favorite.storefrontSlug, id: favorite.storefrontId, image: {
21
+ fit: 'contain',
22
+ image: favorite.image,
23
+ title: favorite.name,
24
+ }, onAddToCart: ({ cartLine }) => sendAddToCartFromFavoritesPageEvent({
25
+ cartLine,
26
+ }), onClick: () => {
27
+ sendProductClickFromFavoritesPageEvent({
28
+ objectId: favorite.objectId,
29
+ position: favorite.position,
30
+ });
31
+ }, price: {
32
+ currencyCode: favorite.currencyCode,
33
+ isVatIncluded: favorite.isVatIncluded,
34
+ originalPrice: favorite.originalPrice,
35
+ price: favorite.price,
36
+ }, sku: favorite.id, tags: favorite.labels, title: favorite.name }, favorite.storefrontId))) })) : (jsx("p", { children: t('You have no favorite products yet.') })) }));
12
37
  }
13
38
  function FavoritesPageBreadcrumb() {
14
39
  const t = useFormattedMessage();
@@ -0,0 +1,2 @@
1
+ import { ProductHit } from '../../../model/hit';
2
+ export declare function useFetchFavorites(): import("@tanstack/react-query").UseQueryResult<ProductHit[], Error>;
@@ -0,0 +1,29 @@
1
+ import { useQuery } from '@tanstack/react-query';
2
+ import { useAlgoliaSearch } from '../../../../algolia/use-algolia-search.js';
3
+ import { transformAlgoliaProductHitToProductHit } from '../../../model/hit.js';
4
+ import { fetchAllWishListsItems } from '../../storefront/services/wishlist-service.js';
5
+
6
+ function useFetchFavorites() {
7
+ const { indexes, searchClient } = useAlgoliaSearch();
8
+ return useQuery({
9
+ placeholderData: prev => prev,
10
+ queryFn: async () => {
11
+ const wishListLines = await fetchAllWishListsItems();
12
+ const filters = wishListLines
13
+ .map(({ wishListItem }) => wishListItem.erpNumber)
14
+ .map(objectID => `objectID:${objectID}`)
15
+ .join(' OR ');
16
+ if (!filters)
17
+ return [];
18
+ const searchIndex = searchClient.initIndex(indexes.default);
19
+ const { hits } = await searchIndex.search('', {
20
+ filters,
21
+ hitsPerPage: 999,
22
+ });
23
+ return hits.map(transformAlgoliaProductHitToProductHit);
24
+ },
25
+ queryKey: ['wishlists', 'wishlistlines', 'favorites'],
26
+ });
27
+ }
28
+
29
+ export { useFetchFavorites };
@@ -12,22 +12,15 @@ function useAddWishListItemToCurrentWishList() {
12
12
  wishList = await createWishList();
13
13
  queryClient.setQueryData(['wishlists'], [...wishLists, wishList]);
14
14
  }
15
- const wishListItem = await addWishListItemToWishList({
15
+ await addWishListItemToWishList({
16
16
  productId,
17
17
  wishListId: wishList.id,
18
18
  });
19
- const wishListLines = queryClient.getQueryData(['wishlistlines']) || [];
20
- queryClient.setQueryData(['wishlistlines'], [
21
- ...wishListLines,
22
- {
23
- wishList,
24
- wishListItem,
25
- },
26
- ]);
27
19
  },
28
- onError() {
29
- queryClient.invalidateQueries({ queryKey: ['wishlists'] });
30
- queryClient.invalidateQueries({ queryKey: ['wishlistlines'] });
20
+ onSettled() {
21
+ queryClient.invalidateQueries({
22
+ queryKey: ['wishlists', 'wishlistlines'],
23
+ });
31
24
  },
32
25
  });
33
26
  }
@@ -14,18 +14,15 @@ function useAddWishListItemToWishList() {
14
14
  const wishList = wishLists.find(wishList => wishList.id === wishListId);
15
15
  if (!wishList)
16
16
  throw new Error(`Wish list with id ${wishListId} not found`);
17
- const wishListItem = await addWishListItemToWishList({
17
+ await addWishListItemToWishList({
18
18
  productId,
19
19
  wishListId,
20
20
  });
21
- const wishListLines = queryClient.getQueryData(['wishlistlines']) || [];
22
- queryClient.setQueryData(['wishlistlines'], [
23
- ...wishListLines,
24
- {
25
- wishList,
26
- wishListItem,
27
- },
28
- ]);
21
+ },
22
+ onSettled() {
23
+ queryClient.invalidateQueries({
24
+ queryKey: ['wishlists', 'wishlistlines'],
25
+ });
29
26
  },
30
27
  });
31
28
  }
@@ -7,14 +7,11 @@ function useDeleteWishListItemFromWishList() {
7
7
  return useMutation({
8
8
  mutationFn: async ({ wishListId, wishListItemId }) => {
9
9
  await deleteWishListItemFromWishList({ wishListId, wishListItemId });
10
- const wishListLines = queryClient.getQueryData(['wishlistlines']) || [];
11
- if (wishListLines.some(item => item.wishListItem.id === wishListItemId)) {
12
- queryClient.setQueryData(['wishlistlines'], wishListLines.filter(line => line.wishListItem.id !== wishListItemId));
13
- }
14
10
  },
15
- onError() {
16
- queryClient.invalidateQueries({ queryKey: ['wishlists'] });
17
- queryClient.invalidateQueries({ queryKey: ['wishlistlines'] });
11
+ onSettled() {
12
+ queryClient.invalidateQueries({
13
+ queryKey: ['wishlists', 'wishlistlines'],
14
+ });
18
15
  },
19
16
  });
20
17
  }
@@ -1,34 +1,24 @@
1
1
  "use client";
2
2
  import { useQueryClient, useQuery } from '@tanstack/react-query';
3
3
  import { TIME } from '../../../../utils/time.js';
4
- import { getWishLists, getWishListItemsByWishListId } from '../../services/wishlist-service.js';
4
+ import { fetchAllWishListsItems } from '../../services/wishlist-service.js';
5
5
 
6
6
  function useFetchAllWishListsItems({ enabled = true } = { enabled: true }) {
7
7
  const queryClient = useQueryClient();
8
8
  return useQuery({
9
9
  enabled,
10
10
  gcTime: 15 * TIME.MINUTE,
11
+ placeholderData: prev => prev,
11
12
  queryFn: async () => {
12
- let wishLists =
13
- // Reuse existing data if available
14
- queryClient.getQueryData(['wishlists']);
15
- if (wishLists === undefined) {
16
- wishLists = (await getWishLists()).wishListCollection || [];
17
- // Update the cache with the new or existing data
18
- queryClient.setQueryData(['wishlists'], wishLists);
19
- }
20
- if (wishLists.length === 0)
21
- return [];
22
- const wishListLines = await Promise.all(wishLists.map(async (wishList) => {
23
- return ((await getWishListItemsByWishListId({ wishListId: wishList.id }))
24
- .wishListLines || []).map(wishListItem => ({
25
- wishList,
26
- wishListItem,
27
- }));
28
- }));
29
- return wishListLines.flat();
13
+ let wishLists = queryClient.getQueryData(['wishlists']);
14
+ const results = await fetchAllWishListsItems(wishLists && { wishListCollection: wishLists });
15
+ if (wishLists && wishLists.length > 0)
16
+ return results;
17
+ wishLists = Object.values(results.reduce((map, { wishList }) => ({ ...map, [wishList.id]: wishList }), {}));
18
+ queryClient.setQueryData(['wishlists'], wishLists);
19
+ return results;
30
20
  },
31
- queryKey: ['wishlistlines'],
21
+ queryKey: ['wishlists', 'wishlistlines'],
32
22
  staleTime: 15 * TIME.MINUTE,
33
23
  });
34
24
  }
@@ -1,4 +1,4 @@
1
- import { WishListCollectionModel, WishListLineCollectionModel, WishListLineModel, WishListModel } from '../model/storefront.model';
1
+ import { WishListCollectionModel, WishListLineCollectionModel, WishListLineModel, WishListLines, WishListModel } from '../model/storefront.model';
2
2
  export declare function getWishList({ wishListId, }: {
3
3
  wishListId: string;
4
4
  }): Promise<WishListModel>;
@@ -23,3 +23,6 @@ export declare function deleteWishListItemFromWishList({ wishListId, wishListIte
23
23
  export declare function getWishListItemsByWishListId({ wishListId, }: {
24
24
  wishListId: string;
25
25
  }): Promise<WishListLineCollectionModel>;
26
+ export declare function fetchAllWishListsItems(currentWishLists?: {
27
+ wishListCollection?: WishListModel[];
28
+ }): Promise<WishListLines>;
@@ -68,5 +68,20 @@ async function getWishListItemsByWishListId({ wishListId, }) {
68
68
  });
69
69
  return body;
70
70
  }
71
+ async function fetchAllWishListsItems(currentWishLists) {
72
+ const { wishListCollection: wishLists } = currentWishLists || (await getWishLists());
73
+ if (!wishLists || wishLists.length === 0)
74
+ return [];
75
+ const wishListLines = await Promise.all(wishLists.map(async (wishList) => {
76
+ const { wishListLines } = await getWishListItemsByWishListId({
77
+ wishListId: wishList.id,
78
+ });
79
+ return (wishListLines?.map((wishListItem) => ({
80
+ wishList,
81
+ wishListItem,
82
+ })) || []);
83
+ }));
84
+ return wishListLines.flat();
85
+ }
71
86
 
72
- export { WishListNameAlreadyExistsError, addWishListItemToWishList, createWishList, deleteWishList, deleteWishListItemFromWishList, getWishList, getWishListItemsByWishListId, getWishLists };
87
+ export { WishListNameAlreadyExistsError, addWishListItemToWishList, createWishList, deleteWishList, deleteWishListItemFromWishList, fetchAllWishListsItems, getWishList, getWishListItemsByWishListId, getWishLists };
@@ -12,7 +12,7 @@ function createUUID() {
12
12
  });
13
13
  }
14
14
  function isUUID(value) {
15
- return /^[\da-f]{8}-[\da-f]{4}-4[\da-f]{3}-[89ab][\da-f]{3}-[\da-f]{12}$/.test(value);
15
+ return /^[\da-f]{8}(?:-[\da-f]{4}){2}-[89ab][\da-f]{3}-[\da-f]{12}$/.test(value);
16
16
  }
17
17
 
18
18
  export { createUUID, isUUID };
package/dist/styles.css CHANGED
@@ -1105,11 +1105,11 @@ html {
1105
1105
  outline-offset: var(--focus-outline-offset);
1106
1106
  }
1107
1107
 
1108
- .button-module-V4meK .button-module-XaNWz {
1109
- display: block;
1110
- width: 1.5em;
1111
- height: 1.5em;
1112
- }
1108
+ .button-module-V4meK .button-module-XaNWz svg {
1109
+ display: block;
1110
+ width: 24px;
1111
+ height: 24px;
1112
+ }
1113
1113
 
1114
1114
  .button-module-V4meK .button-module-ydQAo {
1115
1115
  block-size: 0.7em;
@@ -7696,7 +7696,7 @@ button.swiper-pagination-bullet {
7696
7696
  left: 0;
7697
7697
  width: 100%;
7698
7698
  box-sizing: border-box;
7699
- padding: 16px var(--padding-inline);
7699
+ padding: 16px calc(2 * var(--padding-inline));
7700
7700
  margin: auto;
7701
7701
  background-color: var(--color-white);
7702
7702
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sonic-equipment/ui",
3
- "version": "219.0.0",
3
+ "version": "221.0.0",
4
4
  "type": "module",
5
5
  "license": "MIT",
6
6
  "engines": {