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