react-instantsearch 7.22.0 → 7.23.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.
@@ -10,7 +10,7 @@ var _reactInstantsearchCore = require("react-instantsearch-core");
10
10
  var _AutocompleteSearch = require("../components/AutocompleteSearch");
11
11
  var _ReverseHighlight = require("./ReverseHighlight");
12
12
  var _excluded = ["indices", "showSuggestions", "showRecent", "searchParameters"],
13
- _excluded2 = ["indicesConfig", "refineSearchBox", "getSearchPageURL", "onSelect", "indexUiState", "isSearchPage", "panelComponent", "showRecent", "recentSearchConfig", "showSuggestions", "placeholder"];
13
+ _excluded2 = ["indicesConfig", "refineSearchBox", "getSearchPageURL", "onSelect", "indexUiState", "isSearchPage", "panelComponent", "showRecent", "recentSearchConfig", "showSuggestions", "transformItems", "placeholder"];
14
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
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
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); }
@@ -149,9 +149,12 @@ function InnerAutocomplete(_ref3) {
149
149
  showRecent = _ref3.showRecent,
150
150
  recentSearchConfig = _ref3.recentSearchConfig,
151
151
  showSuggestions = _ref3.showSuggestions,
152
+ transformItems = _ref3.transformItems,
152
153
  placeholder = _ref3.placeholder,
153
154
  props = _objectWithoutProperties(_ref3, _excluded2);
154
- var _useAutocomplete = (0, _reactInstantsearchCore.useAutocomplete)(),
155
+ var _useAutocomplete = (0, _reactInstantsearchCore.useAutocomplete)({
156
+ transformItems: transformItems
157
+ }),
155
158
  indices = _useAutocomplete.indices,
156
159
  refineAutocomplete = _useAutocomplete.refine,
157
160
  currentRefinement = _useAutocomplete.currentRefinement;
@@ -159,7 +162,8 @@ function InnerAutocomplete(_ref3) {
159
162
  showRecent: showRecent,
160
163
  query: currentRefinement,
161
164
  indices: indices,
162
- indicesConfig: indicesConfig
165
+ indicesConfig: indicesConfig,
166
+ suggestionsIndexName: showSuggestions === null || showSuggestions === void 0 ? void 0 : showSuggestions.indexName
163
167
  }),
164
168
  storage = _useStorage.storage,
165
169
  storageHits = _useStorage.storageHits,
@@ -226,7 +230,7 @@ function InnerAutocomplete(_ref3) {
226
230
  key: "recentSearches"
227
231
  });
228
232
  }
229
- indices.forEach(function (_ref6, i) {
233
+ indices.forEach(function (_ref6) {
230
234
  var indexId = _ref6.indexId,
231
235
  indexName = _ref6.indexName,
232
236
  hits = _ref6.hits;
@@ -236,21 +240,27 @@ function InnerAutocomplete(_ref3) {
236
240
  return storageHit.query === suggestionHit.query;
237
241
  });
238
242
  }) : hits;
243
+ var currentIndexConfig = indicesConfig.find(function (config) {
244
+ return config.indexName === indexName;
245
+ });
246
+ if (!currentIndexConfig) {
247
+ return;
248
+ }
239
249
  elements[elementId] = /*#__PURE__*/_react.default.createElement(AutocompleteIndex, {
240
250
  key: indexId
241
251
  // @ts-expect-error - there seems to be problems with React.ComponentType and this, but it's actually correct
242
252
  ,
243
- HeaderComponent: indicesConfig[i].headerComponent
253
+ HeaderComponent: currentIndexConfig.headerComponent
244
254
  // @ts-expect-error - there seems to be problems with React.ComponentType and this, but it's actually correct
245
255
  ,
246
- ItemComponent: indicesConfig[i].itemComponent,
256
+ ItemComponent: currentIndexConfig.itemComponent,
247
257
  items: filteredHits.map(function (item) {
248
258
  return _objectSpread(_objectSpread({}, item), {}, {
249
259
  __indexName: indexId
250
260
  });
251
261
  }),
252
262
  getItemProps: getItemProps,
253
- classNames: indicesConfig[i].classNames
263
+ classNames: currentIndexConfig.classNames
254
264
  });
255
265
  });
