@tencentcloud/roomkit-web-vue3
Version:
<h1 align="center"> TUIRoomKit</h1> Conference (TUIRoomKit) is a product suitable for multi-person audio and video conversation scenarios such as business meetings, webinars, and online education. By integrating this product, you can add room management,
51 lines (50 loc) • 2.22 kB
JavaScript
Object.defineProperties(exports, { __esModule: { value: true }, [Symbol.toStringTag]: { value: "Module" } });
const Vue = require("vue");
require("../../../../services/main.js");
const roomService = require("../../../../services/roomService.js");
require("../../../../locales/index.js");
require("@tencentcloud/tuiroom-engine-js");
require("../../../../utils/environment.js");
require("mitt");
require("../../../../services/manager/roomActionManager.js");
require("@tencentcloud/tui-core");
const dataReportManager = require("../../../../services/manager/dataReportManager.js");
const aiTask = require("../../../../services/function/aiTask.js");
const _hoisted_1 = {
key: 0,
class: "ai-subtitles"
};
const _sfc_main = /* @__PURE__ */ Vue.defineComponent({
__name: "AISubtitles",
setup(__props) {
const subtitleMessages = Vue.ref({});
const subtitleLines = Vue.computed(() => {
const arr = Object.keys(subtitleMessages.value).map((userId) => {
return subtitleMessages.value[userId];
});
return arr.sort((a, b) => a.startMsTs - b.startMsTs);
});
const handleAISubtitles = (data) => {
if (!data) return;
subtitleMessages.value = Object.assign({}, data.subtitleMessages);
};
Vue.onMounted(() => {
roomService.roomService.dataReportManager.reportCount(dataReportManager.MetricsKey.aiTask);
roomService.roomService.aiTask.on(aiTask.AI_TASK.TRANSCRIPTION_TASK, handleAISubtitles);
});
Vue.onUnmounted(() => {
roomService.roomService.aiTask.off(aiTask.AI_TASK.TRANSCRIPTION_TASK, handleAISubtitles);
});
return (_ctx, _cache) => {
return subtitleLines.value.length ? (Vue.openBlock(), Vue.createElementBlock("div", _hoisted_1, [
(Vue.openBlock(true), Vue.createElementBlock(Vue.Fragment, null, Vue.renderList(subtitleLines.value, (line) => {
return Vue.openBlock(), Vue.createElementBlock("div", {
key: line.sender
}, Vue.toDisplayString(`${Vue.unref(roomService.roomService).roomStore.getDisplayName(line.sender)}: ${line == null ? void 0 : line.text}`), 1);
}), 128))
])) : Vue.createCommentVNode("", true);
};
}
});
exports.default = _sfc_main;
;