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