import { defineComponent, computed, openBlock, createElementBlock, normalizeClass, createVNode, createCommentVNode, createElementVNode, createBlock, unref, toDisplayString } from "vue";
import { useRoomStore } from "../../../../stores/room.mjs";
import Avatar from "../../../common/Avatar.vue.mjs";
import AudioIcon from "../../../common/AudioIcon.vue.mjs";
import SvgIcon from "../../../common/base/SvgIcon.vue.mjs";
import UserIcon from "../../../common/icons/UserIcon.vue.mjs";
import { useI18n } from "../../../../locales/index.mjs";
import { TUIVideoStreamType, TUIRole } from "@tencentcloud/tuiroom-engine-js";
import { isInnerScene } from "../../../../utils/constants.mjs";
import ScreenOpenIcon from "../../../common/icons/ScreenOpenIcon.vue.mjs";
import { isPC, isMobile } from "../../../../utils/environment.mjs";
import { storeToRefs } from "pinia";
import LoadingIcon from "../../../common/icons/LoadingIcon.vue.mjs";
const _hoisted_1 = {
  key: 0,
  class: "loading-region"
};
const _hoisted_2 = {
  key: 1,
  class: "center-user-info-container"
};
const _hoisted_3 = { class: "corner-user-info-container" };
const _hoisted_4 = ["title"];
const _hoisted_5 = { key: 3 };
const _sfc_main = /* @__PURE__ */ defineComponent({
  __name: "index",
  props: {
    streamInfo: {},
    enlargeDomId: {},
    changeLargeStream: { type: Boolean }
  },
  setup(__props) {
    const roomStore = useRoomStore();
    const { t } = useI18n();
    const props = __props;
    const { userVolumeObj } = storeToRefs(roomStore);
    const userInfo = computed(() => roomStore.userInfoObj[props.streamInfo.userId]);
    const displayName = computed(() => {
      if (isInnerScene) {
        return `${roomStore.getDisplayName(props.streamInfo.userId)} | ${props.streamInfo.userId}`;
      }
      return roomStore.getDisplayName(props.streamInfo.userId);
    });
    const showMasterIcon = computed(() => {
      const { userId, streamType } = props.streamInfo;
      return userId === roomStore.masterUserId && streamType === TUIVideoStreamType.kCameraStream;
    });
    const showAdminIcon = computed(() => {
      const { userId, streamType } = props.streamInfo;
      return roomStore.getUserRole(userId) === TUIRole.kAdministrator && streamType === TUIVideoStreamType.kCameraStream;
    });
    const showVoiceBorder = computed(() => {
      if (isPC) {
        return false;
      }
      return props.streamInfo.hasAudioStream && userVolumeObj.value[props.streamInfo.userId] !== 0;
    });
    const showIcon = computed(() => showMasterIcon.value || showAdminIcon.value);
    const isScreenStream = computed(
      () => props.streamInfo.streamType === TUIVideoStreamType.kScreenStream
    );
    return (_ctx, _cache) => {
      var _a;
      return openBlock(), createElementBlock("div", {
        class: normalizeClass(["stream-cover-container", [showVoiceBorder.value ? "border" : ""]])
      }, [
        _ctx.streamInfo.isLoading ? (openBlock(), createElementBlock("div", _hoisted_1, [
          createVNode(SvgIcon, {
            icon: LoadingIcon,
            class: "loading"
          })
        ])) : createCommentVNode("", true),
        !_ctx.streamInfo.hasVideoStream ? (openBlock(), createElementBlock("div", _hoisted_2, [
          createVNode(Avatar, {
            class: "avatar-region",
            "img-src": (_a = userInfo.value) == null ? void 0 : _a.avatarUrl
          }, null, 8, ["img-src"])
        ])) : createCommentVNode("", true),
        createElementVNode("div", _hoisted_3, [
          showIcon.value ? (openBlock(), createElementBlock("div", {
            key: 0,
            class: normalizeClass(showMasterIcon.value ? "master-icon" : "admin-icon")
          }, [
            createVNode(UserIcon)
          ], 2)) : createCommentVNode("", true),
          !isScreenStream.value ? (openBlock(), createBlock(AudioIcon, {
            key: 1,
            class: normalizeClass(["audio-icon", { "is-mobile": unref(isMobile) }]),
            "user-id": _ctx.streamInfo.userId,
            "is-muted": !_ctx.streamInfo.hasAudioStream,
            size: "small"
          }, null, 8, ["class", "user-id", "is-muted"])) : createCommentVNode("", true),
          isScreenStream.value ? (openBlock(), createBlock(SvgIcon, {
            key: 2,
            icon: ScreenOpenIcon,
            class: "screen-icon"
          })) : createCommentVNode("", true),
          createElementVNode("span", {
            class: normalizeClass(["user-name", unref(isPC) ? "is-pc" : "is-mobile"]),
            title: displayName.value
          }, toDisplayString(displayName.value), 11, _hoisted_4),
          isScreenStream.value ? (openBlock(), createElementBlock("span", _hoisted_5, toDisplayString(unref(t)("is sharing their screen")), 1)) : createCommentVNode("", true)
        ])
      ], 2);
    };
  }
});
export {
  _sfc_main as default
};
