react-instantsearch 7.25.0 → 7.26.1

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 (127) hide show
  1. package/dist/cjs/components/AutocompleteSearch.js +25 -36
  2. package/dist/cjs/components/Carousel.js +25 -39
  3. package/dist/cjs/components/index.js +6 -15
  4. package/dist/cjs/index.js +85 -44
  5. package/dist/cjs/lib/useStickToBottom.js +11 -17
  6. package/dist/cjs/package.json +4 -1
  7. package/dist/cjs/types/PartialKeys.js +2 -1
  8. package/dist/cjs/types/Translatable.js +2 -1
  9. package/dist/cjs/types/index.js +1 -26
  10. package/dist/cjs/ui/Breadcrumb.js +52 -57
  11. package/dist/cjs/ui/ClearRefinements.js +23 -28
  12. package/dist/cjs/ui/CurrentRefinements.js +48 -50
  13. package/dist/cjs/ui/HierarchicalMenu.js +71 -79
  14. package/dist/cjs/ui/Highlight.js +21 -25
  15. package/dist/cjs/ui/HitsPerPage.js +31 -34
  16. package/dist/cjs/ui/InfiniteHits.js +83 -88
  17. package/dist/cjs/ui/InternalHighlight.js +9 -10
  18. package/dist/cjs/ui/Menu.js +53 -56
  19. package/dist/cjs/ui/Pagination.js +117 -124
  20. package/dist/cjs/ui/PoweredBy.js +33 -37
  21. package/dist/cjs/ui/RangeInput.js +96 -116
  22. package/dist/cjs/ui/RefinementList.js +66 -67
  23. package/dist/cjs/ui/ReverseHighlight.js +21 -25
  24. package/dist/cjs/ui/SearchBox.js +141 -151
  25. package/dist/cjs/ui/ShowMoreButton.js +14 -17
  26. package/dist/cjs/ui/Snippet.js +21 -25
  27. package/dist/cjs/ui/SortBy.js +32 -36
  28. package/dist/cjs/ui/Stats.js +29 -32
  29. package/dist/cjs/ui/ToggleRefinement.js +30 -33
  30. package/dist/cjs/ui/lib/capitalize.js +5 -7
  31. package/dist/cjs/ui/lib/index.js +8 -26
  32. package/dist/cjs/ui/lib/isModifierClick.js +6 -8
  33. package/dist/cjs/widgets/Autocomplete.js +450 -491
  34. package/dist/cjs/widgets/Breadcrumb.js +34 -47
  35. package/dist/cjs/widgets/Chat.js +174 -221
  36. package/dist/cjs/widgets/ClearRefinements.js +31 -42
  37. package/dist/cjs/widgets/CurrentRefinements.js +27 -32
  38. package/dist/cjs/widgets/FilterSuggestions.js +46 -53
  39. package/dist/cjs/widgets/FrequentlyBoughtTogether.js +66 -74
  40. package/dist/cjs/widgets/HierarchicalMenu.js +53 -68
  41. package/dist/cjs/widgets/Highlight.js +31 -31
  42. package/dist/cjs/widgets/Hits.js +59 -64
  43. package/dist/cjs/widgets/HitsPerPage.js +32 -38
  44. package/dist/cjs/widgets/InfiniteHits.js +44 -61
  45. package/dist/cjs/widgets/LookingSimilar.js +66 -74
  46. package/dist/cjs/widgets/Menu.js +48 -62
  47. package/dist/cjs/widgets/Pagination.js +59 -74
  48. package/dist/cjs/widgets/PoweredBy.js +14 -17
  49. package/dist/cjs/widgets/RangeInput.js +38 -51
  50. package/dist/cjs/widgets/RefinementList.js +100 -125
  51. package/dist/cjs/widgets/RelatedProducts.js +66 -74
  52. package/dist/cjs/widgets/ReverseHighlight.js +38 -44
  53. package/dist/cjs/widgets/SearchBox.js +63 -86
  54. package/dist/cjs/widgets/Snippet.js +31 -31
  55. package/dist/cjs/widgets/SortBy.js +26 -32
  56. package/dist/cjs/widgets/Stats.js +54 -68
  57. package/dist/cjs/widgets/ToggleRefinement.js +33 -38
  58. package/dist/cjs/widgets/TrendingItems.js +70 -78
  59. package/dist/cjs/widgets/chat/tools/SearchIndexTool.js +92 -99
  60. package/dist/cjs/widgets/index.js +77 -289
  61. package/dist/cjs/widgets/index.umd.js +68 -322
  62. package/dist/es/components/AutocompleteSearch.js +22 -28
  63. package/dist/es/components/Carousel.js +23 -31
  64. package/dist/es/components/index.js +1 -1
  65. package/dist/es/index.js +29 -4
  66. package/dist/es/lib/useStickToBottom.js +10 -12
  67. package/dist/es/package.json +4 -0
  68. package/dist/es/types/PartialKeys.js +1 -1
  69. package/dist/es/types/Translatable.js +1 -1
  70. package/dist/es/types/index.js +1 -2
  71. package/dist/es/ui/Breadcrumb.js +49 -49
  72. package/dist/es/ui/ClearRefinements.js +21 -21
  73. package/dist/es/ui/CurrentRefinements.js +46 -43
  74. package/dist/es/ui/HierarchicalMenu.js +68 -71
  75. package/dist/es/ui/Highlight.js +19 -18
  76. package/dist/es/ui/HitsPerPage.js +29 -27
  77. package/dist/es/ui/InfiniteHits.js +80 -80
  78. package/dist/es/ui/InternalHighlight.js +7 -4
  79. package/dist/es/ui/Menu.js +51 -49
  80. package/dist/es/ui/Pagination.js +114 -116
  81. package/dist/es/ui/PoweredBy.js +31 -30
  82. package/dist/es/ui/RangeInput.js +93 -107
  83. package/dist/es/ui/RefinementList.js +64 -60
  84. package/dist/es/ui/ReverseHighlight.js +19 -18
  85. package/dist/es/ui/SearchBox.js +138 -143
  86. package/dist/es/ui/ShowMoreButton.js +13 -11
  87. package/dist/es/ui/Snippet.js +19 -18
  88. package/dist/es/ui/SortBy.js +30 -29
  89. package/dist/es/ui/Stats.js +27 -25
  90. package/dist/es/ui/ToggleRefinement.js +28 -26
  91. package/dist/es/ui/lib/capitalize.js +5 -3
  92. package/dist/es/ui/lib/index.js +2 -2
  93. package/dist/es/ui/lib/isModifierClick.js +6 -4
  94. package/dist/es/widgets/Autocomplete.js +438 -474
  95. package/dist/es/widgets/Breadcrumb.js +31 -39
  96. package/dist/es/widgets/Chat.js +164 -196
  97. package/dist/es/widgets/ClearRefinements.js +28 -34
  98. package/dist/es/widgets/CurrentRefinements.js +24 -24
  99. package/dist/es/widgets/FilterSuggestions.js +41 -42
  100. package/dist/es/widgets/FrequentlyBoughtTogether.js +62 -65
  101. package/dist/es/widgets/HierarchicalMenu.js +50 -60
  102. package/dist/es/widgets/Highlight.js +30 -25
  103. package/dist/es/widgets/Hits.js +54 -53
  104. package/dist/es/widgets/HitsPerPage.js +29 -30
  105. package/dist/es/widgets/InfiniteHits.js +41 -53
  106. package/dist/es/widgets/LookingSimilar.js +62 -65
  107. package/dist/es/widgets/Menu.js +45 -54
  108. package/dist/es/widgets/Pagination.js +56 -66
  109. package/dist/es/widgets/PoweredBy.js +12 -10
  110. package/dist/es/widgets/RangeInput.js +35 -43
  111. package/dist/es/widgets/RefinementList.js +98 -118
  112. package/dist/es/widgets/RelatedProducts.js +61 -64
  113. package/dist/es/widgets/ReverseHighlight.js +36 -37
  114. package/dist/es/widgets/SearchBox.js +61 -79
  115. package/dist/es/widgets/Snippet.js +30 -25
  116. package/dist/es/widgets/SortBy.js +23 -24
  117. package/dist/es/widgets/Stats.js +51 -60
  118. package/dist/es/widgets/ToggleRefinement.js +30 -30
  119. package/dist/es/widgets/TrendingItems.js +65 -68
  120. package/dist/es/widgets/chat/tools/SearchIndexTool.js +89 -91
  121. package/dist/es/widgets/index.js +27 -26
  122. package/dist/es/widgets/index.umd.js +36 -33
  123. package/dist/umd/ReactInstantSearch.js +23411 -30098
  124. package/dist/umd/ReactInstantSearch.min.js +3 -3
  125. package/package.json +8 -12
  126. package/dist/umd/ReactInstantSearch.js.map +0 -1
  127. package/dist/umd/ReactInstantSearch.min.js.map +0 -1
