UNPKG

@uimkit/uikit-react

Version:

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

146 lines (139 loc) 10.3 kB
'use strict'; Object.defineProperty(exports, '__esModule', { value: true }); var tslib = require('tslib'); var React = require('react'); var index = require('../Plugins/index.js'); var Icon = require('../Icon/Icon.js'); var type = require('../Icon/type.js'); var TranslationContext = require('../../context/TranslationContext.js'); require('../../context/UIKitContext.js'); require('../../context/ComponentContext.js'); require('../../context/ChatActionContext.js'); require('../../context/MessageInputContext.js'); var UIMessageContext = require('../../context/UIMessageContext.js'); var ChatStateContext = require('../../context/ChatStateContext.js'); var useMessagePluginElement = require('./hooks/useMessagePluginElement.js'); var useMessageHandler = require('./hooks/useMessageHandler.js'); var models = require('../../types/models.js'); require('../../types/events.js'); var constants = require('../../constants.js'); require('i18next'); function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; } var React__default = /*#__PURE__*/_interopDefaultLegacy(React); var PluginsNameEnum; (function (PluginsNameEnum) { PluginsNameEnum["quote"] = "quote"; PluginsNameEnum["forward"] = "forward"; PluginsNameEnum["copy"] = "copy"; PluginsNameEnum["delete"] = "delete"; PluginsNameEnum["resend"] = "resend"; PluginsNameEnum["revoke"] = "revoke"; })(PluginsNameEnum || (PluginsNameEnum = {})); function MessagePlugins(props) { var _a, _b, _c, _d, _e, _f; var propsPlugins = props.plugins, propsShowNumber = props.showNumber, propsMoreIcon = props.MoreIcon, propsPluginConfig = props.config; var _g = React.useState(''), className = _g[0], setClassName = _g[1]; var pluginsRef = React.useRef(null); var _h = UIMessageContext.useUIMessageContext('MessagePlugins'), message = _h.message, contextPlugin = _h.plugin; var messageListRef = ChatStateContext.useChatStateContext().messageListRef; var _j = useMessageHandler.useMessageHandler({ message: message }), handleDelMessage = _j.handleDelMessage, handleRevokeMessage = _j.handleRevokeMessage, handleReplyMessage = _j.handleReplyMessage, handleCopyMessage = _j.handleCopyMessage, handleResendMessage = _j.handleResendMessage, handleForWardMessage = _j.handleForWardMessage; var pluginConfig = { quote: tslib.__assign(tslib.__assign({ isShow: true }, propsPluginConfig === null || propsPluginConfig === void 0 ? void 0 : propsPluginConfig.quote), (_a = contextPlugin === null || contextPlugin === void 0 ? void 0 : contextPlugin.config) === null || _a === void 0 ? void 0 : _a.quote), forward: tslib.__assign(tslib.__assign({ isShow: true }, propsPluginConfig === null || propsPluginConfig === void 0 ? void 0 : propsPluginConfig.forward), (_b = contextPlugin === null || contextPlugin === void 0 ? void 0 : contextPlugin.config) === null || _b === void 0 ? void 0 : _b.forward), copy: tslib.__assign(tslib.__assign({ isShow: true, relateMessageType: [models.MessageType.Text] }, propsPluginConfig === null || propsPluginConfig === void 0 ? void 0 : propsPluginConfig.copy), (_c = contextPlugin === null || contextPlugin === void 0 ? void 0 : contextPlugin.config) === null || _c === void 0 ? void 0 : _c.copy), delete: tslib.__assign(tslib.__assign({ isShow: true }, propsPluginConfig === null || propsPluginConfig === void 0 ? void 0 : propsPluginConfig.delete), (_d = contextPlugin === null || contextPlugin === void 0 ? void 0 : contextPlugin.config) === null || _d === void 0 ? void 0 : _d.delete), revoke: tslib.__assign(tslib.__assign({ isShow: true }, propsPluginConfig === null || propsPluginConfig === void 0 ? void 0 : propsPluginConfig.revoke), (_e = contextPlugin === null || contextPlugin === void 0 ? void 0 : contextPlugin.config) === null || _e === void 0 ? void 0 : _e.revoke), resend: tslib.__assign(tslib.__assign({ isShow: true }, propsPluginConfig === null || propsPluginConfig === void 0 ? void 0 : propsPluginConfig.resend), (_f = contextPlugin === null || contextPlugin === void 0 ? void 0 : contextPlugin.config) === null || _f === void 0 ? void 0 : _f.resend), }; var t = TranslationContext.useTranslationContext('MessagePlugins').t; var handleVisible = function (data) { setClassName("".concat(!data.top && 'message-plugin-top', " ").concat(!data.left && 'message-plugin-left')); }; var RevokeElement = useMessagePluginElement.useMessagePluginElement({ children: (React__default["default"].createElement("div", { className: "message-plugin-item" }, React__default["default"].createElement("span", null, t('message.action.revoke')), React__default["default"].createElement(Icon.Icon, { width: 20, height: 20, type: type.IconTypes.REVOCATION }))), handle: function (e) { pluginsRef.current.closeMore(); handleRevokeMessage(e); }, message: message, isShow: pluginConfig.revoke.isShow && ((message === null || message === void 0 ? void 0 : message.status) === constants.MESSAGE_STATUS.SUCCESS && message.flow === constants.MESSAGE_FLOW.OUT), relateMessageType: pluginConfig.revoke.relateMessageType, }); var DeleteElement = useMessagePluginElement.useMessagePluginElement({ children: (React__default["default"].createElement("div", { className: "message-plugin-item" }, React__default["default"].createElement("span", { className: "del" }, t('message.action.delete')), React__default["default"].createElement(Icon.Icon, { width: 20, height: 20, type: type.IconTypes.DEL }))), handle: function (e) { pluginsRef.current.closeMore(); handleDelMessage(e); }, message: message, isShow: pluginConfig.delete.isShow /* TODO && message?.status === MESSAGE_STATUS.SUCCESS*/, relateMessageType: pluginConfig.delete.relateMessageType, }); var ReplyElement = useMessagePluginElement.useMessagePluginElement({ children: (React__default["default"].createElement("div", { className: "message-plugin-item" }, React__default["default"].createElement("span", null, t('message.action.quote')), React__default["default"].createElement(Icon.Icon, { width: 20, height: 20, type: type.IconTypes.QUOTE }))), handle: function (e) { pluginsRef.current.closeMore(); handleReplyMessage(e); }, message: message, isShow: pluginConfig.quote.isShow && (message === null || message === void 0 ? void 0 : message.status) === constants.MESSAGE_STATUS.SUCCESS, relateMessageType: pluginConfig.quote.relateMessageType, }); var CopyElement = useMessagePluginElement.useMessagePluginElement({ children: (React__default["default"].createElement("div", { className: "message-plugin-item" }, React__default["default"].createElement("span", null, t('message.action.copy')), React__default["default"].createElement(Icon.Icon, { width: 20, height: 20, type: type.IconTypes.COPY }))), handle: function (e) { pluginsRef.current.closeMore(); handleCopyMessage(e); }, message: message, isShow: pluginConfig.copy.isShow && (message === null || message === void 0 ? void 0 : message.status) === constants.MESSAGE_STATUS.SUCCESS, relateMessageType: pluginConfig.copy.relateMessageType, }); var ResendElement = useMessagePluginElement.useMessagePluginElement({ children: (React__default["default"].createElement("div", { className: "message-plugin-item" }, React__default["default"].createElement("span", null, "\u91CD\u53D1"), React__default["default"].createElement(Icon.Icon, { width: 20, height: 20, type: type.IconTypes.REPLY }))), handle: function (e) { pluginsRef.current.closeMore(); handleResendMessage(e); }, message: message, isShow: pluginConfig.resend.isShow && (message === null || message === void 0 ? void 0 : message.status) !== constants.MESSAGE_STATUS.SUCCESS, relateMessageType: pluginConfig.resend.relateMessageType, }); var ForWardElement = useMessagePluginElement.useMessagePluginElement({ children: (React__default["default"].createElement("div", { className: "message-plugin-item" }, React__default["default"].createElement("span", null, t('message.action.forward')), React__default["default"].createElement(Icon.Icon, { width: 20, height: 20, type: type.IconTypes.FORWARD }))), handle: function (e) { pluginsRef.current.closeMore(); handleForWardMessage(e); }, message: message, isShow: pluginConfig.forward.isShow && (message === null || message === void 0 ? void 0 : message.status) === constants.MESSAGE_STATUS.SUCCESS, relateMessageType: pluginConfig.forward.relateMessageType, }); var defaultPlugins = [ RevokeElement, ReplyElement, ForWardElement, DeleteElement, ResendElement, CopyElement, ]; var plugins = (propsPlugins || (contextPlugin === null || contextPlugin === void 0 ? void 0 : contextPlugin.plugins) || defaultPlugins).filter(function (item) { return item; }); var MoreIcon = propsMoreIcon || (contextPlugin === null || contextPlugin === void 0 ? void 0 : contextPlugin.MoreIcon) || React__default["default"].createElement(Icon.Icon, { className: "icon-more", width: 16, height: 16, type: type.IconTypes.MORE }); var showNumber = propsShowNumber || (contextPlugin === null || contextPlugin === void 0 ? void 0 : contextPlugin.showNumber) || 0; return (message === null || message === void 0 ? void 0 : message.status) !== constants.MESSAGE_STATUS.UNSEND && (React__default["default"].createElement(index.Plugins, { className: "message-plugin", customClass: className, ref: pluginsRef, plugins: plugins, showNumber: showNumber, MoreIcon: MoreIcon, root: messageListRef === null || messageListRef === void 0 ? void 0 : messageListRef.current, handleVisible: handleVisible })); } exports.MessagePlugins = MessagePlugins; //# sourceMappingURL=MessagePlugins.js.map