256
266
  return /*#__PURE__*/_react.default.createElement(Autocomplete, _extends({}, props, getRootProps()), /*#__PURE__*/_react.default.createElement(_AutocompleteSearch.AutocompleteSearch, {
@@ -4,6 +4,24 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.Chat = Chat;
7
+ Object.defineProperty(exports, "MemorizeToolType", {
8
+ enumerable: true,
9
+ get: function get() {
10
+ return _chat.MemorizeToolType;
11
+ }
12
+ });
13
+ Object.defineProperty(exports, "MemorySearchToolType", {
14
+ enumerable: true,
15
+ get: function get() {
16
+ return _chat.MemorySearchToolType;
17
+ }
18
+ });
19
+ Object.defineProperty(exports, "PonderToolType", {
20
+ enumerable: true,
21
+ get: function get() {
22
+ return _chat.PonderToolType;
23
+ }
24
+ });
7
25
  Object.defineProperty(exports, "RecommendToolType", {
8
26
  enumerable: true,
9
27
  get: function get() {
@@ -23,7 +41,7 @@ var _react = _interopRequireWildcard(require("react"));
23
41
  var _reactInstantsearchCore = require("react-instantsearch-core");
24
42
  var _useStickToBottom2 = require("../lib/useStickToBottom");
25
43
  var _SearchIndexTool = require("./chat/tools/SearchIndexTool");
26
- var _excluded = ["tools", "toggleButtonProps", "headerProps", "messagesProps", "promptProps", "itemComponent", "toggleButtonComponent", "toggleButtonIconComponent", "headerComponent", "headerTitleIconComponent", "headerCloseIconComponent", "headerMinimizeIconComponent", "headerMaximizeIconComponent", "messagesLoaderComponent", "messagesErrorComponent", "promptComponent", "promptHeaderComponent", "promptFooterComponent", "assistantMessageLeadingComponent", "assistantMessageFooterComponent", "userMessageLeadingComponent", "userMessageFooterComponent", "actionsComponent", "classNames", "translations", "title", "getSearchPageURL"];
44
+ var _excluded = ["tools", "toggleButtonProps", "headerProps", "messagesProps", "promptProps", "itemComponent", "toggleButtonComponent", "toggleButtonIconComponent", "headerComponent", "headerTitleIconComponent", "headerCloseIconComponent", "headerMinimizeIconComponent", "headerMaximizeIconComponent", "messagesLoaderComponent", "messagesErrorComponent", "promptComponent", "promptHeaderComponent", "promptFooterComponent", "assistantMessageLeadingComponent", "assistantMessageFooterComponent", "userMessageLeadingComponent", "userMessageFooterComponent", "actionsComponent", "suggestionsComponent", "classNames", "translations", "title", "getSearchPageURL"];
27
45
  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); }
28
46
  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); }
29
47
  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; }
@@ -45,7 +63,7 @@ var ChatUiComponent = (0, _instantsearchUiComponents.createChatComponent)({
45
63
  });
46
64
  function createDefaultTools(itemComponent, getSearchPageURL) {
47
65
  var _ref;
48
- return _ref = {}, _defineProperty(_ref, _chat.SearchIndexToolType, (0, _SearchIndexTool.createCarouselTool)(true, itemComponent, getSearchPageURL)), _defineProperty(_ref, _chat.RecommendToolType, (0, _SearchIndexTool.createCarouselTool)(false, itemComponent, getSearchPageURL)), _ref;
66
+ return _ref = {}, _defineProperty(_ref, _chat.SearchIndexToolType, (0, _SearchIndexTool.createCarouselTool)(true, itemComponent, getSearchPageURL)), _defineProperty(_ref, _chat.RecommendToolType, (0, _SearchIndexTool.createCarouselTool)(false, itemComponent, getSearchPageURL)), _defineProperty(_ref, _chat.MemorizeToolType, {}), _defineProperty(_ref, _chat.MemorySearchToolType, {}), _defineProperty(_ref, _chat.PonderToolType, {}), _ref;
49
67
  }
50
68
  function Chat(_ref2) {
51
69
  var userTools = _ref2.tools,
@@ -71,6 +89,7 @@ function Chat(_ref2) {
71
89
  userMessageLeadingComponent = _ref2.userMessageLeadingComponent,
72
90
  userMessageFooterComponent = _ref2.userMessageFooterComponent,
73
91
  actionsComponent = _ref2.actionsComponent,
92
+ suggestionsComponent = _ref2.suggestionsComponent,
74
93
  classNames = _ref2.classNames,
75
94
  _ref2$translations = _ref2.translations,
76
95
  translations = _ref2$translations === void 0 ? {} : _ref2$translations,
@@ -117,7 +136,8 @@ function Chat(_ref2) {
117
136
  isClearing = chatState.isClearing,
118
137
  clearMessages = chatState.clearMessages,
119
138
  onClearTransitionEnd = chatState.onClearTransitionEnd,
120
- toolsFromConnector = chatState.tools;
139
+ toolsFromConnector = chatState.tools,
140
+ suggestions = chatState.suggestions;
121
141
  if (process.env.NODE_ENV === 'development' && error) {
122
142
  throw error;
123
143
  }
@@ -128,6 +148,7 @@ function Chat(_ref2) {
128
148
  headerComponent: headerComponent,
129
149
  promptComponent: promptComponent,
130
150
  toggleButtonComponent: toggleButtonComponent,
151
+ suggestionsComponent: suggestionsComponent,
131
152
  toggleButtonProps: _objectSpread({
132
153
  open: open,
133
154
  onClick: function onClick() {
@@ -205,6 +226,14 @@ function Chat(_ref2) {
205
226
  headerComponent: promptHeaderComponent,
206
227
  footerComponent: promptFooterComponent
207
228
  }, promptProps),
229
+ suggestionsProps: {
230
+ suggestions: suggestions,
231
+ onSuggestionClick: function onSuggestionClick(suggestion) {
232
+ sendMessage({
233
+ text: suggestion
234
+ });
235
+ }
236
+ },
208
237
  classNames: classNames
209
238
  });
210
239
  }
@@ -0,0 +1,56 @@
1
+ "use strict";
2
+
3
+ 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); }
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.FilterSuggestions = FilterSuggestions;
8
+ var _instantsearchUiComponents = require("instantsearch-ui-components");
9
+ var _react = _interopRequireWildcard(require("react"));
10
+ var _reactInstantsearchCore = require("react-instantsearch-core");
11
+ var _excluded = ["agentId", "attributes", "maxSuggestions", "debounceMs", "hitsToSample", "transformItems", "itemComponent", "headerComponent", "emptyComponent", "transport"];
12
+ 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); }
13
+ 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); }
14
+ 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; }
15
+ 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; }
16
+ var FilterSuggestionsUiComponent = (0, _instantsearchUiComponents.createFilterSuggestionsComponent)({
17
+ createElement: _react.createElement,
18
+ Fragment: _react.Fragment
19
+ });
20
+ function FilterSuggestions(_ref) {
21
+ var agentId = _ref.agentId,
22
+ attributes = _ref.attributes,
23
+ maxSuggestions = _ref.maxSuggestions,
24
+ debounceMs = _ref.debounceMs,
25
+ hitsToSample = _ref.hitsToSample,
26
+ transformItems = _ref.transformItems,
27
+ itemComponent = _ref.itemComponent,
28
+ headerComponent = _ref.headerComponent,
29
+ emptyComponent = _ref.emptyComponent,
30
+ transport = _ref.transport,
31
+ props = _objectWithoutProperties(_ref, _excluded);
32
+ var _useFilterSuggestions = (0, _reactInstantsearchCore.useFilterSuggestions)({
33
+ agentId: agentId,
34
+ attributes: attributes,
35
+ maxSuggestions: maxSuggestions,
36
+ debounceMs: debounceMs,
37
+ hitsToSample: hitsToSample,
38
+ transformItems: transformItems,
39
+ transport: transport
40
+ }, {
41
+ $$widgetType: 'ais.filterSuggestions'
42
+ }),
43
+ suggestions = _useFilterSuggestions.suggestions,
44
+ isLoading = _useFilterSuggestions.isLoading,
45
+ refine = _useFilterSuggestions.refine;
46
+ var uiProps = {
47
+ suggestions: suggestions,
48
+ isLoading: isLoading,
49
+ refine: refine,
50
+ skeletonCount: maxSuggestions,
51
+ itemComponent: itemComponent,
52
+ headerComponent: headerComponent,
53
+ emptyComponent: emptyComponent
54
+ };
55
+ return /*#__PURE__*/_react.default.createElement(FilterSuggestionsUiComponent, _extends({}, props, uiProps));
56
+ }
@@ -277,4 +277,15 @@ Object.keys(_TrendingItems).forEach(function (key) {
277
277
  return _TrendingItems[key];
278
278
  }
279
279
  });
