react-instantsearch 7.18.0 → 7.19.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.
- package/dist/cjs/widgets/Autocomplete.js +56 -10
- package/dist/cjs/widgets/Chat.js +34 -25
- package/dist/es/widgets/Autocomplete.d.ts +15 -1
- package/dist/es/widgets/Autocomplete.js +56 -10
- package/dist/es/widgets/Chat.d.ts +10 -6
- package/dist/es/widgets/Chat.js +34 -25
- package/dist/umd/ReactInstantSearch.js +444 -139
- package/dist/umd/ReactInstantSearch.js.map +1 -1
- package/dist/umd/ReactInstantSearch.min.js +1 -1
- package/dist/umd/ReactInstantSearch.min.js.map +1 -1
- package/package.json +5 -5
|
@@ -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,9 +8,10 @@ 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 _excluded = ["indices", "showSuggestions", "showRecent"],
|
|
12
|
+
_excluded2 = ["indicesConfig", "refineSearchBox", "getSearchPageURL", "onSelect", "indexUiState", "isSearchPage", "showRecent"];
|
|
14
13
|
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); }
|
|
14
|
+
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); }
|
|
15
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
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
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; }
|
|
@@ -42,6 +42,10 @@ var AutocompleteSuggestion = (0, _instantsearchUiComponents.createAutocompleteSu
|
|
|
42
42
|
createElement: _react.createElement,
|
|
43
43
|
Fragment: _react.Fragment
|
|
44
44
|
});
|
|
45
|
+
var AutocompleteRecentSearch = (0, _instantsearchUiComponents.createAutocompleteRecentSearchComponent)({
|
|
46
|
+
createElement: _react.createElement,
|
|
47
|
+
Fragment: _react.Fragment
|
|
48
|
+
});
|
|
45
49
|
var usePropGetters = (0, _instantsearchUiComponents.createAutocompletePropGetters)({
|
|
46
50
|
useEffect: _react.useEffect,
|
|
47
51
|
useId: _react.useId,
|
|
@@ -49,6 +53,11 @@ var usePropGetters = (0, _instantsearchUiComponents.createAutocompletePropGetter
|
|
|
49
53
|
useRef: _react.useRef,
|
|
50
54
|
useState: _react.useState
|
|
51
55
|
});
|
|
56
|
+
var useStorage = (0, _instantsearchUiComponents.createAutocompleteStorage)({
|
|
57
|
+
useEffect: _react.useEffect,
|
|
58
|
+
useMemo: _react.useMemo,
|
|
59
|
+
useState: _react.useState
|
|
60
|
+
});
|
|
52
61
|
var _ref2 = /*#__PURE__*/_react.default.createElement(_reactInstantsearchCore.Configure, {
|
|
53
62
|
hitsPerPage: 5
|
|
54
63
|
});
|
|
@@ -56,6 +65,7 @@ function EXPERIMENTAL_Autocomplete(_ref) {
|
|
|
56
65
|
var _ref$indices = _ref.indices,
|
|
57
66
|
indices = _ref$indices === void 0 ? [] : _ref$indices,
|
|
58
67
|
showSuggestions = _ref.showSuggestions,
|
|
68
|
+
showRecent = _ref.showRecent,
|
|
59
69
|
props = _objectWithoutProperties(_ref, _excluded);
|
|
60
70
|
var _useInstantSearch = (0, _reactInstantsearchCore.useInstantSearch)(),
|
|
61
71
|
indexUiState = _useInstantSearch.indexUiState,
|
|
@@ -98,7 +108,8 @@ function EXPERIMENTAL_Autocomplete(_ref) {
|
|
|
98
108
|
indicesConfig: indicesConfig,
|
|
99
109
|
refineSearchBox: refine,
|
|
100
110
|
indexUiState: indexUiState,
|
|
101
|
-
isSearchPage: isSearchPage
|
|
111
|
+
isSearchPage: isSearchPage,
|
|
112
|
+
showRecent: showRecent
|
|
102
113
|
}))));
|
|
103
114
|
}
|
|
104
115
|
function InnerAutocomplete(_ref3) {
|
|
@@ -108,16 +119,29 @@ function InnerAutocomplete(_ref3) {
|
|
|
108
119
|
userOnSelect = _ref3.onSelect,
|
|
109
120
|
indexUiState = _ref3.indexUiState,
|
|
110
121
|
isSearchPage = _ref3.isSearchPage,
|
|
122
|
+
showRecent = _ref3.showRecent,
|
|
111
123
|
props = _objectWithoutProperties(_ref3, _excluded2);
|
|
112
124
|
var _useAutocomplete = (0, _reactInstantsearchCore.useAutocomplete)(),
|
|
113
125
|
indices = _useAutocomplete.indices,
|
|
114
|
-
refineAutocomplete = _useAutocomplete.refine
|
|
115
|
-
|
|
126
|
+
refineAutocomplete = _useAutocomplete.refine,
|
|
127
|
+
currentRefinement = _useAutocomplete.currentRefinement;
|
|
128
|
+
var _useStorage = useStorage({
|
|
129
|
+
showRecent: showRecent,
|
|
130
|
+
query: currentRefinement,
|
|
116
131
|
indices: indices,
|
|
117
|
-
indicesConfig: indicesConfig
|
|
132
|
+
indicesConfig: indicesConfig
|
|
133
|
+
}),
|
|
134
|
+
storage = _useStorage.storage,
|
|
135
|
+
storageHits = _useStorage.storageHits,
|
|
136
|
+
indicesForPropGetters = _useStorage.indicesForPropGetters,
|
|
137
|
+
indicesConfigForPropGetters = _useStorage.indicesConfigForPropGetters;
|
|
138
|
+
var _usePropGetters = usePropGetters({
|
|
139
|
+
indices: indicesForPropGetters,
|
|
140
|
+
indicesConfig: indicesConfigForPropGetters,
|
|
118
141
|
onRefine: function onRefine(query) {
|
|
119
142
|
refineAutocomplete(query);
|
|
120
143
|
refineSearchBox(query);
|
|
144
|
+
storage.onAdd(query);
|
|
121
145
|
},
|
|
122
146
|
onSelect: userOnSelect !== null && userOnSelect !== void 0 ? userOnSelect : function (_ref4) {
|
|
123
147
|
var query = _ref4.query,
|
|
@@ -140,15 +164,37 @@ function InnerAutocomplete(_ref3) {
|
|
|
140
164
|
getItemProps = _usePropGetters.getItemProps,
|
|
141
165
|
getPanelProps = _usePropGetters.getPanelProps,
|
|
142
166
|
getRootProps = _usePropGetters.getRootProps;
|
|
167
|
+
var AutocompleteRecentSearchComponent = _typeof(showRecent) === 'object' && showRecent.itemComponent || AutocompleteRecentSearch;
|
|
143
168
|
return /*#__PURE__*/_react.default.createElement(Autocomplete, _extends({}, props, getRootProps()), /*#__PURE__*/_react.default.createElement(_AutocompleteSearch.AutocompleteSearch, {
|
|
144
169
|
inputProps: getInputProps(),
|
|
145
170
|
clearQuery: function clearQuery() {
|
|
146
171
|
refineSearchBox('');
|
|
147
172
|
refineAutocomplete('');
|
|
148
173
|
}
|
|
149
|
-
}), /*#__PURE__*/_react.default.createElement(AutocompletePanel, getPanelProps(),
|
|
150
|
-
|
|
151
|
-
|
|
174
|
+
}), /*#__PURE__*/_react.default.createElement(AutocompletePanel, getPanelProps(), showRecent && /*#__PURE__*/_react.default.createElement(AutocompleteIndex
|
|
175
|
+
// @ts-ignore - there seems to be problems with React.ComponentType and this, but it's actually correct
|
|
176
|
+
, {
|
|
177
|
+
ItemComponent: function ItemComponent(_ref5) {
|
|
178
|
+
var item = _ref5.item,
|
|
179
|
+
onSelect = _ref5.onSelect;
|
|
180
|
+
return /*#__PURE__*/_react.default.createElement(AutocompleteRecentSearchComponent, {
|
|
181
|
+
item: item,
|
|
182
|
+
onSelect: onSelect,
|
|
183
|
+
onRemoveRecentSearch: function onRemoveRecentSearch() {
|
|
184
|
+
return storage.onRemove(item.query);
|
|
185
|
+
}
|
|
186
|
+
});
|
|
187
|
+
},
|
|
188
|
+
classNames: {
|
|
189
|
+
root: 'ais-AutocompleteRecentSearches',
|
|
190
|
+
list: 'ais-AutocompleteRecentSearchesList',
|
|
191
|
+
item: 'ais-AutocompleteRecentSearchesItem'
|
|
192
|
+
},
|
|
193
|
+
items: storageHits,
|
|
194
|
+
getItemProps: getItemProps
|
|
195
|
+
}), indices.map(function (_ref6, index) {
|
|
196
|
+
var indexId = _ref6.indexId,
|
|
197
|
+
hits = _ref6.hits;
|
|
152
198
|
return /*#__PURE__*/_react.default.createElement(AutocompleteIndex, {
|
|
153
199
|
key: indexId
|
|
154
200
|
// @ts-expect-error - there seems to be problems with React.ComponentType and this, but it's actually correct
|
package/dist/cjs/widgets/Chat.js
CHANGED
|
@@ -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", "
|
|
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
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
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:
|
|
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
|
-
|
|
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,
|
|
@@ -12,9 +12,23 @@ export type AutocompleteProps<TItem extends BaseHit> = ComponentProps<'div'> & {
|
|
|
12
12
|
showSuggestions?: Partial<Pick<IndexConfig<{
|
|
13
13
|
query: string;
|
|
14
14
|
}>, 'indexName' | 'getURL' | 'headerComponent' | 'itemComponent' | 'classNames'>>;
|
|
15
|
+
showRecent?: boolean | {
|
|
16
|
+
/**
|
|
17
|
+
* Storage key to use in the local storage.
|
|
18
|
+
*/
|
|
19
|
+
storageKey?: string;
|
|
20
|
+
/**
|
|
21
|
+
* Component to use for each recent search item.
|
|
22
|
+
*/
|
|
23
|
+
itemComponent: AutocompleteIndexProps<{
|
|
24
|
+
query: string;
|
|
25
|
+
}>['ItemComponent'] & {
|
|
26
|
+
onRemoveRecentSearch: () => void;
|
|
27
|
+
};
|
|
28
|
+
};
|
|
15
29
|
getSearchPageURL?: (nextUiState: IndexUiState) => string;
|
|
16
30
|
onSelect?: AutocompleteIndexConfig<TItem>['onSelect'];
|
|
17
31
|
classNames?: Partial<AutocompleteClassNames>;
|
|
18
32
|
};
|
|
19
|
-
export declare function EXPERIMENTAL_Autocomplete<TItem extends BaseHit = BaseHit>({ indices, showSuggestions, ...props }: AutocompleteProps<TItem>): React.JSX.Element;
|
|
33
|
+
export declare function EXPERIMENTAL_Autocomplete<TItem extends BaseHit = BaseHit>({ indices, showSuggestions, showRecent, ...props }: AutocompleteProps<TItem>): React.JSX.Element;
|
|
20
34
|
export {};
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
+
var _excluded = ["indices", "showSuggestions", "showRecent"],
|
|
2
|
+
_excluded2 = ["indicesConfig", "refineSearchBox", "getSearchPageURL", "onSelect", "indexUiState", "isSearchPage", "showRecent"];
|
|
1
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); }
|
|
2
|
-
var _excluded = ["indices", "showSuggestions"],
|
|
3
|
-
_excluded2 = ["indicesConfig", "refineSearchBox", "getSearchPageURL", "onSelect", "indexUiState", "isSearchPage"];
|
|
4
4
|
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; }
|
|
5
5
|
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; }
|
|
6
6
|
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; }
|
|
@@ -15,7 +15,7 @@ function _arrayWithoutHoles(r) { if (Array.isArray(r)) return _arrayLikeToArray(
|
|
|
15
15
|
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; }
|
|
16
16
|
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; }
|
|
17
17
|
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; }
|
|
18
|
-
import { createAutocompleteComponent, createAutocompleteIndexComponent, createAutocompletePanelComponent, createAutocompletePropGetters, createAutocompleteSuggestionComponent, cx } from 'instantsearch-ui-components';
|
|
18
|
+
import { createAutocompleteComponent, createAutocompleteIndexComponent, createAutocompletePanelComponent, createAutocompletePropGetters, createAutocompleteSuggestionComponent, createAutocompleteRecentSearchComponent, createAutocompleteStorage, cx } from 'instantsearch-ui-components';
|
|
19
19
|
import React, { createElement, Fragment, useEffect, useId, useMemo, useRef, useState } from 'react';
|
|
20
20
|
import { Configure, Index, useAutocomplete, useInstantSearch, useSearchBox } from 'react-instantsearch-core';
|
|
21
21
|
import { AutocompleteSearch } from "../components/AutocompleteSearch.js";
|
|
@@ -35,6 +35,10 @@ var AutocompleteSuggestion = createAutocompleteSuggestionComponent({
|
|
|
35
35
|
createElement: createElement,
|
|
36
36
|
Fragment: Fragment
|
|
37
37
|
});
|
|
38
|
+
var AutocompleteRecentSearch = createAutocompleteRecentSearchComponent({
|
|
39
|
+
createElement: createElement,
|
|
40
|
+
Fragment: Fragment
|
|
41
|
+
});
|
|
38
42
|
var usePropGetters = createAutocompletePropGetters({
|
|
39
43
|
useEffect: useEffect,
|
|
40
44
|
useId: useId,
|
|
@@ -42,6 +46,11 @@ var usePropGetters = createAutocompletePropGetters({
|
|
|
42
46
|
useRef: useRef,
|
|
43
47
|
useState: useState
|
|
44
48
|
});
|
|
49
|
+
var useStorage = createAutocompleteStorage({
|
|
50
|
+
useEffect: useEffect,
|
|
51
|
+
useMemo: useMemo,
|
|
52
|
+
useState: useState
|
|
53
|
+
});
|
|
45
54
|
var _ref2 = /*#__PURE__*/React.createElement(Configure, {
|
|
46
55
|
hitsPerPage: 5
|
|
47
56
|
});
|
|
@@ -49,6 +58,7 @@ export function EXPERIMENTAL_Autocomplete(_ref) {
|
|
|
49
58
|
var _ref$indices = _ref.indices,
|
|
50
59
|
indices = _ref$indices === void 0 ? [] : _ref$indices,
|
|
51
60
|
showSuggestions = _ref.showSuggestions,
|
|
61
|
+
showRecent = _ref.showRecent,
|
|
52
62
|
props = _objectWithoutProperties(_ref, _excluded);
|
|
53
63
|
var _useInstantSearch = useInstantSearch(),
|
|
54
64
|
indexUiState = _useInstantSearch.indexUiState,
|
|
@@ -91,7 +101,8 @@ export function EXPERIMENTAL_Autocomplete(_ref) {
|
|
|
91
101
|
indicesConfig: indicesConfig,
|
|
92
102
|
refineSearchBox: refine,
|
|
93
103
|
indexUiState: indexUiState,
|
|
94
|
-
isSearchPage: isSearchPage
|
|
104
|
+
isSearchPage: isSearchPage,
|
|
105
|
+
showRecent: showRecent
|
|
95
106
|
}))));
|
|
96
107
|
}
|
|
97
108
|
function InnerAutocomplete(_ref3) {
|
|
@@ -101,16 +112,29 @@ function InnerAutocomplete(_ref3) {
|
|
|
101
112
|
userOnSelect = _ref3.onSelect,
|
|
102
113
|
indexUiState = _ref3.indexUiState,
|
|
103
114
|
isSearchPage = _ref3.isSearchPage,
|
|
115
|
+
showRecent = _ref3.showRecent,
|
|
104
116
|
props = _objectWithoutProperties(_ref3, _excluded2);
|
|
105
117
|
var _useAutocomplete = useAutocomplete(),
|
|
106
118
|
indices = _useAutocomplete.indices,
|
|
107
|
-
refineAutocomplete = _useAutocomplete.refine
|
|
108
|
-
|
|
119
|
+
refineAutocomplete = _useAutocomplete.refine,
|
|
120
|
+
currentRefinement = _useAutocomplete.currentRefinement;
|
|
121
|
+
var _useStorage = useStorage({
|
|
122
|
+
showRecent: showRecent,
|
|
123
|
+
query: currentRefinement,
|
|
109
124
|
indices: indices,
|
|
110
|
-
indicesConfig: indicesConfig
|
|
125
|
+
indicesConfig: indicesConfig
|
|
126
|
+
}),
|
|
127
|
+
storage = _useStorage.storage,
|
|
128
|
+
storageHits = _useStorage.storageHits,
|
|
129
|
+
indicesForPropGetters = _useStorage.indicesForPropGetters,
|
|
130
|
+
indicesConfigForPropGetters = _useStorage.indicesConfigForPropGetters;
|
|
131
|
+
var _usePropGetters = usePropGetters({
|
|
132
|
+
indices: indicesForPropGetters,
|
|
133
|
+
indicesConfig: indicesConfigForPropGetters,
|
|
111
134
|
onRefine: function onRefine(query) {
|
|
112
135
|
refineAutocomplete(query);
|
|
113
136
|
refineSearchBox(query);
|
|
137
|
+
storage.onAdd(query);
|
|
114
138
|
},
|
|
115
139
|
onSelect: userOnSelect !== null && userOnSelect !== void 0 ? userOnSelect : function (_ref4) {
|
|
116
140
|
var query = _ref4.query,
|
|
@@ -133,15 +157,37 @@ function InnerAutocomplete(_ref3) {
|
|
|
133
157
|
getItemProps = _usePropGetters.getItemProps,
|
|
134
158
|
getPanelProps = _usePropGetters.getPanelProps,
|
|
135
159
|
getRootProps = _usePropGetters.getRootProps;
|
|
160
|
+
var AutocompleteRecentSearchComponent = _typeof(showRecent) === 'object' && showRecent.itemComponent || AutocompleteRecentSearch;
|
|
136
161
|
return /*#__PURE__*/React.createElement(Autocomplete, _extends({}, props, getRootProps()), /*#__PURE__*/React.createElement(AutocompleteSearch, {
|
|
137
162
|
inputProps: getInputProps(),
|
|
138
163
|
clearQuery: function clearQuery() {
|
|
139
164
|
refineSearchBox('');
|
|
140
165
|
refineAutocomplete('');
|
|
141
166
|
}
|
|
142
|
-
}), /*#__PURE__*/React.createElement(AutocompletePanel, getPanelProps(),
|
|
143
|
-
|
|
144
|
-
|
|
167
|
+
}), /*#__PURE__*/React.createElement(AutocompletePanel, getPanelProps(), showRecent && /*#__PURE__*/React.createElement(AutocompleteIndex
|
|
168
|
+
// @ts-ignore - there seems to be problems with React.ComponentType and this, but it's actually correct
|
|
169
|
+
, {
|
|
170
|
+
ItemComponent: function ItemComponent(_ref5) {
|
|
171
|
+
var item = _ref5.item,
|
|
172
|
+
onSelect = _ref5.onSelect;
|
|
173
|
+
return /*#__PURE__*/React.createElement(AutocompleteRecentSearchComponent, {
|
|
174
|
+
item: item,
|
|
175
|
+
onSelect: onSelect,
|
|
176
|
+
onRemoveRecentSearch: function onRemoveRecentSearch() {
|
|
177
|
+
return storage.onRemove(item.query);
|
|
178
|
+
}
|
|
179
|
+
});
|
|
180
|
+
},
|
|
181
|
+
classNames: {
|
|
182
|
+
root: 'ais-AutocompleteRecentSearches',
|
|
183
|
+
list: 'ais-AutocompleteRecentSearchesList',
|
|
184
|
+
item: 'ais-AutocompleteRecentSearchesItem'
|
|
185
|
+
},
|
|
186
|
+
items: storageHits,
|
|
187
|
+
getItemProps: getItemProps
|
|
188
|
+
}), indices.map(function (_ref6, index) {
|
|
189
|
+
var indexId = _ref6.indexId,
|
|
190
|
+
hits = _ref6.hits;
|
|
145
191
|
return /*#__PURE__*/React.createElement(AutocompleteIndex, {
|
|
146
192
|
key: indexId
|
|
147
193
|
// @ts-expect-error - there seems to be problems with React.ComponentType and this, but it's actually correct
|
|
@@ -1,23 +1,22 @@
|
|
|
1
1
|
import { SearchIndexToolType, RecommendToolType } from 'instantsearch.js/es/lib/chat';
|
|
2
2
|
import React from 'react';
|
|
3
3
|
export { SearchIndexToolType, RecommendToolType };
|
|
4
|
-
import type { ChatProps as ChatUiProps, RecommendComponentProps, RecordWithObjectID, UserClientSideTool, UserClientSideTools } from 'instantsearch-ui-components';
|
|
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
|
-
import type {
|
|
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
10
|
type UiProps = Pick<ChatUiProps, 'open' | 'headerProps' | 'toggleButtonProps' | 'messagesProps' | 'promptProps' | 'headerComponent' | 'promptComponent'>;
|
|
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'>;
|
|
13
|
+
type UserMessagesProps = Omit<ChatUiProps['messagesProps'], 'messages' | 'tools' | 'indexUiState' | 'setIndexUiState' | 'scrollRef' | 'contentRef' | 'messageComponent' | 'leadingComponent' | 'footerComponent' | '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;
|
|
17
|
-
export type ChatProps<TObject, TUiMessage extends UIMessage = UIMessage> = Omit<ChatUiProps, keyof UiProps> &
|
|
17
|
+
export type ChatProps<TObject, TUiMessage extends UIMessage = UIMessage> = Omit<ChatUiProps, keyof UiProps> & UseChatProps<TUiMessage> & {
|
|
18
18
|
itemComponent?: ItemComponent<TObject>;
|
|
19
19
|
tools?: UserClientSideTools;
|
|
20
|
-
defaultOpen?: boolean;
|
|
21
20
|
getSearchPageURL?: (nextUiState: IndexUiState) => string;
|
|
22
21
|
toggleButtonProps?: UserToggleButtonProps;
|
|
23
22
|
headerProps?: UserHeaderProps;
|
|
@@ -36,10 +35,15 @@ export type ChatProps<TObject, TUiMessage extends UIMessage = UIMessage> = Omit<
|
|
|
36
35
|
promptHeaderComponent?: ChatUiProps['promptProps']['headerComponent'];
|
|
37
36
|
promptFooterComponent?: ChatUiProps['promptProps']['footerComponent'];
|
|
38
37
|
actionsComponent?: ChatUiProps['messagesProps']['actionsComponent'];
|
|
38
|
+
assistantMessageLeadingComponent?: ChatMessageProps['leadingComponent'];
|
|
39
|
+
assistantMessageFooterComponent?: ChatMessageProps['footerComponent'];
|
|
40
|
+
userMessageLeadingComponent?: ChatMessageProps['leadingComponent'];
|
|
41
|
+
userMessageFooterComponent?: ChatMessageProps['footerComponent'];
|
|
39
42
|
translations?: Partial<{
|
|
40
43
|
prompt: ChatUiProps['promptProps']['translations'];
|
|
41
44
|
header: ChatUiProps['headerProps']['translations'];
|
|
45
|
+
message: ChatUiProps['messagesProps']['messageTranslations'];
|
|
42
46
|
messages: ChatUiProps['messagesProps']['translations'];
|
|
43
47
|
}>;
|
|
44
48
|
};
|
|
45
|
-
export declare function Chat<TObject extends RecordWithObjectID, TUiMessage extends UIMessage>({ tools: userTools,
|
|
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;
|
package/dist/es/widgets/Chat.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
var _excluded = ["tools", "
|
|
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"];
|
|
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; }
|
|
@@ -13,7 +13,6 @@ function _objectWithoutPropertiesLoose(r, e) { if (null == r) return {}; var t =
|
|
|
13
13
|
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; }
|
|
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
|
-
import { lastAssistantMessageIsCompleteWithToolCalls } from 'ai';
|
|
17
16
|
import { createChatComponent } from 'instantsearch-ui-components';
|
|
18
17
|
import { SearchIndexToolType, RecommendToolType } from "instantsearch.js/es/lib/chat/index.js";
|
|
19
18
|
import React, { createElement, Fragment } from 'react';
|
|
@@ -31,8 +30,6 @@ export function createDefaultTools(itemComponent, getSearchPageURL) {
|
|
|
31
30
|
}
|
|
32
31
|
export function Chat(_ref2) {
|
|
33
32
|
var userTools = _ref2.tools,
|
|
34
|
-
_ref2$defaultOpen = _ref2.defaultOpen,
|
|
35
|
-
defaultOpen = _ref2$defaultOpen === void 0 ? false : _ref2$defaultOpen,
|
|
36
33
|
toggleButtonProps = _ref2.toggleButtonProps,
|
|
37
34
|
headerProps = _ref2.headerProps,
|
|
38
35
|
messagesProps = _ref2.messagesProps,
|
|
@@ -50,6 +47,10 @@ export function Chat(_ref2) {
|
|
|
50
47
|
promptComponent = _ref2.promptComponent,
|
|
51
48
|
promptHeaderComponent = _ref2.promptHeaderComponent,
|
|
52
49
|
promptFooterComponent = _ref2.promptFooterComponent,
|
|
50
|
+
assistantMessageLeadingComponent = _ref2.assistantMessageLeadingComponent,
|
|
51
|
+
assistantMessageFooterComponent = _ref2.assistantMessageFooterComponent,
|
|
52
|
+
userMessageLeadingComponent = _ref2.userMessageLeadingComponent,
|
|
53
|
+
userMessageFooterComponent = _ref2.userMessageFooterComponent,
|
|
53
54
|
actionsComponent = _ref2.actionsComponent,
|
|
54
55
|
classNames = _ref2.classNames,
|
|
55
56
|
_ref2$translations = _ref2.translations,
|
|
@@ -59,6 +60,7 @@ export function Chat(_ref2) {
|
|
|
59
60
|
props = _objectWithoutProperties(_ref2, _excluded);
|
|
60
61
|
var promptTranslations = translations.prompt,
|
|
61
62
|
headerTranslations = translations.header,
|
|
63
|
+
messageTranslations = translations.message,
|
|
62
64
|
messagesTranslations = translations.messages;
|
|
63
65
|
var _useInstantSearch = useInstantSearch(),
|
|
64
66
|
indexUiState = _useInstantSearch.indexUiState,
|
|
@@ -80,25 +82,23 @@ export function Chat(_ref2) {
|
|
|
80
82
|
var defaults = createDefaultTools(itemComponent, getSearchPageURL);
|
|
81
83
|
return _objectSpread(_objectSpread({}, defaults), userTools);
|
|
82
84
|
}, [getSearchPageURL, itemComponent, userTools]);
|
|
83
|
-
var
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
onClearTransitionEnd = _useChat.onClearTransitionEnd,
|
|
101
|
-
hookTools = _useChat.tools;
|
|
85
|
+
var chatState = useChat(_objectSpread(_objectSpread({}, props), {}, {
|
|
86
|
+
tools: tools
|
|
87
|
+
}));
|
|
88
|
+
var messages = chatState.messages,
|
|
89
|
+
sendMessage = chatState.sendMessage,
|
|
90
|
+
status = chatState.status,
|
|
91
|
+
regenerate = chatState.regenerate,
|
|
92
|
+
stop = chatState.stop,
|
|
93
|
+
error = chatState.error,
|
|
94
|
+
input = chatState.input,
|
|
95
|
+
setInput = chatState.setInput,
|
|
96
|
+
open = chatState.open,
|
|
97
|
+
setOpen = chatState.setOpen,
|
|
98
|
+
isClearing = chatState.isClearing,
|
|
99
|
+
clearMessages = chatState.clearMessages,
|
|
100
|
+
onClearTransitionEnd = chatState.onClearTransitionEnd,
|
|
101
|
+
toolsFromConnector = chatState.tools;
|
|
102
102
|
if (process.env.NODE_ENV === 'development' && error) {
|
|
103
103
|
throw error;
|
|
104
104
|
}
|
|
@@ -143,7 +143,7 @@ export function Chat(_ref2) {
|
|
|
143
143
|
return setOpen(false);
|
|
144
144
|
},
|
|
145
145
|
messages: messages,
|
|
146
|
-
tools:
|
|
146
|
+
tools: toolsFromConnector,
|
|
147
147
|
indexUiState: indexUiState,
|
|
148
148
|
setIndexUiState: setIndexUiState,
|
|
149
149
|
isClearing: isClearing,
|
|
@@ -155,7 +155,16 @@ export function Chat(_ref2) {
|
|
|
155
155
|
loaderComponent: messagesLoaderComponent,
|
|
156
156
|
errorComponent: messagesErrorComponent,
|
|
157
157
|
actionsComponent: actionsComponent,
|
|
158
|
-
|
|
158
|
+
assistantMessageProps: _objectSpread({
|
|
159
|
+
leadingComponent: assistantMessageLeadingComponent,
|
|
160
|
+
footerComponent: assistantMessageFooterComponent
|
|
161
|
+
}, messagesProps === null || messagesProps === void 0 ? void 0 : messagesProps.assistantMessageProps),
|
|
162
|
+
userMessageProps: _objectSpread({
|
|
163
|
+
leadingComponent: userMessageLeadingComponent,
|
|
164
|
+
footerComponent: userMessageFooterComponent
|
|
165
|
+
}, messagesProps === null || messagesProps === void 0 ? void 0 : messagesProps.userMessageProps),
|
|
166
|
+
translations: messagesTranslations,
|
|
167
|
+
messageTranslations: messageTranslations
|
|
159
168
|
}, messagesProps),
|
|
160
169
|
promptProps: _objectSpread({
|
|
161
170
|
promptRef: promptRef,
|