instantsearch-ui-components 0.12.0 → 0.14.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (41) hide show
  1. package/dist/cjs/components/autocomplete/AutocompleteIndex.js +6 -1
  2. package/dist/cjs/components/autocomplete/AutocompleteRecentSearch.js +41 -0
  3. package/dist/cjs/components/autocomplete/AutocompleteSearch.js +70 -0
  4. package/dist/cjs/components/autocomplete/AutocompleteSuggestion.js +11 -2
  5. package/dist/cjs/components/autocomplete/createAutocompletePropGetters.js +222 -0
  6. package/dist/cjs/components/autocomplete/createAutocompleteStorage.js +150 -0
  7. package/dist/cjs/components/autocomplete/icons.js +76 -0
  8. package/dist/cjs/components/autocomplete/index.js +44 -0
  9. package/dist/cjs/components/chat/Chat.js +2 -1
  10. package/dist/cjs/components/chat/ChatMessage.js +3 -0
  11. package/dist/cjs/components/chat/ChatMessages.js +14 -5
  12. package/dist/cjs/components/chat/icons.js +36 -36
  13. package/dist/cjs/version.js +1 -1
  14. package/dist/es/components/autocomplete/Autocomplete.d.ts +1 -1
  15. package/dist/es/components/autocomplete/AutocompleteIndex.d.ts +7 -0
  16. package/dist/es/components/autocomplete/AutocompleteIndex.js +6 -1
  17. package/dist/es/components/autocomplete/AutocompletePanel.d.ts +1 -1
  18. package/dist/es/components/autocomplete/AutocompleteRecentSearch.d.ts +37 -0
  19. package/dist/es/components/autocomplete/AutocompleteRecentSearch.js +35 -0
  20. package/dist/es/components/autocomplete/AutocompleteSearch.d.ts +8 -0
  21. package/dist/es/components/autocomplete/AutocompleteSearch.js +63 -0
  22. package/dist/es/components/autocomplete/AutocompleteSuggestion.d.ts +8 -0
  23. package/dist/es/components/autocomplete/AutocompleteSuggestion.js +11 -2
  24. package/dist/es/components/autocomplete/createAutocompletePropGetters.d.ts +49 -0
  25. package/dist/es/components/autocomplete/createAutocompletePropGetters.js +215 -0
  26. package/dist/es/components/autocomplete/createAutocompleteStorage.d.ts +63 -0
  27. package/dist/es/components/autocomplete/createAutocompleteStorage.js +142 -0
  28. package/dist/es/components/autocomplete/icons.d.ts +9 -0
  29. package/dist/es/components/autocomplete/icons.js +66 -0
  30. package/dist/es/components/autocomplete/index.d.ts +4 -0
  31. package/dist/es/components/autocomplete/index.js +5 -1
  32. package/dist/es/components/chat/Chat.d.ts +1 -0
  33. package/dist/es/components/chat/Chat.js +2 -1
  34. package/dist/es/components/chat/ChatMessage.js +3 -0
  35. package/dist/es/components/chat/ChatMessages.d.ts +9 -1
  36. package/dist/es/components/chat/ChatMessages.js +14 -5
  37. package/dist/es/components/chat/icons.js +36 -36
  38. package/dist/es/components/chat/types.d.ts +1 -1
  39. package/dist/es/version.d.ts +1 -1
  40. package/dist/es/version.js +1 -1
  41. package/package.json +2 -2