280
+ });
281
+ var _FilterSuggestions = require("./FilterSuggestions");
282
+ Object.keys(_FilterSuggestions).forEach(function (key) {
283
+ if (key === "default" || key === "__esModule") return;
284
+ if (key in exports && exports[key] === _FilterSuggestions[key]) return;
285
+ Object.defineProperty(exports, key, {
286
+ enumerable: true,
287
+ get: function get() {
288
+ return _FilterSuggestions[key];
289
+ }
290
+ });
280
291
  });
@@ -7,9 +7,12 @@ var _exportNames = {
7
7
  Chat: true,
8
8
  SearchIndexToolType: true,
9
9
  RecommendToolType: true,
10
+ MemorizeToolType: true,
11
+ MemorySearchToolType: true,
12
+ PonderToolType: true,
10
13
  createDefaultTools: true
11
14
  };
12
- exports.createDefaultTools = exports.SearchIndexToolType = exports.RecommendToolType = exports.Chat = void 0;
15
+ exports.createDefaultTools = exports.SearchIndexToolType = exports.RecommendToolType = exports.PonderToolType = exports.MemorySearchToolType = exports.MemorizeToolType = exports.Chat = void 0;
13
16
  var _Autocomplete = require("./Autocomplete");
14
17
  Object.keys(_Autocomplete).forEach(function (key) {
15
18
  if (key === "default" || key === "__esModule") return;
@@ -34,6 +37,18 @@ Object.keys(_Breadcrumb).forEach(function (key) {
34
37
  }
35
38
  });
36
39
  });
