UNPKG

@uimkit/uikit-react

Version:

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

83 lines (78 loc) 4.2 kB
'use strict'; Object.defineProperty(exports, '__esModule', { value: true }); var tslib = require('tslib'); var React = require('react'); var constants = require('../../../constants.js'); var useEmojiPicker = require('./useEmojiPicker.js'); var useMessageInputText = require('./useMessageInputText.js'); var useUploadPicker = require('./useUploadPicker.js'); var useEmojiIndex = require('./useEmojiIndex.js'); require('../../../types/models.js'); require('../../../types/events.js'); require('../../../context/TranslationContext.js'); require('../../../context/UIKitContext.js'); require('../../../context/ComponentContext.js'); require('../../../context/ChatActionContext.js'); require('../../../context/MessageInputContext.js'); require('../../../context/UIMessageContext.js'); require('../../../context/ChatStateContext.js'); var useSubmitHandler = require('./useSubmitHandler.js'); var makeEmptyMessageInputState = function () { return ({ mentioned_users: [], setText: function () { return null; }, text: '', }); }; /** * Initializes the state. Empty if the message prop is falsy. */ var initState = function (state) { var _a, _b; if (!state) { return makeEmptyMessageInputState(); } return { mentioned_users: (_a = state.mentioned_users) !== null && _a !== void 0 ? _a : [], text: (_b = state.text) !== null && _b !== void 0 ? _b : '', setText: function () { return null; }, }; }; var messageInputReducer = function (state, action) { switch (action.type) { case constants.CONSTANT_DISPATCH_TYPE.SET_TEXT: return tslib.__assign(tslib.__assign({}, state), { text: action === null || action === void 0 ? void 0 : action.getNewText(state.text) }); case constants.CONSTANT_DISPATCH_TYPE.CLEAR: return makeEmptyMessageInputState(); case constants.CONSTANT_DISPATCH_TYPE.ADD_MENTIONED_USER: return tslib.__assign(tslib.__assign({}, state), { mentioned_users: state.mentioned_users.concat(action.user) }); default: return state; } }; var useMessageInputState = function (props) { var focus = props.focus, additionalTextareaProps = props.additionalTextareaProps, message = props.message; var defaultValue = additionalTextareaProps === null || additionalTextareaProps === void 0 ? void 0 : additionalTextareaProps.defaultValue; var initialStateValue = message ? { text: message.text, mentioned_users: message.mentioned_users, } : ((Array.isArray(defaultValue) ? { text: defaultValue.join('') } : { text: defaultValue === null || defaultValue === void 0 ? void 0 : defaultValue.toString() })); var _a = React.useReducer(messageInputReducer, initialStateValue, initState), state = _a[0], dispatch = _a[1]; var sendUploadMessage = useUploadPicker.useUploadPicker().sendUploadMessage; var _b = useMessageInputText.useMessageInputText(tslib.__assign(tslib.__assign({}, props), { sendUploadMessage: sendUploadMessage }), state, dispatch), textareaRef = _b.textareaRef, handleChange = _b.handleChange, handlePaste = _b.handlePaste, insertText = _b.insertText, setText = _b.setText; var _c = useEmojiPicker.useEmojiPicker({ state: state, dispatch: dispatch, textareaRef: textareaRef, insertText: insertText, }), onSelectEmoji = _c.onSelectEmoji, sendFaceMessage = _c.sendFaceMessage; useEmojiIndex.useEmojiIndex(); var handleSubmit = useSubmitHandler.useSubmitHandler(props, state, dispatch).handleSubmit; var onSelectUser = React.useCallback(function (item) { dispatch({ type: constants.CONSTANT_DISPATCH_TYPE.ADD_MENTIONED_USER, user: item }); }, []); return tslib.__assign(tslib.__assign({}, state), { handleChange: handleChange, handleSubmit: handleSubmit, onSelectUser: onSelectUser, onPaste: handlePaste, onSelectEmoji: onSelectEmoji, sendFaceMessage: sendFaceMessage, sendUploadMessage: sendUploadMessage, textareaRef: textareaRef, insertText: insertText, setText: setText, focus: focus }); }; exports.useMessageInputState = useMessageInputState; //# sourceMappingURL=useMessageInputState.js.map