react-instantsearch
Version:
⚡ Lightning-fast search for React, by Algolia
70 lines (67 loc) • 3.25 kB
JavaScript
import { _ as _$2 } from '@swc/helpers/esm/_object_spread.js';
import { _ as _$1 } from '@swc/helpers/esm/_object_spread_props.js';
import { _ } from '@swc/helpers/esm/_object_without_properties.js';
import { createPromptSuggestionsComponent } from 'instantsearch-ui-components';
import React, { createElement, Fragment } from 'react';
import { usePromptSuggestions } from 'react-instantsearch-core';
var PromptSuggestionsUi = createPromptSuggestionsComponent({
createElement: createElement,
Fragment: Fragment
});
function PromptSuggestions(_0) {
var _0_classNames = _0.classNames, classNames = _0_classNames === void 0 ? {} : _0_classNames, LayoutComponent = _0.layoutComponent, onSuggestionClickOverride = _0.onSuggestionClick, // Connector params — forwarded to the hook, not the UI root.
agentId = _0.agentId, transport = _0.transport, configurationId = _0.configurationId, transformHits = _0.transformHits, context = _0.context, transformItems = _0.transformItems, props = _(_0, [
"classNames",
"layoutComponent",
"onSuggestionClick",
"agentId",
"transport",
"configurationId",
"transformHits",
"context",
"transformItems"
]);
var source = agentId !== undefined ? {
agentId: agentId,
transport: transport
} : {
transport: transport
};
var _usePromptSuggestions = usePromptSuggestions(_$1(_$2({}, source), {
configurationId: configurationId,
transformHits: transformHits,
context: context,
transformItems: transformItems
}), {
$$widgetType: 'ais.promptSuggestions'
}), suggestions = _usePromptSuggestions.suggestions, isLoading = _usePromptSuggestions.isLoading, error = _usePromptSuggestions.error, onSuggestionClick = _usePromptSuggestions.onSuggestionClick, isChatBusy = _usePromptSuggestions.isChatBusy, sendToChat = _usePromptSuggestions.sendToChat;
if (!sendToChat && !onSuggestionClickOverride) {
throw new Error('No <Chat> widget is mounted on this index, so there is nothing to send a clicked suggestion to. Mount a <Chat> on the same index, or pass `onSuggestionClick` to handle the click yourself.');
}
var handleClick = onSuggestionClickOverride ? function(prompt) {
return onSuggestionClickOverride(prompt, {
// `sendToChat` is only absent when the override above owns the click,
// in which case falling through to the chat is a no-op.
sendToChat: sendToChat !== null && sendToChat !== void 0 ? sendToChat : function() {
return false;
}
});
} : onSuggestionClick;
if (LayoutComponent) {
return /*#__PURE__*/ React.createElement(LayoutComponent, {
suggestions: suggestions,
isLoading: isLoading,
error: error,
onSuggestionClick: handleClick,
isChatBusy: isChatBusy
});
}
return /*#__PURE__*/ React.createElement(PromptSuggestionsUi, _$1(_$2({}, props), {
classNames: classNames,
suggestions: suggestions,
isLoading: isLoading,
onSuggestionClick: handleClick,
disabled: isChatBusy
}));
}
export { PromptSuggestions };