40
+ var _FilterSuggestions = require("./FilterSuggestions");
41
+ Object.keys(_FilterSuggestions).forEach(function (key) {
42
+ if (key === "default" || key === "__esModule") return;
43
+ if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
44
+ if (key in exports && exports[key] === _FilterSuggestions[key]) return;
45
+ Object.defineProperty(exports, key, {
46
+ enumerable: true,
47
+ get: function get() {
48
+ return _FilterSuggestions[key];
49
+ }
50
+ });
51
+ });
37
52
  var _ClearRefinements = require("./ClearRefinements");
38
53
  Object.keys(_ClearRefinements).forEach(function (key) {
39
54
  if (key === "default" || key === "__esModule") return;
@@ -303,4 +318,7 @@ var Chat = exports.Chat = function Chat() {
303
318
  };
304
319
  var SearchIndexToolType = exports.SearchIndexToolType = undefined;
305
320
  var RecommendToolType = exports.RecommendToolType = undefined;
321
+ var MemorizeToolType = exports.MemorizeToolType = undefined;
322
+ var MemorySearchToolType = exports.MemorySearchToolType = undefined;
323
+ var PonderToolType = exports.PonderToolType = undefined;
306
324
  var createDefaultTools = exports.createDefaultTools = function createDefaultTools() {};
@@ -3,6 +3,7 @@ import { useAutocomplete } from 'react-instantsearch-core';
3
3
  import type { PlainSearchParameters } from 'algoliasearch-helper';
4
4
  import type { AutocompleteIndexClassNames, AutocompleteIndexConfig, AutocompleteClassNames, AutocompleteIndexProps } from 'instantsearch-ui-components';
5
5
  import type { BaseHit, IndexUiState } from 'instantsearch.js';
6
+ import type { TransformItemsIndicesConfig } from 'instantsearch.js/es/connectors/autocomplete/connectAutocomplete';
6
7
  import type { ComponentProps } from 'react';
7
8
  type AutocompleteSearchParameters = Omit<PlainSearchParameters, 'index'>;
8
9
  type IndexConfig<TItem extends BaseHit> = AutocompleteIndexConfig<TItem> & {
@@ -40,6 +41,7 @@ export type AutocompleteProps<TItem extends BaseHit> = ComponentProps<'div'> & {
40
41
  };
41
42
  getSearchPageURL?: (nextUiState: IndexUiState) => string;
42
43
  onSelect?: AutocompleteIndexConfig<TItem>['onSelect'];
44
+ transformItems?: (indices: TransformItemsIndicesConfig[]) => TransformItemsIndicesConfig[];
43
45
  panelComponent?: (props: {
44
46
  elements: PanelElements;
45
47
  indices: ReturnType<typeof useAutocomplete>['indices'];
@@ -1,5 +1,5 @@
1
1
  var _excluded = ["indices", "showSuggestions", "showRecent", "searchParameters"],
2
- _excluded2 = ["indicesConfig", "refineSearchBox", "getSearchPageURL", "onSelect", "indexUiState", "isSearchPage", "panelComponent", "showRecent", "recentSearchConfig", "showSuggestions", "placeholder"];
2
+ _excluded2 = ["indicesConfig", "refineSearchBox", "getSearchPageURL", "onSelect", "indexUiState", "isSearchPage", "panelComponent", "showRecent", "recentSearchConfig", "showSuggestions", "transformItems", "placeholder"];
3
3
  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); }
4
4
  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); }
5
5
  function _toConsumableArray(r) { return _arrayWithoutHoles(r) || _iterableToArray(r) || _unsupportedIterableToArray(r) || _nonIterableSpread(); }
@@ -142,9 +142,12 @@ function InnerAutocomplete(_ref3) {
142
142
  showRecent = _ref3.showRecent,
143
143
  recentSearchConfig = _ref3.recentSearchConfig,
144
144
  showSuggestions = _ref3.showSuggestions,
145
+ transformItems = _ref3.transformItems,
145
146
  placeholder = _ref3.placeholder,
146
147
  props = _objectWithoutProperties(_ref3, _excluded2);
147
- var _useAutocomplete = useAutocomplete(),
148
+ var _useAutocomplete = useAutocomplete({
149
+ transformItems: transformItems
150
+ }),
148
151
  indices = _useAutocomplete.indices,
149
152
  refineAutocomplete = _useAutocomplete.refine,
150
153
  currentRefinement = _useAutocomplete.currentRefinement;
@@ -152,7 +155,8 @@ function InnerAutocomplete(_ref3) {
152
155
  showRecent: showRecent,
153
156
  query: currentRefinement,
154
157
  indices: indices,
155
- indicesConfig: indicesConfig
158
+ indicesConfig: indicesConfig,
159
+ suggestionsIndexName: showSuggestions === null || showSuggestions === void 0 ? void 0 : showSuggestions.indexName
156
160
  }),
157
161
  storage = _useStorage.storage,
158
162
  storageHits = _useStorage.storageHits,
@@ -219,7 +223,7 @@ function InnerAutocomplete(_ref3) {
219
223
  key: "recentSearches"
220
224
  });