@@ -1,529 +1,488 @@
1
- "use strict";
1
+ 'use strict';
2
2
 
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.EXPERIMENTAL_Autocomplete = EXPERIMENTAL_Autocomplete;
7
- var _instantsearchUiComponents = require("instantsearch-ui-components");
8
- var _react = _interopRequireWildcard(require("react"));
9
- var _reactInstantsearchCore = require("react-instantsearch-core");
10
- var _AutocompleteSearch = require("../components/AutocompleteSearch");
11
- var _ReverseHighlight = require("./ReverseHighlight");
12
- var _excluded = ["indices", "showSuggestions", "showRecent", "searchParameters", "detachedMediaQuery", "translations"],
13
- _excluded2 = ["indicesConfig", "refineSearchBox", "isSearchStalled", "getSearchPageURL", "onSelect", "indexUiState", "isSearchPage", "panelComponent", "showRecent", "recentSearchConfig", "showSuggestions", "transformItems", "placeholder", "detachedMediaQuery", "translations", "classNames"];
14
- function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function _interopRequireWildcard(e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != _typeof(e) && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (var _t in e) "default" !== _t && {}.hasOwnProperty.call(e, _t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, _t)) && (i.get || i.set) ? o(f, _t, i) : f[_t] = e[_t]); return f; })(e, t); }
15
- function _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }
16
- function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
17
- function _toConsumableArray(r) { return _arrayWithoutHoles(r) || _iterableToArray(r) || _unsupportedIterableToArray(r) || _nonIterableSpread(); }
18
- function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
19
- function _iterableToArray(r) { if ("undefined" != typeof Symbol && null != r[Symbol.iterator] || null != r["@@iterator"]) return Array.from(r); }
20
- function _arrayWithoutHoles(r) { if (Array.isArray(r)) return _arrayLikeToArray(r); }
21
- function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
22
- function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
23
- function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }
24
- function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : i + ""; }
25
- function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != _typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
26
- function _objectWithoutProperties(e, t) { if (null == e) return {}; var o, r, i = _objectWithoutPropertiesLoose(e, t); if (Object.getOwnPropertySymbols) { var n = Object.getOwnPropertySymbols(e); for (r = 0; r < n.length; r++) o = n[r], -1 === t.indexOf(o) && {}.propertyIsEnumerable.call(e, o) && (i[o] = e[o]); } return i; }
27
- function _objectWithoutPropertiesLoose(r, e) { if (null == r) return {}; var t = {}; for (var n in r) if ({}.hasOwnProperty.call(r, n)) { if (-1 !== e.indexOf(n)) continue; t[n] = r[n]; } return t; }
28
- function _slicedToArray(r, e) { return _arrayWithHoles(r) || _iterableToArrayLimit(r, e) || _unsupportedIterableToArray(r, e) || _nonIterableRest(); }
29
- function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
30
- function _unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); 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; } }
31
- function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
32
- function _iterableToArrayLimit(r, l) { var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t.return && (u = t.return(), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }
33
- function _arrayWithHoles(r) { if (Array.isArray(r)) return r; }
34
- var Autocomplete = (0, _instantsearchUiComponents.createAutocompleteComponent)({
35
- createElement: _react.createElement,
36
- Fragment: _react.Fragment
3
+ var _object_spread = require('@swc/helpers/_/_object_spread');
4
+ var _object_spread_props = require('@swc/helpers/_/_object_spread_props');
5
+ var _object_without_properties = require('@swc/helpers/_/_object_without_properties');
6
+ var _sliced_to_array = require('@swc/helpers/_/_sliced_to_array');
7
+ var _to_consumable_array = require('@swc/helpers/_/_to_consumable_array');
8
+ var _type_of = require('@swc/helpers/_/_type_of');
9
+ var instantsearchUiComponents = require('instantsearch-ui-components');
10
+ var React = require('react');
11
+ var reactInstantsearchCore = require('react-instantsearch-core');
12
+ var AutocompleteSearch = require('../components/AutocompleteSearch.js');
13
+ var ReverseHighlight = require('./ReverseHighlight.js');
14
+
15
+ var Autocomplete = instantsearchUiComponents.createAutocompleteComponent({
16
+ createElement: React.createElement,
17
+ Fragment: React.Fragment
37
18
  });
38
- var AutocompletePanel = (0, _instantsearchUiComponents.createAutocompletePanelComponent)({
39
- createElement: _react.createElement,
40
- Fragment: _react.Fragment
19
+ var AutocompletePanel = instantsearchUiComponents.createAutocompletePanelComponent({
20
+ createElement: React.createElement,
21
+ Fragment: React.Fragment
41
22
  });
42
- var AutocompleteIndex = (0, _instantsearchUiComponents.createAutocompleteIndexComponent)({
43
- createElement: _react.createElement,
44
- Fragment: _react.Fragment
23
+ var AutocompleteIndex = instantsearchUiComponents.createAutocompleteIndexComponent({
24
+ createElement: React.createElement,
25
+ Fragment: React.Fragment
45
26
  });
46
- var AutocompleteSuggestion = (0, _instantsearchUiComponents.createAutocompleteSuggestionComponent)({
47
- createElement: _react.createElement,
48
- Fragment: _react.Fragment
27
+ var AutocompleteSuggestion = instantsearchUiComponents.createAutocompleteSuggestionComponent({
28
+ createElement: React.createElement,
29
+ Fragment: React.Fragment
49
30
  });
50
- var AutocompleteRecentSearch = (0, _instantsearchUiComponents.createAutocompleteRecentSearchComponent)({
51
- createElement: _react.createElement,
52
- Fragment: _react.Fragment
31
+ var AutocompleteRecentSearch = instantsearchUiComponents.createAutocompleteRecentSearchComponent({
32
+ createElement: React.createElement,
33
+ Fragment: React.Fragment
53
34
  });
54
- var AutocompleteDetachedContainer = (0, _instantsearchUiComponents.createAutocompleteDetachedContainerComponent)({
55
- createElement: _react.createElement,
56
- Fragment: _react.Fragment
35
+ var AutocompleteDetachedContainer = instantsearchUiComponents.createAutocompleteDetachedContainerComponent({
36
+ createElement: React.createElement,
37
+ Fragment: React.Fragment
57
38
  });
58
- var AutocompleteDetachedOverlay = (0, _instantsearchUiComponents.createAutocompleteDetachedOverlayComponent)({
59
- createElement: _react.createElement,
60
- Fragment: _react.Fragment
39
+ var AutocompleteDetachedOverlay = instantsearchUiComponents.createAutocompleteDetachedOverlayComponent({
40
+ createElement: React.createElement,
41
+ Fragment: React.Fragment
61
42
  });
62
- var AutocompleteDetachedFormContainer = (0, _instantsearchUiComponents.createAutocompleteDetachedFormContainerComponent)({
63
- createElement: _react.createElement,
64
- Fragment: _react.Fragment
43
+ var AutocompleteDetachedFormContainer = instantsearchUiComponents.createAutocompleteDetachedFormContainerComponent({
44
+ createElement: React.createElement,
45
+ Fragment: React.Fragment
65
46
  });
66
- var AutocompleteDetachedSearchButton = (0, _instantsearchUiComponents.createAutocompleteDetachedSearchButtonComponent)({
67
- createElement: _react.createElement,
68
- Fragment: _react.Fragment
47
+ var AutocompleteDetachedSearchButton = instantsearchUiComponents.createAutocompleteDetachedSearchButtonComponent({
48
+ createElement: React.createElement,
49
+ Fragment: React.Fragment
69
50
  });
70
- var usePropGetters = (0, _instantsearchUiComponents.createAutocompletePropGetters)({
71
- useEffect: _react.useEffect,
72
- useId: _react.useId,
73
- useMemo: _react.useMemo,
74
- useRef: _react.useRef,
75
- useState: _react.useState
51
+ var id = 0;
52
+ var usePropGetters = instantsearchUiComponents.createAutocompletePropGetters({
53
+ useEffect: React.useEffect,
54
+ useId: React.useId || function() {
55
+ return React.useState(function() {
56
+ return (id++).toString();
57
+ });
58
+ },
59
+ useMemo: React.useMemo,
60
+ useRef: React.useRef,
61
+ useState: React.useState
76
62
  });
77
- var useStorage = (0, _instantsearchUiComponents.createAutocompleteStorage)({
78
- useEffect: _react.useEffect,
79
- useMemo: _react.useMemo,
80
- useState: _react.useState
63
+ var useStorage = instantsearchUiComponents.createAutocompleteStorage({
64
+ useEffect: React.useEffect,
65
+ useMemo: React.useMemo,
66
+ useState: React.useState
81
67
  });
82
68
  var DEFAULT_DETACHED_MEDIA_QUERY = '(max-width: 680px)';
83
69
  var DEFAULT_DETACHED_MODAL_MEDIA_QUERY = '(min-width: 680px)';
84
70
  var DETACHED_MEDIA_QUERY_CSS_VAR = '--ais-autocomplete-detached-media-query';
85
71
  var DETACHED_MODAL_MEDIA_QUERY_CSS_VAR = '--ais-autocomplete-detached-modal-media-query';
86
72
  var DEFAULT_TRANSLATIONS = {
87
- detachedCancelButtonText: 'Cancel',
88
- detachedSearchButtonTitle: 'Search',
89
- detachedClearButtonTitle: 'Clear'
73
+ detachedCancelButtonText: 'Cancel',
74
+ detachedSearchButtonTitle: 'Search',
75
+ detachedClearButtonTitle: 'Clear'
90
76
  };
91
77
  function getCssMediaQueryValue(name) {
92
- if (typeof window === 'undefined' || typeof document === 'undefined') {
93
- return '';
94
- }
95
- return getComputedStyle(document.documentElement).getPropertyValue(name).trim();
78
+ if (typeof window === 'undefined' || typeof document === 'undefined') {
79
+ return '';
80
+ }
81
+ return getComputedStyle(document.documentElement).getPropertyValue(name).trim();
96
82
  }
97
83
  function resolveMediaQuery(value, cssVarName, fallback) {
98
- if (value === '') {
99
- return '';
100
- }
101
- if (value) {
102
- return value;
103
- }
104
- return getCssMediaQueryValue(cssVarName) || fallback;
84
+ if (value === '') {
85
+ return '';
86
+ }
87
+ if (value) {
88
+ return value;
89
+ }
90
+ return getCssMediaQueryValue(cssVarName) || fallback;
105
91
  }
106
92
  function getMediaQueryList(mediaQuery) {
107
- if (typeof window === 'undefined' || typeof window.matchMedia !== 'function') {
108
- return null;
109
- }
110
- return window.matchMedia(mediaQuery);
93
+ if (typeof window === 'undefined' || typeof window.matchMedia !== 'function') {
94
+ return null;
95
+ }
96
+ return window.matchMedia(mediaQuery);
111
97
  }
112
-
113
98
  /**
114
99
  * Hook to manage detached (mobile) mode state
115
- */
116
- function useDetachedMode(mediaQuery) {
117
- var resolvedMediaQuery = (0, _react.useMemo)(function () {
118
- return resolveMediaQuery(mediaQuery, DETACHED_MEDIA_QUERY_CSS_VAR, DEFAULT_DETACHED_MEDIA_QUERY);
119
- }, [mediaQuery]);
120
- var _useState = (0, _react.useState)(function () {
121
- var _getMediaQueryList;
122
- return resolvedMediaQuery ? Boolean((_getMediaQueryList = getMediaQueryList(resolvedMediaQuery)) === null || _getMediaQueryList === void 0 ? void 0 : _getMediaQueryList.matches) : false;
123
- }),
124
- _useState2 = _slicedToArray(_useState, 2),
125
- isDetached = _useState2[0],
126
- setIsDetached = _useState2[1];
127
- var _useState3 = (0, _react.useState)(false),
128
- _useState4 = _slicedToArray(_useState3, 2),
129
- isModalOpen = _useState4[0],
130
- setIsModalOpen = _useState4[1];
131
- var _useState5 = (0, _react.useState)(false),
132
- _useState6 = _slicedToArray(_useState5, 2),
133
- isModalDetached = _useState6[0],
134
- setIsModalDetached = _useState6[1];
135
- (0, _react.useEffect)(function () {
136
- if (!resolvedMediaQuery) {
137
- setIsDetached(false);
138
- return function () {};
139
- }
140
- var mql = getMediaQueryList(resolvedMediaQuery);
141
- if (!mql) {
142
- setIsDetached(false);
143
- return function () {};
144
- }
145
- var handler = function handler(event) {
146
- var wasDetached = isDetached;
147
- setIsDetached(event.matches);
148
- // Close modal if switching from detached to non-detached
149
- if (wasDetached && !event.matches) {
150
- setIsModalOpen(false);
151
- }
152
- };
153
- mql.addEventListener('change', handler);
154
- return function () {
155
- return mql.removeEventListener('change', handler);
156
- };
157
- }, [resolvedMediaQuery, isDetached]);
158
- (0, _react.useEffect)(function () {
159
- if (!isDetached) {
160
- setIsModalDetached(false);
161
- return function () {};
162
- }
163
- var modalMediaQuery = resolveMediaQuery(undefined, DETACHED_MODAL_MEDIA_QUERY_CSS_VAR, DEFAULT_DETACHED_MODAL_MEDIA_QUERY);
164
- if (!modalMediaQuery) {
165
- setIsModalDetached(false);
166
- return function () {};
167
- }
168
- var mql = getMediaQueryList(modalMediaQuery);
169
- if (!mql) {
170
- setIsModalDetached(false);
171
- return function () {};
172
- }
173
- var handler = function handler(event) {
174
- setIsModalDetached(event.matches);
175
- };
176
- setIsModalDetached(mql.matches);
177
- mql.addEventListener('change', handler);
178
- return function () {
179
- return mql.removeEventListener('change', handler);
100
+ */ function useDetachedMode(mediaQuery) {
101
+ var resolvedMediaQuery = React.useMemo(function() {
102
+ return resolveMediaQuery(mediaQuery, DETACHED_MEDIA_QUERY_CSS_VAR, DEFAULT_DETACHED_MEDIA_QUERY);
103
+ }, [
104
+ mediaQuery
105
+ ]);
106
+ var _useState = _sliced_to_array._(React.useState(function() {
107
+ var _getMediaQueryList;
108
+ return resolvedMediaQuery ? Boolean((_getMediaQueryList = getMediaQueryList(resolvedMediaQuery)) === null || _getMediaQueryList === void 0 ? void 0 : _getMediaQueryList.matches) : false;
109
+ }), 2), isDetached = _useState[0], setIsDetached = _useState[1];
110
+ var _useState1 = _sliced_to_array._(React.useState(false), 2), isModalOpen = _useState1[0], setIsModalOpen = _useState1[1];
111
+ var _useState2 = _sliced_to_array._(React.useState(false), 2), isModalDetached = _useState2[0], setIsModalDetached = _useState2[1];
112
+ React.useEffect(function() {
113
+ if (!resolvedMediaQuery) {
114
+ setIsDetached(false);
115
+ return function() {};
116
+ }
117
+ var mql = getMediaQueryList(resolvedMediaQuery);
118
+ if (!mql) {
119
+ setIsDetached(false);
120
+ return function() {};
121
+ }
122
+ var handler = function handler(event) {
123
+ var wasDetached = isDetached;
124
+ setIsDetached(event.matches);
125
+ // Close modal if switching from detached to non-detached
126
+ if (wasDetached && !event.matches) {
127
+ setIsModalOpen(false);
128
+ }
129
+ };
130
+ mql.addEventListener('change', handler);
131
+ return function() {
132
+ return mql.removeEventListener('change', handler);
133
+ };
134
+ }, [
135
+ resolvedMediaQuery,
136
+ isDetached
137
+ ]);
138
+ React.useEffect(function() {
139
+ if (!isDetached) {
140
+ setIsModalDetached(false);
141
+ return function() {};
142
+ }
143
+ var modalMediaQuery = resolveMediaQuery(undefined, DETACHED_MODAL_MEDIA_QUERY_CSS_VAR, DEFAULT_DETACHED_MODAL_MEDIA_QUERY);
144
+ if (!modalMediaQuery) {
145
+ setIsModalDetached(false);
146
+ return function() {};
147
+ }
148
+ var mql = getMediaQueryList(modalMediaQuery);
149
+ if (!mql) {
150
+ setIsModalDetached(false);
151
+ return function() {};
152
+ }
153
+ var handler = function handler(event) {
154
+ setIsModalDetached(event.matches);
155
+ };
156
+ setIsModalDetached(mql.matches);
157
+ mql.addEventListener('change', handler);
158
+ return function() {
159
+ return mql.removeEventListener('change', handler);
160
+ };
161
+ }, [
162
+ isDetached
163
+ ]);
164
+ React.useEffect(function() {
165
+ if (typeof document === 'undefined') return function() {};
166
+ if (isModalOpen) {
167
+ var scrollY = window.scrollY;
168
+ document.body.style.top = "-".concat(scrollY, "px");
169
+ document.body.classList.add('ais-Autocomplete--detached');
170
+ return function() {
171
+ document.body.classList.remove('ais-Autocomplete--detached');
172
+ document.body.style.top = '';
173
+ window.scrollTo(0, scrollY);
174
+ };
175
+ }
176
+ return function() {};
177
+ }, [
178
+ isModalOpen
179
+ ]);
180
+ return {
181
+ isDetached: isDetached,
182
+ isModalDetached: isModalDetached,
183
+ isModalOpen: isModalOpen,
184
+ setIsModalOpen: setIsModalOpen
180
185
  };
181
- }, [isDetached]);
182
- (0, _react.useEffect)(function () {
183
- if (typeof document === 'undefined') return function () {};
184
- if (isModalOpen) {
185
- var scrollY = window.scrollY;
186
- document.body.style.top = "-".concat(scrollY, "px");
187
- document.body.classList.add('ais-Autocomplete--detached');
188
- return function () {
189
- document.body.classList.remove('ais-Autocomplete--detached');
190
- document.body.style.top = '';
191
- window.scrollTo(0, scrollY);
192
- };
193
- }
194
- return function () {};
195
- }, [isModalOpen]);
196
- return {
197
- isDetached: isDetached,
198
- isModalDetached: isModalDetached,
199
- isModalOpen: isModalOpen,
200
- setIsModalOpen: setIsModalOpen
201
- };
202
186
  }
203
- function EXPERIMENTAL_Autocomplete(_ref) {
204
- var _showRecent$className, _showRecent$className2, _showRecent$className3, _showRecent$className4;
205
- var _ref$indices = _ref.indices,
206
- indices = _ref$indices === void 0 ? [] : _ref$indices,
207
- showSuggestions = _ref.showSuggestions,
208
- showRecent = _ref.showRecent,
209
- userSearchParameters = _ref.searchParameters,
210
- detachedMediaQuery = _ref.detachedMediaQuery,
211
- _ref$translations = _ref.translations,
212
- userTranslations = _ref$translations === void 0 ? {} : _ref$translations,
213
- props = _objectWithoutProperties(_ref, _excluded);
214
- var translations = _objectSpread(_objectSpread({}, DEFAULT_TRANSLATIONS), userTranslations);
215
- var _useInstantSearch = (0, _reactInstantsearchCore.useInstantSearch)(),
216
- indexUiState = _useInstantSearch.indexUiState,
217
- indexRenderState = _useInstantSearch.indexRenderState,
218
- status = _useInstantSearch.status;
219
- var _useSearchBox = (0, _reactInstantsearchCore.useSearchBox)({}, {
220
- $$type: 'ais.autocomplete',
221
- $$widgetType: 'ais.autocomplete'
222
- }),
223
- refine = _useSearchBox.refine;
224
- var isSearchStalled = status === 'stalled';
225
- var searchParameters = _objectSpread({
226
- hitsPerPage: 5
227
- }, userSearchParameters);
228
- var indicesConfig = _toConsumableArray(indices);
229
- if (showSuggestions !== null && showSuggestions !== void 0 && showSuggestions.indexName) {
230
- var _showSuggestions$clas, _showSuggestions$clas2, _showSuggestions$clas3, _showSuggestions$clas4;
231
- indicesConfig.unshift({
232
- indexName: showSuggestions.indexName,
233
- headerComponent: showSuggestions.headerComponent,
234
- itemComponent: showSuggestions.itemComponent || function (_ref2) {
235
- var item = _ref2.item,
236
- onSelect = _ref2.onSelect,
237
- onApply = _ref2.onApply;
238
- return /*#__PURE__*/_react.default.createElement(AutocompleteSuggestion, {
239
- item: item,
240
- onSelect: onSelect,
241
- onApply: onApply
242
- }, /*#__PURE__*/_react.default.createElement(ConditionalReverseHighlight, {
243
- item: item
244
- }));
245
- },
246
- classNames: {
247
- root: (0, _instantsearchUiComponents.cx)('ais-AutocompleteSuggestions', showSuggestions === null || showSuggestions === void 0 ? void 0 : (_showSuggestions$clas = showSuggestions.classNames) === null || _showSuggestions$clas === void 0 ? void 0 : _showSuggestions$clas.root),
248
- list: (0, _instantsearchUiComponents.cx)('ais-AutocompleteSuggestionsList', showSuggestions === null || showSuggestions === void 0 ? void 0 : (_showSuggestions$clas2 = showSuggestions.classNames) === null || _showSuggestions$clas2 === void 0 ? void 0 : _showSuggestions$clas2.list),
249
- header: (0, _instantsearchUiComponents.cx)('ais-AutocompleteSuggestionsHeader', showSuggestions === null || showSuggestions === void 0 ? void 0 : (_showSuggestions$clas3 = showSuggestions.classNames) === null || _showSuggestions$clas3 === void 0 ? void 0 : _showSuggestions$clas3.header),
250
- item: (0, _instantsearchUiComponents.cx)('ais-AutocompleteSuggestionsItem', showSuggestions === null || showSuggestions === void 0 ? void 0 : (_showSuggestions$clas4 = showSuggestions.classNames) === null || _showSuggestions$clas4 === void 0 ? void 0 : _showSuggestions$clas4.item)
251
- },
252
- getQuery: function getQuery(item) {
253
- return item.query;
254
- },
255
- getURL: showSuggestions.getURL
256
- });
257
- }
258
- var recentSearchConfig = showRecent ? {
259
- headerComponent: _typeof(showRecent) === 'object' ? showRecent.headerComponent : undefined,
260
- itemComponent: _typeof(showRecent) === 'object' && showRecent.itemComponent ? showRecent.itemComponent : AutocompleteRecentSearch,
261
- classNames: {
262
- root: (0, _instantsearchUiComponents.cx)('ais-AutocompleteRecentSearches', _typeof(showRecent) === 'object' ? (_showRecent$className = showRecent.classNames) === null || _showRecent$className === void 0 ? void 0 : _showRecent$className.root : undefined),
263
- list: (0, _instantsearchUiComponents.cx)('ais-AutocompleteRecentSearchesList', _typeof(showRecent) === 'object' ? (_showRecent$className2 = showRecent.classNames) === null || _showRecent$className2 === void 0 ? void 0 : _showRecent$className2.list : undefined),
264
- header: (0, _instantsearchUiComponents.cx)('ais-AutocompleteRecentSearchesHeader', _typeof(showRecent) === 'object' ? (_showRecent$className3 = showRecent.classNames) === null || _showRecent$className3 === void 0 ? void 0 : _showRecent$className3.header : undefined),
265
- item: (0, _instantsearchUiComponents.cx)('ais-AutocompleteRecentSearchesItem', _typeof(showRecent) === 'object' ? (_showRecent$className4 = showRecent.classNames) === null || _showRecent$className4 === void 0 ? void 0 : _showRecent$className4.item : undefined)
187
+ function EXPERIMENTAL_Autocomplete(_0) {
188
+ var _0_indices = _0.indices, indices = _0_indices === void 0 ? [] : _0_indices, showSuggestions = _0.showSuggestions, showRecent = _0.showRecent, userSearchParameters = _0.searchParameters, detachedMediaQuery = _0.detachedMediaQuery, tmp = _0.translations, userTranslations = tmp === void 0 ? {} : tmp, props = _object_without_properties._(_0, [
189
+ "indices",
190
+ "showSuggestions",
191
+ "showRecent",
192
+ "searchParameters",
193
+ "detachedMediaQuery",
194
+ "translations"
195
+ ]);
196
+ var _showRecent_classNames, _showRecent_classNames1, _showRecent_classNames2, _showRecent_classNames3;
197
+ var translations = _object_spread._({}, DEFAULT_TRANSLATIONS, userTranslations);
198
+ var _useInstantSearch = reactInstantsearchCore.useInstantSearch(), indexUiState = _useInstantSearch.indexUiState, indexRenderState = _useInstantSearch.indexRenderState, status = _useInstantSearch.status;
199
+ var refine = reactInstantsearchCore.useSearchBox({}, {
200
+ $$type: 'ais.autocomplete',
201
+ $$widgetType: 'ais.autocomplete'
202
+ }).refine;
203
+ var isSearchStalled = status === 'stalled';
204
+ var searchParameters = _object_spread._({
205
+ hitsPerPage: 5
206
+ }, userSearchParameters);
207
+ var indicesConfig = _to_consumable_array._(indices);
208
+ if (showSuggestions === null || showSuggestions === void 0 ? void 0 : showSuggestions.indexName) {
209
+ var _showSuggestions_classNames, _showSuggestions_classNames1, _showSuggestions_classNames2, _showSuggestions_classNames3;
210
+ indicesConfig.unshift({
211
+ indexName: showSuggestions.indexName,
212
+ headerComponent: showSuggestions.headerComponent,
213
+ itemComponent: showSuggestions.itemComponent || function(param) {
214
+ var item = param.item, onSelect = param.onSelect, onApply = param.onApply;
215
+ return /*#__PURE__*/ React.createElement(AutocompleteSuggestion, {
216
+ item: item,
217
+ onSelect: onSelect,
218
+ onApply: onApply
219
+ }, /*#__PURE__*/ React.createElement(ConditionalReverseHighlight, {
220
+ item: item
221
+ }));
222
+ },
223
+ classNames: {
224
+ root: instantsearchUiComponents.cx('ais-AutocompleteSuggestions', showSuggestions === null || showSuggestions === void 0 ? void 0 : (_showSuggestions_classNames = showSuggestions.classNames) === null || _showSuggestions_classNames === void 0 ? void 0 : _showSuggestions_classNames.root),
225
+ list: instantsearchUiComponents.cx('ais-AutocompleteSuggestionsList', showSuggestions === null || showSuggestions === void 0 ? void 0 : (_showSuggestions_classNames1 = showSuggestions.classNames) === null || _showSuggestions_classNames1 === void 0 ? void 0 : _showSuggestions_classNames1.list),
226
+ header: instantsearchUiComponents.cx('ais-AutocompleteSuggestionsHeader', showSuggestions === null || showSuggestions === void 0 ? void 0 : (_showSuggestions_classNames2 = showSuggestions.classNames) === null || _showSuggestions_classNames2 === void 0 ? void 0 : _showSuggestions_classNames2.header),
227
+ item: instantsearchUiComponents.cx('ais-AutocompleteSuggestionsItem', showSuggestions === null || showSuggestions === void 0 ? void 0 : (_showSuggestions_classNames3 = showSuggestions.classNames) === null || _showSuggestions_classNames3 === void 0 ? void 0 : _showSuggestions_classNames3.item)
228
+ },
229
+ getQuery: function getQuery(item) {
230
+ return item.query;
231
+ },
232
+ getURL: showSuggestions.getURL
233
+ });
266
234
  }
267
- } : undefined;
268
- var isSearchPage = (0, _react.useMemo)(function () {
269
- return typeof indexRenderState.hits !== 'undefined' || typeof indexRenderState.infiniteHits !== 'undefined';
270
- }, [indexRenderState]);
271
- return /*#__PURE__*/_react.default.createElement(_react.Fragment, null, /*#__PURE__*/_react.default.createElement(_reactInstantsearchCore.Index, {
272
- EXPERIMENTAL_isolated: true
273
- }, /*#__PURE__*/_react.default.createElement(_reactInstantsearchCore.Configure, searchParameters), indicesConfig.map(function (index) {
274
- return /*#__PURE__*/_react.default.createElement(_reactInstantsearchCore.Index, {
275
- key: index.indexName,
276
- indexName: index.indexName
277
- }, /*#__PURE__*/_react.default.createElement(_reactInstantsearchCore.Configure, index.searchParameters));
278
- }), /*#__PURE__*/_react.default.createElement(InnerAutocomplete, _extends({}, props, {
279
- indicesConfig: indicesConfig,
280
- refineSearchBox: refine,
281
- isSearchStalled: isSearchStalled,
282
- indexUiState: indexUiState,
283
- isSearchPage: isSearchPage,
284
- showRecent: showRecent,
285
- recentSearchConfig: recentSearchConfig,
286
- showSuggestions: showSuggestions,
287
- detachedMediaQuery: detachedMediaQuery,
288
- translations: translations
289
- }))));
290
- }
291
- function InnerAutocomplete(_ref3) {
292
- var indicesConfig = _ref3.indicesConfig,
293
- refineSearchBox = _ref3.refineSearchBox,
294
- isSearchStalled = _ref3.isSearchStalled,
295
- getSearchPageURL = _ref3.getSearchPageURL,
296
- userOnSelect = _ref3.onSelect,
297
- indexUiState = _ref3.indexUiState,
298
- isSearchPage = _ref3.isSearchPage,
299
- PanelComponent = _ref3.panelComponent,
300
- showRecent = _ref3.showRecent,
301
- recentSearchConfig = _ref3.recentSearchConfig,
302
- showSuggestions = _ref3.showSuggestions,
303
- transformItems = _ref3.transformItems,
304
- placeholder = _ref3.placeholder,
305
- _ref3$detachedMediaQu = _ref3.detachedMediaQuery,
306
- detachedMediaQuery = _ref3$detachedMediaQu === void 0 ? DEFAULT_DETACHED_MEDIA_QUERY : _ref3$detachedMediaQu,
307
- translations = _ref3.translations,
308
- classNames = _ref3.classNames,
309
- props = _objectWithoutProperties(_ref3, _excluded2);
310
- var _useAutocomplete = (0, _reactInstantsearchCore.useAutocomplete)({
311
- transformItems: transformItems
312
- }),
313
- indices = _useAutocomplete.indices,
314
- refineAutocomplete = _useAutocomplete.refine,
315
- currentRefinement = _useAutocomplete.currentRefinement;
316
- var _useDetachedMode = useDetachedMode(detachedMediaQuery),
317
- isDetached = _useDetachedMode.isDetached,
318
- isModalDetached = _useDetachedMode.isModalDetached,
319
- isModalOpen = _useDetachedMode.isModalOpen,
320
- setIsModalOpen = _useDetachedMode.setIsModalOpen;
321
- var previousIsDetachedRef = (0, _react.useRef)(isDetached);
322
- var _useStorage = useStorage({
323
- showRecent: showRecent,
324
- query: currentRefinement,
325
- indices: indices,
326
- indicesConfig: indicesConfig,
327
- suggestionsIndexName: showSuggestions === null || showSuggestions === void 0 ? void 0 : showSuggestions.indexName
328
- }),
329
- storage = _useStorage.storage,
330
- storageHits = _useStorage.storageHits,
331
- indicesForPropGetters = _useStorage.indicesForPropGetters,
332
- indicesConfigForPropGetters = _useStorage.indicesConfigForPropGetters;
333
- var _usePropGetters = usePropGetters({
334
- indices: indicesForPropGetters,
335
- indicesConfig: indicesConfigForPropGetters,
336
- onRefine: function onRefine(query) {
337
- refineAutocomplete(query);
338
- refineSearchBox(query);
339
- storage.onAdd(query);
340
- },
341
- onApply: function onApply(query) {
342
- refineAutocomplete(query);
343
- },
344
- onSelect: userOnSelect !== null && userOnSelect !== void 0 ? userOnSelect : function (_ref4) {
345
- var query = _ref4.query,
346
- setQuery = _ref4.setQuery,
347
- url = _ref4.url;
348
- if (url) {
349
- window.location.href = url;
350
- return;
235
+ var recentSearchConfig = showRecent ? {
236
+ headerComponent: (typeof showRecent === "undefined" ? "undefined" : _type_of._(showRecent)) === 'object' ? showRecent.headerComponent : undefined,
237
+ itemComponent: (typeof showRecent === "undefined" ? "undefined" : _type_of._(showRecent)) === 'object' && showRecent.itemComponent ? showRecent.itemComponent : AutocompleteRecentSearch,
238
+ classNames: {
239
+ root: instantsearchUiComponents.cx('ais-AutocompleteRecentSearches', (typeof showRecent === "undefined" ? "undefined" : _type_of._(showRecent)) === 'object' ? (_showRecent_classNames = showRecent.classNames) === null || _showRecent_classNames === void 0 ? void 0 : _showRecent_classNames.root : undefined),
240
+ list: instantsearchUiComponents.cx('ais-AutocompleteRecentSearchesList', (typeof showRecent === "undefined" ? "undefined" : _type_of._(showRecent)) === 'object' ? (_showRecent_classNames1 = showRecent.classNames) === null || _showRecent_classNames1 === void 0 ? void 0 : _showRecent_classNames1.list : undefined),
241
+ header: instantsearchUiComponents.cx('ais-AutocompleteRecentSearchesHeader', (typeof showRecent === "undefined" ? "undefined" : _type_of._(showRecent)) === 'object' ? (_showRecent_classNames2 = showRecent.classNames) === null || _showRecent_classNames2 === void 0 ? void 0 : _showRecent_classNames2.header : undefined),
242
+ item: instantsearchUiComponents.cx('ais-AutocompleteRecentSearchesItem', (typeof showRecent === "undefined" ? "undefined" : _type_of._(showRecent)) === 'object' ? (_showRecent_classNames3 = showRecent.classNames) === null || _showRecent_classNames3 === void 0 ? void 0 : _showRecent_classNames3.item : undefined)
351
243
  }
352
- if (!isSearchPage && typeof getSearchPageURL !== 'undefined') {
353
- window.location.href = getSearchPageURL(_objectSpread(_objectSpread({}, indexUiState), {}, {
354
- query: query
355
- }));
356
- return;
244
+ } : undefined;
245
+ var isSearchPage = React.useMemo(function() {
246
+ return typeof indexRenderState.hits !== 'undefined' || typeof indexRenderState.infiniteHits !== 'undefined';
247
+ }, [
248
+ indexRenderState
249
+ ]);
250
+ return /*#__PURE__*/ React.createElement(React.Fragment, null, /*#__PURE__*/ React.createElement(reactInstantsearchCore.Index, {
251
+ EXPERIMENTAL_isolated: true
252
+ }, /*#__PURE__*/ React.createElement(reactInstantsearchCore.Configure, searchParameters), indicesConfig.map(function(index) {
253
+ return /*#__PURE__*/ React.createElement(reactInstantsearchCore.Index, {
254
+ key: index.indexName,
255
+ indexName: index.indexName
256
+ }, /*#__PURE__*/ React.createElement(reactInstantsearchCore.Configure, index.searchParameters));
257
+ }), /*#__PURE__*/ React.createElement(InnerAutocomplete, _object_spread_props._(_object_spread._({}, props), {
258
+ indicesConfig: indicesConfig,
259
+ refineSearchBox: refine,
260
+ isSearchStalled: isSearchStalled,
261
+ indexUiState: indexUiState,
262
+ isSearchPage: isSearchPage,
263
+ showRecent: showRecent,
264
+ recentSearchConfig: recentSearchConfig,
265
+ showSuggestions: showSuggestions,
266
+ detachedMediaQuery: detachedMediaQuery,
267
+ translations: translations
268
+ }))));
269
+ }
270
+ function InnerAutocomplete(_0) {
271
+ var indicesConfig = _0.indicesConfig, refineSearchBox = _0.refineSearchBox, isSearchStalled = _0.isSearchStalled, getSearchPageURL = _0.getSearchPageURL, userOnSelect = _0.onSelect, indexUiState = _0.indexUiState, isSearchPage = _0.isSearchPage, PanelComponent = _0.panelComponent, showRecent = _0.showRecent, recentSearchConfig = _0.recentSearchConfig, showSuggestions = _0.showSuggestions, transformItems = _0.transformItems, placeholder = _0.placeholder, _0_detachedMediaQuery = _0.detachedMediaQuery, detachedMediaQuery = _0_detachedMediaQuery === void 0 ? DEFAULT_DETACHED_MEDIA_QUERY : _0_detachedMediaQuery, translations = _0.translations, classNames = _0.classNames, props = _object_without_properties._(_0, [
272
+ "indicesConfig",
273
+ "refineSearchBox",
274
+ "isSearchStalled",
275
+ "getSearchPageURL",
276
+ "onSelect",
277
+ "indexUiState",
278
+ "isSearchPage",
279
+ "panelComponent",
280
+ "showRecent",
281
+ "recentSearchConfig",
282
+ "showSuggestions",
283
+ "transformItems",
284
+ "placeholder",
285
+ "detachedMediaQuery",
286
+ "translations",
287
+ "classNames"
288
+ ]);
289
+ var _useAutocomplete = reactInstantsearchCore.useAutocomplete({
290
+ transformItems: transformItems
291
+ }), indices = _useAutocomplete.indices, refineAutocomplete = _useAutocomplete.refine, currentRefinement = _useAutocomplete.currentRefinement;
292
+ var _useDetachedMode = useDetachedMode(detachedMediaQuery), isDetached = _useDetachedMode.isDetached, isModalDetached = _useDetachedMode.isModalDetached, isModalOpen = _useDetachedMode.isModalOpen, setIsModalOpen = _useDetachedMode.setIsModalOpen;
293
+ var previousIsDetachedRef = React.useRef(isDetached);
294
+ var _useStorage = useStorage({
295
+ showRecent: showRecent,
296
+ query: currentRefinement,
297
+ indices: indices,
298
+ indicesConfig: indicesConfig,
299
+ suggestionsIndexName: showSuggestions === null || showSuggestions === void 0 ? void 0 : showSuggestions.indexName
300
+ }), storage = _useStorage.storage, storageHits = _useStorage.storageHits, indicesForPropGetters = _useStorage.indicesForPropGetters, indicesConfigForPropGetters = _useStorage.indicesConfigForPropGetters;
301
+ var _usePropGetters = usePropGetters({
302
+ indices: indicesForPropGetters,
303
+ indicesConfig: indicesConfigForPropGetters,
304
+ onRefine: function onRefine(query) {
305
+ refineAutocomplete(query);
306
+ refineSearchBox(query);
307
+ storage.onAdd(query);
308
+ },
309
+ onApply: function onApply(query) {
310
+ refineAutocomplete(query);
311
+ },
312
+ onSelect: userOnSelect !== null && userOnSelect !== void 0 ? userOnSelect : function(param) {
313
+ var query = param.query, setQuery = param.setQuery, url = param.url;
314
+ if (url) {
315
+ window.location.href = url;
316
+ return;
317
+ }
318
+ if (!isSearchPage && typeof getSearchPageURL !== 'undefined') {
319
+ window.location.href = getSearchPageURL(_object_spread_props._(_object_spread._({}, indexUiState), {
320
+ query: query
321
+ }));
322
+ return;
323
+ }
324
+ setQuery(query);
325
+ },
326
+ onSubmit: function onSubmit() {
327
+ // Close the detached modal when form is submitted
328
+ if (isDetached) {
329
+ setIsModalOpen(false);
330
+ }
331
+ },
332
+ placeholder: placeholder,
333
+ isDetached: isDetached
334
+ }), getInputProps = _usePropGetters.getInputProps, getItemProps = _usePropGetters.getItemProps, getPanelProps = _usePropGetters.getPanelProps, getRootProps = _usePropGetters.getRootProps, isOpen = _usePropGetters.isOpen, setIsOpen = _usePropGetters.setIsOpen, focusInput = _usePropGetters.focusInput;
335
+ // Open panel and focus input when modal opens
336
+ React.useEffect(function() {
337
+ if (isDetached && isModalOpen) {
338
+ setIsOpen(true);
339
+ // Focus input to show the keyboard on mobile
340
+ focusInput();
357
341
  }
358
- setQuery(query);
359
- },
360
- onSubmit: function onSubmit() {
361
- // Close the detached modal when form is submitted
362
- if (isDetached) {
363
- setIsModalOpen(false);
342
+ }, [
343
+ isDetached,
344
+ isModalOpen,
345
+ setIsOpen,
346
+ focusInput
347
+ ]);
348
+ // Keep the modal open if the panel was open before switching to detached
349
+ React.useEffect(function() {
350
+ var wasDetached = previousIsDetachedRef.current;
351
+ var switchedToDetached = !wasDetached && isDetached;
352
+ if (switchedToDetached && isOpen) {
353
+ setIsModalOpen(true);
364
354
  }
365
- },
366
- placeholder: placeholder,
367
- isDetached: isDetached
368
- }),
369
- getInputProps = _usePropGetters.getInputProps,
370
- getItemProps = _usePropGetters.getItemProps,
371
- getPanelProps = _usePropGetters.getPanelProps,
372
- getRootProps = _usePropGetters.getRootProps,
373
- isOpen = _usePropGetters.isOpen,
374
- setIsOpen = _usePropGetters.setIsOpen,
375
- focusInput = _usePropGetters.focusInput;
376
-
377
- // Open panel and focus input when modal opens
378
- (0, _react.useEffect)(function () {
379
- if (isDetached && isModalOpen) {
380
- setIsOpen(true);
381
- // Focus input to show the keyboard on mobile
382
- focusInput();
383
- }
384
- }, [isDetached, isModalOpen, setIsOpen, focusInput]);
385
-
386
- // Keep the modal open if the panel was open before switching to detached
387
- (0, _react.useEffect)(function () {
388
- var wasDetached = previousIsDetachedRef.current;
389
- var switchedToDetached = !wasDetached && isDetached;
390
- if (switchedToDetached && isOpen) {
391
- setIsModalOpen(true);
355
+ previousIsDetachedRef.current = isDetached;
356
+ }, [
357
+ isDetached,
358
+ isOpen,
359
+ setIsModalOpen
360
+ ]);
361
+ var elements = {};
362
+ if (showRecent && recentSearchConfig) {
363
+ var RecentSearchItemComponent = recentSearchConfig.itemComponent;
364
+ elements.recent = /*#__PURE__*/ React.createElement(AutocompleteIndex, {
365
+ HeaderComponent: recentSearchConfig.headerComponent,
366
+ // @ts-ignore - there seems to be problems with React.ComponentType and this, but it's actually correct
367
+ ItemComponent: function ItemComponent(param) {
368
+ var item = param.item, onSelect = param.onSelect, onApply = param.onApply;
369
+ return /*#__PURE__*/ React.createElement(RecentSearchItemComponent, {
370
+ item: item,
371
+ onSelect: onSelect,
372
+ onRemoveRecentSearch: function onRemoveRecentSearch() {
373
+ return storage.onRemove(item.query);
374
+ },
375
+ onApply: onApply
376
+ }, /*#__PURE__*/ React.createElement(ConditionalReverseHighlight, {
377
+ item: item
378
+ }));
379
+ },
380
+ classNames: recentSearchConfig.classNames,
381
+ items: storageHits,
382
+ getItemProps: getItemProps,
383
+ key: "recentSearches"
384
+ });
392
385
  }
393
- previousIsDetachedRef.current = isDetached;
394
- }, [isDetached, isOpen, setIsModalOpen]);
395
- var elements = {};
396
- if (showRecent && recentSearchConfig) {
397
- var RecentSearchItemComponent = recentSearchConfig.itemComponent;
398
- elements.recent = /*#__PURE__*/_react.default.createElement(AutocompleteIndex, {
399
- HeaderComponent: recentSearchConfig.headerComponent
400
- // @ts-ignore - there seems to be problems with React.ComponentType and this, but it's actually correct
401
- ,
402
- ItemComponent: function ItemComponent(_ref5) {
403
- var item = _ref5.item,
404
- onSelect = _ref5.onSelect,
405
- onApply = _ref5.onApply;
406
- return /*#__PURE__*/_react.default.createElement(RecentSearchItemComponent, {
407
- item: item,
408
- onSelect: onSelect,
409
- onRemoveRecentSearch: function onRemoveRecentSearch() {
410
- return storage.onRemove(item.query);
411
- },
412
- onApply: onApply
413
- }, /*#__PURE__*/_react.default.createElement(ConditionalReverseHighlight, {
414
- item: item
415
- }));
416
- },
417
- classNames: recentSearchConfig.classNames,
418
- items: storageHits,
419
- getItemProps: getItemProps,
420
- key: "recentSearches"
386
+ indices.forEach(function(param) {
387
+ var indexId = param.indexId, indexName = param.indexName, hits = param.hits;
388
+ var elementId = indexName === (showSuggestions === null || showSuggestions === void 0 ? void 0 : showSuggestions.indexName) ? 'suggestions' : indexName;
389
+ var filteredHits = elementId === 'suggestions' && showRecent ? hits.filter(function(suggestionHit) {
390
+ return !storageHits.find(function(storageHit) {
391
+ return storageHit.query === suggestionHit.query;
392
+ });
393
+ }) : hits;
394
+ var currentIndexConfig = indicesConfig.find(function(config) {
395
+ return config.indexName === indexName;
396
+ });
397
+ if (!currentIndexConfig) {
398
+ return;
399
+ }
400
+ elements[elementId] = /*#__PURE__*/ React.createElement(AutocompleteIndex, {
401
+ key: indexId,
402
+ // @ts-expect-error - there seems to be problems with React.ComponentType and this, but it's actually correct
403
+ HeaderComponent: currentIndexConfig.headerComponent,
404
+ // @ts-expect-error - there seems to be problems with React.ComponentType and this, but it's actually correct
405
+ ItemComponent: currentIndexConfig.itemComponent,
406
+ items: filteredHits.map(function(item) {
407
+ return _object_spread_props._(_object_spread._({}, item), {
408
+ __indexName: indexId
409
+ });
410
+ }),
411
+ getItemProps: getItemProps,
412
+ classNames: currentIndexConfig.classNames
413
+ });
421
414
  });
422
- }
423
- indices.forEach(function (_ref6) {
424
- var indexId = _ref6.indexId,
425
- indexName = _ref6.indexName,
426
- hits = _ref6.hits;
427
- var elementId = indexName === (showSuggestions === null || showSuggestions === void 0 ? void 0 : showSuggestions.indexName) ? 'suggestions' : indexName;
428
- var filteredHits = elementId === 'suggestions' && showRecent ? hits.filter(function (suggestionHit) {
429
- return !storageHits.find(function (storageHit) {
430
- return storageHit.query === suggestionHit.query;
431
- });
432
- }) : hits;
433
- var currentIndexConfig = indicesConfig.find(function (config) {
434
- return config.indexName === indexName;
415
+ var searchBoxContent = /*#__PURE__*/ React.createElement(AutocompleteSearch.AutocompleteSearch, {
416
+ inputProps: getInputProps(),
417
+ clearQuery: function clearQuery() {
418
+ refineSearchBox('');
419
+ refineAutocomplete('');
420
+ },
421
+ onQueryChange: function onQueryChange(query) {
422
+ refineAutocomplete(query);
423
+ },
424
+ query: currentRefinement || indexUiState.query || '',
425
+ refine: refineSearchBox,
426
+ isSearchStalled: isSearchStalled
435
427
  });
436
- if (!currentIndexConfig) {
437
- return;
428
+ var panelContent = /*#__PURE__*/ React.createElement(AutocompletePanel, getPanelProps(), PanelComponent ? /*#__PURE__*/ React.createElement(PanelComponent, {
429
+ elements: elements,
430
+ indices: indices
431
+ }) : Object.keys(elements).map(function(elementId) {
432
+ return elements[elementId];
433
+ }));
434
+ var detachedContainerClassNames = isModalDetached ? _object_spread_props._(_object_spread._({}, classNames), {
435
+ detachedContainer: instantsearchUiComponents.cx('ais-AutocompleteDetachedContainer--modal', classNames === null || classNames === void 0 ? void 0 : classNames.detachedContainer)
436
+ }) : classNames;
437
+ if (isDetached) {
438
+ return /*#__PURE__*/ React.createElement(Autocomplete, _object_spread_props._(_object_spread._({}, props, getRootProps()), {
439
+ classNames: classNames
440
+ }), /*#__PURE__*/ React.createElement(AutocompleteDetachedSearchButton, {
441
+ query: currentRefinement || indexUiState.query || '',
442
+ placeholder: placeholder,
443
+ classNames: classNames,
444
+ onClick: function onClick() {
445
+ setIsModalOpen(true);
446
+ setIsOpen(true);
447
+ },
448
+ onClear: function onClear() {
449
+ refineSearchBox('');
450
+ refineAutocomplete('');
451
+ },
452
+ translations: translations
453
+ }), isModalOpen && /*#__PURE__*/ React.createElement(AutocompleteDetachedOverlay, {
454
+ classNames: classNames,
455
+ onClose: function onClose() {
456
+ setIsModalOpen(false);
457
+ setIsOpen(false);
458
+ }
459
+ }, /*#__PURE__*/ React.createElement(AutocompleteDetachedContainer, {
460
+ classNames: detachedContainerClassNames
461
+ }, /*#__PURE__*/ React.createElement(AutocompleteDetachedFormContainer, {
462
+ classNames: classNames,
463
+ onCancel: function onCancel() {
464
+ setIsModalOpen(false);
465
+ setIsOpen(false);
466
+ },
467
+ translations: translations
468
+ }, searchBoxContent), panelContent)));
438
469
  }
439
- elements[elementId] = /*#__PURE__*/_react.default.createElement(AutocompleteIndex, {
440
- key: indexId
441
- // @ts-expect-error - there seems to be problems with React.ComponentType and this, but it's actually correct
442
- ,
443
- HeaderComponent: currentIndexConfig.headerComponent
444
- // @ts-expect-error - there seems to be problems with React.ComponentType and this, but it's actually correct
445
- ,
446
- ItemComponent: currentIndexConfig.itemComponent,
447
- items: filteredHits.map(function (item) {
448
- return _objectSpread(_objectSpread({}, item), {}, {
449
- __indexName: indexId
450
- });
451
- }),
452
- getItemProps: getItemProps,
453
- classNames: currentIndexConfig.classNames
470
+ // Normal (non-detached) rendering
471
+ return /*#__PURE__*/ React.createElement(Autocomplete, _object_spread_props._(_object_spread._({}, props, getRootProps()), {
472
+ classNames: classNames
473
+ }), searchBoxContent, panelContent);
474
+ }
475
+ function ConditionalReverseHighlight(param) {
476
+ var item = param.item;
477
+ var _item__highlightResult;
478
+ if (!((_item__highlightResult = item._highlightResult) === null || _item__highlightResult === void 0 ? void 0 : _item__highlightResult.query) || // @ts-expect-error - we should not have matchLevel as arrays here
479
+ item._highlightResult.query.matchLevel === 'none') {
480
+ return item.query;
481
+ }
482
+ return /*#__PURE__*/ React.createElement(ReverseHighlight.ReverseHighlight, {
483
+ attribute: "query",
484
+ hit: item
454
485
  });
455
- });
456
- var searchBoxContent = /*#__PURE__*/_react.default.createElement(_AutocompleteSearch.AutocompleteSearch, {
457
- inputProps: getInputProps(),
458
- clearQuery: function clearQuery() {
459
- refineSearchBox('');
460
- refineAutocomplete('');
461
- },
462
- onQueryChange: function onQueryChange(query) {
463
- refineAutocomplete(query);
464
- },
465
- query: currentRefinement || indexUiState.query || '',
466
- refine: refineSearchBox,
467
- isSearchStalled: isSearchStalled
468
- });
469
- var panelContent = /*#__PURE__*/_react.default.createElement(AutocompletePanel, getPanelProps(), PanelComponent ? /*#__PURE__*/_react.default.createElement(PanelComponent, {
470
- elements: elements,
471
- indices: indices
472
- }) : Object.keys(elements).map(function (elementId) {
473
- return elements[elementId];
474
- }));
475
- var detachedContainerClassNames = isModalDetached ? _objectSpread(_objectSpread({}, classNames), {}, {
476
- detachedContainer: (0, _instantsearchUiComponents.cx)('ais-AutocompleteDetachedContainer--modal', classNames === null || classNames === void 0 ? void 0 : classNames.detachedContainer)
477
- }) : classNames;
478
- if (isDetached) {
479
- return /*#__PURE__*/_react.default.createElement(Autocomplete, _extends({}, props, getRootProps(), {
480
- classNames: classNames
481
- }), /*#__PURE__*/_react.default.createElement(AutocompleteDetachedSearchButton, {
482
- query: currentRefinement || indexUiState.query || '',
483
- placeholder: placeholder,
484
- classNames: classNames,
485
- onClick: function onClick() {
486
- setIsModalOpen(true);
487
- setIsOpen(true);
488
- },
489
- onClear: function onClear() {
490
- refineSearchBox('');
491
- refineAutocomplete('');
492
- },
493
- translations: translations
494
- }), isModalOpen && /*#__PURE__*/_react.default.createElement(AutocompleteDetachedOverlay, {
495
- classNames: classNames,
496
- onClose: function onClose() {
497
- setIsModalOpen(false);
498
- setIsOpen(false);
499
- }
500
- }, /*#__PURE__*/_react.default.createElement(AutocompleteDetachedContainer, {
501
- classNames: detachedContainerClassNames
502
- }, /*#__PURE__*/_react.default.createElement(AutocompleteDetachedFormContainer, {
503
- classNames: classNames,
504
- onCancel: function onCancel() {
505
- setIsModalOpen(false);
506
- setIsOpen(false);
507
- },
508
- translations: translations
509
- }, searchBoxContent), panelContent)));
510
- }
511
-
512
- // Normal (non-detached) rendering
513
- return /*#__PURE__*/_react.default.createElement(Autocomplete, _extends({}, props, getRootProps(), {
514
- classNames: classNames
515
- }), searchBoxContent, panelContent);
516
486
  }
517
- function ConditionalReverseHighlight(_ref7) {
518
- var _item$_highlightResul;
519
- var item = _ref7.item;
520
- if (!((_item$_highlightResul = item._highlightResult) !== null && _item$_highlightResul !== void 0 && _item$_highlightResul.query) ||
521
- // @ts-expect-error - we should not have matchLevel as arrays here
522
- item._highlightResult.query.matchLevel === 'none') {
523
- return item.query;
524
- }
525
- return /*#__PURE__*/_react.default.createElement(_ReverseHighlight.ReverseHighlight, {
526
- attribute: "query",
527
- hit: item
528
- });
529
- }
487
+
488
+ exports.EXPERIMENTAL_Autocomplete = EXPERIMENTAL_Autocomplete;