UNPKG

@uimkit/uikit-react

Version:

<img style="width:64px" src="https://mgmt.uimkit.chat/media/img/avatar.png"/>

56 lines (53 loc) 4.19 kB
import { __awaiter, __generator } from 'tslib'; import React__default, { useCallback } from 'react'; import '../AutoCompleteTextarea/Item.js'; import { useComponentContext } from '../../context/ComponentContext.js'; import { useTranslationContext } from '../../context/TranslationContext.js'; import { ReactTextareaAutocomplete } from '../AutoCompleteTextarea/Textarea.js'; import '../../node_modules/react-is/index.js'; import { LoadingIndicator } from '../Loading/LoadingIndicator.js'; import { useMessageInputContext } from '../../context/MessageInputContext.js'; import { SearchIndex } from 'emoji-mart'; import '../../context/UIKitContext.js'; import '../../context/ChatActionContext.js'; import '../../context/UIMessageContext.js'; import '../../context/ChatStateContext.js'; var UnMemoizedChatAutoComplete = function (props) { var _a = useComponentContext('ChatAutoComplete'), SuggestionItem = _a.AutocompleteSuggestionItem, SuggestionList = _a.AutocompleteSuggestionList; var t = useTranslationContext('UIChatAutoComplete').t; var messageInput = useMessageInputContext('ChatAutoComplete'); var disabled = messageInput.disabled, innerRef = messageInput.textareaRef; var placeholder = props.placeholder || t('输入消息'); var emojiReplace = props.wordReplace ? function (word) { var _a; return (_a = props.wordReplace) === null || _a === void 0 ? void 0 : _a.call(props, word); } : function (word) { return __awaiter(void 0, void 0, void 0, function () { var found, emoji; var _a; return __generator(this, function (_b) { switch (_b.label) { case 0: return [4 /*yield*/, SearchIndex.search(word)]; case 1: found = (_a = (_b.sent())) !== null && _a !== void 0 ? _a : []; emoji = found .filter(Boolean) .slice(0, 10) .find(function (_a /* Emoji */) { var emoticons = _a.emoticons; return !!(emoticons === null || emoticons === void 0 ? void 0 : emoticons.includes(word)); }); if (!emoji || !('native' in emoji)) return [2 /*return*/, null]; return [2 /*return*/, emoji.native]; } }); }); }; var updateInnerRef = useCallback(function (ref) { if (innerRef) { innerRef.current = ref; } }, [innerRef]); return (React__default.createElement(ReactTextareaAutocomplete, { additionalTextareaProps: /*messageInput.additionalTextareaProps*/ {}, "aria-label": placeholder !== null && placeholder !== void 0 ? placeholder : 'placeholder', className: 'uim-message-textarea', closeCommandsList: function () { } /*messageInput.closeCommandsList*/, closeMentionsList: function () { } /*messageInput.closeMentionsList*/, containerClassName: 'uim-textarea uim-message-textarea-react-host', disabled: disabled, disableMentions: false /*messageInput.disableMentions*/, dropdownClassName: 'uim-emojisearch', grow: false /*messageInput.grow*/, handleSubmit: props.handleSubmit || messageInput.handleSubmit, innerRef: updateInnerRef, itemClassName: 'uim-emojisearch__item', listClassName: 'uim-emojisearch__list', loadingComponent: LoadingIndicator, maxRows: 3 /*messageInput.maxRows*/, minChar: 0, onBlur: props.onBlur, onChange: props.onChange || messageInput.handleChange, onFocus: props.onFocus, onPaste: props.onPaste /* TODO || messageInput.onPaste*/, placeholder: placeholder, replaceWord: emojiReplace, rows: props.rows || 3, shouldSubmit: messageInput.shouldSubmit, showCommandsList: false /*messageInput.showCommandsList*/, showMentionsList: false /*messageInput.showMentionsList*/, SuggestionItem: SuggestionItem, SuggestionList: SuggestionList, trigger: messageInput.autocompleteTriggers || {}, value: props.value || messageInput.text })); }; var UIChatAutoComplete = React__default.memo(UnMemoizedChatAutoComplete); export { UIChatAutoComplete }; //# sourceMappingURL=UIChatAutoComplete.js.map