221
225
  }
222
- indices.forEach(function (_ref6, i) {
226
+ indices.forEach(function (_ref6) {
223
227
  var indexId = _ref6.indexId,
224
228
  indexName = _ref6.indexName,
225
229
  hits = _ref6.hits;
@@ -229,21 +233,27 @@ function InnerAutocomplete(_ref3) {
229
233
  return storageHit.query === suggestionHit.query;
230
234
  });
231
235
  }) : hits;
236
+ var currentIndexConfig = indicesConfig.find(function (config) {
237
+ return config.indexName === indexName;
238
+ });
239
+ if (!currentIndexConfig) {
240
+ return;
241
+ }
232
242
  elements[elementId] = /*#__PURE__*/React.createElement(AutocompleteIndex, {
233
243
  key: indexId
234
244
  // @ts-expect-error - there seems to be problems with React.ComponentType and this, but it's actually correct
235
245
  ,
236
- HeaderComponent: indicesConfig[i].headerComponent
246
+ HeaderComponent: currentIndexConfig.headerComponent
237
247
  // @ts-expect-error - there seems to be problems with React.ComponentType and this, but it's actually correct
238
248
  ,
239
- ItemComponent: indicesConfig[i].itemComponent,
249
+ ItemComponent: currentIndexConfig.itemComponent,
240
250
  items: filteredHits.map(function (item) {
241
251
  return _objectSpread(_objectSpread({}, item), {}, {
242
252
  __indexName: indexId
243
253
  });
244
254
  }),
245
255
  getItemProps: getItemProps,
246
- classNames: indicesConfig[i].classNames
256
+ classNames: currentIndexConfig.classNames
247
257
  });
248
258
  });
