UNPKG

@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,

95 lines (94 loc) 4.04 kB
import { defineComponent, inject, ref, withDirectives, createElementBlock, openBlock, createVNode, createBlock, createCommentVNode, unref, withCtx, Fragment } from "vue"; import { IconCameraOn, IconCameraOff } from "@tencentcloud/uikit-base-component-vue3"; import IconButton from "../../../components/common/base/IconButton.vue.mjs"; import VideoSettingTab from "./VideoSettingTab.vue2.mjs"; import { useI18n } from "../../../locales/index.mjs"; import vClickOutside from "../../../directives/vClickOutside.mjs"; import { useVideoDeviceState } from "../../hooks/useVideoDeviceState/index.mjs"; import { MediaDeviceState, MediaSettingDisplayMode } from "../../type/MediaDeviceSetting.mjs"; import { storeToRefs } from "pinia"; import { useRoomStore } from "../../../stores/room.mjs"; import { useBasicStore } from "../../../stores/basic.mjs"; const _hoisted_1 = { class: "video-control-container" }; const _sfc_main = /* @__PURE__ */ defineComponent({ __name: "VideoMediaControl", emits: ["click-icon"], setup(__props, { emit: __emit }) { const videoSettingProps = inject("videoSettingProps"); const emits = __emit; const { cameraState, isCameraTesting, camera } = useVideoDeviceState(); const basicStore = useBasicStore(); const roomStore = useRoomStore(); const { localUser } = storeToRefs(roomStore); const { t } = useI18n(); const showVideoSettingTab = ref(false); async function handleClickIcon() { showVideoSettingTab.value = false; emits("click-icon"); if (!basicStore.roomId) { if (isCameraTesting.value) { await camera.stopCameraDeviceTest(); } else { await camera.startCameraDeviceTest({ view: "video-preview" }); } return; } if (localUser.value.hasVideoStream) { await camera.closeLocalCamera(); } else { await camera.openLocalCamera(); } } function handleMore() { showVideoSettingTab.value = !showVideoSettingTab.value; } function handleHideVideoSettingTab() { if (showVideoSettingTab.value) { showVideoSettingTab.value = false; } } return (_ctx, _cache) => { var _a; return withDirectives((openBlock(), createElementBlock("div", _hoisted_1, [ createVNode(IconButton, { title: unref(t)("Camera"), "has-more": ((_a = unref(videoSettingProps)) == null ? void 0 : _a.displayMode) === unref(MediaSettingDisplayMode).IconWithPanel, disabled: unref(cameraState) === unref(MediaDeviceState).DeviceOffAndDisabled, "is-not-support": unref(cameraState) === unref(MediaDeviceState).NotSupportCapture || unref(cameraState) === unref(MediaDeviceState).NoDeviceDetected, onClickIcon: handleClickIcon, onClickMore: handleMore }, { default: withCtx(() => [ !unref(basicStore).roomId ? (openBlock(), createElementBlock(Fragment, { key: 0 }, [ unref(isCameraTesting) ? (openBlock(), createBlock(unref(IconCameraOn), { key: 0, size: "24" })) : (openBlock(), createBlock(unref(IconCameraOff), { key: 1, size: "24" })) ], 64)) : (openBlock(), createElementBlock(Fragment, { key: 1 }, [ unref(cameraState) === unref(MediaDeviceState).DeviceOn ? (openBlock(), createBlock(unref(IconCameraOn), { key: 0, size: "24" })) : (openBlock(), createBlock(unref(IconCameraOff), { key: 1, size: "24" })) ], 64)) ]), _: 1 }, 8, ["title", "has-more", "disabled", "is-not-support"]), showVideoSettingTab.value ? (openBlock(), createBlock(VideoSettingTab, { key: 0, class: "video-tab" })) : createCommentVNode("", true) ])), [ [unref(vClickOutside), handleHideVideoSettingTab] ]); }; } }); export { _sfc_main as default };