@uimkit/uikit-react
Version:
<img style="width:64px" src="https://mgmt.uimkit.chat/media/img/avatar.png"/>
56 lines (53 loc) • 4.19 kB
JavaScript
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