249
259
  return /*#__PURE__*/React.createElement(Autocomplete, _extends({}, props, getRootProps()), /*#__PURE__*/React.createElement(AutocompleteSearch, {
@@ -1,16 +1,16 @@
1
- import { SearchIndexToolType, RecommendToolType } from 'instantsearch.js/es/lib/chat';
1
+ import { SearchIndexToolType, RecommendToolType, MemorizeToolType, MemorySearchToolType, PonderToolType } from 'instantsearch.js/es/lib/chat';
2
2
  import React from 'react';
3
- export { SearchIndexToolType, RecommendToolType };
3
+ export { SearchIndexToolType, RecommendToolType, MemorizeToolType, MemorySearchToolType, PonderToolType, };
4
4
  import type { ChatProps as ChatUiProps, RecommendComponentProps, RecordWithObjectID, UserClientSideTool, UserClientSideTools, ChatMessageProps } from 'instantsearch-ui-components';
5
5
  import type { IndexUiState } from 'instantsearch.js';
6
6
  import type { UIMessage } from 'instantsearch.js/es/lib/chat';
7
7
  import type { UseChatProps } from 'react-instantsearch-core';
8
8
  export declare function createDefaultTools<TObject extends RecordWithObjectID>(itemComponent?: ItemComponent<TObject>, getSearchPageURL?: (nextUiState: IndexUiState) => string): UserClientSideTools;
9
9
  type ItemComponent<TObject> = RecommendComponentProps<TObject>['itemComponent'];
10
- type UiProps = Pick<ChatUiProps, 'open' | 'headerProps' | 'toggleButtonProps' | 'messagesProps' | 'promptProps' | 'headerComponent' | 'promptComponent'>;
10
+ type UiProps = Pick<ChatUiProps, 'open' | 'headerProps' | 'toggleButtonProps' | 'messagesProps' | 'promptProps' | 'suggestionsProps' | 'headerComponent' | 'promptComponent' | 'suggestionsComponent'>;
11
11
  type UserToggleButtonProps = Omit<ChatUiProps['toggleButtonProps'], 'open' | 'onClick'>;
12
12
  type UserHeaderProps = Omit<ChatUiProps['headerProps'], 'onClose'>;
13
- type UserMessagesProps = Omit<ChatUiProps['messagesProps'], 'messages' | 'tools' | 'indexUiState' | 'setIndexUiState' | 'scrollRef' | 'contentRef' | 'messageComponent' | 'leadingComponent' | 'footerComponent' | 'translations' | 'classNames'>;
13
+ type UserMessagesProps = Omit<ChatUiProps['messagesProps'], 'messages' | 'tools' | 'indexUiState' | 'setIndexUiState' | 'scrollRef' | 'contentRef' | 'messageComponent' | 'leadingComponent' | 'footerComponent' | 'suggestionsComponent' | 'translations' | 'classNames'>;
14
14
  type UserPromptProps = Omit<ChatUiProps['promptProps'], 'value' | 'onInput' | 'onSubmit' | 'headerComponent' | 'footerComponent'>;
15
15
  export type Tool = UserClientSideTool;
16
16
  export type Tools = UserClientSideTools;
@@ -39,6 +39,7 @@ export type ChatProps<TObject, TUiMessage extends UIMessage = UIMessage> = Omit<
39
39
  assistantMessageFooterComponent?: ChatMessageProps['footerComponent'];
40
40
  userMessageLeadingComponent?: ChatMessageProps['leadingComponent'];
41
41
  userMessageFooterComponent?: ChatMessageProps['footerComponent'];
42
+ suggestionsComponent?: ChatUiProps['suggestionsComponent'];
42
43
  translations?: Partial<{
43
44
  prompt: ChatUiProps['promptProps']['translations'];
44
45
  header: ChatUiProps['headerProps']['translations'];
@@ -46,4 +47,4 @@ export type ChatProps<TObject, TUiMessage extends UIMessage = UIMessage> = Omit<
46
47
  messages: ChatUiProps['messagesProps']['translations'];
47
48
  }>;
48
49
  };
49
- export declare function Chat<TObject extends RecordWithObjectID, TUiMessage extends UIMessage>({ tools: userTools, toggleButtonProps, headerProps, messagesProps, promptProps, itemComponent, toggleButtonComponent, toggleButtonIconComponent, headerComponent, headerTitleIconComponent, headerCloseIconComponent, headerMinimizeIconComponent, headerMaximizeIconComponent, messagesLoaderComponent, messagesErrorComponent, promptComponent, promptHeaderComponent, promptFooterComponent, assistantMessageLeadingComponent, assistantMessageFooterComponent, userMessageLeadingComponent, userMessageFooterComponent, actionsComponent, classNames, translations, title, getSearchPageURL, ...props }: ChatProps<TObject, TUiMessage>): React.JSX.Element;
50
+ export declare function Chat<TObject extends RecordWithObjectID, TUiMessage extends UIMessage>({ tools: userTools, toggleButtonProps, headerProps, messagesProps, promptProps, itemComponent, toggleButtonComponent, toggleButtonIconComponent, headerComponent, headerTitleIconComponent, headerCloseIconComponent, headerMinimizeIconComponent, headerMaximizeIconComponent, messagesLoaderComponent, messagesErrorComponent, promptComponent, promptHeaderComponent, promptFooterComponent, assistantMessageLeadingComponent, assistantMessageFooterComponent, userMessageLeadingComponent, userMessageFooterComponent, actionsComponent, suggestionsComponent, classNames, translations, title, getSearchPageURL, ...props }: ChatProps<TObject, TUiMessage>): React.JSX.Element;
@@ -1,4 +1,4 @@
1
- var _excluded = ["tools", "toggleButtonProps", "headerProps", "messagesProps", "promptProps", "itemComponent", "toggleButtonComponent", "toggleButtonIconComponent", "headerComponent", "headerTitleIconComponent", "headerCloseIconComponent", "headerMinimizeIconComponent", "headerMaximizeIconComponent", "messagesLoaderComponent", "messagesErrorComponent", "promptComponent", "promptHeaderComponent", "promptFooterComponent", "assistantMessageLeadingComponent", "assistantMessageFooterComponent", "userMessageLeadingComponent", "userMessageFooterComponent", "actionsComponent", "classNames", "translations", "title", "getSearchPageURL"];
1
+ var _excluded = ["tools", "toggleButtonProps", "headerProps", "messagesProps", "promptProps", "itemComponent", "toggleButtonComponent", "toggleButtonIconComponent", "headerComponent", "headerTitleIconComponent", "headerCloseIconComponent", "headerMinimizeIconComponent", "headerMaximizeIconComponent", "messagesLoaderComponent", "messagesErrorComponent", "promptComponent", "promptHeaderComponent", "promptFooterComponent", "assistantMessageLeadingComponent", "assistantMessageFooterComponent", "userMessageLeadingComponent", "userMessageFooterComponent", "actionsComponent", "suggestionsComponent", "classNames", "translations", "title", "getSearchPageURL"];
2
2
  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); }
3
3
  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; }
4
4
  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; }
@@ -14,19 +14,19 @@ function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object
14
14
  function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : i + ""; }
15
15
  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); }
16
16
  import { createChatComponent } from 'instantsearch-ui-components';
17
- import { SearchIndexToolType, RecommendToolType } from "instantsearch.js/es/lib/chat/index.js";
17
+ import { SearchIndexToolType, RecommendToolType, MemorizeToolType, MemorySearchToolType, PonderToolType } from "instantsearch.js/es/lib/chat/index.js";
18
18
  import React, { createElement, Fragment } from 'react';
