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,

111 lines (110 loc) 4.74 kB
import { defineComponent, ref, computed, withDirectives, createElementBlock, openBlock, createVNode, createBlock, createCommentVNode, unref, vShow } from "vue"; import UserInfoComp from "./UserInfo/index.vue2.mjs"; import UserInvite from "./UserInvite/index.vue2.mjs"; import UserAction from "./UserAction/index.mjs"; import "../../../components/common/base/IconButton.vue2.mjs"; /* empty css */ import "@tencentcloud/uikit-base-component-vue3"; import "../../../stores/room.mjs"; import "pinia"; import "../../../utils/environment.mjs"; /* empty css */ import "../../../hooks/useZIndex.mjs"; import vClickOutside from "../../../directives/vClickOutside.mjs"; import "../../../services/main.mjs"; import "../../../services/roomService.mjs"; import "../../../locales/index.mjs"; import "@tencentcloud/tuiroom-engine-js"; import "mitt"; import "../../../services/manager/roomActionManager.mjs"; import "@tencentcloud/tui-core"; /* empty css */ import vTap from "../../../directives/vTap.mjs"; /* empty css */ /* empty css */ /* empty css */ /* empty css */ import "../../hooks/useAudioDeviceState/index.mjs"; /* empty css */ /* empty css */ /* empty css */ import "../../../stores/basic.mjs"; /* empty css */ /* empty css */ /* empty css */ import "../../../hooks/useRoomEngine.mjs"; import "../../hooks/useVideoDeviceState/index.mjs"; /* empty css */ /* empty css */ import useUserState from "../../hooks/useUserState/index.mjs"; /* empty css */ import "../../hooks/useFreeBeautyState/index.mjs"; /* empty css */ /* empty css */ /* empty css */ /* empty css */ /* empty css */ /* empty css */ /* empty css */ /* empty css */ /* empty css */ /* empty css */ /* empty css */ /* empty css */ /* empty css */ /* empty css */ /* empty css */ /* empty css */ const _sfc_main = /* @__PURE__ */ defineComponent({ __name: "indexH5", props: { userInfo: {} }, setup(__props) { const props = __props; const isMouseHover = ref(false); const memberItemContainerRef = ref(); const handleOpenMemberControl = () => { isMouseHover.value = true; }; const handleDocumentTouchend = (event) => { var _a; if ((_a = memberItemContainerRef.value) == null ? void 0 : _a.contains(event == null ? void 0 : event.target)) { return; } isMouseHover.value = false; }; const { useUserActions } = useUserState(); const userActions = useUserActions({ userInfo: props.userInfo }); const showUserAction = computed( () => isMouseHover.value && props.userInfo.isInRoom && (userActions == null ? void 0 : userActions.length) > 0 ); return (_ctx, _cache) => { return withDirectives((openBlock(), createElementBlock("div", { class: "member-item-container", ref_key: "memberItemContainerRef", ref: memberItemContainerRef }, [ createVNode(UserInfoComp, { "user-info": props.userInfo, "show-state-icon": props.userInfo.isInRoom && !showUserAction.value }, null, 8, ["user-info", "show-state-icon"]), !_ctx.userInfo.isInRoom ? (openBlock(), createBlock(UserInvite, { key: 0, "user-info": props.userInfo }, null, 8, ["user-info"])) : createCommentVNode("", true), withDirectives(createVNode(unref(UserAction), { "user-info": props.userInfo }, null, 8, ["user-info"]), [ [vShow, showUserAction.value] ]) ])), [ [unref(vTap), handleOpenMemberControl], [unref(vClickOutside), handleDocumentTouchend] ]); }; } }); export { _sfc_main as default };