react-instantsearch 7.42.0 → 7.43.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/Chat.js
CHANGED
|
@@ -111,6 +111,7 @@ function ChatInner(_0, _1) {
|
|
|
111
111
|
"disableTriggerValidation",
|
|
112
112
|
"showReasoning"
|
|
113
113
|
]), _rest1 = _sliced_to_array._(_rest, 1), ref = _rest1[0];
|
|
114
|
+
var _ref3;
|
|
114
115
|
var promptTranslations = translations.prompt, headerTranslations = translations.header, messageTranslations = translations.message, messagesTranslations = translations.messages;
|
|
115
116
|
var _useInstantSearch = (0, _reactinstantsearchcore.useInstantSearch)(), indexUiState = _useInstantSearch.indexUiState, setIndexUiState = _useInstantSearch.setIndexUiState;
|
|
116
117
|
var _useState = _sliced_to_array._((0, _react.useState)(false), 2), maximized = _useState[0], setMaximized = _useState[1];
|
|
@@ -136,7 +137,7 @@ function ChatInner(_0, _1) {
|
|
|
136
137
|
tools: tools,
|
|
137
138
|
disableTriggerValidation: effectiveDisableTriggerValidation
|
|
138
139
|
}));
|
|
139
|
-
var messages = chatState.messages, sendMessage = chatState.sendMessage, status = chatState.status, regenerate = chatState.regenerate, stop = chatState.stop, error = chatState.error, input = chatState.input, setInput = chatState.setInput, open = chatState.open, setOpen = chatState.setOpen, clearMessages = chatState.clearMessages, toolsFromConnector = chatState.tools, suggestions = chatState.suggestions, onFeedback = chatState.sendChatMessageFeedback, feedbackState = chatState.feedbackState;
|
|
140
|
+
var messages = chatState.messages, sendMessage = chatState.sendMessage, status = chatState.status, regenerate = chatState.regenerate, stop = chatState.stop, error = chatState.error, input = chatState.input, setInput = chatState.setInput, open = chatState.open, setOpen = chatState.setOpen, clearMessages = chatState.clearMessages, toolsFromConnector = chatState.tools, suggestions = chatState.suggestions, onFeedback = chatState.sendChatMessageFeedback, feedbackState = chatState.feedbackState, consumeInputFocus = chatState['~consumeInputFocus'], isOpenStatePersistenceEnabled = chatState['~isOpenStatePersistenceEnabled'];
|
|
140
141
|
(0, _react.useImperativeHandle)(ref, function() {
|
|
141
142
|
return {
|
|
142
143
|
setOpen: setOpen,
|
|
@@ -146,19 +147,14 @@ function ChatInner(_0, _1) {
|
|
|
146
147
|
setInput: setInput
|
|
147
148
|
};
|
|
148
149
|
});
|
|
149
|
-
var wasOpenRef = (0, _react.useRef)(false);
|
|
150
150
|
(0, _react.useEffect)(function() {
|
|
151
|
-
|
|
152
|
-
if (shouldFocusPrompt) {
|
|
151
|
+
if (consumeInputFocus === null || consumeInputFocus === void 0 ? void 0 : consumeInputFocus()) {
|
|
153
152
|
window.requestAnimationFrame(function() {
|
|
154
153
|
var _promptRef_current;
|
|
155
154
|
(_promptRef_current = promptRef.current) === null || _promptRef_current === void 0 ? void 0 : _promptRef_current.focus();
|
|
156
155
|
});
|
|
157
156
|
}
|
|
158
|
-
|
|
159
|
-
}, [
|
|
160
|
-
open
|
|
161
|
-
]);
|
|
157
|
+
});
|
|
162
158
|
// Keep the conversation pinned to the bottom while streaming. The stick-to-
|
|
163
159
|
// bottom ResizeObserver only reacts to content *height* changes, but tool
|
|
164
160
|
// results such as a horizontally-growing carousel stream in without changing
|
|
@@ -176,7 +172,7 @@ function ChatInner(_0, _1) {
|
|
|
176
172
|
status,
|
|
177
173
|
scrollToBottom
|
|
178
174
|
]);
|
|
179
|
-
var
|
|
175
|
+
var _ref4 = messagesProps !== null && messagesProps !== void 0 ? messagesProps : {}, callerAssistantMessageProps = _ref4.assistantMessageProps, callerUserMessageProps = _ref4.userMessageProps, restMessagesProps = _object_without_properties._(_ref4, [
|
|
180
176
|
"assistantMessageProps",
|
|
181
177
|
"userMessageProps"
|
|
182
178
|
]);
|
|
@@ -249,7 +245,7 @@ function ChatInner(_0, _1) {
|
|
|
249
245
|
}, callerUserMessageProps),
|
|
250
246
|
error: error
|
|
251
247
|
}),
|
|
252
|
-
promptProps: _object_spread._({
|
|
248
|
+
promptProps: _object_spread_props._(_object_spread._({
|
|
253
249
|
promptRef: promptRef,
|
|
254
250
|
status: status,
|
|
255
251
|
value: input,
|
|
@@ -268,7 +264,9 @@ function ChatInner(_0, _1) {
|
|
|
268
264
|
},
|
|
269
265
|
headerComponent: promptHeaderComponent,
|
|
270
266
|
footerComponent: promptFooterComponent
|
|
271
|
-
}, promptProps),
|
|
267
|
+
}, promptProps), {
|
|
268
|
+
autoFocus: (_ref3 = promptProps === null || promptProps === void 0 ? void 0 : promptProps.autoFocus) !== null && _ref3 !== void 0 ? _ref3 : !isOpenStatePersistenceEnabled || isInlineLayoutComponent
|
|
269
|
+
}),
|
|
272
270
|
suggestionsProps: {
|
|
273
271
|
suggestions: suggestions,
|
|
274
272
|
onSuggestionClick: function onSuggestionClick(suggestion) {
|
package/dist/es/widgets/Chat.js
CHANGED
|
@@ -75,6 +75,7 @@ function ChatInner(_0, _1) {
|
|
|
75
75
|
"disableTriggerValidation",
|
|
76
76
|
"showReasoning"
|
|
77
77
|
]), _rest1 = _$3(_rest, 1), ref = _rest1[0];
|
|
78
|
+
var _ref3;
|
|
78
79
|
var promptTranslations = translations.prompt, headerTranslations = translations.header, messageTranslations = translations.message, messagesTranslations = translations.messages;
|
|
79
80
|
var _useInstantSearch = useInstantSearch(), indexUiState = _useInstantSearch.indexUiState, setIndexUiState = _useInstantSearch.setIndexUiState;
|
|
80
81
|
var _useState = _$3(useState(false), 2), maximized = _useState[0], setMaximized = _useState[1];
|
|
@@ -100,7 +101,7 @@ function ChatInner(_0, _1) {
|
|
|
100
101
|
tools: tools,
|
|
101
102
|
disableTriggerValidation: effectiveDisableTriggerValidation
|
|
102
103
|
}));
|
|
103
|
-
var messages = chatState.messages, sendMessage = chatState.sendMessage, status = chatState.status, regenerate = chatState.regenerate, stop = chatState.stop, error = chatState.error, input = chatState.input, setInput = chatState.setInput, open = chatState.open, setOpen = chatState.setOpen, clearMessages = chatState.clearMessages, toolsFromConnector = chatState.tools, suggestions = chatState.suggestions, onFeedback = chatState.sendChatMessageFeedback, feedbackState = chatState.feedbackState;
|
|
104
|
+
var messages = chatState.messages, sendMessage = chatState.sendMessage, status = chatState.status, regenerate = chatState.regenerate, stop = chatState.stop, error = chatState.error, input = chatState.input, setInput = chatState.setInput, open = chatState.open, setOpen = chatState.setOpen, clearMessages = chatState.clearMessages, toolsFromConnector = chatState.tools, suggestions = chatState.suggestions, onFeedback = chatState.sendChatMessageFeedback, feedbackState = chatState.feedbackState, consumeInputFocus = chatState['~consumeInputFocus'], isOpenStatePersistenceEnabled = chatState['~isOpenStatePersistenceEnabled'];
|
|
104
105
|
useImperativeHandle(ref, function() {
|
|
105
106
|
return {
|
|
106
107
|
setOpen: setOpen,
|
|
@@ -110,19 +111,14 @@ function ChatInner(_0, _1) {
|
|
|
110
111
|
setInput: setInput
|
|
111
112
|
};
|
|
112
113
|
});
|
|
113
|
-
var wasOpenRef = useRef(false);
|
|
114
114
|
useEffect(function() {
|
|
115
|
-
|
|
116
|
-
if (shouldFocusPrompt) {
|
|
115
|
+
if (consumeInputFocus === null || consumeInputFocus === void 0 ? void 0 : consumeInputFocus()) {
|
|
117
116
|
window.requestAnimationFrame(function() {
|
|
118
117
|
var _promptRef_current;
|
|
119
118
|
(_promptRef_current = promptRef.current) === null || _promptRef_current === void 0 ? void 0 : _promptRef_current.focus();
|
|
120
119
|
});
|
|
121
120
|
}
|
|
122
|
-
|
|
123
|
-
}, [
|
|
124
|
-
open
|
|
125
|
-
]);
|
|
121
|
+
});
|
|
126
122
|
// Keep the conversation pinned to the bottom while streaming. The stick-to-
|
|
127
123
|
// bottom ResizeObserver only reacts to content *height* changes, but tool
|
|
128
124
|
// results such as a horizontally-growing carousel stream in without changing
|
|
@@ -140,7 +136,7 @@ function ChatInner(_0, _1) {
|
|
|
140
136
|
status,
|
|
141
137
|
scrollToBottom
|
|
142
138
|
]);
|
|
143
|
-
var
|
|
139
|
+
var _ref4 = messagesProps !== null && messagesProps !== void 0 ? messagesProps : {}, callerAssistantMessageProps = _ref4.assistantMessageProps, callerUserMessageProps = _ref4.userMessageProps, restMessagesProps = _$2(_ref4, [
|
|
144
140
|
"assistantMessageProps",
|
|
145
141
|
"userMessageProps"
|
|
146
142
|
]);
|
|
@@ -213,7 +209,7 @@ function ChatInner(_0, _1) {
|
|
|
213
209
|
}, callerUserMessageProps),
|
|
214
210
|
error: error
|
|
215
211
|
}),
|
|
216
|
-
promptProps: _$5({
|
|
212
|
+
promptProps: _$4(_$5({
|
|
217
213
|
promptRef: promptRef,
|
|
218
214
|
status: status,
|
|
219
215
|
value: input,
|
|
@@ -232,7 +228,9 @@ function ChatInner(_0, _1) {
|
|
|
232
228
|
},
|
|
233
229
|
headerComponent: promptHeaderComponent,
|
|
234
230
|
footerComponent: promptFooterComponent
|
|
235
|
-
}, promptProps),
|
|
231
|
+
}, promptProps), {
|
|
232
|
+
autoFocus: (_ref3 = promptProps === null || promptProps === void 0 ? void 0 : promptProps.autoFocus) !== null && _ref3 !== void 0 ? _ref3 : !isOpenStatePersistenceEnabled || isInlineLayoutComponent
|
|
233
|
+
}),
|
|
236
234
|
suggestionsProps: {
|
|
237
235
|
suggestions: suggestions,
|
|
238
236
|
onSuggestionClick: function onSuggestionClick(suggestion) {
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! React InstantSearch 7.
|
|
1
|
+
/*! React InstantSearch 7.43.0 | © Algolia, Inc. and contributors; MIT License | https://github.com/algolia/instantsearch */
|
|
2
2
|
(function (global, factory) {
|
|
3
3
|
typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('react')) :
|
|
4
4
|
typeof define === 'function' && define.amd ? define(['exports', 'react'], factory) :
|
|
@@ -24,7 +24,7 @@
|
|
|
24
24
|
|
|
25
25
|
var React__namespace = /*#__PURE__*/_interopNamespaceDefault(React);
|
|
26
26
|
|
|
27
|
-
var version$2 = '7.
|
|
27
|
+
var version$2 = '7.43.0';
|
|
28
28
|
|
|
29
29
|
function _define_property(obj, key, value) {
|
|
30
30
|
if (key in obj) {
|
|
@@ -6278,22 +6278,29 @@
|
|
|
6278
6278
|
*
|
|
6279
6279
|
* Parameters set on a widget win, so an explicit `queryParameters.userToken`
|
|
6280
6280
|
* keeps overriding the middleware.
|
|
6281
|
+
*
|
|
6282
|
+
* The fallback query is a regular search, so it gets the same treatment — but
|
|
6283
|
+
* only merged into a `fallbackParameters` the widget already set. See below.
|
|
6281
6284
|
*/ function addInsightsToRecommendParameters(recommendParameters, param) {
|
|
6282
6285
|
var userToken = param.userToken, clickAnalytics = param.clickAnalytics;
|
|
6283
6286
|
if (userToken === undefined && clickAnalytics === undefined) {
|
|
6284
6287
|
return recommendParameters;
|
|
6285
6288
|
}
|
|
6289
|
+
var insightsParameters = _object_spread({}, clickAnalytics === undefined ? {} : {
|
|
6290
|
+
clickAnalytics: clickAnalytics
|
|
6291
|
+
}, userToken === undefined ? {} : {
|
|
6292
|
+
userToken: userToken
|
|
6293
|
+
});
|
|
6286
6294
|
return new algoliasearchHelper.RecommendParameters({
|
|
6287
6295
|
params: recommendParameters.params.map(function(params) {
|
|
6288
|
-
// v4 `TrendingFacetsQuery` doesn't include `queryParameters
|
|
6289
|
-
// API and the helper support them, like
|
|
6290
|
-
|
|
6291
|
-
|
|
6292
|
-
|
|
6293
|
-
|
|
6294
|
-
|
|
6295
|
-
|
|
6296
|
-
}, queryParameters)
|
|
6296
|
+
// v4 `TrendingFacetsQuery` doesn't include `queryParameters` or
|
|
6297
|
+
// `fallbackParameters`, but the v5 API and the helper support them, like
|
|
6298
|
+
// `connectTrendingFacets` does.
|
|
6299
|
+
var queryParameters = params.queryParameters, fallbackParameters = params.fallbackParameters;
|
|
6300
|
+
return _object_spread(_object_spread_props(_object_spread({}, params), {
|
|
6301
|
+
queryParameters: _object_spread({}, insightsParameters, queryParameters)
|
|
6302
|
+
}), fallbackParameters && {
|
|
6303
|
+
fallbackParameters: _object_spread({}, insightsParameters, fallbackParameters)
|
|
6297
6304
|
});
|
|
6298
6305
|
})
|
|
6299
6306
|
});
|
|
@@ -9216,7 +9223,7 @@
|
|
|
9216
9223
|
});
|
|
9217
9224
|
}
|
|
9218
9225
|
|
|
9219
|
-
var version = '4.
|
|
9226
|
+
var version = '4.110.0';
|
|
9220
9227
|
|
|
9221
9228
|
var ANONYMOUS_TOKEN_COOKIE_KEY = '_ALGOLIA';
|
|
9222
9229
|
function getCookie(name) {
|
|
@@ -12093,6 +12100,10 @@
|
|
|
12093
12100
|
var ssrSearchRef = React.useRef(null);
|
|
12094
12101
|
// This is used to re-map the result index to the requesting widget
|
|
12095
12102
|
var recommendIdx = React.useRef(0);
|
|
12103
|
+
var hydrationCompleteRef = React.useRef(false);
|
|
12104
|
+
React.useEffect(function() {
|
|
12105
|
+
hydrationCompleteRef.current = true;
|
|
12106
|
+
}, []);
|
|
12096
12107
|
// When <DynamicWidgets> is mounted, a second provider is used above the user-land
|
|
12097
12108
|
// <InstantSearchSSRProvider> in `getServerState()`.
|
|
12098
12109
|
// To avoid the user's provider overriding the context value with an empty object,
|
|
@@ -12100,11 +12111,13 @@
|
|
|
12100
12111
|
if (Object.keys(props).length === 0) {
|
|
12101
12112
|
return /*#__PURE__*/ React.createElement(React.Fragment, null, children);
|
|
12102
12113
|
}
|
|
12114
|
+
var contextValue = _object_spread_props(_object_spread({}, props), {
|
|
12115
|
+
ssrSearchRef: ssrSearchRef,
|
|
12116
|
+
recommendIdx: recommendIdx,
|
|
12117
|
+
hydrationCompleteRef: hydrationCompleteRef
|
|
12118
|
+
});
|
|
12103
12119
|
return /*#__PURE__*/ React.createElement(InstantSearchSSRContext.Provider, {
|
|
12104
|
-
value:
|
|
12105
|
-
ssrSearchRef: ssrSearchRef,
|
|
12106
|
-
recommendIdx: recommendIdx
|
|
12107
|
-
})
|
|
12120
|
+
value: contextValue
|
|
12108
12121
|
}, children);
|
|
12109
12122
|
}
|
|
12110
12123
|
|
|
@@ -14148,13 +14161,17 @@
|
|
|
14148
14161
|
if (!chatRenderState) {
|
|
14149
14162
|
return false;
|
|
14150
14163
|
}
|
|
14151
|
-
(_chatRenderState_setOpen = chatRenderState.setOpen) === null || _chatRenderState_setOpen === void 0 ? void 0 : _chatRenderState_setOpen.call(chatRenderState, true);
|
|
14152
14164
|
var trimmed = (_ref1 = message === null || message === void 0 ? void 0 : message.trim()) !== null && _ref1 !== void 0 ? _ref1 : '';
|
|
14153
14165
|
if (!trimmed) {
|
|
14154
|
-
|
|
14155
|
-
|
|
14166
|
+
if (chatRenderState.focusInput) {
|
|
14167
|
+
chatRenderState.focusInput();
|
|
14168
|
+
} else {
|
|
14169
|
+
var _chatRenderState_setOpen1;
|
|
14170
|
+
(_chatRenderState_setOpen1 = chatRenderState.setOpen) === null || _chatRenderState_setOpen1 === void 0 ? void 0 : _chatRenderState_setOpen1.call(chatRenderState, true);
|
|
14171
|
+
}
|
|
14156
14172
|
return false;
|
|
14157
14173
|
}
|
|
14174
|
+
(_chatRenderState_setOpen = chatRenderState.setOpen) === null || _chatRenderState_setOpen === void 0 ? void 0 : _chatRenderState_setOpen.call(chatRenderState, true);
|
|
14158
14175
|
if (isChatBusy(chatRenderState) || !chatRenderState.sendMessage) {
|
|
14159
14176
|
return false;
|
|
14160
14177
|
}
|
|
@@ -14382,6 +14399,58 @@
|
|
|
14382
14399
|
name: 'chat',
|
|
14383
14400
|
connector: true
|
|
14384
14401
|
});
|
|
14402
|
+
var OPEN_STATE_CACHE_KEY = 'instantsearch-chat-open-state';
|
|
14403
|
+
function normalizePersistence(persistence, hasCustomChat) {
|
|
14404
|
+
if (hasCustomChat) {
|
|
14405
|
+
return {
|
|
14406
|
+
messages: false,
|
|
14407
|
+
open: persistence === undefined || (typeof persistence === "undefined" ? "undefined" : _type_of(persistence)) === 'object' && persistence.open === true
|
|
14408
|
+
};
|
|
14409
|
+
}
|
|
14410
|
+
if (persistence === undefined || persistence === true) {
|
|
14411
|
+
return {
|
|
14412
|
+
messages: true,
|
|
14413
|
+
open: true
|
|
14414
|
+
};
|
|
14415
|
+
}
|
|
14416
|
+
if (persistence === false) {
|
|
14417
|
+
return {
|
|
14418
|
+
messages: false,
|
|
14419
|
+
open: false
|
|
14420
|
+
};
|
|
14421
|
+
}
|
|
14422
|
+
return {
|
|
14423
|
+
messages: persistence.messages === true,
|
|
14424
|
+
open: persistence.open === true
|
|
14425
|
+
};
|
|
14426
|
+
}
|
|
14427
|
+
function getOpenStateCacheKey(type) {
|
|
14428
|
+
return "".concat(OPEN_STATE_CACHE_KEY, "-").concat(type);
|
|
14429
|
+
}
|
|
14430
|
+
function readPersistedOpen(type) {
|
|
14431
|
+
try {
|
|
14432
|
+
return safelyRunOnBrowser(function(param) {
|
|
14433
|
+
var browserWindow = param.window;
|
|
14434
|
+
return browserWindow.sessionStorage.getItem(getOpenStateCacheKey(type)) === 'true';
|
|
14435
|
+
}, {
|
|
14436
|
+
fallback: function fallback() {
|
|
14437
|
+
return false;
|
|
14438
|
+
}
|
|
14439
|
+
});
|
|
14440
|
+
} catch (unused) {
|
|
14441
|
+
return false;
|
|
14442
|
+
}
|
|
14443
|
+
}
|
|
14444
|
+
function writePersistedOpen(type, open) {
|
|
14445
|
+
try {
|
|
14446
|
+
safelyRunOnBrowser(function(param) {
|
|
14447
|
+
var browserWindow = param.window;
|
|
14448
|
+
browserWindow.sessionStorage.setItem(getOpenStateCacheKey(type), String(open));
|
|
14449
|
+
});
|
|
14450
|
+
} catch (unused) {
|
|
14451
|
+
// Storage availability must not block the visible state change.
|
|
14452
|
+
}
|
|
14453
|
+
}
|
|
14385
14454
|
function getAttributesToClear$1(param) {
|
|
14386
14455
|
var results = param.results, helper = param.helper;
|
|
14387
14456
|
return uniq(getRefinements(results, helper.state, true).map(function(refinement) {
|
|
@@ -14441,10 +14510,11 @@
|
|
|
14441
14510
|
var unmountFn = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : noop;
|
|
14442
14511
|
checkRendering(renderFn, withUsage$q());
|
|
14443
14512
|
return function(widgetParams) {
|
|
14444
|
-
var _ref = widgetParams || {}, _ref_resume = _ref.resume, resume = _ref_resume === void 0 ? false : _ref_resume, _ref_tools = _ref.tools, tools = _ref_tools === void 0 ? {} : _ref_tools, _ref_type = _ref.type, type = _ref_type === void 0 ? 'chat' : _ref_type, context = _ref.context, initialUserMessage = _ref.initialUserMessage, initialMessages = _ref.initialMessages, _ref_disableTriggerValidation = _ref.disableTriggerValidation, disableTriggerValidation = _ref_disableTriggerValidation === void 0 ? false : _ref_disableTriggerValidation, _ref_sendAutomaticallyWhen = _ref.sendAutomaticallyWhen, sendAutomaticallyWhen = _ref_sendAutomaticallyWhen === void 0 ? lastAssistantMessageIsCompleteWithToolCalls : _ref_sendAutomaticallyWhen, _ref_requiresSearch = _ref.requiresSearch, requiresSearch = _ref_requiresSearch === void 0 ? true : _ref_requiresSearch, options = _object_without_properties(_ref, [
|
|
14513
|
+
var _ref = widgetParams || {}, _ref_resume = _ref.resume, resume = _ref_resume === void 0 ? false : _ref_resume, _ref_tools = _ref.tools, tools = _ref_tools === void 0 ? {} : _ref_tools, _ref_type = _ref.type, type = _ref_type === void 0 ? 'chat' : _ref_type, persistence = _ref.persistence, context = _ref.context, initialUserMessage = _ref.initialUserMessage, initialMessages = _ref.initialMessages, _ref_disableTriggerValidation = _ref.disableTriggerValidation, disableTriggerValidation = _ref_disableTriggerValidation === void 0 ? false : _ref_disableTriggerValidation, _ref_sendAutomaticallyWhen = _ref.sendAutomaticallyWhen, sendAutomaticallyWhen = _ref_sendAutomaticallyWhen === void 0 ? lastAssistantMessageIsCompleteWithToolCalls : _ref_sendAutomaticallyWhen, _ref_requiresSearch = _ref.requiresSearch, requiresSearch = _ref_requiresSearch === void 0 ? true : _ref_requiresSearch, options = _object_without_properties(_ref, [
|
|
14445
14514
|
"resume",
|
|
14446
14515
|
"tools",
|
|
14447
14516
|
"type",
|
|
14517
|
+
"persistence",
|
|
14448
14518
|
"context",
|
|
14449
14519
|
"initialUserMessage",
|
|
14450
14520
|
"initialMessages",
|
|
@@ -14452,6 +14522,7 @@
|
|
|
14452
14522
|
"sendAutomaticallyWhen",
|
|
14453
14523
|
"requiresSearch"
|
|
14454
14524
|
]);
|
|
14525
|
+
var normalizedPersistence = normalizePersistence(persistence, 'chat' in options);
|
|
14455
14526
|
var _chatInstance;
|
|
14456
14527
|
var input = '';
|
|
14457
14528
|
var open = false;
|
|
@@ -14459,12 +14530,19 @@
|
|
|
14459
14530
|
var setInput;
|
|
14460
14531
|
var setOpen;
|
|
14461
14532
|
var focusInput;
|
|
14533
|
+
var inputFocusRequested = false;
|
|
14462
14534
|
var setFeedbackState;
|
|
14463
14535
|
var hasValidatedEntryPoints = false;
|
|
14464
14536
|
var agentId = 'agentId' in options ? options.agentId : undefined;
|
|
14465
14537
|
var feedbackState = {};
|
|
14466
14538
|
var _sendChatMessageFeedback;
|
|
14467
14539
|
var feedbackAbortController;
|
|
14540
|
+
var chatSubscriptionUnsubscribers = [];
|
|
14541
|
+
var unsubscribeChatCallbacks = function unsubscribeChatCallbacks() {
|
|
14542
|
+
chatSubscriptionUnsubscribers.splice(0).forEach(function(unsubscribe) {
|
|
14543
|
+
return unsubscribe();
|
|
14544
|
+
});
|
|
14545
|
+
};
|
|
14468
14546
|
// Extract suggestions from the last assistant message's data-suggestions part
|
|
14469
14547
|
var getSuggestionsFromMessages = function getSuggestionsFromMessages(messages) {
|
|
14470
14548
|
// Find the last assistant message (iterate from end)
|
|
@@ -14613,6 +14691,7 @@
|
|
|
14613
14691
|
throw new Error(withUsage$q('You need to provide either an `agentId` or a `transport`.'));
|
|
14614
14692
|
}
|
|
14615
14693
|
return new Chat$1(_object_spread_props(_object_spread({}, options), {
|
|
14694
|
+
persistence: normalizedPersistence.messages,
|
|
14616
14695
|
sendAutomaticallyWhen: sendAutomaticallyWhen,
|
|
14617
14696
|
transport: transport,
|
|
14618
14697
|
shouldRepairToolInput: function shouldRepairToolInput(toolName) {
|
|
@@ -14661,22 +14740,30 @@
|
|
|
14661
14740
|
var _this = this;
|
|
14662
14741
|
var instantSearchInstance = initOptions.instantSearchInstance;
|
|
14663
14742
|
validateEntryPoints(instantSearchInstance);
|
|
14743
|
+
open = normalizedPersistence.open ? readPersistedOpen(type) : false;
|
|
14664
14744
|
_chatInstance = makeChatInstance(instantSearchInstance);
|
|
14665
14745
|
var render = function render() {
|
|
14666
14746
|
renderFn(_object_spread_props(_object_spread({}, _this.getWidgetRenderState(initOptions)), {
|
|
14667
14747
|
instantSearchInstance: initOptions.instantSearchInstance
|
|
14668
14748
|
}), false);
|
|
14669
14749
|
};
|
|
14670
|
-
|
|
14671
|
-
open =
|
|
14750
|
+
var updateOpen = function updateOpen(nextOpen, requestFocus) {
|
|
14751
|
+
open = nextOpen;
|
|
14752
|
+
inputFocusRequested = nextOpen && (inputFocusRequested || requestFocus);
|
|
14753
|
+
if (normalizedPersistence.open) {
|
|
14754
|
+
writePersistedOpen(type, open);
|
|
14755
|
+
}
|
|
14672
14756
|
render();
|
|
14673
14757
|
// `open` is read by sibling widgets (e.g. `chatTrigger`) via the
|
|
14674
14758
|
// shared `renderState`. Schedule a full re-render so they pick up
|
|
14675
14759
|
// the new value instead of staying frozen on their initial state.
|
|
14676
14760
|
initOptions.instantSearchInstance.scheduleRender();
|
|
14677
14761
|
};
|
|
14762
|
+
setOpen = function setOpen(nextOpen) {
|
|
14763
|
+
updateOpen(nextOpen, nextOpen && !open);
|
|
14764
|
+
};
|
|
14678
14765
|
focusInput = function focusInput() {
|
|
14679
|
-
|
|
14766
|
+
updateOpen(true, true);
|
|
14680
14767
|
};
|
|
14681
14768
|
setInput = function setInput(i) {
|
|
14682
14769
|
input = i;
|
|
@@ -14710,18 +14797,21 @@
|
|
|
14710
14797
|
};
|
|
14711
14798
|
}
|
|
14712
14799
|
var hasExistingMessages = _chatInstance.messages.length > 0;
|
|
14713
|
-
//
|
|
14714
|
-
//
|
|
14715
|
-
// conversation, so it leaves the instance empty.
|
|
14800
|
+
// Unsubscribe previous callbacks before setting initialMessages, then
|
|
14801
|
+
// register the current callbacks after to avoid re-renders during init.
|
|
14802
|
+
// A server render owns no conversation, so it leaves the instance empty.
|
|
14716
14803
|
safelyRunOnBrowser(function() {
|
|
14804
|
+
unsubscribeChatCallbacks();
|
|
14717
14805
|
if ((initialMessages === null || initialMessages === void 0 ? void 0 : initialMessages.length) && !resume && !hasExistingMessages) {
|
|
14718
14806
|
_chatInstance.messages = initialMessages;
|
|
14719
14807
|
}
|
|
14720
14808
|
});
|
|
14721
14809
|
safelyRunOnBrowser(function() {
|
|
14722
|
-
|
|
14723
|
-
|
|
14724
|
-
|
|
14810
|
+
chatSubscriptionUnsubscribers = [
|
|
14811
|
+
_chatInstance['~registerErrorCallback'](render),
|
|
14812
|
+
_chatInstance['~registerMessagesCallback'](render),
|
|
14813
|
+
_chatInstance['~registerStatusCallback'](render)
|
|
14814
|
+
];
|
|
14725
14815
|
});
|
|
14726
14816
|
// Resuming and sending reach the network, which a server render must
|
|
14727
14817
|
// not: the HTML pass repeats what `getServerState` already rendered, so
|
|
@@ -14740,6 +14830,9 @@
|
|
|
14740
14830
|
renderFn(_object_spread_props(_object_spread({}, this.getWidgetRenderState(initOptions)), {
|
|
14741
14831
|
instantSearchInstance: instantSearchInstance
|
|
14742
14832
|
}), true);
|
|
14833
|
+
if (open) {
|
|
14834
|
+
instantSearchInstance.scheduleRender();
|
|
14835
|
+
}
|
|
14743
14836
|
},
|
|
14744
14837
|
render: function render(renderOptions) {
|
|
14745
14838
|
validateEntryPoints(renderOptions.instantSearchInstance);
|
|
@@ -14806,7 +14899,7 @@
|
|
|
14806
14899
|
})
|
|
14807
14900
|
].concat(_to_consumable_array(rest)));
|
|
14808
14901
|
};
|
|
14809
|
-
|
|
14902
|
+
var renderState = {
|
|
14810
14903
|
indexUiState: instantSearchInstance.getUiState()[parent.getIndexId()],
|
|
14811
14904
|
input: input,
|
|
14812
14905
|
open: open,
|
|
@@ -14815,6 +14908,12 @@
|
|
|
14815
14908
|
setInput: setInput,
|
|
14816
14909
|
setOpen: setOpen,
|
|
14817
14910
|
focusInput: focusInput,
|
|
14911
|
+
'~consumeInputFocus': function() {
|
|
14912
|
+
var shouldFocus = inputFocusRequested;
|
|
14913
|
+
inputFocusRequested = false;
|
|
14914
|
+
return shouldFocus;
|
|
14915
|
+
},
|
|
14916
|
+
'~isOpenStatePersistenceEnabled': normalizedPersistence.open,
|
|
14818
14917
|
setMessages: setMessages,
|
|
14819
14918
|
suggestions: getSuggestionsFromMessages(_chatInstance.messages),
|
|
14820
14919
|
clearMessages: clearMessages,
|
|
@@ -14834,9 +14933,11 @@
|
|
|
14834
14933
|
status: _chatInstance.status,
|
|
14835
14934
|
stop: _chatInstance.stop
|
|
14836
14935
|
};
|
|
14936
|
+
return renderState;
|
|
14837
14937
|
},
|
|
14838
14938
|
dispose: function dispose() {
|
|
14839
14939
|
feedbackAbortController === null || feedbackAbortController === void 0 ? void 0 : feedbackAbortController.abort();
|
|
14940
|
+
unsubscribeChatCallbacks();
|
|
14840
14941
|
unmountFn();
|
|
14841
14942
|
},
|
|
14842
14943
|
shouldRender: function shouldRender() {
|
|
@@ -14867,17 +14968,15 @@
|
|
|
14867
14968
|
// `InstantSearchSSRProvider` flow: the server context covers state collection,
|
|
14868
14969
|
// and the SSR context covers HTML rendering and hydration.
|
|
14869
14970
|
//
|
|
14870
|
-
// This can cost an extra render: a mount inside a provider that carries server
|
|
14871
|
-
// state is withheld once even when there is no server markup to reproduce. A
|
|
14872
|
-
// mount outside both contexts is never withheld.
|
|
14873
|
-
//
|
|
14874
14971
|
// The shim's React 16 and 17 fallback ignores the server snapshot, so using it
|
|
14875
|
-
// here would not
|
|
14972
|
+
// here would not distinguish initial hydration from later provider children.
|
|
14876
14973
|
function useLegacyIsHydrated() {
|
|
14974
|
+
var _ssrContext_hydrationCompleteRef;
|
|
14877
14975
|
var serverContext = useInstantSearchServerContext();
|
|
14878
14976
|
var ssrContext = useInstantSearchSSRContext();
|
|
14879
14977
|
var isServerRendered = serverContext !== null || ssrContext !== null;
|
|
14880
|
-
var
|
|
14978
|
+
var isProviderHydrated = (ssrContext === null || ssrContext === void 0 ? void 0 : (_ssrContext_hydrationCompleteRef = ssrContext.hydrationCompleteRef) === null || _ssrContext_hydrationCompleteRef === void 0 ? void 0 : _ssrContext_hydrationCompleteRef.current) === true;
|
|
14979
|
+
var _React_useState = _sliced_to_array(React__namespace.useState(!isServerRendered || isProviderHydrated), 2), isHydrated = _React_useState[0], setIsHydrated = _React_useState[1];
|
|
14881
14980
|
React__namespace.useEffect(function() {
|
|
14882
14981
|
setIsHydrated(true);
|
|
14883
14982
|
}, []);
|
|
@@ -14912,6 +15011,7 @@
|
|
|
14912
15011
|
error: undefined,
|
|
14913
15012
|
id: 'id' in props && props.id || '',
|
|
14914
15013
|
messages: [],
|
|
15014
|
+
open: false,
|
|
14915
15015
|
status: 'ready',
|
|
14916
15016
|
suggestions: undefined
|
|
14917
15017
|
});
|
|
@@ -25244,6 +25344,7 @@
|
|
|
25244
25344
|
"disableTriggerValidation",
|
|
25245
25345
|
"showReasoning"
|
|
25246
25346
|
]), _rest1 = _sliced_to_array(_rest, 1), ref = _rest1[0];
|
|
25347
|
+
var _ref3;
|
|
25247
25348
|
var promptTranslations = translations.prompt, headerTranslations = translations.header, messageTranslations = translations.message, messagesTranslations = translations.messages;
|
|
25248
25349
|
var _useInstantSearch = useInstantSearch(), indexUiState = _useInstantSearch.indexUiState, setIndexUiState = _useInstantSearch.setIndexUiState;
|
|
25249
25350
|
var _useState = _sliced_to_array(React.useState(false), 2), maximized = _useState[0], setMaximized = _useState[1];
|
|
@@ -25269,7 +25370,7 @@
|
|
|
25269
25370
|
tools: tools,
|
|
25270
25371
|
disableTriggerValidation: effectiveDisableTriggerValidation
|
|
25271
25372
|
}));
|
|
25272
|
-
var messages = chatState.messages, sendMessage = chatState.sendMessage, status = chatState.status, regenerate = chatState.regenerate, stop = chatState.stop, error = chatState.error, input = chatState.input, setInput = chatState.setInput, open = chatState.open, setOpen = chatState.setOpen, clearMessages = chatState.clearMessages, toolsFromConnector = chatState.tools, suggestions = chatState.suggestions, onFeedback = chatState.sendChatMessageFeedback, feedbackState = chatState.feedbackState;
|
|
25373
|
+
var messages = chatState.messages, sendMessage = chatState.sendMessage, status = chatState.status, regenerate = chatState.regenerate, stop = chatState.stop, error = chatState.error, input = chatState.input, setInput = chatState.setInput, open = chatState.open, setOpen = chatState.setOpen, clearMessages = chatState.clearMessages, toolsFromConnector = chatState.tools, suggestions = chatState.suggestions, onFeedback = chatState.sendChatMessageFeedback, feedbackState = chatState.feedbackState, consumeInputFocus = chatState['~consumeInputFocus'], isOpenStatePersistenceEnabled = chatState['~isOpenStatePersistenceEnabled'];
|
|
25273
25374
|
React.useImperativeHandle(ref, function() {
|
|
25274
25375
|
return {
|
|
25275
25376
|
setOpen: setOpen,
|
|
@@ -25279,19 +25380,14 @@
|
|
|
25279
25380
|
setInput: setInput
|
|
25280
25381
|
};
|
|
25281
25382
|
});
|
|
25282
|
-
var wasOpenRef = React.useRef(false);
|
|
25283
25383
|
React.useEffect(function() {
|
|
25284
|
-
|
|
25285
|
-
if (shouldFocusPrompt) {
|
|
25384
|
+
if (consumeInputFocus === null || consumeInputFocus === void 0 ? void 0 : consumeInputFocus()) {
|
|
25286
25385
|
window.requestAnimationFrame(function() {
|
|
25287
25386
|
var _promptRef_current;
|
|
25288
25387
|
(_promptRef_current = promptRef.current) === null || _promptRef_current === void 0 ? void 0 : _promptRef_current.focus();
|
|
25289
25388
|
});
|
|
25290
25389
|
}
|
|
25291
|
-
|
|
25292
|
-
}, [
|
|
25293
|
-
open
|
|
25294
|
-
]);
|
|
25390
|
+
});
|
|
25295
25391
|
// Keep the conversation pinned to the bottom while streaming. The stick-to-
|
|
25296
25392
|
// bottom ResizeObserver only reacts to content *height* changes, but tool
|
|
25297
25393
|
// results such as a horizontally-growing carousel stream in without changing
|
|
@@ -25312,7 +25408,7 @@
|
|
|
25312
25408
|
if (error) {
|
|
25313
25409
|
throw error;
|
|
25314
25410
|
}
|
|
25315
|
-
var
|
|
25411
|
+
var _ref4 = messagesProps !== null && messagesProps !== void 0 ? messagesProps : {}, callerAssistantMessageProps = _ref4.assistantMessageProps, callerUserMessageProps = _ref4.userMessageProps, restMessagesProps = _object_without_properties(_ref4, [
|
|
25316
25412
|
"assistantMessageProps",
|
|
25317
25413
|
"userMessageProps"
|
|
25318
25414
|
]);
|
|
@@ -25385,7 +25481,7 @@
|
|
|
25385
25481
|
}, callerUserMessageProps),
|
|
25386
25482
|
error: error
|
|
25387
25483
|
}),
|
|
25388
|
-
promptProps: _object_spread({
|
|
25484
|
+
promptProps: _object_spread_props(_object_spread({
|
|
25389
25485
|
promptRef: promptRef,
|
|
25390
25486
|
status: status,
|
|
25391
25487
|
value: input,
|
|
@@ -25404,7 +25500,9 @@
|
|
|
25404
25500
|
},
|
|
25405
25501
|
headerComponent: promptHeaderComponent,
|
|
25406
25502
|
footerComponent: promptFooterComponent
|
|
25407
|
-
}, promptProps),
|
|
25503
|
+
}, promptProps), {
|
|
25504
|
+
autoFocus: (_ref3 = promptProps === null || promptProps === void 0 ? void 0 : promptProps.autoFocus) !== null && _ref3 !== void 0 ? _ref3 : !isOpenStatePersistenceEnabled || isInlineLayoutComponent
|
|
25505
|
+
}),
|
|
25408
25506
|
suggestionsProps: {
|
|
25409
25507
|
suggestions: suggestions,
|
|
25410
25508
|
onSuggestionClick: function onSuggestionClick(suggestion) {
|