19
19
  import { useInstantSearch, useChat } from 'react-instantsearch-core';
20
20
  import { useStickToBottom } from "../lib/useStickToBottom.js";
21
21
  import { createCarouselTool } from "./chat/tools/SearchIndexTool.js";
22
- export { SearchIndexToolType, RecommendToolType };
22
+ export { SearchIndexToolType, RecommendToolType, MemorizeToolType, MemorySearchToolType, PonderToolType };
23
23
  var ChatUiComponent = createChatComponent({
24
24
  createElement: createElement,
25
25
  Fragment: Fragment
26
26
  });
27
27
  export function createDefaultTools(itemComponent, getSearchPageURL) {
28
28
  var _ref;
29
- return _ref = {}, _defineProperty(_ref, SearchIndexToolType, createCarouselTool(true, itemComponent, getSearchPageURL)), _defineProperty(_ref, RecommendToolType, createCarouselTool(false, itemComponent, getSearchPageURL)), _ref;
29
+ return _ref = {}, _defineProperty(_ref, SearchIndexToolType, createCarouselTool(true, itemComponent, getSearchPageURL)), _defineProperty(_ref, RecommendToolType, createCarouselTool(false, itemComponent, getSearchPageURL)), _defineProperty(_ref, MemorizeToolType, {}), _defineProperty(_ref, MemorySearchToolType, {}), _defineProperty(_ref, PonderToolType, {}), _ref;
30
30
  }
31
31
  export function Chat(_ref2) {
32
32
  var userTools = _ref2.tools,
@@ -52,6 +52,7 @@ export function Chat(_ref2) {
52
52
  userMessageLeadingComponent = _ref2.userMessageLeadingComponent,
53
53
  userMessageFooterComponent = _ref2.userMessageFooterComponent,
54
54
  actionsComponent = _ref2.actionsComponent,
55
+ suggestionsComponent = _ref2.suggestionsComponent,
55
56
  classNames = _ref2.classNames,
56
57
  _ref2$translations = _ref2.translations,
57
58
  translations = _ref2$translations === void 0 ? {} : _ref2$translations,
@@ -98,7 +99,8 @@ export function Chat(_ref2) {
98
99
  isClearing = chatState.isClearing,
99
100
  clearMessages = chatState.clearMessages,
100
101
  onClearTransitionEnd = chatState.onClearTransitionEnd,
101
- toolsFromConnector = chatState.tools;
102
+ toolsFromConnector = chatState.tools,
103
+ suggestions = chatState.suggestions;
102
104
  if (process.env.NODE_ENV === 'development' && error) {
103
105
  throw error;
104
106
  }
@@ -109,6 +111,7 @@ export function Chat(_ref2) {
109
111
  headerComponent: headerComponent,
110
112
  promptComponent: promptComponent,
111
113
  toggleButtonComponent: toggleButtonComponent,
114
+ suggestionsComponent: suggestionsComponent,
112
115
  toggleButtonProps: _objectSpread({
113
116
  open: open,
114
117
  onClick: function onClick() {
@@ -186,6 +189,14 @@ export function Chat(_ref2) {
186
189
  headerComponent: promptHeaderComponent,
187
190
  footerComponent: promptFooterComponent
188
191
  }, promptProps),
192
+ suggestionsProps: {
193
+ suggestions: suggestions,
194
+ onSuggestionClick: function onSuggestionClick(suggestion) {
195
+ sendMessage({
196
+ text: suggestion
197
+ });
198
+ }
199
+ },
189
200
  classNames: classNames
190
201
  });
191
202
  }
@@ -0,0 +1,20 @@
1
+ import React from 'react';
2
+ import type { FilterSuggestionsProps as FilterSuggestionsUiComponentProps } from 'instantsearch-ui-components';
3
+ import type { UseFilterSuggestionsProps } from 'react-instantsearch-core';
4
+ type UiProps = Pick<FilterSuggestionsUiComponentProps, 'suggestions' | 'isLoading' | 'refine' | 'skeletonCount' | 'itemComponent' | 'headerComponent' | 'emptyComponent'>;
5
+ export type FilterSuggestionsProps = Omit<FilterSuggestionsUiComponentProps, keyof UiProps> & UseFilterSuggestionsProps & {
6
+ /**
7
+ * Component to render each suggestion item.
8
+ */
9
+ itemComponent?: FilterSuggestionsUiComponentProps['itemComponent'];
10
+ /**
11
+ * Component to render the header. Set to `false` to disable the header.
12
+ */
13
+ headerComponent?: FilterSuggestionsUiComponentProps['headerComponent'];
14
+ /**
15
+ * Component to render when there are no suggestions.
16
+ */
17
+ emptyComponent?: FilterSuggestionsUiComponentProps['emptyComponent'];
18
+ };
19
+ export declare function FilterSuggestions({ agentId, attributes, maxSuggestions, debounceMs, hitsToSample, transformItems, itemComponent, headerComponent, emptyComponent, transport, ...props }: FilterSuggestionsProps): React.JSX.Element;
20
+ export {};
@@ -0,0 +1,48 @@
1
+ var _excluded = ["agentId", "attributes", "maxSuggestions", "debounceMs", "hitsToSample", "transformItems", "itemComponent", "headerComponent", "emptyComponent", "transport"];
2
+ 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); }
3
+ 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; }
4
+ 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; }
5
+ import { createFilterSuggestionsComponent } from 'instantsearch-ui-components';
6
+ import React, { createElement, Fragment } from 'react';
7
+ import { useFilterSuggestions } from 'react-instantsearch-core';
8
+ var FilterSuggestionsUiComponent = createFilterSuggestionsComponent({
9
+ createElement: createElement,
10
+ Fragment: Fragment
11
+ });
12
+ export function FilterSuggestions(_ref) {
13
+ var agentId = _ref.agentId,
14
+ attributes = _ref.attributes,
15
+ maxSuggestions = _ref.maxSuggestions,
16
+ debounceMs = _ref.debounceMs,
17
+ hitsToSample = _ref.hitsToSample,
18
+ transformItems = _ref.transformItems,
19
+ itemComponent = _ref.itemComponent,
20
+ headerComponent = _ref.headerComponent,
21
+ emptyComponent = _ref.emptyComponent,
22
+ transport = _ref.transport,
23
+ props = _objectWithoutProperties(_ref, _excluded);
24
+ var _useFilterSuggestions = useFilterSuggestions({
25
+ agentId: agentId,
26
+ attributes: attributes,
27
+ maxSuggestions: maxSuggestions,
28
+ debounceMs: debounceMs,
29
+ hitsToSample: hitsToSample,
30
+ transformItems: transformItems,
31
+ transport: transport
32
+ }, {
33
+ $$widgetType: 'ais.filterSuggestions'
34
+ }),
35
+ suggestions = _useFilterSuggestions.suggestions,
36
+ isLoading = _useFilterSuggestions.isLoading,
37
+ refine = _useFilterSuggestions.refine;
38
+ var uiProps = {
39
+ suggestions: suggestions,
40
+ isLoading: isLoading,
41
+ refine: refine,
42
+ skeletonCount: maxSuggestions,
43
+ itemComponent: itemComponent,
44
+ headerComponent: headerComponent,
45
+ emptyComponent: emptyComponent
46
+ };
47
+ return /*#__PURE__*/React.createElement(FilterSuggestionsUiComponent, _extends({}, props, uiProps));
48
+ }
@@ -23,3 +23,4 @@ export * from './SortBy';
23
23
  export * from './Stats';
