@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
JavaScript
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
};