UNPKG

@tencentcloud/ai-desk-customer-wechat

Version:

AI Desk customer UIKit for wechat mini program

186 lines (185 loc) 6.23 kB
"use strict"; const common_vendor = require("../../../../common/vendor.js"); const aiDeskCustomerUniapp_adapterVue = require("../../../adapter-vue.js"); const aiDeskCustomerUniapp_components_CustomerServiceChat_utils_conversationDraft = require("../utils/conversationDraft.js"); const aiDeskCustomerUniapp_components_CustomerServiceChat_emojiConfig_index = require("../emoji-config/index.js"); const aiDeskCustomerUniapp_components_CustomerServiceChat_utils_sendMessage = require("../utils/sendMessage.js"); const _sfc_main = /* @__PURE__ */ common_vendor.defineComponent({ __name: "message-input-editor-uniapp", props: { placeholder: { type: String, default: "" }, replayOrReferenceMessage: { type: Object, default: () => ({}), required: false }, isMuted: { type: Boolean, default: true }, muteText: { type: String, default: "" }, enableInput: { type: Boolean, default: true }, enableTyping: { type: Boolean, default: true } }, emits: ["onTyping", "onFocus"], setup(__props, { expose: __expose, emit: __emit }) { const { ref, watch, onMounted, onUnmounted } = aiDeskCustomerUniapp_adapterVue.vue; const props = __props; const emits = __emit; const inputText = ref(""); ref(); const inputBlur = ref(true); const inputContentEmpty = ref(true); const currentConversation = ref(); const currentConversationID = ref(""); const currentQuoteMessage = ref(); onMounted(() => { common_vendor.Jt.watch(common_vendor.o$1.CONV, { currentConversation: onCurrentConversationUpdated }); common_vendor.Jt.watch(common_vendor.o$1.CHAT, { quoteMessage: onQuoteMessageUpdated }); common_vendor.index.$on("insert-emoji", (data) => { var _a; inputText.value += (_a = data == null ? void 0 : data.emoji) == null ? void 0 : _a.name; }); common_vendor.index.$on("send-message-in-emoji-picker", () => { handleSendMessage(); }); }); onUnmounted(() => { if (currentConversationID.value) { aiDeskCustomerUniapp_components_CustomerServiceChat_utils_conversationDraft.DraftManager.setStore( currentConversationID.value, inputText.value, inputText.value, currentQuoteMessage.value ); } common_vendor.index.$off("insertEmoji"); common_vendor.index.$off("send-message-in-emoji-picker"); common_vendor.Jt.unwatch(common_vendor.o$1.CONV, { currentConversation: onCurrentConversationUpdated }); common_vendor.Jt.unwatch(common_vendor.o$1.CHAT, { quoteMessage: onQuoteMessageUpdated }); reset(); }); const handleSendMessage = () => { const messageList = getEditorContent(); resetEditor(); aiDeskCustomerUniapp_components_CustomerServiceChat_utils_sendMessage.sendMessages(messageList, currentConversation.value); }; const getEditorContent = () => { let text = inputText.value; text = aiDeskCustomerUniapp_components_CustomerServiceChat_emojiConfig_index.transformTextWithEmojiNamesToKeys(text); const payload = { text }; return [ { type: "text", payload } ]; }; const resetEditor = () => { inputText.value = ""; inputContentEmpty.value = true; }; const setEditorContent = (content) => { inputText.value = content; }; const onBlur = () => { inputBlur.value = true; }; const onFocus = (e) => { var _a; inputBlur.value = false; emits("onFocus", (_a = e == null ? void 0 : e.detail) == null ? void 0 : _a.height); }; const isEditorContentEmpty = () => { var _a; inputContentEmpty.value = ((_a = inputText == null ? void 0 : inputText.value) == null ? void 0 : _a.length) ? false : true; }; const onInput = () => { isEditorContentEmpty(); }; watch( () => [inputContentEmpty.value, inputBlur.value], (newVal, oldVal) => { if (newVal !== oldVal) { emits("onTyping", inputContentEmpty.value, inputBlur.value); } }, { immediate: true, deep: true } ); function onCurrentConversationUpdated(conversation) { const prevConversationID = currentConversationID.value; currentConversation.value = conversation; currentConversationID.value = conversation == null ? void 0 : conversation.conversationID; if (prevConversationID !== currentConversationID.value) { if (prevConversationID) { aiDeskCustomerUniapp_components_CustomerServiceChat_utils_conversationDraft.DraftManager.setStore( prevConversationID, inputText.value, inputText.value, currentQuoteMessage.value ); } resetEditor(); if (currentConversationID.value) { aiDeskCustomerUniapp_components_CustomerServiceChat_utils_conversationDraft.DraftManager.getStore(currentConversationID.value, setEditorContent); } } } function onQuoteMessageUpdated(options) { currentQuoteMessage.value = options; } function reset() { inputBlur.value = true; currentConversation.value = null; currentConversationID.value = ""; currentQuoteMessage.value = null; resetEditor(); } __expose({ resetEditor, setEditorContent, getEditorContent }); return (_ctx, _cache) => { return common_vendor.e({ a: props.isMuted }, props.isMuted ? { b: common_vendor.t(props.muteText) } : {}, { c: props.placeholder, d: common_vendor.o(handleSendMessage), e: common_vendor.o([($event) => common_vendor.isRef(inputText) ? inputText.value = $event.detail.value : null, onInput]), f: common_vendor.o(onBlur), g: common_vendor.o(onFocus), h: common_vendor.unref(inputText) }); }; } }); const Component = /* @__PURE__ */ common_vendor._export_sfc(_sfc_main, [["__scopeId", "data-v-c560662d"]]); wx.createComponent(Component);