UNPKG

react-instantsearch

Version:
193 lines (189 loc) 10.1 kB
'use strict'; var _define_property = require('@swc/helpers/_/_define_property'); var _object_spread = require('@swc/helpers/_/_object_spread'); var _object_spread_props = require('@swc/helpers/_/_object_spread_props'); var _object_without_properties = require('@swc/helpers/_/_object_without_properties'); var _sliced_to_array = require('@swc/helpers/_/_sliced_to_array'); var instantsearchUiComponents = require('instantsearch-ui-components'); var chat = require('instantsearch.js/cjs/lib/chat'); var React = require('react'); var reactInstantsearchCore = require('react-instantsearch-core'); var useStickToBottom = require('../lib/useStickToBottom.js'); var SearchIndexTool = require('./chat/tools/SearchIndexTool.js'); var ChatUiComponent = instantsearchUiComponents.createChatComponent({ createElement: React.createElement, Fragment: React.Fragment }); function createDefaultTools(itemComponent, getSearchPageURL) { var _obj; return _obj = {}, _define_property._(_obj, chat.SearchIndexToolType, SearchIndexTool.createCarouselTool(true, itemComponent, getSearchPageURL)), _define_property._(_obj, chat.RecommendToolType, SearchIndexTool.createCarouselTool(false, itemComponent, getSearchPageURL)), _define_property._(_obj, chat.MemorizeToolType, {}), _define_property._(_obj, chat.MemorySearchToolType, {}), _define_property._(_obj, chat.PonderToolType, {}), _obj; } function Chat(_0) { var userTools = _0.tools, toggleButtonProps = _0.toggleButtonProps, headerProps = _0.headerProps, messagesProps = _0.messagesProps, promptProps = _0.promptProps, itemComponent = _0.itemComponent, toggleButtonComponent = _0.toggleButtonComponent, toggleButtonIconComponent = _0.toggleButtonIconComponent, headerComponent = _0.headerComponent, headerTitleIconComponent = _0.headerTitleIconComponent, headerCloseIconComponent = _0.headerCloseIconComponent, headerMinimizeIconComponent = _0.headerMinimizeIconComponent, headerMaximizeIconComponent = _0.headerMaximizeIconComponent, messagesLoaderComponent = _0.messagesLoaderComponent, messagesErrorComponent = _0.messagesErrorComponent, promptComponent = _0.promptComponent, promptHeaderComponent = _0.promptHeaderComponent, promptFooterComponent = _0.promptFooterComponent, assistantMessageLeadingComponent = _0.assistantMessageLeadingComponent, assistantMessageFooterComponent = _0.assistantMessageFooterComponent, userMessageLeadingComponent = _0.userMessageLeadingComponent, userMessageFooterComponent = _0.userMessageFooterComponent, actionsComponent = _0.actionsComponent, suggestionsComponent = _0.suggestionsComponent, classNames = _0.classNames, _0_translations = _0.translations, translations = _0_translations === void 0 ? {} : _0_translations, title = _0.title, getSearchPageURL = _0.getSearchPageURL, props = _object_without_properties._(_0, [ "tools", "toggleButtonProps", "headerProps", "messagesProps", "promptProps", "itemComponent", "toggleButtonComponent", "toggleButtonIconComponent", "headerComponent", "headerTitleIconComponent", "headerCloseIconComponent", "headerMinimizeIconComponent", "headerMaximizeIconComponent", "messagesLoaderComponent", "messagesErrorComponent", "promptComponent", "promptHeaderComponent", "promptFooterComponent", "assistantMessageLeadingComponent", "assistantMessageFooterComponent", "userMessageLeadingComponent", "userMessageFooterComponent", "actionsComponent", "suggestionsComponent", "classNames", "translations", "title", "getSearchPageURL" ]); var promptTranslations = translations.prompt, headerTranslations = translations.header, messageTranslations = translations.message, messagesTranslations = translations.messages; var _useInstantSearch = reactInstantsearchCore.useInstantSearch(), indexUiState = _useInstantSearch.indexUiState, setIndexUiState = _useInstantSearch.setIndexUiState; var _React_useState = _sliced_to_array._(React.useState(false), 2), maximized = _React_useState[0], setMaximized = _React_useState[1]; var promptRef = React.useRef(null); var _useStickToBottom = useStickToBottom.useStickToBottom({ initial: 'smooth', resize: 'smooth' }), scrollRef = _useStickToBottom.scrollRef, contentRef = _useStickToBottom.contentRef, scrollToBottom = _useStickToBottom.scrollToBottom, isAtBottom = _useStickToBottom.isAtBottom; var tools = React.useMemo(function() { var defaults = createDefaultTools(itemComponent, getSearchPageURL); return _object_spread._({}, defaults, userTools); }, [ getSearchPageURL, itemComponent, userTools ]); var chatState = reactInstantsearchCore.useChat(_object_spread_props._(_object_spread._({}, props), { tools: tools })); var messages = chatState.messages, sendMessage = chatState.sendMessage, status = chatState.status, regenerate = chatState.regenerate, stop = chatState.stop; chatState.error; var input = chatState.input, setInput = chatState.setInput, open = chatState.open, setOpen = chatState.setOpen, isClearing = chatState.isClearing, clearMessages = chatState.clearMessages, onClearTransitionEnd = chatState.onClearTransitionEnd, toolsFromConnector = chatState.tools, suggestions = chatState.suggestions; return /*#__PURE__*/ React.createElement(ChatUiComponent, { title: title, open: open, maximized: maximized, headerComponent: headerComponent, promptComponent: promptComponent, toggleButtonComponent: toggleButtonComponent, suggestionsComponent: suggestionsComponent, toggleButtonProps: _object_spread._({ open: open, onClick: function onClick() { return setOpen(!open); }, toggleIconComponent: toggleButtonIconComponent }, toggleButtonProps), headerProps: _object_spread._({ onClose: function onClose() { return setOpen(false); }, maximized: maximized, onToggleMaximize: function onToggleMaximize() { return setMaximized(!maximized); }, onClear: clearMessages, canClear: Boolean(messages === null || messages === void 0 ? void 0 : messages.length) && !isClearing, titleIconComponent: headerTitleIconComponent, closeIconComponent: headerCloseIconComponent, minimizeIconComponent: headerMinimizeIconComponent, maximizeIconComponent: headerMaximizeIconComponent, translations: headerTranslations }, headerProps), messagesProps: _object_spread._({ status: status, onReload: function onReload(messageId) { return regenerate({ messageId: messageId }); }, onClose: function onClose() { return setOpen(false); }, messages: messages, tools: toolsFromConnector, indexUiState: indexUiState, setIndexUiState: setIndexUiState, isClearing: isClearing, onClearTransitionEnd: onClearTransitionEnd, isScrollAtBottom: isAtBottom, scrollRef: scrollRef, contentRef: contentRef, onScrollToBottom: scrollToBottom, loaderComponent: messagesLoaderComponent, errorComponent: messagesErrorComponent, actionsComponent: actionsComponent, assistantMessageProps: _object_spread._({ leadingComponent: assistantMessageLeadingComponent, footerComponent: assistantMessageFooterComponent }, messagesProps === null || messagesProps === void 0 ? void 0 : messagesProps.assistantMessageProps), userMessageProps: _object_spread._({ leadingComponent: userMessageLeadingComponent, footerComponent: userMessageFooterComponent }, messagesProps === null || messagesProps === void 0 ? void 0 : messagesProps.userMessageProps), translations: messagesTranslations, messageTranslations: messageTranslations }, messagesProps), promptProps: _object_spread._({ promptRef: promptRef, status: status, value: input, translations: promptTranslations, onInput: function onInput(event) { setInput(event.currentTarget.value); }, onSubmit: function onSubmit() { sendMessage({ text: input }); setInput(''); }, onStop: function onStop() { stop(); }, headerComponent: promptHeaderComponent, footerComponent: promptFooterComponent }, promptProps), suggestionsProps: { suggestions: suggestions, onSuggestionClick: function onSuggestionClick(suggestion) { sendMessage({ text: suggestion }); } }, classNames: classNames }); } Object.defineProperty(exports, "MemorizeToolType", { enumerable: true, get: function () { return chat.MemorizeToolType; } }); Object.defineProperty(exports, "MemorySearchToolType", { enumerable: true, get: function () { return chat.MemorySearchToolType; } }); Object.defineProperty(exports, "PonderToolType", { enumerable: true, get: function () { return chat.PonderToolType; } }); Object.defineProperty(exports, "RecommendToolType", { enumerable: true, get: function () { return chat.RecommendToolType; } }); Object.defineProperty(exports, "SearchIndexToolType", { enumerable: true, get: function () { return chat.SearchIndexToolType; } }); exports.Chat = Chat; exports.createDefaultTools = createDefaultTools;