react-instantsearch 7.18.0 → 7.20.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.
@@ -0,0 +1,27 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.ReverseHighlight = ReverseHighlight;
7
+ var _instantsearchUiComponents = require("instantsearch-ui-components");
8
+ var _react = _interopRequireDefault(require("react"));
9
+ var _InternalHighlight = require("./InternalHighlight");
10
+ var _excluded = ["classNames"];
11
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
12
+ 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); }
13
+ 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; }
14
+ 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; }
15
+ function ReverseHighlight(_ref) {
16
+ var _ref$classNames = _ref.classNames,
17
+ classNames = _ref$classNames === void 0 ? {} : _ref$classNames,
18
+ props = _objectWithoutProperties(_ref, _excluded);
19
+ return /*#__PURE__*/_react.default.createElement(_InternalHighlight.InternalHighlight, _extends({
20
+ classNames: {
21
+ root: (0, _instantsearchUiComponents.cx)('ais-ReverseHighlight', classNames.root),
22
+ highlighted: (0, _instantsearchUiComponents.cx)('ais-ReverseHighlight-highlighted', classNames.highlighted),
23
+ nonHighlighted: (0, _instantsearchUiComponents.cx)('ais-ReverseHighlight-nonHighlighted', classNames.nonHighlighted),
24
+ separator: (0, _instantsearchUiComponents.cx)('ais-ReverseHighlight-separator', classNames.separator)
25
+ }
26
+ }, props));
27
+ }
@@ -1,6 +1,5 @@
1
1
  "use strict";
2
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
3
  Object.defineProperty(exports, "__esModule", {
5
4
  value: true
6
5
  });
@@ -9,14 +8,11 @@ var _instantsearchUiComponents = require("instantsearch-ui-components");
9
8
  var _react = _interopRequireWildcard(require("react"));
10
9
  var _reactInstantsearchCore = require("react-instantsearch-core");
11
10
  var _AutocompleteSearch = require("../components/AutocompleteSearch");
12
- var _excluded = ["indices", "showSuggestions"],
13
- _excluded2 = ["indicesConfig", "refineSearchBox", "getSearchPageURL", "onSelect", "indexUiState", "isSearchPage"];
11
+ var _ReverseHighlight = require("./ReverseHighlight");
12
+ var _excluded = ["indices", "showSuggestions", "showRecent", "searchParameters"],
13
+ _excluded2 = ["indicesConfig", "refineSearchBox", "getSearchPageURL", "onSelect", "indexUiState", "isSearchPage", "panelComponent", "showRecent", "showSuggestions"];
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
- 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; }
16
- 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; }
17
- 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; }
18
- function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : i + ""; }
19
- 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); }
15
+ 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); }
20
16
  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); }
21
17
  function _toConsumableArray(r) { return _arrayWithoutHoles(r) || _iterableToArray(r) || _unsupportedIterableToArray(r) || _nonIterableSpread(); }
22
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."); }
@@ -24,6 +20,11 @@ function _unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r)
24
20
  function _iterableToArray(r) { if ("undefined" != typeof Symbol && null != r[Symbol.iterator] || null != r["@@iterator"]) return Array.from(r); }
25
21
  function _arrayWithoutHoles(r) { if (Array.isArray(r)) return _arrayLikeToArray(r); }
26
22
  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; }
23
+ 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; }
24
+ 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; }
25
+ 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; }
26
+ function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : i + ""; }
27
+ 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); }
27
28
  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; }
28
29
  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; }
