UNPKG

react-instantsearch

Version:
215 lines (213 loc) 10.8 kB
'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); function _export(target, all) { for(var name in all)Object.defineProperty(target, name, { enumerable: true, get: Object.getOwnPropertyDescriptor(all, name).get }); } _export(exports, { get Chat () { return Chat; }, get MemorizeToolType () { return _chat.MemorizeToolType; }, get MemorySearchToolType () { return _chat.MemorySearchToolType; }, get PonderToolType () { return _chat.PonderToolType; }, get RecommendToolType () { return _chat.RecommendToolType; }, get SearchIndexToolType () { return _chat.SearchIndexToolType; }, get createDefaultTools () { return createDefaultTools; } }); var _define_property = require("@swc/helpers/_/_define_property"); var _interop_require_wildcard = require("@swc/helpers/_/_interop_require_wildcard"); 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 = /*#__PURE__*/ _interop_require_wildcard._(require("react")); var _reactinstantsearchcore = require("react-instantsearch-core"); var _useStickToBottom = require("../lib/useStickToBottom"); var _SearchIndexTool = require("./chat/tools/SearchIndexTool"); var ChatUiComponent = (0, _instantsearchuicomponents.createChatComponent)({ createElement: _react.createElement, Fragment: _react.Fragment }); function createDefaultTools(itemComponent, getSearchPageURL) { var _obj; return _obj = {}, _define_property._(_obj, _chat.SearchIndexToolType, (0, _SearchIndexTool.createCarouselTool)(true, itemComponent, getSearchPageURL)), _define_property._(_obj, _chat.RecommendToolType, (0, _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 = (0, _reactinstantsearchcore.useInstantSearch)(), indexUiState = _useInstantSearch.indexUiState, setIndexUiState = _useInstantSearch.setIndexUiState; var _useState = _sliced_to_array._((0, _react.useState)(false), 2), maximized = _useState[0], setMaximized = _useState[1]; var promptRef = (0, _react.useRef)(null); var _useStickToBottom1 = (0, _useStickToBottom.useStickToBottom)({ initial: 'smooth', resize: 'smooth' }), scrollRef = _useStickToBottom1.scrollRef, contentRef = _useStickToBottom1.contentRef, scrollToBottom = _useStickToBottom1.scrollToBottom, isAtBottom = _useStickToBottom1.isAtBottom; var tools = (0, _react.useMemo)(function() { var defaults = createDefaultTools(itemComponent, getSearchPageURL); return _object_spread._({}, defaults, userTools); }, [ getSearchPageURL, itemComponent, userTools ]); var chatState = (0, _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; var wasOpenRef = (0, _react.useRef)(false); (0, _react.useEffect)(function() { var shouldFocusPrompt = !wasOpenRef.current && open; if (shouldFocusPrompt) { window.requestAnimationFrame(function() { var _promptRef_current; (_promptRef_current = promptRef.current) === null || _promptRef_current === void 0 ? void 0 : _promptRef_current.focus(); }); } wasOpenRef.current = open; }, [ open ]); return /*#__PURE__*/ _react.default.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 }); }