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,
92 lines (91 loc) • 4.34 kB
JavaScript
;
Object.defineProperties(exports, { __esModule: { value: true }, [Symbol.toStringTag]: { value: "Module" } });
const Vue = require("vue");
const SvgIcon = require("../common/base/SvgIcon.vue.js");
const index_vue_vue_type_script_setup_true_lang = ;/* empty css */
const index$1 = ;/* empty css */
require("../../core/hooks/useAudioDeviceState/index.js");
require("../../core/hooks/useVideoDeviceState/index.js");
const index = require("../../locales/index.js");
require("@tencentcloud/tuiroom-engine-js");
;/* empty css */
const MediaDeviceSetting = require("../../core/type/MediaDeviceSetting.js");
const basic = require("../../stores/basic.js");
const pinia = require("pinia");
const CloseIcon = require("../common/icons/CloseIcon.vue.js");
const _hoisted_1 = { class: "setting-container" };
const _hoisted_2 = { class: "setting-header" };
const _hoisted_3 = { class: "setting-title" };
const _hoisted_4 = { class: "setting-body" };
const _hoisted_5 = { class: "setting-tabs" };
const _hoisted_6 = ["onClick"];
const _hoisted_7 = { class: "setting-content" };
const _sfc_main = /* @__PURE__ */ Vue.defineComponent({
__name: "index",
setup(__props) {
const { t } = index.useI18n();
const basicStore = basic.useBasicStore();
const { showSettingDialog, activeSettingTab } = pinia.storeToRefs(basicStore);
const settingTabsTitleList = Vue.computed(() => [
{ label: t("Audio settings"), value: "audio" },
{ label: t("Camera settings"), value: "video" }
]);
function handleUpdateActiveTab(tabTitle) {
basicStore.setActiveSettingTab(tabTitle);
}
function handleCloseSettingDialog() {
basicStore.setShowSettingDialog(false);
}
function handleOverlayClick(event) {
if (event.target !== event.currentTarget) {
return;
}
handleCloseSettingDialog();
}
return (_ctx, _cache) => {
return Vue.unref(showSettingDialog) ? (Vue.openBlock(), Vue.createElementBlock("div", {
key: 0,
class: "overlay-container overlay",
onClick: handleOverlayClick
}, [
Vue.createElementVNode("div", _hoisted_1, [
Vue.createElementVNode("div", _hoisted_2, [
Vue.createElementVNode("span", _hoisted_3, Vue.toDisplayString(Vue.unref(t)("Settings")), 1),
Vue.createVNode(SvgIcon.default, {
class: "close-icon",
icon: CloseIcon.default,
onClick: handleCloseSettingDialog
})
]),
Vue.createElementVNode("div", _hoisted_4, [
Vue.createElementVNode("div", _hoisted_5, [
(Vue.openBlock(true), Vue.createElementBlock(Vue.Fragment, null, Vue.renderList(settingTabsTitleList.value, (item, index2) => {
return Vue.openBlock(), Vue.createElementBlock("div", {
key: index2,
class: Vue.normalizeClass([
"tabs-title",
`${Vue.unref(activeSettingTab) === item.value ? "active" : ""}`
]),
onClick: ($event) => handleUpdateActiveTab(item.value)
}, Vue.toDisplayString(item.label), 11, _hoisted_6);
}), 128))
]),
_cache[0] || (_cache[0] = Vue.createElementVNode("div", { class: "divide-line" }, null, -1)),
Vue.createElementVNode("div", _hoisted_7, [
Vue.unref(activeSettingTab) === "audio" ? (Vue.openBlock(), Vue.createBlock(Vue.unref(index_vue_vue_type_script_setup_true_lang.default), {
key: 0,
"display-mode": Vue.unref(MediaDeviceSetting.MediaSettingDisplayMode).Panel,
class: "setting-tab"
}, null, 8, ["display-mode"])) : Vue.unref(activeSettingTab) === "video" ? (Vue.openBlock(), Vue.createBlock(Vue.unref(index$1.default), {
key: 1,
"display-mode": Vue.unref(MediaDeviceSetting.MediaSettingDisplayMode).Panel,
class: "setting-tab"
}, null, 8, ["display-mode"])) : Vue.createCommentVNode("", true)
])
])
])
])) : Vue.createCommentVNode("", true);
};
}
});
exports.default = _sfc_main;