29
30
  var Autocomplete = (0, _instantsearchUiComponents.createAutocompleteComponent)({
@@ -42,6 +43,10 @@ var AutocompleteSuggestion = (0, _instantsearchUiComponents.createAutocompleteSu
42
43
  createElement: _react.createElement,
43
44
  Fragment: _react.Fragment
44
45
  });
46
+ var AutocompleteRecentSearch = (0, _instantsearchUiComponents.createAutocompleteRecentSearchComponent)({
47
+ createElement: _react.createElement,
48
+ Fragment: _react.Fragment
49
+ });
45
50
  var usePropGetters = (0, _instantsearchUiComponents.createAutocompletePropGetters)({
46
51
  useEffect: _react.useEffect,
47
52
  useId: _react.useId,
@@ -49,13 +54,17 @@ var usePropGetters = (0, _instantsearchUiComponents.createAutocompletePropGetter
49
54
  useRef: _react.useRef,
50
55
  useState: _react.useState
51
56
  });
52
- var _ref2 = /*#__PURE__*/_react.default.createElement(_reactInstantsearchCore.Configure, {
53
- hitsPerPage: 5
57
+ var useStorage = (0, _instantsearchUiComponents.createAutocompleteStorage)({
58
+ useEffect: _react.useEffect,
59
+ useMemo: _react.useMemo,
60
+ useState: _react.useState
54
61
  });
55
62
  function EXPERIMENTAL_Autocomplete(_ref) {
56
63
  var _ref$indices = _ref.indices,
57
64
  indices = _ref$indices === void 0 ? [] : _ref$indices,
58
65
  showSuggestions = _ref.showSuggestions,
66
+ showRecent = _ref.showRecent,
67
+ userSearchParameters = _ref.searchParameters,
59
68
  props = _objectWithoutProperties(_ref, _excluded);
60
69
  var _useInstantSearch = (0, _reactInstantsearchCore.useInstantSearch)(),
61
70
  indexUiState = _useInstantSearch.indexUiState,
@@ -65,13 +74,25 @@ function EXPERIMENTAL_Autocomplete(_ref) {
65
74
  $$widgetType: 'ais.autocomplete'
66
75
  }),
67
76
  refine = _useSearchBox.refine;
77
+ var searchParameters = _objectSpread({
78
+ hitsPerPage: 5
79
+ }, userSearchParameters);
68
80
  var indicesConfig = _toConsumableArray(indices);
69
81
  if (showSuggestions !== null && showSuggestions !== void 0 && showSuggestions.indexName) {
70
82
  var _showSuggestions$clas, _showSuggestions$clas2, _showSuggestions$clas3, _showSuggestions$clas4;
71
83
  indicesConfig.unshift({
72
84
  indexName: showSuggestions.indexName,
73
85
  headerComponent: showSuggestions.headerComponent,
74
- itemComponent: showSuggestions.itemComponent || AutocompleteSuggestion,
86
+ itemComponent: showSuggestions.itemComponent || function (_ref2) {
87
+ var item = _ref2.item,
88
+ onSelect = _ref2.onSelect;
89
+ return /*#__PURE__*/_react.default.createElement(AutocompleteSuggestion, {
90
+ item: item,
91
+ onSelect: onSelect
92
+ }, /*#__PURE__*/_react.default.createElement(ConditionalReverseHighlight, {
93
+ item: item
94
+ }));
95
+ },
75
96
  classNames: {
76
97
  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),
77
98
  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),
@@ -89,16 +110,18 @@ function EXPERIMENTAL_Autocomplete(_ref) {
89
110
  }, [indexRenderState]);
90
111
  return /*#__PURE__*/_react.default.createElement(_react.Fragment, null, /*#__PURE__*/_react.default.createElement(_reactInstantsearchCore.Index, {
91
112
  EXPERIMENTAL_isolated: true
92
- }, _ref2, indicesConfig.map(function (index) {
113
+ }, /*#__PURE__*/_react.default.createElement(_reactInstantsearchCore.Configure, searchParameters), indicesConfig.map(function (index) {
93
114
  return /*#__PURE__*/_react.default.createElement(_reactInstantsearchCore.Index, {
94
115
  key: index.indexName,
95
116
  indexName: index.indexName
96
- });
117
+ }, /*#__PURE__*/_react.default.createElement(_reactInstantsearchCore.Configure, index.searchParameters));
97
118
  }), /*#__PURE__*/_react.default.createElement(InnerAutocomplete, _extends({}, props, {
98
119
  indicesConfig: indicesConfig,
99
120
  refineSearchBox: refine,
100
121
  indexUiState: indexUiState,
101
- isSearchPage: isSearchPage
122
+ isSearchPage: isSearchPage,
123
+ showRecent: showRecent,
124
+ showSuggestions: showSuggestions
102
125
  }))));
103
126
  }
104
127
  function InnerAutocomplete(_ref3) {
@@ -108,16 +131,31 @@ function InnerAutocomplete(_ref3) {
108
131
  userOnSelect = _ref3.onSelect,
109
132
  indexUiState = _ref3.indexUiState,
110
133
  isSearchPage = _ref3.isSearchPage,
134
+ PanelComponent = _ref3.panelComponent,
135
+ showRecent = _ref3.showRecent,
136
+ showSuggestions = _ref3.showSuggestions,
111
137
  props = _objectWithoutProperties(_ref3, _excluded2);
112
138
  var _useAutocomplete = (0, _reactInstantsearchCore.useAutocomplete)(),
113
139
  indices = _useAutocomplete.indices,
114
- refineAutocomplete = _useAutocomplete.refine;
115
- var _usePropGetters = usePropGetters({
140
+ refineAutocomplete = _useAutocomplete.refine,
141
+ currentRefinement = _useAutocomplete.currentRefinement;
142
+ var _useStorage = useStorage({
143
+ showRecent: showRecent,
144
+ query: currentRefinement,
116
145
  indices: indices,
117
- indicesConfig: indicesConfig,
146
+ indicesConfig: indicesConfig
147
+ }),
148
+ storage = _useStorage.storage,
149
+ storageHits = _useStorage.storageHits,
150
+ indicesForPropGetters = _useStorage.indicesForPropGetters,
151
+ indicesConfigForPropGetters = _useStorage.indicesConfigForPropGetters;
152
+ var _usePropGetters = usePropGetters({
153
+ indices: indicesForPropGetters,
154
+ indicesConfig: indicesConfigForPropGetters,
118
155
  onRefine: function onRefine(query) {
119
156
  refineAutocomplete(query);
120
157
  refineSearchBox(query);
158
+ storage.onAdd(query);
121
159
  },
122
160
  onSelect: userOnSelect !== null && userOnSelect !== void 0 ? userOnSelect : function (_ref4) {
123
161
  var query = _ref4.query,
@@ -140,30 +178,79 @@ function InnerAutocomplete(_ref3) {
140
178
  getItemProps = _usePropGetters.getItemProps,
141
179
  getPanelProps = _usePropGetters.getPanelProps,
142
180
  getRootProps = _usePropGetters.getRootProps;
143
- return /*#__PURE__*/_react.default.createElement(Autocomplete, _extends({}, props, getRootProps()), /*#__PURE__*/_react.default.createElement(_AutocompleteSearch.AutocompleteSearch, {
144
- inputProps: getInputProps(),
145
- clearQuery: function clearQuery() {
146
- refineSearchBox('');
147
- refineAutocomplete('');
148
- }
149
- }), /*#__PURE__*/_react.default.createElement(AutocompletePanel, getPanelProps(), indices.map(function (_ref5, index) {
150
- var indexId = _ref5.indexId,
151
- hits = _ref5.hits;
152
- return /*#__PURE__*/_react.default.createElement(AutocompleteIndex, {
181
+ var AutocompleteRecentSearchComponent = _typeof(showRecent) === 'object' && showRecent.itemComponent || AutocompleteRecentSearch;
182
+ var elements = {};
183
+ if (showRecent) {
184
+ elements.recent = /*#__PURE__*/_react.default.createElement(AutocompleteIndex
185
+ // @ts-ignore - there seems to be problems with React.ComponentType and this, but it's actually correct
186
+ , {
187
+ ItemComponent: function ItemComponent(_ref5) {
188
+ var item = _ref5.item,
189
+ onSelect = _ref5.onSelect;
190
+ return /*#__PURE__*/_react.default.createElement(AutocompleteRecentSearchComponent, {
191
+ item: item,
192
+ onSelect: onSelect,
193
+ onRemoveRecentSearch: function onRemoveRecentSearch() {
194
+ return storage.onRemove(item.query);
195
+ }
196
+ }, /*#__PURE__*/_react.default.createElement(ConditionalReverseHighlight, {
197
+ item: item
198
+ }));
199
+ },
200
+ classNames: {
201
+ root: 'ais-AutocompleteRecentSearches',
202
+ list: 'ais-AutocompleteRecentSearchesList',
203
+ item: 'ais-AutocompleteRecentSearchesItem'
204
+ },
205
+ items: storageHits,
206
+ getItemProps: getItemProps
207
+ });
208
+ }
209
+ indices.forEach(function (_ref6, i) {
210
+ var indexId = _ref6.indexId,
211
+ indexName = _ref6.indexName,
212
+ hits = _ref6.hits;
213
+ var elementId = indexName === (showSuggestions === null || showSuggestions === void 0 ? void 0 : showSuggestions.indexName) ? 'suggestions' : indexName;
214
+ elements[elementId] = /*#__PURE__*/_react.default.createElement(AutocompleteIndex, {
153
215
  key: indexId
154
216
  // @ts-expect-error - there seems to be problems with React.ComponentType and this, but it's actually correct
155
217
  ,
156
- HeaderComponent: indicesConfig[index].headerComponent
218
+ HeaderComponent: indicesConfig[i].headerComponent
157
219
  // @ts-expect-error - there seems to be problems with React.ComponentType and this, but it's actually correct
158
220
  ,
159
- ItemComponent: indicesConfig[index].itemComponent,
221
+ ItemComponent: indicesConfig[i].itemComponent,
160
222
  items: hits.map(function (item) {
161
223
  return _objectSpread(_objectSpread({}, item), {}, {
162
224
  __indexName: indexId
163
225
  });
164
226
  }),
165
227
  getItemProps: getItemProps,
166
- classNames: indicesConfig[index].classNames
228
+ classNames: indicesConfig[i].classNames
167
229
  });
230
+ });
231
+ return /*#__PURE__*/_react.default.createElement(Autocomplete, _extends({}, props, getRootProps()), /*#__PURE__*/_react.default.createElement(_AutocompleteSearch.AutocompleteSearch, {
232
+ inputProps: getInputProps(),
233
+ clearQuery: function clearQuery() {
234
+ refineSearchBox('');
235
+ refineAutocomplete('');
236
+ }
237
+ }), /*#__PURE__*/_react.default.createElement(AutocompletePanel, getPanelProps(), PanelComponent ? /*#__PURE__*/_react.default.createElement(PanelComponent, {
238
+ elements: elements,
239
+ indices: indices
240
+ }) : Object.keys(elements).map(function (elementId) {
241
+ return elements[elementId];
168
242
  })));
243
+ }
244
+ function ConditionalReverseHighlight(_ref7) {
245
+ var _item$_highlightResul;
246
+ var item = _ref7.item;
247
+ if (!((_item$_highlightResul = item._highlightResult) !== null && _item$_highlightResul !== void 0 && _item$_highlightResul.query) ||
248
+ // @ts-expect-error - we should not have matchLevel as arrays here
249
+ item._highlightResult.query.matchLevel === 'none') {
250
+ return item.query;
251
+ }
252
+ return /*#__PURE__*/_react.default.createElement(_ReverseHighlight.ReverseHighlight, {
253
+ attribute: "query",
254
+ hit: item
255
+ });
169
256
  }
@@ -17,14 +17,13 @@ Object.defineProperty(exports, "SearchIndexToolType", {
17
17
  }
18
18
  });
19
19
  exports.createDefaultTools = createDefaultTools;
20
- var _ai = require("ai");
21
20
  var _instantsearchUiComponents = require("instantsearch-ui-components");
22
21
  var _chat = require("instantsearch.js/cjs/lib/chat");
23
22
  var _react = _interopRequireWildcard(require("react"));
24
23
  var _reactInstantsearchCore = require("react-instantsearch-core");
25
24
  var _useStickToBottom2 = require("../lib/useStickToBottom");
26
25
  var _SearchIndexTool = require("./chat/tools/SearchIndexTool");
27
- var _excluded = ["tools", "defaultOpen", "toggleButtonProps", "headerProps", "messagesProps", "promptProps", "itemComponent", "toggleButtonComponent", "toggleButtonIconComponent", "headerComponent", "headerTitleIconComponent", "headerCloseIconComponent", "headerMinimizeIconComponent", "headerMaximizeIconComponent", "messagesLoaderComponent", "messagesErrorComponent", "promptComponent", "promptHeaderComponent", "promptFooterComponent", "actionsComponent", "classNames", "translations", "title", "getSearchPageURL"];
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"];
28
27
  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); }
29
28
  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); }
30
29
  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; }
@@ -50,8 +49,6 @@ function createDefaultTools(itemComponent, getSearchPageURL) {
50
49
  }
51
50
  function Chat(_ref2) {
52
51
  var userTools = _ref2.tools,
53
- _ref2$defaultOpen = _ref2.defaultOpen,
54
- defaultOpen = _ref2$defaultOpen === void 0 ? false : _ref2$defaultOpen,
55
52
  toggleButtonProps = _ref2.toggleButtonProps,
56
53
  headerProps = _ref2.headerProps,
57
54
  messagesProps = _ref2.messagesProps,
@@ -69,6 +66,10 @@ function Chat(_ref2) {
69
66
  promptComponent = _ref2.promptComponent,
70
67
  promptHeaderComponent = _ref2.promptHeaderComponent,
71
68
  promptFooterComponent = _ref2.promptFooterComponent,
69
+ assistantMessageLeadingComponent = _ref2.assistantMessageLeadingComponent,
70
+ assistantMessageFooterComponent = _ref2.assistantMessageFooterComponent,
71
+ userMessageLeadingComponent = _ref2.userMessageLeadingComponent,
72
+ userMessageFooterComponent = _ref2.userMessageFooterComponent,
72
73
  actionsComponent = _ref2.actionsComponent,
73
74
  classNames = _ref2.classNames,
74
75
  _ref2$translations = _ref2.translations,
@@ -78,6 +79,7 @@ function Chat(_ref2) {
78
79
  props = _objectWithoutProperties(_ref2, _excluded);
79
80
  var promptTranslations = translations.prompt,
80
81
  headerTranslations = translations.header,
82
+ messageTranslations = translations.message,
81
83
  messagesTranslations = translations.messages;
82
84
  var _useInstantSearch = (0, _reactInstantsearchCore.useInstantSearch)(),
83
85
  indexUiState = _useInstantSearch.indexUiState,
@@ -99,25 +101,23 @@ function Chat(_ref2) {
99
101
  var defaults = createDefaultTools(itemComponent, getSearchPageURL);
100
102
  return _objectSpread(_objectSpread({}, defaults), userTools);
101
103
  }, [getSearchPageURL, itemComponent, userTools]);
102
- var _useChat = (0, _reactInstantsearchCore.useChat)(_objectSpread(_objectSpread({}, props), {}, {
103
- defaultOpen: defaultOpen,
104
- tools: tools,
105
- sendAutomaticallyWhen: _ai.lastAssistantMessageIsCompleteWithToolCalls
106
- })),
107
- messages = _useChat.messages,
108
- sendMessage = _useChat.sendMessage,
109
- status = _useChat.status,
110
- regenerate = _useChat.regenerate,
111
- stop = _useChat.stop,
112
- error = _useChat.error,
113
- input = _useChat.input,
114
- setInput = _useChat.setInput,
115
- open = _useChat.open,
116
- setOpen = _useChat.setOpen,
117
- isClearing = _useChat.isClearing,
118
- clearMessages = _useChat.clearMessages,
119
- onClearTransitionEnd = _useChat.onClearTransitionEnd,
120
- hookTools = _useChat.tools;
104
+ var chatState = (0, _reactInstantsearchCore.useChat)(_objectSpread(_objectSpread({}, props), {}, {
105
+ tools: tools
106
+ }));
107
+ var messages = chatState.messages,
108
+ sendMessage = chatState.sendMessage,
109
+ status = chatState.status,
110
+ regenerate = chatState.regenerate,
111
+ stop = chatState.stop,
112
+ error = chatState.error,
113
+ input = chatState.input,
114
+ setInput = chatState.setInput,
115
+ open = chatState.open,
116
+ setOpen = chatState.setOpen,
117
+ isClearing = chatState.isClearing,
118
+ clearMessages = chatState.clearMessages,
119
+ onClearTransitionEnd = chatState.onClearTransitionEnd,
120
+ toolsFromConnector = chatState.tools;
121
121
  if (process.env.NODE_ENV === 'development' && error) {
122
122
  throw error;
123
123
  }
@@ -162,7 +162,7 @@ function Chat(_ref2) {
162
162
  return setOpen(false);
163
163
  },
164
164
  messages: messages,
165
- tools: hookTools,
165
+ tools: toolsFromConnector,
166
166
  indexUiState: indexUiState,
167
167
  setIndexUiState: setIndexUiState,
168
168
  isClearing: isClearing,
@@ -174,7 +174,16 @@ function Chat(_ref2) {
174
174
  loaderComponent: messagesLoaderComponent,
175
175
  errorComponent: messagesErrorComponent,
176
176
  actionsComponent: actionsComponent,
177
- translations: messagesTranslations
177
+ assistantMessageProps: _objectSpread({
178
+ leadingComponent: assistantMessageLeadingComponent,
179
+ footerComponent: assistantMessageFooterComponent
180
+ }, messagesProps === null || messagesProps === void 0 ? void 0 : messagesProps.assistantMessageProps),
181
+ userMessageProps: _objectSpread({
182
+ leadingComponent: userMessageLeadingComponent,
183
+ footerComponent: userMessageFooterComponent
184
+ }, messagesProps === null || messagesProps === void 0 ? void 0 : messagesProps.userMessageProps),
185
+ translations: messagesTranslations,
186
+ messageTranslations: messageTranslations
178
187
  }, messagesProps),
179
188
  promptProps: _objectSpread({
180
189
  promptRef: promptRef,
@@ -0,0 +1,46 @@
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.ReverseHighlight = ReverseHighlight;
8
+ var _utils = require("instantsearch.js/cjs/lib/utils");
9
+ var _react = _interopRequireDefault(require("react"));
10
+ var _ReverseHighlight = require("../ui/ReverseHighlight");
11
+ var _excluded = ["hit", "attribute", "highlightedTagName", "nonHighlightedTagName", "separator"],
12
+ _excluded2 = ["isHighlighted"];
13
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
14
+ 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); }
15
+ 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; }
16
+ 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; }
17
+ 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; }
18
+ function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : i + ""; }
19
+ 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); }
20
+ 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; }
21
+ 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; }
22
+ function ReverseHighlight(_ref) {
23
+ var hit = _ref.hit,
24
+ attribute = _ref.attribute,
25
+ highlightedTagName = _ref.highlightedTagName,
26
+ nonHighlightedTagName = _ref.nonHighlightedTagName,
27
+ separator = _ref.separator,
28
+ props = _objectWithoutProperties(_ref, _excluded);
29
+ var property = (0, _utils.getPropertyByPath)(hit._highlightResult, attribute) || [];
30
+ var properties = Array.isArray(property) ? property : [property];
31
+ var parts = properties.map(function (singleValue) {
32
+ return (0, _utils.getHighlightedParts)((0, _utils.unescape)(singleValue.value || '')).map(function (_ref2) {
33
+ var isHighlighted = _ref2.isHighlighted,
34
+ rest = _objectWithoutProperties(_ref2, _excluded2);
35
+ return _objectSpread(_objectSpread({}, rest), {}, {
36
+ isHighlighted: !isHighlighted
37
+ });
38
+ });
39
+ });
40
+ return /*#__PURE__*/_react.default.createElement(_ReverseHighlight.ReverseHighlight, _extends({}, props, {
41
+ parts: parts,
42
+ highlightedTagName: highlightedTagName,
43
+ nonHighlightedTagName: nonHighlightedTagName,
44
+ separator: separator
45
+ }));
46
+ }
@@ -201,6 +201,17 @@ Object.keys(_RelatedProducts).forEach(function (key) {
201
201
  }
202
202
  });
203
203
  });