24
24
  export * from './ToggleRefinement';
25
25
  export * from './TrendingItems';
26
+ export * from './FilterSuggestions';
@@ -22,4 +22,5 @@ export * from "./Snippet.js";
22
22
  export * from "./SortBy.js";
23
23
  export * from "./Stats.js";
24
24
  export * from "./ToggleRefinement.js";
25
- export * from "./TrendingItems.js";
25
+ export * from "./TrendingItems.js";
26
+ export * from "./FilterSuggestions.js";
@@ -1,8 +1,12 @@
1
1
  export * from './Autocomplete';
2
2
  export * from './Breadcrumb';
3
3
  export declare const Chat: () => never;
4
+ export * from './FilterSuggestions';
4
5
  export declare const SearchIndexToolType: undefined;
5
6
  export declare const RecommendToolType: undefined;
7
+ export declare const MemorizeToolType: undefined;
8
+ export declare const MemorySearchToolType: undefined;
9
+ export declare const PonderToolType: undefined;
6
10
  export declare const createDefaultTools: () => void;
7
11
  export * from './ClearRefinements';
8
12
  export * from './CurrentRefinements';
@@ -3,8 +3,12 @@ export * from "./Breadcrumb.js";
3
3
  export var Chat = function Chat() {
4
4
  throw new Error("\"<Chat>\" is not available from the UMD build.\n\nPlease use React InstantSearch with a packaging system:\nhttps://www.algolia.com/doc/guides/building-search-ui/installation/react/#install-react-instantsearch-as-an-npm-package");
5
5
  };
6
+ export * from "./FilterSuggestions.js";
6
7
  export var SearchIndexToolType = undefined;
7
8
  export var RecommendToolType = undefined;
9
+ export var MemorizeToolType = undefined;
10
+ export var MemorySearchToolType = undefined;
11
+ export var PonderToolType = undefined;
8
12
  export var createDefaultTools = function createDefaultTools() {};
9
13
  export * from "./ClearRefinements.js";
10
14
  export * from "./CurrentRefinements.js";