diff --git a/.babelrc b/.babelrc deleted file mode 100644 index b96cc0a..0000000 --- a/.babelrc +++ /dev/null @@ -1,11 +0,0 @@ -{ - "presets": [ - "@vue/app", - [ - "@babel/preset-env", - { - "modules": false - } - ] - ] -} diff --git a/.browserslistrc b/.browserslistrc deleted file mode 100644 index 9dee646..0000000 --- a/.browserslistrc +++ /dev/null @@ -1,3 +0,0 @@ -> 1% -last 2 versions -not ie <= 8 diff --git a/.eslintrc.js b/.eslintrc.js deleted file mode 100644 index 3f3df4f..0000000 --- a/.eslintrc.js +++ /dev/null @@ -1,14 +0,0 @@ -module.exports = { - root: true, - env: { - node: true - }, - extends: ["plugin:vue/essential", "@vue/prettier"], - rules: { - "no-console": process.env.NODE_ENV === "production" ? "error" : "off", - "no-debugger": process.env.NODE_ENV === "production" ? "error" : "off" - }, - parserOptions: { - parser: "babel-eslint" - } -}; diff --git a/LICENSE b/LICENSE deleted file mode 100644 index 74b79a6..0000000 --- a/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -MIT License - -Copyright (c) 2019 june - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. diff --git a/dist/demo.html b/dist/demo.html deleted file mode 100644 index 62b34ba..0000000 --- a/dist/demo.html +++ /dev/null @@ -1,10 +0,0 @@ - -
/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.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: [{
- name: "emoji"
- }, {
- name: "uploadFile"
- }, {
- name: "uploadImage"
- }]
- };
- },
- 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) || this.activeSidebar == DEFAULT_MENU_CONTACTS)) {
- _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) {
- this.$emit("change-menu", name);
- this.activeSidebar = name;
- },
-
- /**
- * 初始化编辑框的 Emoji 表情列表,是 Lemon-editor.initEmoji 的代理方法
- * @param {Array