From f3d5f3a37976a9edf42a11ade0ca989296109b97 Mon Sep 17 00:00:00 2001 From: fan <504498960@qq.com> Date: Thu, 11 Mar 2021 22:55:01 +0800 Subject: [PATCH] v1.7.0 --- dist/demo.html | 10 + dist/index.common.js | 9062 ++++++++++++++++ dist/index.css | 1 + dist/index.umd.js | 9072 +++++++++++++++++ dist/index.umd.min.js | 1 + examples/dist/css/index.fb7c8942.css | 1 - examples/dist/index.html | 6 +- examples/dist/js/chunk-vendors.2abee366.js | 7 - examples/dist/js/chunk-vendors.e4810482.js | 7 + .../{index.7d134a38.js => index.1f472242.js} | 2 +- examples/dist/js/index.b920ec2b.js | 1 - package.json | 2 +- 12 files changed, 18156 insertions(+), 16 deletions(-) create mode 100644 dist/demo.html create mode 100644 dist/index.common.js create mode 100644 dist/index.css create mode 100644 dist/index.umd.js create mode 100644 dist/index.umd.min.js delete mode 100644 examples/dist/css/index.fb7c8942.css delete mode 100644 examples/dist/js/chunk-vendors.2abee366.js create mode 100644 examples/dist/js/chunk-vendors.e4810482.js rename examples/dist/js/{index.7d134a38.js => index.1f472242.js} (93%) delete mode 100644 examples/dist/js/index.b920ec2b.js diff --git a/dist/demo.html b/dist/demo.html new file mode 100644 index 0000000..62b34ba --- /dev/null +++ b/dist/demo.html @@ -0,0 +1,10 @@ + +
/g, "\r\n")
+ // .replace(/<\/div>|<\/p>/g, "")
+ // );
+ return this.IMUI.emojiImageToName(this.$refs.textarea.innerHTML);
+ },
+ _checkSubmitDisabled: function _checkSubmitDisabled() {
+ this.submitDisabled = !clearHtmlExcludeImg(this.$refs.textarea.innerHTML.trim());
+ },
+ _handleSend: function _handleSend(e) {
+ var text = this.getFormatValue();
+ this.$emit("send", text);
+ this.clear();
+
+ this._checkSubmitDisabled();
+ },
+ _handleChangeFile: function _handleChangeFile(e) {
+ var _this5 = this;
+
+ var fileInput = this.$refs.fileInput;
+ Array.from(fileInput.files).forEach(function (file) {
+ _this5.$emit("upload", file);
+ });
+ fileInput.value = "";
+ },
+ clear: function clear() {
+ this.$refs.textarea.innerHTML = "";
+ },
+ initEmoji: function initEmoji(data) {
+ emojiData = data;
+ this.$forceUpdate();
+ },
+ setValue: function setValue(val) {
+ this.$refs.textarea.innerHTML = this.IMUI.emojiNameToImage(val);
+
+ this._checkSubmitDisabled();
+ }
+ }
+});
+// CONCATENATED MODULE: ./packages/components/editor.vue?vue&type=script&lang=js&
+ /* harmony default export */ var components_editorvue_type_script_lang_js_ = (editorvue_type_script_lang_js_);
+// EXTERNAL MODULE: ./packages/components/editor.vue?vue&type=style&index=0&lang=stylus&
+var editorvue_type_style_index_0_lang_stylus_ = __webpack_require__("49c2");
+
+// CONCATENATED MODULE: ./packages/components/editor.vue
+var editor_render, editor_staticRenderFns
+
+
+
+
+
+/* normalize component */
+
+var editor_component = normalizeComponent(
+ components_editorvue_type_script_lang_js_,
+ editor_render,
+ editor_staticRenderFns,
+ false,
+ null,
+ null,
+ null
+
+)
+
+/* harmony default export */ var editor = (editor_component.exports);
+// CONCATENATED MODULE: ./node_modules/cache-loader/dist/cjs.js??ref--12-0!./node_modules/thread-loader/dist/cjs.js!./node_modules/babel-loader/lib!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./packages/components/messages.vue?vue&type=script&lang=js&
+
+
+
+
+
+
+
+
+/* harmony default export */ var messagesvue_type_script_lang_js_ = ({
+ name: "LemonMessages",
+ components: {},
+ props: {
+ //是否隐藏消息发送人昵称
+ hideName: Boolean,
+ //是否隐藏显示消息时间
+ hideTime: Boolean,
+ reverseUserId: [String, Number],
+ timeRange: {
+ type: Number,
+ default: 1
+ },
+ timeFormat: {
+ type: Function,
+ default: function _default(val) {
+ return hoursTimeFormat(val);
+ }
+ },
+ loadingText: {
+ type: [String, Function]
+ },
+ loadendText: {
+ type: [String, Function],
+ default: "暂无更多消息"
+ },
+ messages: {
+ type: Array,
+ default: function _default() {
+ return [];
+ }
+ }
+ },
+ data: function data() {
+ this._lockScroll = false;
+ return {
+ _loading: false,
+ _loadend: false
+ };
+ },
+ render: function render() {
+ var _this = this;
+
+ var h = arguments[0];
+ return h("div", {
+ "class": "lemon-messages",
+ "ref": "wrap",
+ "on": {
+ "scroll": this._handleScroll
+ }
+ }, [h("div", {
+ "class": ["lemon-messages__load", "lemon-messages__load--".concat(this._loadend ? "end" : "ing")]
+ }, [h("span", {
+ "class": "lemon-messages__loadend"
+ }, [isString(this.loadendText) ? this.loadendText : this.loadendText()]), h("span", {
+ "class": "lemon-messages__loading"
+ }, [this.loadingText ? isString(this.loadingText) ? this.loadingText : this.loadingText() : h("i", {
+ "class": "lemon-icon-loading lemonani-spin"
+ })])]), this.messages.map(function (message, index) {
+ var node = [];
+ var tagName = "lemon-message-".concat(message.type);
+ var prev = _this.messages[index - 1];
+
+ if (prev && _this.msecRange && message.sendTime - prev.sendTime > _this.msecRange) {
+ node.push(h("lemon-message-event", helper_default()([{}, {
+ "attrs": {
+ message: {
+ id: "__time__",
+ type: "event",
+ content: hoursTimeFormat(message.sendTime)
+ }
+ }
+ }])));
+ }
+
+ var attrs;
+
+ if (message.type == "event") {
+ attrs = {
+ message: message
+ };
+ } else {
+ attrs = {
+ timeFormat: _this.timeFormat,
+ message: message,
+ reverse: _this.reverseUserId == message.fromUser.id,
+ hideTime: _this.hideTime,
+ hideName: _this.hideName
+ };
+ }
+
+ node.push(h(tagName, helper_default()([{
+ "ref": "message",
+ "refInFor": true
+ }, {
+ "attrs": attrs
+ }])));
+ return node;
+ })]);
+ },
+ computed: {
+ msecRange: function msecRange() {
+ return this.timeRange * 1000 * 60;
+ }
+ },
+ watch: {},
+ methods: {
+ loaded: function loaded() {
+ this._loadend = true;
+ this.$forceUpdate();
+ },
+ resetLoadState: function resetLoadState() {
+ var _this2 = this;
+
+ this._lockScroll = true;
+ this._loading = false;
+ this._loadend = false;
+ setTimeout(function () {
+ _this2._lockScroll = false;
+ }, 200);
+ },
+ _handleScroll: function () {
+ var _handleScroll2 = _asyncToGenerator(
+ /*#__PURE__*/
+ regeneratorRuntime.mark(function _callee2(e) {
+ var _this3 = this;
+
+ var target, hst;
+ return regeneratorRuntime.wrap(function _callee2$(_context2) {
+ while (1) {
+ switch (_context2.prev = _context2.next) {
+ case 0:
+ if (!this._lockScroll) {
+ _context2.next = 2;
+ break;
+ }
+
+ return _context2.abrupt("return");
+
+ case 2:
+ target = e.target;
+ contextmenu.hide();
+
+ if (!(target.scrollTop == 0 && this._loading == false && this._loadend == false)) {
+ _context2.next = 10;
+ break;
+ }
+
+ this._loading = true;
+ _context2.next = 8;
+ return this.$nextTick();
+
+ case 8:
+ hst = target.scrollHeight;
+ this.$emit("reach-top",
+ /*#__PURE__*/
+ function () {
+ var _ref = _asyncToGenerator(
+ /*#__PURE__*/
+ regeneratorRuntime.mark(function _callee(isEnd) {
+ return regeneratorRuntime.wrap(function _callee$(_context) {
+ while (1) {
+ switch (_context.prev = _context.next) {
+ case 0:
+ _context.next = 2;
+ return _this3.$nextTick();
+
+ case 2:
+ target.scrollTop = target.scrollHeight - hst;
+ _this3._loading = false;
+ _this3._loadend = !!isEnd;
+
+ case 5:
+ case "end":
+ return _context.stop();
+ }
+ }
+ }, _callee);
+ }));
+
+ return function (_x2) {
+ return _ref.apply(this, arguments);
+ };
+ }());
+
+ case 10:
+ case "end":
+ return _context2.stop();
+ }
+ }
+ }, _callee2, this);
+ }));
+
+ function _handleScroll(_x) {
+ return _handleScroll2.apply(this, arguments);
+ }
+
+ return _handleScroll;
+ }(),
+ scrollToBottom: function () {
+ var _scrollToBottom = _asyncToGenerator(
+ /*#__PURE__*/
+ regeneratorRuntime.mark(function _callee3() {
+ var wrap;
+ return regeneratorRuntime.wrap(function _callee3$(_context3) {
+ while (1) {
+ switch (_context3.prev = _context3.next) {
+ case 0:
+ _context3.next = 2;
+ return this.$nextTick();
+
+ case 2:
+ wrap = this.$refs.wrap;
+
+ if (wrap) {
+ wrap.scrollTop = wrap.scrollHeight;
+ }
+
+ case 4:
+ case "end":
+ return _context3.stop();
+ }
+ }
+ }, _callee3, this);
+ }));
+
+ function scrollToBottom() {
+ return _scrollToBottom.apply(this, arguments);
+ }
+
+ return scrollToBottom;
+ }()
+ },
+ created: function created() {},
+ mounted: function mounted() {}
+});
+// CONCATENATED MODULE: ./packages/components/messages.vue?vue&type=script&lang=js&
+ /* harmony default export */ var components_messagesvue_type_script_lang_js_ = (messagesvue_type_script_lang_js_);
+// EXTERNAL MODULE: ./packages/components/messages.vue?vue&type=style&index=0&lang=stylus&
+var messagesvue_type_style_index_0_lang_stylus_ = __webpack_require__("436f");
+
+// CONCATENATED MODULE: ./packages/components/messages.vue
+var messages_render, messages_staticRenderFns
+
+
+
+
+
+/* normalize component */
+
+var messages_component = normalizeComponent(
+ components_messagesvue_type_script_lang_js_,
+ messages_render,
+ messages_staticRenderFns,
+ false,
+ null,
+ null,
+ null
+
+)
+
+/* harmony default export */ var messages = (messages_component.exports);
+// CONCATENATED MODULE: ./node_modules/cache-loader/dist/cjs.js??ref--12-0!./node_modules/thread-loader/dist/cjs.js!./node_modules/babel-loader/lib!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./packages/components/message/basic.vue?vue&type=script&lang=js&
+
+/* harmony default export */ var basicvue_type_script_lang_js_ = ({
+ name: "lemonMessageBasic",
+ inject: {
+ IMUI: {
+ from: "IMUI",
+ default: function _default() {
+ return this;
+ }
+ }
+ },
+ props: {
+ contextmenu: Array,
+ message: {
+ type: Object,
+ default: function _default() {
+ return {};
+ }
+ },
+ timeFormat: {
+ type: Function,
+ default: function _default() {
+ return "";
+ }
+ },
+ reverse: Boolean,
+ hideName: Boolean,
+ hideTime: Boolean
+ },
+ data: function data() {
+ return {};
+ },
+ render: function render() {
+ var _this = this;
+
+ var h = arguments[0];
+ var _this$message = this.message,
+ fromUser = _this$message.fromUser,
+ status = _this$message.status,
+ sendTime = _this$message.sendTime;
+ var hideTitle = this.hideName == true && this.hideTime == true;
+ return h("div", {
+ "class": ["lemon-message", "lemon-message--status-".concat(status), {
+ "lemon-message--reverse": this.reverse,
+ "lemon-message--hide-title": hideTitle
+ }]
+ }, [h("div", {
+ "class": "lemon-message__avatar"
+ }, [h("lemon-avatar", {
+ "attrs": {
+ "size": 36,
+ "shape": "square",
+ "src": fromUser.avatar
+ },
+ "on": {
+ "click": function click(e) {
+ _this._emitClick(e, "avatar");
+ }
+ }
+ })]), h("div", {
+ "class": "lemon-message__inner"
+ }, [h("div", {
+ "class": "lemon-message__title"
+ }, [this.hideName == false && h("span", {
+ "on": {
+ "click": function click(e) {
+ _this._emitClick(e, "displayName");
+ }
+ }
+ }, [fromUser.displayName]), this.hideTime == false && h("span", {
+ "class": "lemon-message__time",
+ "on": {
+ "click": function click(e) {
+ _this._emitClick(e, "sendTime");
+ }
+ }
+ }, [this.timeFormat(sendTime)])]), h("div", {
+ "class": "lemon-message__content-flex"
+ }, [h("div", {
+ "directives": [{
+ name: "lemon-contextmenu",
+ value: this.IMUI.contextmenu,
+ modifiers: {
+ "message": true
+ }
+ }],
+ "class": "lemon-message__content",
+ "on": {
+ "click": function click(e) {
+ _this._emitClick(e, "content");
+ }
+ }
+ }, [useScopedSlot(this.$scopedSlots["content"], null, this.message)]), h("div", {
+ "class": "lemon-message__content-after"
+ }, [useScopedSlot(this.IMUI.$scopedSlots["message-after"], null, this.message)]), h("div", {
+ "class": "lemon-message__status",
+ "on": {
+ "click": function click(e) {
+ _this._emitClick(e, "status");
+ }
+ }
+ }, [h("i", {
+ "class": "lemon-icon-loading lemonani-spin"
+ }), h("i", {
+ "class": "lemon-icon-prompt",
+ "attrs": {
+ "title": "重发消息"
+ },
+ "style": {
+ color: "#ff2525",
+ cursor: "pointer"
+ }
+ })])])])]);
+ },
+ created: function created() {},
+ mounted: function mounted() {},
+ computed: {},
+ watch: {},
+ methods: {
+ _emitClick: function _emitClick(e, key) {
+ this.IMUI.$emit("message-click", e, key, this.message, this.IMUI);
+ }
+ }
+});
+// CONCATENATED MODULE: ./packages/components/message/basic.vue?vue&type=script&lang=js&
+ /* harmony default export */ var message_basicvue_type_script_lang_js_ = (basicvue_type_script_lang_js_);
+// EXTERNAL MODULE: ./packages/components/message/basic.vue?vue&type=style&index=0&lang=stylus&
+var basicvue_type_style_index_0_lang_stylus_ = __webpack_require__("fbd1");
+
+// CONCATENATED MODULE: ./packages/components/message/basic.vue
+var basic_render, basic_staticRenderFns
+
+
+
+
+
+/* normalize component */
+
+var basic_component = normalizeComponent(
+ message_basicvue_type_script_lang_js_,
+ basic_render,
+ basic_staticRenderFns,
+ false,
+ null,
+ null,
+ null
+
+)
+
+/* harmony default export */ var basic = (basic_component.exports);
+// CONCATENATED MODULE: ./node_modules/cache-loader/dist/cjs.js??ref--12-0!./node_modules/thread-loader/dist/cjs.js!./node_modules/babel-loader/lib!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./packages/components/message/text.vue?vue&type=script&lang=js&
+
+
+
+
+
+
+
+
+function textvue_type_script_lang_js_ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }
+
+function textvue_type_script_lang_js_objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { textvue_type_script_lang_js_ownKeys(source, true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { textvue_type_script_lang_js_ownKeys(source).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
+
+/* harmony default export */ var textvue_type_script_lang_js_ = ({
+ name: "lemonMessageText",
+ inheritAttrs: false,
+ inject: ["IMUI"],
+ render: function render() {
+ var _this = this;
+
+ var h = arguments[0];
+ return h("lemon-message-basic", helper_default()([{
+ "class": "lemon-message-text"
+ }, {
+ "props": textvue_type_script_lang_js_objectSpread({}, this.$attrs)
+ }, {
+ "scopedSlots": {
+ content: function content(props) {
+ var content = _this.IMUI.emojiNameToImage(props.content);
+
+ return h("span", helper_default()([{}, {
+ "domProps": {
+ innerHTML: content
+ }
+ }]));
+ }
+ }
+ }]));
+ }
+});
+// CONCATENATED MODULE: ./packages/components/message/text.vue?vue&type=script&lang=js&
+ /* harmony default export */ var message_textvue_type_script_lang_js_ = (textvue_type_script_lang_js_);
+// EXTERNAL MODULE: ./packages/components/message/text.vue?vue&type=style&index=0&lang=stylus&
+var textvue_type_style_index_0_lang_stylus_ = __webpack_require__("1663");
+
+// CONCATENATED MODULE: ./packages/components/message/text.vue
+var text_render, text_staticRenderFns
+
+
+
+
+
+/* normalize component */
+
+var text_component = normalizeComponent(
+ message_textvue_type_script_lang_js_,
+ text_render,
+ text_staticRenderFns,
+ false,
+ null,
+ null,
+ null
+
+)
+
+/* harmony default export */ var message_text = (text_component.exports);
+// CONCATENATED MODULE: ./node_modules/cache-loader/dist/cjs.js??ref--12-0!./node_modules/thread-loader/dist/cjs.js!./node_modules/babel-loader/lib!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./packages/components/message/image.vue?vue&type=script&lang=js&
+
+
+
+
+
+
+
+function imagevue_type_script_lang_js_ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }
+
+function imagevue_type_script_lang_js_objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { imagevue_type_script_lang_js_ownKeys(source, true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { imagevue_type_script_lang_js_ownKeys(source).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
+
+/* harmony default export */ var imagevue_type_script_lang_js_ = ({
+ name: "lemonMessageImage",
+ inheritAttrs: false,
+ render: function render() {
+ var h = arguments[0];
+ return h("lemon-message-basic", helper_default()([{
+ "class": "lemon-message-image"
+ }, {
+ "props": imagevue_type_script_lang_js_objectSpread({}, this.$attrs)
+ }, {
+ "scopedSlots": {
+ content: function content(props) {
+ return h("img", {
+ "attrs": {
+ "src": props.content
+ }
+ });
+ }
+ }
+ }]));
+ }
+});
+// CONCATENATED MODULE: ./packages/components/message/image.vue?vue&type=script&lang=js&
+ /* harmony default export */ var message_imagevue_type_script_lang_js_ = (imagevue_type_script_lang_js_);
+// EXTERNAL MODULE: ./packages/components/message/image.vue?vue&type=style&index=0&lang=stylus&
+var imagevue_type_style_index_0_lang_stylus_ = __webpack_require__("4d21");
+
+// CONCATENATED MODULE: ./packages/components/message/image.vue
+var image_render, image_staticRenderFns
+
+
+
+
+
+/* normalize component */
+
+var image_component = normalizeComponent(
+ message_imagevue_type_script_lang_js_,
+ image_render,
+ image_staticRenderFns,
+ false,
+ null,
+ null,
+ null
+
+)
+
+/* harmony default export */ var message_image = (image_component.exports);
+// CONCATENATED MODULE: ./node_modules/cache-loader/dist/cjs.js??ref--12-0!./node_modules/thread-loader/dist/cjs.js!./node_modules/babel-loader/lib!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./packages/components/message/file.vue?vue&type=script&lang=js&
+
+
+
+
+
+
+
+function filevue_type_script_lang_js_ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }
+
+function filevue_type_script_lang_js_objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { filevue_type_script_lang_js_ownKeys(source, true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { filevue_type_script_lang_js_ownKeys(source).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
+
+
+/* harmony default export */ var filevue_type_script_lang_js_ = ({
+ name: "lemonMessageFile",
+ inheritAttrs: false,
+ render: function render() {
+ var h = arguments[0];
+ return h("lemon-message-basic", helper_default()([{
+ "class": "lemon-message-file"
+ }, {
+ "props": filevue_type_script_lang_js_objectSpread({}, this.$attrs)
+ }, {
+ "scopedSlots": {
+ content: function content(props) {
+ return [h("div", {
+ "class": "lemon-message-file__inner"
+ }, [h("p", {
+ "class": "lemon-message-file__name"
+ }, [props.fileName]), h("p", {
+ "class": "lemon-message-file__byte"
+ }, [formatByte(props.fileSize)])]), h("div", {
+ "class": "lemon-message-file__sfx"
+ }, [h("i", {
+ "class": "lemon-icon-attah"
+ })])];
+ }
+ }
+ }]));
+ }
+});
+// CONCATENATED MODULE: ./packages/components/message/file.vue?vue&type=script&lang=js&
+ /* harmony default export */ var message_filevue_type_script_lang_js_ = (filevue_type_script_lang_js_);
+// EXTERNAL MODULE: ./packages/components/message/file.vue?vue&type=style&index=0&lang=stylus&
+var filevue_type_style_index_0_lang_stylus_ = __webpack_require__("cfab");
+
+// CONCATENATED MODULE: ./packages/components/message/file.vue
+var file_render, file_staticRenderFns
+
+
+
+
+
+/* normalize component */
+
+var file_component = normalizeComponent(
+ message_filevue_type_script_lang_js_,
+ file_render,
+ file_staticRenderFns,
+ false,
+ null,
+ null,
+ null
+
+)
+
+/* harmony default export */ var file = (file_component.exports);
+// CONCATENATED MODULE: ./node_modules/cache-loader/dist/cjs.js??ref--12-0!./node_modules/thread-loader/dist/cjs.js!./node_modules/babel-loader/lib!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./packages/components/message/event.vue?vue&type=script&lang=js&
+/* harmony default export */ var eventvue_type_script_lang_js_ = ({
+ name: "lemonMessageEvent",
+ inheritAttrs: false,
+ inject: ["IMUI"],
+ render: function render() {
+ var _this = this;
+
+ var h = arguments[0];
+ var content = this.$attrs.message.content;
+ return h("div", {
+ "class": "lemon-message lemon-message-event"
+ }, [h("span", {
+ "class": "lemon-message-event__content",
+ "on": {
+ "click": function click(e) {
+ return _this._emitClick(e, "content");
+ }
+ }
+ }, [content])]);
+ },
+ methods: {
+ _emitClick: function _emitClick(e, key) {
+ this.IMUI.$emit("message-click", e, key, this.$attrs.message, this.IMUI);
+ }
+ }
+});
+// CONCATENATED MODULE: ./packages/components/message/event.vue?vue&type=script&lang=js&
+ /* harmony default export */ var message_eventvue_type_script_lang_js_ = (eventvue_type_script_lang_js_);
+// EXTERNAL MODULE: ./packages/components/message/event.vue?vue&type=style&index=0&lang=stylus&
+var eventvue_type_style_index_0_lang_stylus_ = __webpack_require__("ed4b");
+
+// CONCATENATED MODULE: ./packages/components/message/event.vue
+var event_render, event_staticRenderFns
+
+
+
+
+
+/* normalize component */
+
+var event_component = normalizeComponent(
+ message_eventvue_type_script_lang_js_,
+ event_render,
+ event_staticRenderFns,
+ false,
+ null,
+ null,
+ null
+
+)
+
+/* harmony default export */ var message_event = (event_component.exports);
+// EXTERNAL MODULE: ./node_modules/core-js/modules/es6.array.find-index.js
+var es6_array_find_index = __webpack_require__("20d6");
+
+// EXTERNAL MODULE: ./node_modules/@babel/runtime-corejs2/core-js/array/is-array.js
+var is_array = __webpack_require__("a745");
+var is_array_default = /*#__PURE__*/__webpack_require__.n(is_array);
+
+// CONCATENATED MODULE: ./node_modules/@babel/runtime-corejs2/helpers/esm/arrayWithoutHoles.js
+
+function _arrayWithoutHoles(arr) {
+ if (is_array_default()(arr)) {
+ for (var i = 0, arr2 = new Array(arr.length); i < arr.length; i++) {
+ arr2[i] = arr[i];
+ }
+
+ return arr2;
+ }
+}
+// EXTERNAL MODULE: ./node_modules/@babel/runtime-corejs2/core-js/array/from.js
+var from = __webpack_require__("774e");
+var from_default = /*#__PURE__*/__webpack_require__.n(from);
+
+// EXTERNAL MODULE: ./node_modules/@babel/runtime-corejs2/core-js/is-iterable.js
+var is_iterable = __webpack_require__("c8bb");
+var is_iterable_default = /*#__PURE__*/__webpack_require__.n(is_iterable);
+
+// CONCATENATED MODULE: ./node_modules/@babel/runtime-corejs2/helpers/esm/iterableToArray.js
+
+
+function _iterableToArray(iter) {
+ if (is_iterable_default()(Object(iter)) || Object.prototype.toString.call(iter) === "[object Arguments]") return from_default()(iter);
+}
+// CONCATENATED MODULE: ./node_modules/@babel/runtime-corejs2/helpers/esm/nonIterableSpread.js
+function _nonIterableSpread() {
+ throw new TypeError("Invalid attempt to spread non-iterable instance");
+}
+// CONCATENATED MODULE: ./node_modules/@babel/runtime-corejs2/helpers/esm/toConsumableArray.js
+
+
+
+function _toConsumableArray(arr) {
+ return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _nonIterableSpread();
+}
+// EXTERNAL MODULE: ./node_modules/core-js/modules/es6.string.starts-with.js
+var es6_string_starts_with = __webpack_require__("f559");
+
+// EXTERNAL MODULE: ./node_modules/core-js/modules/es6.object.assign.js
+var es6_object_assign = __webpack_require__("f751");
+
+// EXTERNAL MODULE: ./node_modules/core-js/modules/es6.array.sort.js
+var es6_array_sort = __webpack_require__("55dd");
+
+// EXTERNAL MODULE: ./node_modules/core-js/modules/es6.array.find.js
+var es6_array_find = __webpack_require__("7514");
+
+// CONCATENATED MODULE: ./packages/utils/constant.js
+var EMIT_AVATAR_CLICK = "avatar-click";
+var DEFAULT_MENU_LASTMESSAGES = "messages";
+var DEFAULT_MENU_CONTACTS = "contacts";
+var DEFAULT_MENUS = [DEFAULT_MENU_LASTMESSAGES, DEFAULT_MENU_CONTACTS];
+/**
+ * 聊天消息类型
+ */
+
+var MESSAGE_TYPE = ["voice", "file", "video", "image", "text"];
+/**
+ * 聊天消息状态
+ */
+
+var MESSAGE_STATUS = ["going", "succeed", "failed"];
+var CONTACT_TYPE = ["many", "single"];
+// CONCATENATED MODULE: ./packages/lastContentRender.js
+
+/* harmony default export */ var packages_lastContentRender = ({
+ file: function file(message) {
+ return "[文件]";
+ },
+ image: function image(message) {
+ return "[图片]";
+ },
+ text: function text(message) {
+ return this.emojiNameToImage(clearHtml(message.content));
+ },
+ event: function event(message) {
+ return '[通知]';
+ }
+});
+// CONCATENATED MODULE: ./node_modules/@babel/runtime-corejs2/helpers/esm/classCallCheck.js
+function _classCallCheck(instance, Constructor) {
+ if (!(instance instanceof Constructor)) {
+ throw new TypeError("Cannot call a class as a function");
+ }
+}
+// CONCATENATED MODULE: ./node_modules/@babel/runtime-corejs2/helpers/esm/createClass.js
+
+
+function _defineProperties(target, props) {
+ for (var i = 0; i < props.length; i++) {
+ var descriptor = props[i];
+ descriptor.enumerable = descriptor.enumerable || false;
+ descriptor.configurable = true;
+ if ("value" in descriptor) descriptor.writable = true;
+
+ define_property_default()(target, descriptor.key, descriptor);
+ }
+}
+
+function _createClass(Constructor, protoProps, staticProps) {
+ if (protoProps) _defineProperties(Constructor.prototype, protoProps);
+ if (staticProps) _defineProperties(Constructor, staticProps);
+ return Constructor;
+}
+// CONCATENATED MODULE: ./packages/utils/cache/memory.js
+
+
+
+var memory_MemoryCache =
+/*#__PURE__*/
+function () {
+ function MemoryCache() {
+ _classCallCheck(this, MemoryCache);
+
+ this.table = {};
+ }
+
+ _createClass(MemoryCache, [{
+ key: "get",
+ value: function get(key) {
+ return key ? this.table[key] : this.table;
+ }
+ }, {
+ key: "set",
+ value: function set(key, val) {
+ this.table[key] = val;
+ } // setOnly(key, val) {
+ // if (!this.has(key)) this.set(key, val);
+ // }
+
+ }, {
+ key: "remove",
+ value: function remove(key) {
+ if (key) {
+ delete this.table[key];
+ } else {
+ this.table = {};
+ }
+ }
+ }, {
+ key: "has",
+ value: function has(key) {
+ return !!this.table[key];
+ }
+ }]);
+
+ return MemoryCache;
+}();
+
+
+// CONCATENATED MODULE: ./node_modules/cache-loader/dist/cjs.js??ref--12-0!./node_modules/thread-loader/dist/cjs.js!./node_modules/babel-loader/lib!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./packages/components/index.vue?vue&type=script&lang=js&
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+function componentsvue_type_script_lang_js_ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }
+
+function componentsvue_type_script_lang_js_objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { componentsvue_type_script_lang_js_ownKeys(source, true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { componentsvue_type_script_lang_js_ownKeys(source).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
+
+
+
+
+
+
+
+var allMessages = {};
+var emojiMap = {};
+
+var componentsvue_type_script_lang_js_toPx = function toPx(val) {
+ return isString(val) ? val : "".concat(val, "px");
+};
+
+var toPoint = function toPoint(str) {
+ return str.replace("%", "") / 100;
+};
+
+var renderDrawerContent = function renderDrawerContent() {};
+
+/* harmony default export */ var componentsvue_type_script_lang_js_ = ({
+ name: "LemonImui",
+ provide: function provide() {
+ return {
+ IMUI: this
+ };
+ },
+ props: {
+ width: {
+ type: [String, Number],
+ default: 850
+ },
+ height: {
+ type: [String, Number],
+ default: 580
+ },
+ theme: {
+ type: String,
+ default: "default"
+ },
+ simple: {
+ type: Boolean,
+ default: false
+ },
+ loadingText: [String, Function],
+ loadendText: [String, Function],
+
+ /**
+ * 消息时间格式化规则
+ */
+ messageTimeFormat: Function,
+
+ /**
+ * 联系人最新消息时间格式化规则
+ */
+ contactTimeFormat: Function,
+
+ /**
+ * 初始化时是否隐藏抽屉
+ */
+ hideDrawer: {
+ type: Boolean,
+ default: true
+ },
+
+ /**
+ * 是否隐藏导航按钮上的头像
+ */
+ hideMenuAvatar: Boolean,
+ hideMenu: Boolean,
+
+ /**
+ * 是否隐藏消息列表内的联系人名字
+ */
+ hideMessageName: Boolean,
+
+ /**
+ * 是否隐藏消息列表内的发送时间
+ */
+ hideMessageTime: Boolean,
+ sendKey: Function,
+ sendText: String,
+ contextmenu: Array,
+ contactContextmenu: Array,
+ avatarCricle: Boolean,
+ user: {
+ type: Object,
+ default: function _default() {
+ return {};
+ }
+ }
+ },
+ data: function data() {
+ this.CacheContactContainer = new memory_MemoryCache();
+ this.CacheMenuContainer = new memory_MemoryCache();
+ this.CacheMessageLoaded = new memory_MemoryCache();
+ this.CacheDraft = new memory_MemoryCache();
+ return {
+ drawerVisible: !this.hideDrawer,
+ currentContactId: null,
+ currentMessages: [],
+ activeSidebar: DEFAULT_MENU_LASTMESSAGES,
+ contacts: [],
+ menus: [],
+ editorTools: []
+ };
+ },
+ render: function render() {
+ return this._renderWrapper([this._renderMenu(), this._renderSidebarMessage(), this._renderSidebarContact(), this._renderContainer(), this._renderDrawer()]);
+ },
+ created: function created() {
+ this.initMenus();
+ },
+ mounted: function () {
+ var _mounted = _asyncToGenerator(
+ /*#__PURE__*/
+ regeneratorRuntime.mark(function _callee() {
+ return regeneratorRuntime.wrap(function _callee$(_context) {
+ while (1) {
+ switch (_context.prev = _context.next) {
+ case 0:
+ _context.next = 2;
+ return this.$nextTick();
+
+ case 2:
+ case "end":
+ return _context.stop();
+ }
+ }
+ }, _callee, this);
+ }));
+
+ function mounted() {
+ return _mounted.apply(this, arguments);
+ }
+
+ return mounted;
+ }(),
+ computed: {
+ currentContact: function currentContact() {
+ var _this = this;
+
+ return this.contacts.find(function (item) {
+ return item.id == _this.currentContactId;
+ }) || {};
+ },
+ currentMenu: function currentMenu() {
+ var _this2 = this;
+
+ return this.menus.find(function (item) {
+ return item.name == _this2.activeSidebar;
+ }) || {};
+ },
+ currentIsDefSidebar: function currentIsDefSidebar() {
+ return DEFAULT_MENUS.includes(this.activeSidebar);
+ },
+ lastMessages: function lastMessages() {
+ var data = this.contacts.filter(function (item) {
+ return !isEmpty(item.lastContent);
+ });
+ data.sort(function (a1, a2) {
+ return a2.lastSendTime - a1.lastSendTime;
+ });
+ return data;
+ }
+ },
+ watch: {
+ activeSidebar: function activeSidebar() {}
+ },
+ methods: {
+ _menuIsContacts: function _menuIsContacts() {
+ return this.activeSidebar == DEFAULT_MENU_CONTACTS;
+ },
+ _menuIsMessages: function _menuIsMessages() {
+ return this.activeSidebar == DEFAULT_MENU_LASTMESSAGES;
+ },
+ _createMessage: function _createMessage(message) {
+ return componentsvue_type_script_lang_js_objectSpread({}, {
+ id: generateUUID(),
+ type: "text",
+ status: "going",
+ sendTime: new Date().getTime(),
+ toContactId: this.currentContactId,
+ fromUser: componentsvue_type_script_lang_js_objectSpread({}, this.user)
+ }, {}, message);
+ },
+
+ /**
+ * 新增一条消息
+ */
+ appendMessage: function appendMessage(message) {
+ var scrollToBottom = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
+
+ if (allMessages[message.toContactId] === undefined) {
+ this.updateContact({
+ id: message.toContactId,
+ unread: "+1",
+ lastSendTime: message.sendTime,
+ lastContent: this.lastContentRender(message)
+ });
+ } else {
+ this._addMessage(message, message.toContactId, 1);
+
+ var updateContact = {
+ id: message.toContactId,
+ lastContent: this.lastContentRender(message),
+ lastSendTime: message.sendTime
+ };
+
+ if (message.toContactId == this.currentContactId) {
+ if (scrollToBottom == true) {
+ this.messageViewToBottom();
+ }
+
+ this.CacheDraft.remove(message.toContactId);
+ } else {
+ updateContact.unread = "+1";
+ }
+
+ this.updateContact(updateContact);
+ }
+ },
+ _emitSend: function _emitSend(message, next, file) {
+ var _this3 = this;
+
+ this.$emit("send", message, function () {
+ var replaceMessage = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {
+ status: "succeed"
+ };
+ next();
+
+ _this3.updateMessage(Object.assign(message, replaceMessage));
+ }, file);
+ },
+ _handleSend: function _handleSend(text) {
+ var _this4 = this;
+
+ var message = this._createMessage({
+ content: text
+ });
+
+ this.appendMessage(message, true);
+
+ this._emitSend(message, function () {
+ _this4.updateContact({
+ id: message.toContactId,
+ lastContent: _this4.lastContentRender(message),
+ lastSendTime: message.sendTime
+ });
+
+ _this4.CacheDraft.remove(message.toContactId);
+ });
+ },
+ _handleUpload: function _handleUpload(file) {
+ var _this5 = this;
+
+ var imageTypes = ["image/gif", "image/jpeg", "image/png"];
+ var joinMessage;
+
+ if (imageTypes.includes(file.type)) {
+ joinMessage = {
+ type: "image",
+ content: URL.createObjectURL(file)
+ };
+ } else {
+ joinMessage = {
+ type: "file",
+ fileSize: file.size,
+ fileName: file.name,
+ content: ""
+ };
+ }
+
+ var message = this._createMessage(joinMessage);
+
+ this.appendMessage(message, true);
+
+ this._emitSend(message, function () {
+ _this5.updateContact({
+ id: message.toContactId,
+ lastContent: _this5.lastContentRender(message),
+ lastSendTime: message.sendTime
+ });
+ }, file);
+ },
+ _emitPullMessages: function _emitPullMessages(next) {
+ var _this6 = this;
+
+ this._changeContactLock = true;
+ this.$emit("pull-messages", this.currentContact, function () {
+ var messages = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];
+ var isEnd = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
+
+ _this6._addMessage(messages, _this6.currentContactId, 0);
+
+ _this6.CacheMessageLoaded.set(_this6.currentContactId, isEnd);
+
+ if (isEnd == true) _this6.$refs.messages.loaded();
+
+ _this6.updateCurrentMessages();
+
+ _this6._changeContactLock = false;
+ next(isEnd);
+ }, this);
+ },
+ clearCacheContainer: function clearCacheContainer(name) {
+ this.CacheContactContainer.remove(name);
+ this.CacheMenuContainer.remove(name);
+ },
+ _renderWrapper: function _renderWrapper(children) {
+ var h = this.$createElement;
+ return h("div", {
+ "style": {
+ width: componentsvue_type_script_lang_js_toPx(this.width),
+ height: componentsvue_type_script_lang_js_toPx(this.height)
+ },
+ "ref": "wrapper",
+ "class": ["lemon-wrapper", "lemon-wrapper--theme-".concat(this.theme), {
+ "lemon-wrapper--simple": this.simple
+ }, this.drawerVisible && "lemon-wrapper--drawer-show"]
+ }, [children]);
+ },
+ _renderMenu: function _renderMenu() {
+ var _this7 = this;
+
+ var h = this.$createElement;
+
+ var menuItem = this._renderMenuItem();
+
+ return h("div", {
+ "class": "lemon-menu",
+ "directives": [{
+ name: "show",
+ value: !this.hideMenu
+ }]
+ }, [h("lemon-avatar", {
+ "directives": [{
+ name: "show",
+ value: !this.hideMenuAvatar
+ }],
+ "on": {
+ "click": function click(e) {
+ _this7.$emit("menu-avatar-click", e);
+ }
+ },
+ "class": "lemon-menu__avatar",
+ "attrs": {
+ "src": this.user.avatar
+ }
+ }), menuItem.top, this.$slots.menu, h("div", {
+ "class": "lemon-menu__bottom"
+ }, [this.$slots["menu-bottom"], menuItem.bottom])]);
+ },
+ _renderMenuAvatar: function _renderMenuAvatar() {
+ return;
+ },
+ _renderMenuItem: function _renderMenuItem() {
+ var _this8 = this;
+
+ var h = this.$createElement;
+ var top = [];
+ var bottom = [];
+ this.menus.forEach(function (item) {
+ var name = item.name,
+ title = item.title,
+ unread = item.unread,
+ render = item.render,
+ _click = item.click;
+ var node = h("div", {
+ "class": ["lemon-menu__item", {
+ "lemon-menu__item--active": _this8.activeSidebar == name
+ }],
+ "on": {
+ "click": function click() {
+ funCall(_click, function () {
+ if (name) _this8.changeMenu(name);
+ });
+ }
+ },
+ "attrs": {
+ "title": title
+ }
+ }, [h("lemon-badge", {
+ "attrs": {
+ "count": unread
+ }
+ }, [render(item)])]);
+ item.isBottom === true ? bottom.push(node) : top.push(node);
+ });
+ return {
+ top: top,
+ bottom: bottom
+ };
+ },
+ _renderSidebarMessage: function _renderSidebarMessage() {
+ var _this9 = this;
+
+ return this._renderSidebar([useScopedSlot(this.$scopedSlots["sidebar-message-top"], null, this), this.lastMessages.map(function (contact) {
+ return _this9._renderContact({
+ contact: contact,
+ timeFormat: _this9.contactTimeFormat
+ }, function () {
+ return _this9.changeContact(contact.id);
+ }, _this9.$scopedSlots["sidebar-message"]);
+ })], DEFAULT_MENU_LASTMESSAGES, useScopedSlot(this.$scopedSlots["sidebar-message-fixedtop"], null, this));
+ },
+ _renderContact: function _renderContact(props, onClick, slot) {
+ var _this10 = this;
+
+ var h = this.$createElement;
+ var _props$contact = props.contact,
+ customClick = _props$contact.click,
+ renderContainer = _props$contact.renderContainer,
+ contactId = _props$contact.id;
+
+ var click = function click() {
+ funCall(customClick, function () {
+ onClick();
+
+ _this10._customContainerReady(renderContainer, _this10.CacheContactContainer, contactId);
+ });
+ };
+
+ return h("lemon-contact", helper_default()([{
+ "class": {
+ "lemon-contact--active": this.currentContactId == props.contact.id
+ },
+ "directives": [{
+ name: "lemon-contextmenu",
+ value: this.contactContextmenu,
+ modifiers: {
+ "contact": true
+ }
+ }]
+ }, {
+ "props": props
+ }, {
+ "on": {
+ "click": click
+ },
+ "scopedSlots": {
+ default: slot
+ }
+ }]));
+ },
+ _renderSidebarContact: function _renderSidebarContact() {
+ var _this11 = this;
+
+ var h = this.$createElement;
+ var prevIndex;
+ return this._renderSidebar([useScopedSlot(this.$scopedSlots["sidebar-contact-top"], null, this), this.contacts.map(function (contact) {
+ if (!contact.index) return;
+ contact.index = contact.index.replace(/\[[0-9]*\]/, "");
+ var node = [contact.index !== prevIndex && h("p", {
+ "class": "lemon-sidebar__label"
+ }, [contact.index]), _this11._renderContact({
+ contact: contact,
+ simple: true
+ }, function () {
+ _this11.changeContact(contact.id);
+ }, _this11.$scopedSlots["sidebar-contact"])];
+ prevIndex = contact.index;
+ return node;
+ })], DEFAULT_MENU_CONTACTS, useScopedSlot(this.$scopedSlots["sidebar-contact-fixedtop"], null, this));
+ },
+ _renderSidebar: function _renderSidebar(children, name, fixedtop) {
+ var h = this.$createElement;
+ return h("div", {
+ "class": "lemon-sidebar",
+ "directives": [{
+ name: "show",
+ value: this.activeSidebar == name
+ }],
+ "on": {
+ "scroll": this._handleSidebarScroll
+ }
+ }, [h("div", {
+ "class": "lemon-sidebar__fixed-top"
+ }, [fixedtop]), h("div", {
+ "class": "lemon-sidebar__scroll"
+ }, [children])]);
+ },
+ _renderDrawer: function _renderDrawer() {
+ var h = this.$createElement;
+ return this._menuIsMessages() && this.currentContactId ? h("div", {
+ "class": "lemon-drawer",
+ "ref": "drawer"
+ }, [renderDrawerContent(this.currentContact), useScopedSlot(this.$scopedSlots.drawer, "", this.currentContact)]) : "";
+ },
+ _isContactContainerCache: function _isContactContainerCache(name) {
+ return name.startsWith("contact#");
+ },
+ _renderContainer: function _renderContainer() {
+ var _this12 = this;
+
+ var h = this.$createElement;
+ var nodes = [];
+ var cls = "lemon-container";
+ var curact = this.currentContact;
+ var defIsShow = true;
+
+ for (var name in this.CacheContactContainer.get()) {
+ var show = curact.id == name && this.currentIsDefSidebar;
+ defIsShow = !show;
+ nodes.push(h("div", {
+ "class": cls,
+ "directives": [{
+ name: "show",
+ value: show
+ }]
+ }, [this.CacheContactContainer.get(name)]));
+ }
+
+ for (var _name in this.CacheMenuContainer.get()) {
+ nodes.push(h("div", {
+ "class": cls,
+ "directives": [{
+ name: "show",
+ value: this.activeSidebar == _name && !this.currentIsDefSidebar
+ }]
+ }, [this.CacheMenuContainer.get(_name)]));
+ }
+
+ nodes.push(h("div", {
+ "class": cls,
+ "directives": [{
+ name: "show",
+ value: this._menuIsMessages() && defIsShow && curact.id
+ }]
+ }, [h("div", {
+ "class": "lemon-container__title"
+ }, [useScopedSlot(this.$scopedSlots["message-title"], h("div", {
+ "class": "lemon-container__displayname"
+ }, [curact.displayName]), curact)]), h("div", {
+ "class": "lemon-vessel"
+ }, [h("div", {
+ "class": "lemon-vessel__left"
+ }, [h("lemon-messages", {
+ "ref": "messages",
+ "attrs": {
+ "loading-text": this.loadingText,
+ "loadend-text": this.loadendText,
+ "hide-time": this.hideMessageTime,
+ "hide-name": this.hideMessageName,
+ "time-format": this.messageTimeFormat,
+ "reverse-user-id": this.user.id,
+ "messages": this.currentMessages
+ },
+ "on": {
+ "reach-top": this._emitPullMessages
+ }
+ }), h("lemon-editor", {
+ "ref": "editor",
+ "attrs": {
+ "tools": this.editorTools,
+ "sendText": this.sendText,
+ "sendKey": this.sendKey
+ },
+ "on": {
+ "send": this._handleSend,
+ "upload": this._handleUpload
+ }
+ })]), h("div", {
+ "class": "lemon-vessel__right"
+ }, [useScopedSlot(this.$scopedSlots["message-side"], null, curact)])])]));
+ nodes.push(h("div", {
+ "class": cls,
+ "directives": [{
+ name: "show",
+ value: !curact.id && this.currentIsDefSidebar
+ }]
+ }, [this.$slots.cover]));
+ nodes.push(h("div", {
+ "class": cls,
+ "directives": [{
+ name: "show",
+ value: this._menuIsContacts() && defIsShow && curact.id
+ }]
+ }, [useScopedSlot(this.$scopedSlots["contact-info"], h("div", {
+ "class": "lemon-contact-info"
+ }, [h("lemon-avatar", {
+ "attrs": {
+ "src": curact.avatar,
+ "size": 90
+ }
+ }), h("h4", [curact.displayName]), h("lemon-button", {
+ "on": {
+ "click": function click() {
+ if (isEmpty(curact.lastContent)) {
+ _this12.updateContact({
+ id: curact.id,
+ lastContent: " "
+ });
+ }
+
+ _this12.changeContact(curact.id, DEFAULT_MENU_LASTMESSAGES);
+ }
+ }
+ }, ["\u53D1\u9001\u6D88\u606F"])]), curact)]));
+ return nodes;
+ },
+ _handleSidebarScroll: function _handleSidebarScroll() {
+ contextmenu.hide();
+ },
+ _addContact: function _addContact(data, t) {
+ var type = {
+ 0: "unshift",
+ 1: "push"
+ }[t];
+ this.contacts[type](data);
+ },
+ _addMessage: function _addMessage(data, contactId, t) {
+ var _allMessages$contactI;
+
+ var type = {
+ 0: "unshift",
+ 1: "push"
+ }[t];
+ if (!Array.isArray(data)) data = [data];
+ allMessages[contactId] = allMessages[contactId] || [];
+
+ (_allMessages$contactI = allMessages[contactId])[type].apply(_allMessages$contactI, _toConsumableArray(data));
+ },
+
+ /**
+ * 设置最新消息DOM
+ * @param {String} messageType 消息类型
+ * @param {Function} render 返回消息 vnode
+ */
+ setLastContentRender: function setLastContentRender(messageType, render) {
+ packages_lastContentRender[messageType] = render;
+ },
+ lastContentRender: function lastContentRender(message) {
+ if (!isFunction(packages_lastContentRender[message.type])) {
+ console.error("not found '".concat(message.type, "' of the latest message renderer,try to use \u2018setLastContentRender()\u2019"));
+ return "";
+ }
+
+ return packages_lastContentRender[message.type].call(this, message);
+ },
+
+ /**
+ * 将字符串内的 EmojiItem.name 替换为 img
+ * @param {String} str 被替换的字符串
+ * @return {String} 替换后的字符串
+ */
+ emojiNameToImage: function emojiNameToImage(str) {
+ return str.replace(/\[!(\w+)\]/gi, function (str, match) {
+ var file = match;
+ return emojiMap[file] ? "") : "[!".concat(match, "]");
+ });
+ },
+ emojiImageToName: function emojiImageToName(str) {
+ return str.replace(/
]*>/gi, "[!$1]");
+ },
+ updateCurrentMessages: function updateCurrentMessages() {
+ if (!allMessages[this.currentContactId]) allMessages[this.currentContactId] = [];
+ this.currentMessages = allMessages[this.currentContactId];
+ },
+
+ /**
+ * 将当前聊天窗口滚动到底部
+ */
+ messageViewToBottom: function messageViewToBottom() {
+ this.$refs.messages.scrollToBottom();
+ },
+
+ /**
+ * 设置联系人的草稿信息
+ */
+ setDraft: function setDraft(cid, editorValue) {
+ if (isEmpty(cid) || isEmpty(editorValue)) return false;
+ var contact = this.findContact(cid);
+ var lastContent = contact.lastContent;
+ if (isEmpty(contact)) return false;
+
+ if (this.CacheDraft.has(cid)) {
+ lastContent = this.CacheDraft.get(cid).lastContent;
+ }
+
+ this.CacheDraft.set(cid, {
+ editorValue: editorValue,
+ lastContent: lastContent
+ });
+ this.updateContact({
+ id: cid,
+ lastContent: "[\u8349\u7A3F]".concat(this.lastContentRender({
+ type: "text",
+ content: editorValue
+ }), "")
+ });
+ },
+
+ /**
+ * 清空联系人草稿信息
+ */
+ clearDraft: function clearDraft(contactId) {
+ var draft = this.CacheDraft.get(contactId);
+
+ if (draft) {
+ var currentContent = this.findContact(contactId).lastContent;
+
+ if (currentContent.indexOf('[草稿]') === 0) {
+ this.updateContact({
+ id: contactId,
+ lastContent: draft.lastContent
+ });
+ }
+
+ this.CacheDraft.remove(contactId);
+ }
+ },
+
+ /**
+ * 改变聊天对象
+ * @param contactId 联系人 id
+ */
+ changeContact: function () {
+ var _changeContact = _asyncToGenerator(
+ /*#__PURE__*/
+ regeneratorRuntime.mark(function _callee2(contactId, menuName) {
+ var _this13 = this;
+
+ var editorValue, draft;
+ return regeneratorRuntime.wrap(function _callee2$(_context2) {
+ while (1) {
+ switch (_context2.prev = _context2.next) {
+ case 0:
+ if (!menuName) {
+ _context2.next = 4;
+ break;
+ }
+
+ this.changeMenu(menuName);
+ _context2.next = 6;
+ break;
+
+ case 4:
+ if (!(this._changeContactLock || this.currentContactId == contactId)) {
+ _context2.next = 6;
+ break;
+ }
+
+ return _context2.abrupt("return", false);
+
+ case 6:
+ //保存上个聊天目标的草稿
+ if (this.currentContactId) {
+ editorValue = clearHtmlExcludeImg(this.getEditorValue()).trim();
+
+ if (editorValue) {
+ this.setDraft(this.currentContactId, editorValue);
+ this.setEditorValue();
+ } else {
+ this.clearDraft(this.currentContactId);
+ }
+ }
+
+ this.currentContactId = contactId;
+
+ if (this.currentContactId) {
+ _context2.next = 10;
+ break;
+ }
+
+ return _context2.abrupt("return", false);
+
+ case 10:
+ this.$emit("change-contact", this.currentContact, this);
+
+ if (!isFunction(this.currentContact.renderContainer)) {
+ _context2.next = 13;
+ break;
+ }
+
+ return _context2.abrupt("return");
+
+ case 13:
+ //填充草稿内容
+ draft = this.CacheDraft.get(contactId);
+ if (draft) this.setEditorValue(draft.editorValue);
+
+ if (this.CacheMessageLoaded.has(contactId)) {
+ this.$refs.messages.loaded();
+ } else {
+ this.$refs.messages.resetLoadState();
+ }
+
+ if (!allMessages[contactId]) {
+ this.updateCurrentMessages();
+
+ this._emitPullMessages(function (isEnd) {
+ _this13.messageViewToBottom();
+ });
+ } else {
+ setTimeout(function () {
+ _this13.updateCurrentMessages();
+
+ _this13.messageViewToBottom();
+ }, 0);
+ }
+
+ case 17:
+ case "end":
+ return _context2.stop();
+ }
+ }
+ }, _callee2, this);
+ }));
+
+ function changeContact(_x, _x2) {
+ return _changeContact.apply(this, arguments);
+ }
+
+ return changeContact;
+ }(),
+
+ /**
+ * 删除一条聊天消息
+ * @param messageId 消息 id
+ * @param contactId 联系人 id
+ */
+ removeMessage: function removeMessage(messageId) {
+ var message = this.findMessage(messageId);
+ if (!message) return false;
+ var index = allMessages[message.toContactId].findIndex(function (_ref) {
+ var id = _ref.id;
+ return id == messageId;
+ });
+ allMessages[message.toContactId].splice(index, 1);
+ return true;
+ },
+
+ /**
+ * 修改聊天一条聊天消息
+ * @param {Message} data 根据 data.id 查找聊天消息并覆盖传入的值
+ * @param contactId 联系人 id
+ */
+ updateMessage: function updateMessage(message) {
+ if (!message.id) return false;
+ var historyMessage = this.findMessage(message.id);
+ if (!historyMessage) return false;
+ historyMessage = Object.assign(historyMessage, message, {
+ toContactId: historyMessage.toContactId
+ });
+ return true;
+ },
+
+ /**
+ * 手动更新对话消息
+ * @param {String} messageId 消息ID,如果为空则更新当前聊天窗口的所有消息
+ */
+ forceUpdateMessage: function forceUpdateMessage(messageId) {
+ if (!messageId) {
+ this.$refs.messages.$forceUpdate();
+ } else {
+ var components = this.$refs.messages.$refs.message;
+
+ if (components) {
+ var messageComponent = components.find(function (com) {
+ return com.$attrs.message.id == messageId;
+ });
+ if (messageComponent) messageComponent.$forceUpdate();
+ }
+ }
+ },
+ _customContainerReady: function _customContainerReady(render, cacheDrive, key) {
+ if (isFunction(render) && !cacheDrive.has(key)) {
+ cacheDrive.set(key, render.call(this));
+ }
+ },
+
+ /**
+ * 切换左侧按钮
+ * @param {String} name 按钮 name
+ */
+ changeMenu: function changeMenu(name) {
+ if (this._changeContactLock) return false;
+ this.$emit("change-menu", name);
+ this.activeSidebar = name;
+ },
+
+ /**
+ * 初始化编辑框的 Emoji 表情列表,是 Lemon-editor.initEmoji 的代理方法
+ * @param {Array