204
+ var _ReverseHighlight = require("./ReverseHighlight");
205
+ Object.keys(_ReverseHighlight).forEach(function (key) {
206
+ if (key === "default" || key === "__esModule") return;
207
+ if (key in exports && exports[key] === _ReverseHighlight[key]) return;
208
+ Object.defineProperty(exports, key, {
209
+ enumerable: true,
210
+ get: function get() {
211
+ return _ReverseHighlight[key];
212
+ }
213
+ });
214
+ });
204
215
  var _SearchBox = require("./SearchBox");
205
216
  Object.keys(_SearchBox).forEach(function (key) {
206
217
  if (key === "default" || key === "__esModule") return;
@@ -214,6 +214,18 @@ Object.keys(_RelatedProducts).forEach(function (key) {
214
214
  }
215
215
  });
216
216
  });
217
+ var _ReverseHighlight = require("./ReverseHighlight");
218
+ Object.keys(_ReverseHighlight).forEach(function (key) {
219
+ if (key === "default" || key === "__esModule") return;
220
+ if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
221
+ if (key in exports && exports[key] === _ReverseHighlight[key]) return;
222
+ Object.defineProperty(exports, key, {
223
+ enumerable: true,
224
+ get: function get() {
225
+ return _ReverseHighlight[key];
226
+ }
227
+ });
228
+ });
217
229
  var _SearchBox = require("./SearchBox");