@@ -13,13 +13,18 @@ function createAutocompleteIndexComponent(_ref) {
13
13
  var createElement = _ref.createElement;
14
14
  return function AutocompleteIndex(userProps) {
15
15
  var items = userProps.items,
16
+ HeaderComponent = userProps.HeaderComponent,
16
17
  ItemComponent = userProps.ItemComponent,
17
18
  getItemProps = userProps.getItemProps,
18
19
  _userProps$classNames = userProps.classNames,
19
20
  classNames = _userProps$classNames === void 0 ? {} : _userProps$classNames;
20
21
  return createElement("div", {
21
22
  className: (0, _cx.cx)('ais-AutocompleteIndex', classNames.root)
22
- }, createElement("ol", {
23
+ }, HeaderComponent && createElement("div", {
24
+ className: (0, _cx.cx)('ais-AutocompleteIndexHeader', classNames.header)
25
+ }, createElement(HeaderComponent, {
26
+ items: items
27
+ })), createElement("ol", {
23
28
  className: (0, _cx.cx)('ais-AutocompleteIndexList', classNames.list)
24
29
  }, items.map(function (item, index) {
25
30
  var _getItemProps = getItemProps(item, index),
@@ -0,0 +1,41 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.createAutocompleteRecentSearchComponent = createAutocompleteRecentSearchComponent;
7
+ var _lib = require("../../lib");
8
+ var _icons = require("./icons");
9
+ function createAutocompleteRecentSearchComponent(_ref) {
10
+ var createElement = _ref.createElement;
11
+ return function AutocompleteRecentSearch(_ref2) {
12
+ var item = _ref2.item,
13
+ onSelect = _ref2.onSelect,
14
+ onRemoveRecentSearch = _ref2.onRemoveRecentSearch,
15
+ _ref2$classNames = _ref2.classNames,
16
+ classNames = _ref2$classNames === void 0 ? {} : _ref2$classNames;
17
+ return createElement("div", {
18
+ onClick: onSelect,
19
+ className: (0, _lib.cx)('ais-AutocompleteItemWrapper ais-AutocompleteRecentSearchWrapper', classNames.root)
20
+ }, createElement("div", {
21
+ className: (0, _lib.cx)('ais-AutocompleteItemContent', 'ais-AutocompleteRecentSearchItemContent', classNames.content)
22
+ }, createElement("div", {
23
+ className: (0, _lib.cx)('ais-AutocompleteItemIcon', 'ais-AutocompleteRecentSearchItemIcon', classNames.content)
24
+ }, createElement(_icons.AutocompleteClockIcon, {
25
+ createElement: createElement
26
+ })), createElement("div", {
27
+ className: (0, _lib.cx)('ais-AutocompleteItemContentBody', 'ais-AutocompleteRecentSearchItemContentBody', classNames.content)
28
+ }, item.query)), createElement("div", {
29
+ className: (0, _lib.cx)('ais-AutocompleteItemActions', 'ais-AutocompleteRecentSearchItemActions', classNames.actions)
30
+ }, createElement("button", {
31
+ className: (0, _lib.cx)('ais-AutocompleteItemActionButton', 'ais-AutocompleteRecentSearchItemDeleteButton', classNames.deleteButton),
32
+ title: "Remove ".concat(item.query, " from recent searches"),
33
+ onClick: function onClick(evt) {
34
+ evt.stopPropagation();
35
+ onRemoveRecentSearch();
36
+ }
37
+ }, createElement(_icons.AutocompleteTrashIcon, {
38
+ createElement: createElement
39
+ }))));
40
+ };
41
+ }
@@ -0,0 +1,70 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.createAutocompleteSearchComponent = createAutocompleteSearchComponent;
8
+ var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
9
+ var _icons = require("./icons");
10
+ function createAutocompleteSearchComponent(_ref) {
11
+ var createElement = _ref.createElement;
12
+ return function AutocompleteSearch(_ref2) {
13
+ var inputProps = _ref2.inputProps,
14
+ onClear = _ref2.onClear,
15
+ query = _ref2.query,
16
+ isSearchStalled = _ref2.isSearchStalled;
17
+ return createElement("form", {
18
+ className: "ais-AutocompleteForm",
19
+ action: "",
20
+ noValidate: true,
21
+ role: "search",
22
+ onSubmit: function onSubmit(e) {
23
+ return e.preventDefault();
24
+ }
25
+ }, createElement("div", {
26
+ className: "ais-AutocompleteInputWrapperPrefix"
27
+ }, createElement("label", {
28
+ className: "ais-AutocompleteLabel",
29
+ "aria-label": "Submit",
30
+ htmlFor: inputProps.id,
31
+ id: "".concat(inputProps.id, "-label")
32
+ }, createElement("button", {
33
+ className: "ais-AutocompleteSubmitButton",
34
+ type: "submit",
35
+ title: "Submit"
36
+ }, createElement(_icons.AutocompleteSubmitIcon, {
37
+ createElement: createElement
38
+ }))), createElement("div", {
39
+ className: "ais-AutocompleteLoadingIndicator",
40
+ hidden: !isSearchStalled
41
+ }, createElement(_icons.AutocompleteLoadingIcon, {
42
+ createElement: createElement
43
+ }))), createElement("div", {
44
+ className: "ais-AutocompleteInputWrapper"
45
+ }, createElement("input", (0, _extends2.default)({
46
+ className: "ais-AutocompleteInput",
47
+ "aria-autocomplete": "both",
48
+ "aria-labelledby": "".concat(inputProps.id, "-label"),
49
+ autoComplete: "off",
50
+ autoCorrect: "off",
51
+ autoCapitalize: "off",
52
+ enterKeyHint: "search",
53
+ spellCheck: "false",
54
+ placeholder: "",
55
+ maxLength: 512,
56
+ type: "search",
57
+ value: query
58
+ }, inputProps))), createElement("div", {
59
+ className: "ais-AutocompleteInputWrapperSuffix"
60
+ }, createElement("button", {
61
+ className: "ais-AutocompleteClearButton",
62
+ type: "reset",
63
+ title: "Clear",
64
+ hidden: query.length === 0 || isSearchStalled,
65
+ onClick: onClear
66
+ }, createElement(_icons.AutocompleteClearIcon, {
67
+ createElement: createElement
68
+ }))));
69
+ };
70
+ }
@@ -5,6 +5,7 @@ Object.defineProperty(exports, "__esModule", {
5
5
  });
6
6
  exports.createAutocompleteSuggestionComponent = createAutocompleteSuggestionComponent;
7
7
  var _lib = require("../../lib");
8
+ var _icons = require("./icons");
8
9
  function createAutocompleteSuggestionComponent(_ref) {
9
10
  var createElement = _ref.createElement;
10
11
  return function AutocompleteSuggestion(_ref2) {
@@ -14,7 +15,15 @@ function createAutocompleteSuggestionComponent(_ref) {
14
15
  classNames = _ref2$classNames === void 0 ? {} : _ref2$classNames;
15
16
  return createElement("div", {
16
17
  onClick: onSelect,
17
- className: (0, _lib.cx)('ais-AutocompleteSuggestion', classNames.root)
18
- }, item.query);
18
+ className: (0, _lib.cx)('ais-AutocompleteItemWrapper', 'ais-AutocompleteSuggestionWrapper', classNames.root)
19
+ }, createElement("div", {
20
+ className: (0, _lib.cx)('ais-AutocompleteItemContent', 'ais-AutocompleteSuggestionItemContent', classNames.content)
21
+ }, createElement("div", {
22
+ className: (0, _lib.cx)('ais-AutocompleteItemIcon', 'ais-AutocompleteSuggestionItemIcon', classNames.content)
23
+ }, createElement(_icons.AutocompleteSubmitIcon, {
24
+ createElement: createElement
25
+ })), createElement("div", {
26
+ className: (0, _lib.cx)('ais-AutocompleteItemContentBody', 'ais-AutocompleteSuggestionItemContentBody', classNames.content)
27
+ }, item.query)));
19
28
  };
20
29
  }
@@ -0,0 +1,222 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.createAutocompletePropGetters = createAutocompletePropGetters;
8
+ var _typeof2 = _interopRequireDefault(require("@babel/runtime/helpers/typeof"));
9
+ var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
10
+ function createAutocompletePropGetters(_ref) {
11
+ var useEffect = _ref.useEffect,
12
+ useId = _ref.useId,
13
+ useMemo = _ref.useMemo,
14
+ useRef = _ref.useRef,
15
+ useState = _ref.useState;
16
+ return function usePropGetters(_ref2) {
17
+ var indices = _ref2.indices,
18
+ indicesConfig = _ref2.indicesConfig,
19
+ onRefine = _ref2.onRefine,
20
+ globalOnSelect = _ref2.onSelect;
21
+ var getElementId = createGetElementId(useId());
22
+ var rootRef = useRef(null);
23
+ var _useState = useState(false),
24
+ _useState2 = (0, _slicedToArray2.default)(_useState, 2),
25
+ isOpen = _useState2[0],
26
+ setIsOpen = _useState2[1];
27
+ var _useState3 = useState(undefined),
28
+ _useState4 = (0, _slicedToArray2.default)(_useState3, 2),
29
+ activeDescendant = _useState4[0],
30
+ setActiveDescendant = _useState4[1];
31
+ var _useMemo = useMemo(function () {
32
+ return buildItems({
33
+ indices: indices,
34
+ indicesConfig: indicesConfig,
35
+ getElementId: getElementId
36
+ });
37
+ }, [indices, indicesConfig, getElementId]),
38
+ items = _useMemo.items,
39
+ itemsIds = _useMemo.itemsIds;
40
+ useEffect(function () {
41
+ var onBodyClick = function onBodyClick(event) {
42
+ var _unwrapRef;
43
+ if ((_unwrapRef = unwrapRef(rootRef)) !== null && _unwrapRef !== void 0 && _unwrapRef.contains(event.target)) {
44
+ return;
45
+ }
46
+ setIsOpen(false);
47
+ };
48
+ document.body.addEventListener('click', onBodyClick);
49
+ return function () {
50
+ document.body.removeEventListener('click', onBodyClick);
51
+ };
52
+ }, [rootRef]);
53
+ var getNextActiveDescendent = function getNextActiveDescendent(key) {
54
+ switch (key) {
55
+ case 'ArrowLeft':
56
+ case 'ArrowUp':
57
+ {
58
+ var prevIndex = itemsIds.indexOf(activeDescendant || '') - 1;
59
+ return itemsIds[prevIndex] || itemsIds[itemsIds.length - 1];
60
+ }
61
+ case 'ArrowRight':
62
+ case 'ArrowDown':
63
+ {
64
+ var nextIndex = itemsIds.indexOf(activeDescendant || '') + 1;
65
+ return itemsIds[nextIndex] || itemsIds[0];
66
+ }
67
+ default:
68
+ return undefined;
69
+ }
70
+ };
71
+ var submit = function submit() {
72
+ var actualActiveDescendant = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : activeDescendant;
73
+ setIsOpen(false);
74
+ if (actualActiveDescendant && items.has(actualActiveDescendant)) {
75
+ var _getQuery;
76
+ var _ref3 = items.get(actualActiveDescendant),
77
+ _item = _ref3.item,
78
+ _ref3$config = _ref3.config,
79
+ indexOnSelect = _ref3$config.onSelect,
80
+ getQuery = _ref3$config.getQuery,
81
+ getURL = _ref3$config.getURL;
82
+ var actualOnSelect = indexOnSelect !== null && indexOnSelect !== void 0 ? indexOnSelect : globalOnSelect;
83
+ actualOnSelect({
84
+ item: _item,
85
+ query: (_getQuery = getQuery === null || getQuery === void 0 ? void 0 : getQuery(_item)) !== null && _getQuery !== void 0 ? _getQuery : '',
86
+ url: getURL === null || getURL === void 0 ? void 0 : getURL(_item),
87
+ setQuery: function setQuery(query) {
88
+ return onRefine(query);
89
+ }
90
+ });
91
+ setActiveDescendant(undefined);
92
+ }
93
+ };
94
+ return {
95
+ getInputProps: function getInputProps() {
96
+ return {
97
+ id: getElementId('input'),
98
+ role: 'combobox',
99
+ 'aria-autocomplete': 'list',
100
+ 'aria-expanded': isOpen,
101
+ 'aria-haspopup': 'grid',
102
+ 'aria-controls': getElementId('panel'),
103
+ 'aria-activedescendant': activeDescendant,
104
+ onFocus: function onFocus() {
105
+ return setIsOpen(true);
106
+ },
107
+ onKeyDown: function onKeyDown(event) {
108
+ if (event.key === 'Escape') {
109
+ setActiveDescendant(undefined);
110
+ setIsOpen(false);
111
+ return;
112
+ }
113
+ switch (event.key) {
114
+ case 'ArrowLeft':
115
+ case 'ArrowUp':
116
+ case 'ArrowRight':
117
+ case 'ArrowDown':
118
+ {
119
+ var _document$getElementB;
120
+ var nextActiveDescendent = getNextActiveDescendent(event.key);
121
+ setActiveDescendant(nextActiveDescendent);
122
+ (_document$getElementB = document.getElementById(nextActiveDescendent)) === null || _document$getElementB === void 0 ? void 0 : _document$getElementB.scrollIntoView(false);
123
+ event.preventDefault();
124
+ break;
125
+ }
126
+ case 'Enter':
127
+ {
128
+ submit();
129
+ break;
130
+ }
131
+ case 'Tab':
132
+ setIsOpen(false);
133
+ break;
134
+ default:
135
+ return;
136
+ }
137
+ },
138
+ onKeyUp: function onKeyUp(event) {
139
+ switch (event.key) {
140
+ case 'ArrowLeft':
141
+ case 'ArrowUp':
142
+ case 'ArrowRight':
143
+ case 'ArrowDown':
144
+ case 'Escape':
145
+ case 'Return':
146
+ event.preventDefault();
147
+ return;
148
+ default:
149
+ setActiveDescendant(undefined);
150
+ break;
151
+ }
152
+ }
153
+ };
154
+ },
155
+ getItemProps: function getItemProps(item, index) {
156
+ var id = getElementId('item', item.__indexName, index);
157
+ return {
158
+ id: id,
159
+ role: 'row',
160
+ 'aria-selected': id === activeDescendant,
161
+ onSelect: function onSelect() {
162
+ return submit(id);
163
+ }
164
+ };
165
+ },
166
+ getPanelProps: function getPanelProps() {
167
+ return {
168
+ hidden: !isOpen,
169
+ id: getElementId('panel'),
170
+ role: 'grid',
171
+ 'aria-labelledby': getElementId('input')
172
+ };
173
+ },
174
+ getRootProps: function getRootProps() {
175
+ return {
176
+ ref: rootRef
177
+ };
178
+ }
179
+ };
180
+ };
181
+ }
182
+ function buildItems(_ref4) {
183
+ var indices = _ref4.indices,
184
+ indicesConfig = _ref4.indicesConfig,
185
+ getElementId = _ref4.getElementId;
186
+ var itemsIds = [];
187
+ var items = new Map();
188
+ for (var i = 0; i < indicesConfig.length; i++) {
189
+ var _indices$i;
190
+ var config = indicesConfig[i];
191
+ var hits = ((_indices$i = indices[i]) === null || _indices$i === void 0 ? void 0 : _indices$i.hits) || [];
192
+ for (var position = 0; position < hits.length; position++) {
193
+ var itemId = getElementId('item', config.indexName, position);
194
+ items.set(itemId, {
195
+ item: hits[position],
196
+ config: config
197
+ });
198
+ itemsIds.push(itemId);
199
+ }
200
+ }
201
+ return {
202
+ items: items,
203
+ itemsIds: itemsIds
204
+ };
205
+ }
206
+ function createGetElementId(autocompleteId) {
207
+ return function getElementId() {
208
+ var prefix = 'autocomplete';
209
+ for (var _len = arguments.length, suffixes = new Array(_len), _key = 0; _key < _len; _key++) {
210
+ suffixes[_key] = arguments[_key];
211
+ }
212
+ return "".concat(prefix).concat(autocompleteId).concat(suffixes.join(':'));
213
+ };
214
+ }
215
+
216
+ /**
217
+ * Returns the framework-agnostic value of a ref.
218
+ */
219
+ function unwrapRef(ref) {
220
+ return ref.current && (0, _typeof2.default)(ref.current) === 'object' && 'base' in ref.current ? ref.current.base // Preact
221
+ : ref.current; // React
222
+ }
@@ -0,0 +1,150 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.createAutocompleteStorage = createAutocompleteStorage;
8
+ exports.createStorage = createStorage;
9
+ var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
10
+ var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
11
+ var _typeof2 = _interopRequireDefault(require("@babel/runtime/helpers/typeof"));
12
+ function createAutocompleteStorage(_ref) {
13
+ var useEffect = _ref.useEffect,
14
+ useMemo = _ref.useMemo,
15
+ useState = _ref.useState;
16
+ return function useStorage(_ref2) {
17
+ var showRecent = _ref2.showRecent,
18
+ query = _ref2.query,
19
+ indices = _ref2.indices,
20
+ indicesConfig = _ref2.indicesConfig;
21
+ var storageKey = showRecent && (0, _typeof2.default)(showRecent) === 'object' ? showRecent.storageKey : undefined;
22
+ var storage = useMemo(function () {
23
+ return createStorage({
24
+ limit: 5,
25
+ storageKey: storageKey
26
+ });
27
+ }, [storageKey]);
28
+ var _useState = useState(storage.getSnapshot()),
29
+ _useState2 = (0, _slicedToArray2.default)(_useState, 2),
30
+ snapshot = _useState2[0],
31
+ setSnapshot = _useState2[1];
32
+ useEffect(function () {
33
+ storage.registerUpdateListener(function () {
34
+ setSnapshot(storage.getSnapshot());
35
+ });
36
+ return function () {
37
+ storage.unregisterUpdateListener();
38
+ };
39
+ }, [storage]);
40
+ if (!showRecent) {
41
+ return {
42
+ storage: {
43
+ onAdd: function onAdd() {},
44
+ onRemove: function onRemove() {}
45
+ },
46
+ storageHits: [],
47
+ indicesForPropGetters: indices,
48
+ indicesConfigForPropGetters: indicesConfig
49
+ };
50
+ }
51
+ var storageHits = snapshot.getAll(query).map(function (value) {
52
+ return {
53
+ objectID: value,
54
+ query: value,
55
+ __indexName: 'recent-searches'
56
+ };
57
+ });
58
+ var indicesForPropGetters = (0, _toConsumableArray2.default)(indices);
59
+ var indicesConfigForPropGetters = (0, _toConsumableArray2.default)(indicesConfig);
60
+ indicesForPropGetters.unshift({
61
+ indexName: 'recent-searches',
62
+ indexId: 'recent-searches',
63
+ hits: storageHits
64
+ });
65
+ indicesConfigForPropGetters.unshift({
66
+ indexName: 'recent-searches',
67
+ // @ts-expect-error - we know it has query as it's generated from storageHits
68
+ getQuery: function getQuery(item) {
69
+ return item.query;
70
+ }
71
+ });
72
+ return {
73
+ storage: storage,
74
+ storageHits: storageHits,
75
+ indicesForPropGetters: indicesForPropGetters,
76
+ indicesConfigForPropGetters: indicesConfigForPropGetters
77
+ };
78
+ };
79
+ }
80
+ var LOCAL_STORAGE_KEY_TEST = 'test-localstorage-support';
81
+ var LOCAL_STORAGE_KEY = 'autocomplete-recent-searches';
82
+ function isLocalStorageSupported() {
83
+ try {
84
+ localStorage.setItem(LOCAL_STORAGE_KEY_TEST, '');
85
+ localStorage.removeItem(LOCAL_STORAGE_KEY_TEST);
86
+ return true;
87
+ } catch (error) {
88
+ return false;
89
+ }
90
+ }
91
+ function getLocalStorage() {
92
+ var key = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : LOCAL_STORAGE_KEY;
93
+ if (!isLocalStorageSupported()) {
94
+ return {
95
+ setItems: function setItems() {},
96
+ getItems: function getItems() {
97
+ return [];
98
+ }
99
+ };
100
+ }
101
+ return {
102
+ setItems: function setItems(items) {
103
+ try {
104
+ window.localStorage.setItem(key, JSON.stringify(items));
105
+ } catch (_unused) {
106
+ // do nothing, this likely means the storage is full
107
+ }
108
+ },
109
+ getItems: function getItems() {
110
+ var items = window.localStorage.getItem(key);
111
+ return items ? JSON.parse(items) : [];
112
+ }
113
+ };
114
+ }
115
+ function createStorage(_ref3) {
116
+ var _ref3$limit = _ref3.limit,
117
+ limit = _ref3$limit === void 0 ? 5 : _ref3$limit,
118
+ storageKey = _ref3.storageKey;
119
+ var storage = getLocalStorage(storageKey);
120
+ var updateListener = null;
121
+ return {
122
+ onAdd: function onAdd(query) {
123
+ this.onRemove(query);
124
+ storage.setItems([query].concat((0, _toConsumableArray2.default)(storage.getItems())));
125
+ },
126
+ onRemove: function onRemove(query) {
127
+ var _updateListener;
128
+ storage.setItems(storage.getItems().filter(function (q) {
129
+ return q !== query;
130
+ }));
131
+ (_updateListener = updateListener) === null || _updateListener === void 0 ? void 0 : _updateListener();
132
+ },
133
+ registerUpdateListener: function registerUpdateListener(callback) {
134
+ updateListener = callback;
135
+ },
136
+ unregisterUpdateListener: function unregisterUpdateListener() {
137
+ updateListener = null;
138
+ },
139
+ getSnapshot: function getSnapshot() {
140
+ return {
141
+ getAll: function getAll() {
142
+ var query = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';
143
+ return storage.getItems().filter(function (q) {
144
+ return q.includes(query);
145
+ }).slice(0, limit);
146
+ }
147
+ };
148
+ }
149
+ };
150
+ }
@@ -0,0 +1,76 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.AutocompleteClearIcon = AutocompleteClearIcon;
7
+ exports.AutocompleteClockIcon = AutocompleteClockIcon;
8
+ exports.AutocompleteLoadingIcon = AutocompleteLoadingIcon;
9
+ exports.AutocompleteSubmitIcon = AutocompleteSubmitIcon;
10
+ exports.AutocompleteTrashIcon = AutocompleteTrashIcon;
11
+ function AutocompleteSubmitIcon(_ref) {
12
+ var createElement = _ref.createElement;
13
+ return createElement("svg", {
14
+ className: "ais-AutocompleteSubmitIcon",
15
+ viewBox: "0 0 24 24",
16
+ width: "20",
17
+ height: "20",
18
+ fill: "currentColor"
19
+ }, createElement("path", {
20
+ d: "M16.041 15.856c-0.034 0.026-0.067 0.055-0.099 0.087s-0.060 0.064-0.087 0.099c-1.258 1.213-2.969 1.958-4.855 1.958-1.933 0-3.682-0.782-4.95-2.050s-2.050-3.017-2.050-4.95 0.782-3.682 2.050-4.95 3.017-2.050 4.95-2.050 3.682 0.782 4.95 2.050 2.050 3.017 2.050 4.95c0 1.886-0.745 3.597-1.959 4.856zM21.707 20.293l-3.675-3.675c1.231-1.54 1.968-3.493 1.968-5.618 0-2.485-1.008-4.736-2.636-6.364s-3.879-2.636-6.364-2.636-4.736 1.008-6.364 2.636-2.636 3.879-2.636 6.364 1.008 4.736 2.636 6.364 3.879 2.636 6.364 2.636c2.125 0 4.078-0.737 5.618-1.968l3.675 3.675c0.391 0.391 1.024 0.391 1.414 0s0.391-1.024 0-1.414z"
21
+ }));
22
+ }
23
+ function AutocompleteLoadingIcon(_ref2) {
24
+ var createElement = _ref2.createElement;
25
+ return createElement("svg", {
26
+ className: "ais-AutocompleteLoadingIcon",
27
+ viewBox: "0 0 100 100",
28
+ width: "20",
29
+ height: "20"
30
+ }, createElement("circle", {
31
+ cx: "50",
32
+ cy: "50",
33
+ fill: "none",
34
+ r: "35",
35
+ stroke: "currentColor",
36
+ strokeDasharray: "164.93361431346415 56.97787143782138",
37
+ strokeWidth: "6"
38
+ }, createElement("animateTransform", {
39
+ attributeName: "transform",
40
+ type: "rotate",
41
+ repeatCount: "indefinite",
42
+ dur: "1s",
43
+ values: "0 50 50;90 50 50;180 50 50;360 50 50",
44
+ keyTimes: "0;0.40;0.65;1"
45
+ })));
46
+ }
47
+ function AutocompleteClearIcon(_ref3) {
48
+ var createElement = _ref3.createElement;
49
+ return createElement("svg", {
50
+ className: "ais-AutocompleteClearIcon",
51
+ viewBox: "0 0 24 24",
52
+ width: "18",
53
+ height: "18",
54
+ fill: "currentColor"
55
+ }, createElement("path", {
56
+ d: "M5.293 6.707l5.293 5.293-5.293 5.293c-0.391 0.391-0.391 1.024 0 1.414s1.024 0.391 1.414 0l5.293-5.293 5.293 5.293c0.391 0.391 1.024 0.391 1.414 0s0.391-1.024 0-1.414l-5.293-5.293 5.293-5.293c0.391-0.391 0.391-1.024 0-1.414s-1.024-0.391-1.414 0l-5.293 5.293-5.293-5.293c-0.391-0.391-1.024-0.391-1.414 0s-0.391 1.024 0 1.414z"
57
+ }));
58
+ }
59
+ function AutocompleteClockIcon(_ref4) {
60
+ var createElement = _ref4.createElement;
61
+ return createElement("svg", {
62
+ viewBox: "0 0 24 24",
63
+ fill: "currentColor"
64
+ }, createElement("path", {
65
+ d: "M12.516 6.984v5.25l4.5 2.672-0.75 1.266-5.25-3.188v-6h1.5zM12 20.016q3.281 0 5.648-2.367t2.367-5.648-2.367-5.648-5.648-2.367-5.648 2.367-2.367 5.648 2.367 5.648 5.648 2.367zM12 2.016q4.125 0 7.055 2.93t2.93 7.055-2.93 7.055-7.055 2.93-7.055-2.93-2.93-7.055 2.93-7.055 7.055-2.93z"
66
+ }));
67
+ }
68
+ function AutocompleteTrashIcon(_ref5) {
69
+ var createElement = _ref5.createElement;
70
+ return createElement("svg", {
71
+ viewBox: "0 0 24 24",
72
+ fill: "currentColor"
73
+ }, createElement("path", {
74
+ d: "M18 7v13c0 0.276-0.111 0.525-0.293 0.707s-0.431 0.293-0.707 0.293h-10c-0.276 0-0.525-0.111-0.707-0.293s-0.293-0.431-0.293-0.707v-13zM17 5v-1c0-0.828-0.337-1.58-0.879-2.121s-1.293-0.879-2.121-0.879h-4c-0.828 0-1.58 0.337-2.121 0.879s-0.879 1.293-0.879 2.121v1h-4c-0.552 0-1 0.448-1 1s0.448 1 1 1h1v13c0 0.828 0.337 1.58 0.879 2.121s1.293 0.879 2.121 0.879h10c0.828 0 1.58-0.337 2.121-0.879s0.879-1.293 0.879-2.121v-13h1c0.552 0 1-0.448 1-1s-0.448-1-1-1zM9 5v-1c0-0.276 0.111-0.525 0.293-0.707s0.431-0.293 0.707-0.293h4c0.276 0 0.525 0.111 0.707 0.293s0.293 0.431 0.293 0.707v1zM9 11v6c0 0.552 0.448 1 1 1s1-0.448 1-1v-6c0-0.552-0.448-1-1-1s-1 0.448-1 1zM13 11v6c0 0.552 0.448 1 1 1s1-0.448 1-1v-6c0-0.552-0.448-1-1-1s-1 0.448-1 1z"
75
+ }));
76
+ }
@@ -36,6 +36,28 @@ Object.keys(_AutocompletePanel).forEach(function (key) {
36
36
  }
37
37
  });
38
38
  });
39
+ var _AutocompleteRecentSearch = require("./AutocompleteRecentSearch");
40
+ Object.keys(_AutocompleteRecentSearch).forEach(function (key) {
41
+ if (key === "default" || key === "__esModule") return;
42
+ if (key in exports && exports[key] === _AutocompleteRecentSearch[key]) return;
43
+ Object.defineProperty(exports, key, {
44
+ enumerable: true,
45
+ get: function get() {
46
+ return _AutocompleteRecentSearch[key];
47
+ }
48
+ });
49
+ });
50
+ var _AutocompleteSearch = require("./AutocompleteSearch");
51
+ Object.keys(_AutocompleteSearch).forEach(function (key) {
52
+ if (key === "default" || key === "__esModule") return;
53
+ if (key in exports && exports[key] === _AutocompleteSearch[key]) return;
54
+ Object.defineProperty(exports, key, {
55
+ enumerable: true,
56
+ get: function get() {
57
+ return _AutocompleteSearch[key];
58
+ }
59
+ });
60
+ });
39
61
  var _AutocompleteSuggestion = require("./AutocompleteSuggestion");
40
62
  Object.keys(_AutocompleteSuggestion).forEach(function (key) {
41
63
  if (key === "default" || key === "__esModule") return;
@@ -46,4 +68,26 @@ Object.keys(_AutocompleteSuggestion).forEach(function (key) {
46
68
  return _AutocompleteSuggestion[key];
47
69
  }
48
70
  });
71
+ });
72
+ var _createAutocompletePropGetters = require("./createAutocompletePropGetters");
73
+ Object.keys(_createAutocompletePropGetters).forEach(function (key) {
74
+ if (key === "default" || key === "__esModule") return;
75
+ if (key in exports && exports[key] === _createAutocompletePropGetters[key]) return;
76
+ Object.defineProperty(exports, key, {
77
+ enumerable: true,
78
+ get: function get() {
79
+ return _createAutocompletePropGetters[key];
80
+ }
81
+ });
82
+ });
83
+ var _createAutocompleteStorage = require("./createAutocompleteStorage");
84
+ Object.keys(_createAutocompleteStorage).forEach(function (key) {
85
+ if (key === "default" || key === "__esModule") return;
86
+ if (key in exports && exports[key] === _createAutocompleteStorage[key]) return;
87
+ Object.defineProperty(exports, key, {
88
+ enumerable: true,
89
+ get: function get() {
90
+ return _createAutocompleteStorage[key];
91
+ }
92
+ });
49
93
  });
@@ -59,7 +59,8 @@ function createChatComponent(_ref) {
59
59
  classNames: classNames.header,
60
60
  maximized: maximized
61
61
  })), createElement(ChatMessages, (0, _extends2.default)({}, messagesProps, {
62
- classNames: classNames.messages
62
+ classNames: classNames.messages,
63
+ messageClassNames: classNames.message
63
64
  })), createElement(PromptComponent || ChatPrompt, _objectSpread(_objectSpread({}, promptProps), {}, {
64
65
  classNames: classNames.prompt
65
66
  }))), createElement("div", {
@@ -84,6 +84,9 @@ function createChatMessageComponent(_ref) {
84
84
  toolCallId: toolMessage.toolCallId
85
85
  });
86
86
  };
87
+ if (!ToolLayoutComponent) {
88
+ return null;
89
+ }
87
90
  return createElement("div", {
88
91
  key: "".concat(message.id, "-").concat(index),
89
92
  className: "ais-ChatMessage-tool"