218
230
  Object.keys(_SearchBox).forEach(function (key) {
219
231
  if (key === "default" || key === "__esModule") return;
@@ -0,0 +1,7 @@
1
+ import React from 'react';
2
+ import type { HighlightProps as InternalHighlightProps, HighlightClassNames as InternalHighlightClassNames } from 'instantsearch-ui-components';
3
+ export type ReverseHighlightClassNames = InternalHighlightClassNames;
4
+ export type ReverseHighlightProps = Omit<InternalHighlightProps, 'classNames'> & {
5
+ classNames?: Partial<ReverseHighlightClassNames>;
6
+ };
7
+ export declare function ReverseHighlight({ classNames, ...props }: ReverseHighlightProps): React.JSX.Element;
@@ -0,0 +1,20 @@
1
+ var _excluded = ["classNames"];
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 { cx } from 'instantsearch-ui-components';
6
+ import React from 'react';
7
+ import { InternalHighlight } from "./InternalHighlight.js";
8
+ export function ReverseHighlight(_ref) {
9
+ var _ref$classNames = _ref.classNames,
10
+ classNames = _ref$classNames === void 0 ? {} : _ref$classNames,
11
+ props = _objectWithoutProperties(_ref, _excluded);
12
+ return /*#__PURE__*/React.createElement(InternalHighlight, _extends({
13
+ classNames: {
14
+ root: cx('ais-ReverseHighlight', classNames.root),
15
+ highlighted: cx('ais-ReverseHighlight-highlighted', classNames.highlighted),
16
+ nonHighlighted: cx('ais-ReverseHighlight-nonHighlighted', classNames.nonHighlighted),
17
+ separator: cx('ais-ReverseHighlight-separator', classNames.separator)
18
+ }
19
+ }, props));
20
+ }
@@ -1,20 +1,44 @@
1
1
  import React from 'react';
2
+ import { useAutocomplete } from 'react-instantsearch-core';
3
+ import type { PlainSearchParameters } from 'algoliasearch-helper';
2
4
  import type { AutocompleteIndexClassNames, AutocompleteIndexConfig, AutocompleteClassNames, AutocompleteIndexProps } from 'instantsearch-ui-components';
3
5
  import type { BaseHit, IndexUiState } from 'instantsearch.js';
4
6
  import type { ComponentProps } from 'react';
7
+ type AutocompleteSearchParameters = Omit<PlainSearchParameters, 'index'>;
5
8
  type IndexConfig<TItem extends BaseHit> = AutocompleteIndexConfig<TItem> & {
6
9
  headerComponent?: AutocompleteIndexProps<TItem>['HeaderComponent'];
7
10
  itemComponent: AutocompleteIndexProps<TItem>['ItemComponent'];
11
+ searchParameters?: AutocompleteSearchParameters;
8
12
  classNames?: Partial<AutocompleteIndexClassNames>;
9
13
  };
14
+ type PanelElements = Partial<Record<'recent' | 'suggestions' | (string & {}), React.JSX.Element>>;
10
15
  export type AutocompleteProps<TItem extends BaseHit> = ComponentProps<'div'> & {
11
16
  indices?: Array<IndexConfig<TItem>>;
12
17
  showSuggestions?: Partial<Pick<IndexConfig<{
13
18
  query: string;
14
19
  }>, 'indexName' | 'getURL' | 'headerComponent' | 'itemComponent' | 'classNames'>>;
20
+ showRecent?: boolean | {
21
+ /**
22
+ * Storage key to use in the local storage.
23
+ */
24
+ storageKey?: string;
25
+ /**
26
+ * Component to use for each recent search item.
27
+ */
28
+ itemComponent: AutocompleteIndexProps<{
29
+ query: string;
30
+ }>['ItemComponent'] & {
31
+ onRemoveRecentSearch: () => void;
32
+ };
33
+ };
15
34
  getSearchPageURL?: (nextUiState: IndexUiState) => string;
16
35
  onSelect?: AutocompleteIndexConfig<TItem>['onSelect'];
36
+ panelComponent?: (props: {
37
+ elements: PanelElements;
38
+ indices: ReturnType<typeof useAutocomplete>['indices'];
39
+ }) => React.JSX.Element;
40
+ searchParameters?: AutocompleteSearchParameters;
17
41
  classNames?: Partial<AutocompleteClassNames>;
18
42
  };
19
- export declare function EXPERIMENTAL_Autocomplete<TItem extends BaseHit = BaseHit>({ indices, showSuggestions, ...props }: AutocompleteProps<TItem>): React.JSX.Element;
43
+ export declare function EXPERIMENTAL_Autocomplete<TItem extends BaseHit = BaseHit>({ indices, showSuggestions, showRecent, searchParameters: userSearchParameters, ...props }: AutocompleteProps<TItem>): React.JSX.Element;
20
44
  export {};