<template>
  <div id="PageRtcLive">
    <div class="member_number">
      <div class="members"></div>
      <span>{{ user_list.length }}观看</span>
    </div>
    <chat v-show="chatShow" :chatList="chatList" :user_info="user_info"></chat>

    <Trtccom
      :audioMuted="audioMuted"
      :videoMuted="videoMuted"
      v-if="isRunRTC"
    />

    <div class="contorlBar" v-if="!showInput">
      <div
        v-if="connectStatus == 1"
        :class="{ disabled: !user_info.IsWords }"
        class="saySomething"
        @click="onFocus"
      >
        <!-- <i class="speakIcon"
           :class="{'dis':!user_info.IsWords}"></i> -->
        <span v-if="user_info.IsWords">说点什么</span>
        <span v-if="!user_info.IsWords">已被禁言</span>

        <div
          class="disSpeakBtn"
          @click.stop="chatShow = !chatShow"
          :class="{ dis: !chatShow }"
        ></div>
      </div>
      <div style="text-align: right; width: 100%" v-if="connectStatus == 0">
        连接中...
      </div>
      <div v-if="connectStatus == 1" class="contorl_btn">
        <div
          v-if="isBrushes && user_info.Role == 'leader'"
          @click="onDrawUndo"
          class="brushesBack"
          :class="{ disabled: !canUndo }"
        ></div>
        <div
          v-if="user_info.Role == 'leader'"
          @click="onDraw(!isBrushes)"
          :class="{ brushesed: isBrushes }"
          class="brushes"
        ></div>

        <div
          v-if="user_list.length < 50"
          class="invitation"
          @click="onClickShare"
        ></div>
        <div v-if="role == 'leader'" class="members" @click="openMember"></div>
        <template v-if="role == 'leader'">
        <div
          v-if="!disableMic"
          @click="handleMuteAduio"
          :class="{ mic_off: audioMuted, disabled: !audioDeviceId }"
          class="mic_on"
        ></div>
        <div
          v-if="disableMic"
          class="mic_no"
          :class="{ disabled: !audioDeviceId }"
        ></div>
        </template>
        <!-- <div
          v-if="role == 'leader'"
          @click="handleMuteVideo"
          :class="[
            videoMuted ? 'video_no' : 'video_on',
            videoDeviceId ? '' : 'disabled',
          ]"
        ></div> -->
        <div class="exit" @click="openDialog('dialogIndex')"></div>
      </div>
    </div>
    <div class="layer" v-if="showInput" @click="closeInput">
      <div class="inputBox" @click.stop>
        <div class="msgBox">
          <input
            id="input_msg"
            type="text"
            maxlength="200"
            v-model.trim="text"
            :placeholder="`说点什么~`"
          />
          <span
            class="iconsend_icon"
            :class="{ disable: text == '' }"
            @click.stop="sendText"
            >发送</span
          >
        </div>
      </div>
    </div>

    <!-- 成員 -->
    <div class="layer" v-if="showMember" @click.self="closeMember">
      <div
        class="memberContent animated"
        :class="animateActive ? 'fadeInUpBig' : 'fadeOutDownBig'"
      >
        <div class="blurBox"></div>
        <div class="content">
          <div class="memberHeader">
            <span> 成员管理（{{ user_list.length }}）</span>
            <i class="iconfont"></i>
          </div>
          <div class="memberList">
            <div class="memberItem">
              <div class="userMsg">
                <div class="avatar">
                  <img
                    :src="
                      require('@/assets/images/rtcLive/avatar_small@2x.png')
                    "
                    alt=""
                  />
                </div>
                <div class="name" v-if="user_info.Role == 'leader'">
                  {{ user_info.Nickname }} (主持人,我)
                </div>
                <div class="name" v-else>{{ user_info.Nickname }} (我)</div>
              </div>

              <!-- <div class="button" v-if="user_info.Role == 'leader'">
                <div
                  @click="setAllMuted(!all_mute_mic)"
                  class="micBtn mute_all_mic"
                  :class="{ open_all_mic: all_mute_mic }"
                ></div>
              </div> -->
            </div>

            <div
              v-show="user_info.UserId != i.UserId && i.Role != 'leader'"
              class="memberItem"
              v-for="(i, idx) in user_list"
              :key="idx"
            >
              <div class="userMsg">
                <div class="avatar">
                  <img
                    :src="
                      require('@/assets/images/rtcLive/avatar_small@2x.png')
                    "
                    alt=""
                  />
                </div>
                <div class="name">{{ i.Nickname }}</div>
              </div>
              <!-- <div class="button" v-if="user_info.Role == 'leader'">
                <div
                  class="micBtn"
                  :class="i.IsWords ? 'ban_speak_on' : 'ban_speak_off'"
                  @click="userCanSpeak(i)"
                ></div>
                <div
                  class="micBtn"
                  :class="i.IsMuted ? 'mute_one_mic_off' : 'mute_one_mic_on'"
                  @click="onMemberMuted(i)"
                ></div>
              </div> -->
            </div>
          </div>
        </div>
      </div>
    </div>
  </div>

  <teleport :to="`#app`">
    <div v-if="showShare" @click="showShare = false" class="sharetip">
      <img
        @click.stop
        :style="`right:${isMP ? '16%' : '6%'}`"
        :src="require('@/assets/images/icon/img_scene_share.png')"
        alt=""
      />
    </div>
  </teleport>
</template>

<script setup>
import {
  onMounted,
  onUnmounted,
  watch,
  defineEmits,
  ref,
  reactive,
  computed,
  nextTick,
} from "vue";
import { useApp, getApp } from "@/app";
import { useStore } from "vuex";
import { Dialog } from "@/global_components/";
import common from "@/utils/common";

import { mapGetters } from "vuex";
import chat from "./chat/chat.vue";
import Trtccom from "./Trtccom.vue";
import browser from "@/utils/browser";
import wxShare from "@/utils/wxshare";

const emit = defineEmits(["openDialog", "closeSocket"]);

const store = useStore();

let jumpNewScene = (sceneFirstView) => {
  let url = window.location.href;

  if (!browser.hasURLParam("pose")) {
    url += `&${sceneFirstView.sceneview}`;
  } else {
    url = browser.replaceQueryString(
      url,
      "pose",
      sceneFirstView.sceneview.replace("pose=", "")
    );
  }

  url = browser.replaceQueryString(url, "m", sceneFirstView.num);
  return url;
};

let chatAutoScroll = () => {
  let el = document.getElementById("chat");
  let client_h = document.getElementById("chat").clientHeight;
  let all = document.getElementById("contents").clientHeight;
  el.scrollTo(0, client_h + all);
};

let createSocket = (config) => {
  var socket = io(process.env.VUE_APP_SOCKET_URL, {
    path: "/ws-sync",
    transports: ["websocket"],
  });
  return socket;
};

store.commit("rtc/setSocket", createSocket());

let getUrl = (href, queryArr) => {
  queryArr.forEach((item) => {
    if (!browser.hasURLParam(item.key)) {
      let ttt = href.split("index.html?");
      href = `${ttt[0]}index.html?${item.key}=${item.val}&${ttt[1]}`;
      console.log(
        href,
        "------index.htmlindex.htmlindex.htmlindex.htmlindex.htmlindex.htmlindex.html----------"
      );
    } else {
      href = browser.replaceQueryString(href, item.key, item.val);
    }
  });

  return href;
};
const videoDeviceId = computed(() => store.getters["rtc/videoDeviceId"]);
const audioDeviceId = computed(() => store.getters["rtc/audioDeviceId"]);

const connectStatus = ref(0);
const isBrushes = ref(false);
const showInput = ref(false);
const showMember = ref(false);
const animateActive = ref(false);
const showShare = ref(false);
const isMP = ref(false);

const audioMuted = ref(false);
const videoMuted = ref(false);

const socket = computed(() => store.getters["rtc/socket"]);

const myVideoShow = ref(false);
const userVideoShow = ref(false);
const user_info = ref({});
const user_list = ref([]);
const mode = ref(browser.getURLParam("mode"));
const role = ref(browser.getURLParam("role"));

const userId = computed(() => store.getters["rtc/userId"]);
const roomId = computed(() => store.getters["rtc/roomId"]);

const isJoined = ref(false);

const isRunRTC = ref(false);

const paint = reactive({});

const chatList = ref([]);
const text = ref("");

const shareLink = ref("");
const canUndo = ref(false);
const audioDevices = ref([1]);
const videoDevices = ref([1]);
const disableMic = ref(false);
const chatShow = ref(true);
const all_mute_mic = ref(false);

const tags = computed(() => {
  return store.getters["tag/tags"] || [];
});

const onClickShare = () => {
  openDialog("dialogShare", shareLink.value);
};

const userGetOut = (item, i) => {
  socket.value &&
    socket.value.emit("action", {
      type: "getout",
      data: {
        id: item.UserId,
      },
    });

  user_list.value = user_list.value.splice(i, 1);
};

const setUserWords = (res) => {
  if (res.userId == user_info.value.UserId) {
    user_info.value.IsWords = res.words;
    Dialog.toast({
      content: !user_info.value.IsWords
        ? `主持人设置了禁言`
        : `主持人已解除禁言`,
    });
  }
};

const handleMuteVideo = () => {
  videoMuted.value = !videoMuted.value;
};

const handleMuteAduio = () => {
  audioMuted.value = !audioMuted.value;
  if (role.value == "leader") {
    socket.value.emit("action", {
      type: "users-muted",
      muted: audioMuted.value,
      userId: user_info.value.UserId,
    });
  }
};

const setUserMuted = (res) => {
  if (res.userId) {
    if (res.userId == user_info.value.UserId && role.value == "customer") {
      user_info.value.IsMuted = res.muted;
      Dialog.toast({
        content: !user_info.value.IsMuted
          ? `主持人设置了开麦`
          : `主持人设置了静音`,
      });
      disableMic.value = res.muted;
      audioMuted.value = res.muted;
    }
  } else {
    onAllMuted(res);
  }
};

const setAllMuted = (data) => {
  console.log(data, "IsMuted");
  socket.value.emit("action", { type: "users-muted", muted: data });
};

const onAllMuted = (res) => {
  user_list.value = res.members.reduce(function (tempArr, item) {
    if (tempArr.findIndex((ele) => ele.UserId === item.UserId) === -1) {
      tempArr.push(item);
    }
    return tempArr;
  }, []);

  if (role.value == "leader") {
    all_mute_mic.value = res.muted;
  }

  user_list.value.forEach((item) => {
    user_info.value.IsMuted = res.muted;
    item.IsMuted = res.muted;
    if (role.value == "customer") {
      Dialog.toast({
        content: !user_info.value.IsMuted
          ? `主持人设置了开麦`
          : `主持人设置了静音`,
      });
      disableMic.value = res.muted;
      audioMuted.value = res.muted;
    }
  });
};

//用戶加入
const setUserJoin = async (res) => {
  console.log("有人进来了", res);
  // self.user_info = res.user;
  user_list.value = res.members.reduce(function (tempArr, item) {
    if (tempArr.findIndex((ele) => ele.UserId === item.UserId) === -1) {
      tempArr.push(item);
    }
    return tempArr;
  }, []);
  // self.chekcLeaderInfo();
  let name = res.user.Nickname;
  if (res.user.Role == "leader") {
    name = "主持人";
    Dialog.toast({ content: `主持人进入房间` });
    socket.value.emit("action", { type: "user-init" });
  }
  let data = {
    role: res.user.Role,
    mode: mode.value,
    Nickname: name,
    UserId: res.user.UserId,
    text: "进入房间",
  };
  chatList.value.push(data);
  await nextTick();
  try {
    chatAutoScroll();
  } catch (error) {}
};

const onDrawUndo = async () => {
  let app = await getApp();
  app.Connect.paint.undo();
  canUndo.value = app.Connect.paint.records.length > 0;

  console.log(app.Connect.paint.records, "app.Connect.paint.records");
};

// 畫筆開啟
const onDraw = async (status) => {
  isBrushes.value = status;
  if (isBrushes.value) {
    await getApp().Connect.paint.show({
      role: role.value,
      paint: role.value == "leader" ? true : false,
    });
    if (role.value == "leader") {
      socket.value.emit("action", { type: "user-paint", open: true });
    }
  } else {
    await getApp().Connect.paint.hide();
    if (role.value == "leader") {
      socket.value.emit("action", { type: "user-paint", open: false });
    }
  }
};

//打開輸入框
const onFocus = () => {
  showInput.value = true;
  nextTick(() => {
    let input_msg = document.getElementById("input_msg");
    input_msg.focus();
  });
};

//發彈幕
const sendText = async () => {
  if (text.value == "") {
    return;
  }
  let data = {
    role: role.value,
    mode: mode.value,
    Nickname: user_info.value.Nickname,
    UserId: user_info.value.UserId,
    text: text.value,
  };
  socket.value &&
    socket.value.emit("action", {
      type: "danmumsg",
      data,
    });

  chatList.value.push(data);
  await nextTick();
  try {
    chatAutoScroll();
    let input_msg = document.getElementById("input_msg");
    input_msg.blur();
  } catch (error) {}
  closeInput();
};

//接收消息
const setReceiveMsg = async (res) => {
  console.log(res);
  if (res.role == "leader") {
    res.Nickname = "主持人";
  }
  chatList.value.push(res);
  await nextTick();
  try {
    chatAutoScroll();
  } catch (error) {}
};

// 關閉輸入框
const closeInput = () => {
  showInput.value = false;
  text.value = "";
};

// 開啟成員
const openMember = () => {
  showMember.value = true;
  animateActive.value = true;
};
// 關閉成員
const closeMember = () => {
  animateActive.value = false;
  let t = setTimeout(() => {
    clearTimeout(t);
    showMember.value = false;
  }, 200);
};

const openDialog = (str, link) => {
  emit("openDialog", str, link);
};

const onMemberMuted = (item) => {
  item.IsMuted = !item.IsMuted;
  socket.value.emit("action", {
    type: "users-muted",
    muted: item.IsMuted,
    userId: item.UserId,
  });
};

const onMemberLeave = async (res) => {
  console.log("有人离开了", res);
  user_list.value = res.members.reduce(function (tempArr, item) {
    if (tempArr.findIndex((ele) => ele.UserId === item.UserId) === -1) {
      tempArr.push(item);
    }
    return tempArr;
  }, []);
  let name = res.user.Nickname;
  if (res.user.Role == "leader") {
    name = "主持人";
    Dialog.toast({ content: `主持人离开了房间` });
  }
  let data = {
    role: res.user.Role,
    mode: mode.value,
    Nickname: name,
    UserId: res.user.UserId,
    text: "离开房间",
  };
  chatList.value.push(data);
  await nextTick();
  try {
    chatAutoScroll();
  } catch (error) {}
};

const userCanSpeak = (item) => {
  item.IsWords = !item.IsWords;
  socket.value.emit("action", {
    type: "users-words",
    words: item.IsWords,
    userId: item.UserId,
  });
};

const onGetOuT = (data) => {
  if (data.id == user_info.value.UserId) {
    emit("closeSocket");
    Dialog.toast({ content: `您已被移除` });
  }
};

watch(
  user_list,
  () => {
    if (role.value == "leader") {
      all_mute_mic.value = !user_list.value.some(
        (item) => !item.IsMuted && item.Role == "customer"
      );
    }
  },
  {
    deep: true,
  }
);

const startFollow = (app) => {
  app.Connect.follow.start({ follow: role.value == "customer" });

  store.commit(
    "rtc/setUserId",
    browser.getURLParam("vruserId") ||
      `user_${role.value}${Math.floor(Math.random() * 100000000)}`
  );
  store.commit(
    "rtc/setRoomId",
    browser.getURLParam("roomId") ||
      `room_${Math.floor(Math.random() * 100000000)}`
  );

  socket.value.on("connect", (e) => {
    socket.value.emit("join", {
      userId: userId.value,
      roomId: roomId.value,
      role: role.value || "leader",
      nickname: browser.getURLParam("name"),
    });
  });

  // 加入房間成功
  socket.value.on("join", (data) => {
    let meblist = data.members.reduce(function (tempArr, item) {
      if (tempArr.findIndex((ele) => ele.UserId === item.UserId) === -1) {
        tempArr.push(item);
      }
      return tempArr;
    }, []);

    if (meblist.length > 50 && role.value == "customer") {
      Dialog.toast({ content: `房间已满员` });
      emit("closeSocket");
      return;
    }

    connectStatus.value = 1;
    if (role.value == "customer") {
      socket.value.emit("action", { type: "ask-currentscene" });
      setTimeout(() => {
        socket.value.emit("action", { type: "user-init" });
      }, 1500);

      if (data.user.IsMuted) {
        disableMic.value = true;
        audioMuted.value = true;
      }
    } else {
      if (data.user.IsMuted) {
        audioMuted.value = true;
      }
    }

    isJoined.value = true;

    setTimeout(() => {
      isRunRTC.value = true;
    }, 3000);

    user_info.value = data.user;
    user_list.value = meblist;

    //更新分享鏈接
    shareLink.value = getUrl(window.location.href, [
      {
        key: "mode",
        val: mode.value,
      },
      {
        key: "name",
        val: "",
      },
      {
        key: "vruserId",
        val: "",
      },
      {
        key: "role",
        val: "customer",
      },
      {
        key: "roomId",
        val: user_info.value.RoomId,
      },
    ]);

    let tmp = "";

    if (user_info.value.Role == "leader") {
      tmp = getUrl(window.location.href, [
        {
          key: "roomId",
          val: user_info.value.RoomId,
        },
        {
          key: "vruserId",
          val: user_info.value.UserId,
        },
      ]);
    } else {
      tmp = getUrl(window.location.href, [
        {
          key: "vruserId",
          val: user_info.value.UserId,
        },
      ]);
    }

    store.commit("rtc/setRole", user_info.value.Role);
    history.replaceState(null, null, tmp);
  });

  socket.value.on("action", (data) => {
    console.log(data, "=============");
    if (data.type == "error") {
      Dialog.toast({ content: `房间未找到`, type: "error" });
      emit("closeSocket");
    } else if (data.type == "danmumsg") {
      setReceiveMsg(data.data);
    } else if (data.type == "getout") {
      onGetOuT(data.data);
    } else if (data.type == "user-init") {
      app.Connect.follow.sync();
    } else if (data.type == "user-paint") {
      onDraw(data.open);
      if (role.value == "customer") {
        if (data.open) {
          Dialog.toast({ content: `主持人开启画笔` });
        } else {
          Dialog.toast({ content: `主持人关闭画笔` });
        }
      }
    } else if (data.type == "user-join") {
      setUserJoin(data);
    } else if (data.type == "users-muted") {
      setUserMuted(data);
      //閉麥
    } else if (data.type == "users-words") {
      setUserWords(data);
      //禁言
    } else if (data.type == "user-leave") {
      // 房間解散
      onMemberLeave(data);
    } else if (data.type == "leader-dismiss") {
      emit("closeSocket");
      Dialog.toast({ content: `主持人已解散房间` });
    } else if (data.type == "tagclick") {
      if (role.value == "customer") {
        let item = tags.value.find((item) => item.sid == data.data.sid);
        if (item.type == "commodity") {
          store.commit("tag/setTagClickType", {
            type: "goodlist",
            data: item,
          });
        } else if (item.type == "waterfall") {
          store.commit("tag/setTagClickType", {
            type: "waterfall",
            data: item,
          });
        } else if (item.type == "link_scene") {
          let sceneFirstView = item.hotContent.sceneFirstView;
          window.location.href = jumpNewScene(sceneFirstView);
        }
        // document.querySelector(`[data-tag-id="${data.data.sid}"]`).click();
        // console.log(data.data.sid);
      }
    } else if (data.type == "tagclose") {
      if (role.value == "customer") {
        store.commit("tag/setTagClickType", {
          type: "",
          data: {},
        });
      }
    } else if (data.type == "ask-currentscene") {
      if (role.value == "leader") {
        socket.value.emit("action", {
          type: "answer-currentscene",
          data: {
            scene: browser.getURLParam("m"),
            pose: browser.getURLParam("pose"),
          },
        });
      }
    } else if (data.type == "answer-currentscene") {
      if (role.value == "customer") {
        if (data.data.scene != browser.getURLParam("m")) {
          let url1 = browser.replaceQueryString(
            window.location.href,
            "m",
            data.data.scene
          );
          let url = browser.replaceQueryString(url1, "pose", data.data.pose);
          location.replace(url);
        }
      }
    }
  });

  // 同屏帶看
  socket.value.on("sync", (data) => {
    if (role.value == "customer") {
      app.Connect.follow.receive(data);
    }
  });

  // 畫筆
  socket.value.on("paint", (data) => {
    if (role.value == "customer") {
      app.Connect.paint.receive(data);
    }
  });
};
let onfollowData = (data) => {
  if (isJoined.value) {
   socket.value.emit("sync", data);
  }
};

let onfollowPaint = async (data) => {
  canUndo.value = (await getApp().Connect.paint.records.length) > 0;
  socket.value.emit("paint", data);
};

onMounted(async () => {
  let app = await getApp();
  startFollow(app);
  app.Connect.follow.on("data", onfollowData);
  app.Connect.paint.on("data", onfollowPaint);
});

onUnmounted(async () => {
  let app = await getApp();
  app.Connect.follow.off("data", onfollowData);
  app.Connect.follow.off("data", onfollowData);
});
</script>

<style scoped lang="scss">
#PageRtcLive {
  position: absolute;
  left: 0;
  bottom: 0;
  // height: 7.31rem;
  width: 100%;
  z-index: 999;
  //   background: rgba(0, 0, 0, 0.1);
  padding: 0 0.44rem;
  box-sizing: border-box;
  // pointer-events: none;
  .member_number {
    // width: 1.67rem;
    height: 0.5rem;
    background: rgba(0, 0, 0, 0.3);
    border-radius: 0.25rem;
    position: fixed;
    top: 0.56rem;
    right: 0.44rem;
    padding: 0.07rem 0.17rem;
    display: flex;
    align-items: center;
    justify-content: center;
    .members {
      width: 0.42rem;
      height: 0.42rem;
      background: url(~@/assets/images/rtcLive/members@2x.png);
      background-size: 100% 100%;
      margin-right: 0.07rem;
    }
    span {
      font-size: 0.24rem;
      color: #fff;
    }
  }
  .contorlBar {
    width: 9.51rem;
    height: 1.173333rem;
    background: rgba(0, 0, 0, 0.5);
    border-radius: 0.67rem;
    border: 0.03rem solid rgba(255, 255, 255, 0.1);
    margin: 0.67rem auto 0;
    // position: absolute;
    position: fixed;
    z-index: 9999;
    left: 50%;
    transform: translateX(-50%);
    padding: 0 0.266667rem;
    box-sizing: border-box;
    bottom: 0.94rem;
    display: flex;
    align-items: center;
    justify-content: space-between;
    .saySomething {
      color: #fff;
      // font-size: 0.42rem;
      height: 0.8rem;
      position: relative;
      display: flex;
      align-items: center;
      justify-content: center;
      background: rgba(0, 0, 0, 0.5);
      padding: 0 0.2rem 0 0.2rem;
      border-radius: 0.64rem;
      width: 100%;
      display: flex;
      align-items: center;
      justify-content: space-between;
      .disSpeakBtn {
        width: 0.533333rem;
        height: 0.533333rem;
        background: url(~@/assets/images/rtcLive/pop-up_screen_on@2x.png)
          no-repeat;
        background-size: 100% 100%;
        cursor: pointer;
        &.dis {
          background: url(~@/assets/images/rtcLive/pop-up_screen_off@2x.png)
            no-repeat;
          background-size: 100% 100%;
        }
      }
      .speakIcon {
        width: 0.32rem;
        height: 0.32rem;
        background: url(~@/assets/images/rtcLive/Input_norma@2x.png);
        background-size: 100% 100%;
        display: block;
        margin-right: 0.1rem;
        &.dis {
          background: url(~@/assets/images/rtcLive/Input_disabled@2x.png);
          background-size: 100% 100%;
        }
      }
      span {
        font-size: 0.266667rem;
      }
      // &::after {
      //   content: "";
      //   position: absolute;
      //   width: 0.04rem;
      //   height: 0.44rem;
      //   background: #ffffff;
      //   border-radius: 0.03rem;
      //   top: 50%;
      //   transform: translateY(-50%);
      //   right: -0.28rem;
      // }
    }
    .contorl_btn {
      display: flex;
      align-items: center;
      justify-content: space-between;
      margin-left: 0.2rem;
      > div {
        // width: 0.56rem;
        // height: 0.56rem;
        width: 0.65rem;
        height: 0.65rem;
        // font-size: 0.56rem;
        // background: #FD5151;
        margin-right: 0.33rem;
        // &.iconexit {
        //   //   width: 0.56rem;
        //   //   height: 0.56rem;
        //   color: #fd5151;
        //   //   background: #fff;
        //   //   border-radius: 50%;
        //   //   overflow: hidden;
        // }
        &.brushesBack {
          background: url(~@/assets/images/rtcLive/revocation@2x.png);
          background-size: 100% 100%;
        }
        &.brushes {
          // background: url(~@/assets/images/rtcLive/brushes@2x.png);
          background: url(~@/assets/images/rtcLive/brushes@2x.png);
          background-size: 100% 100%;
        }
        &.brushesed {
          background: url(~@/assets/images/rtcLive/brushes_selected@2_1.png);
          background-size: 100% 100%;
        }
        &.invitation {
          background: url(~@/assets/images/rtcLive/invitation@2x.png);
          background-size: 100% 100%;
        }
        &.members {
          background: url(~@/assets/images/rtcLive/members@2x.png);
          background-size: 100% 100%;
        }
        &.mic_on {
          background: url(~@/assets/images/rtcLive/mic_on@2x.png);
          background-size: 100% 100%;
        }
        &.mic_no {
          background: url(~@/assets/images/rtcLive/mic_off_50@2x.png);
          background-size: 100% 100%;
        }
        &.mic_off {
          background: url(~@/assets/images/rtcLive/mic_off@2x.png);
          background-size: 100% 100%;
        }
        &.video_on {
          background: url(~@/assets/images/rtcLive/video_on@2x.png);
          background-size: 100% 100%;
        }
        &.video_no {
          background: url(~@/assets/images/rtcLive/video_off_50@2x.png);
          background-size: 100% 100%;
        }
        &.video_off {
          background: url(~@/assets/images/rtcLive/video_off@2x.png);
          background-size: 100% 100%;
        }
        &.exit {
          background: url(~@/assets/images/rtcLive/exit@2x.png);
          background-size: 100% 100%;
        }
        &:last-child {
          margin-right: 0;
        }
      }
    }
  }
  .layer {
    width: 100vw;
    height: 100vh;
    background: rgba(0, 0, 0, 0.1);
    z-index: 10000;

    position: fixed;
    bottom: 0;
    left: 0;
    // right: unset;
    // top: unset;
    .inputBox {
      width: 100vw;
      height: 1.39rem;
      // background: #f2f2f2;
      border: 1px solid rgba(255, 255, 255, 0.1);
      background: rgba(0, 0, 0, 0.5);

      position: absolute;
      bottom: 0;
      left: 0;
      padding: 0 0.44rem;
      box-sizing: border-box;
      display: flex;
      align-items: center;
      justify-content: center;
      .msgBox {
        width: 9.53rem;
        height: 0.94rem;
        position: absolute;
        > input {
          width: 9.53rem;
          height: 0.94rem;
          background: rgba(0, 0, 0, 0.5);
          border-radius: 0.56rem;
          font-size: 0.42rem;
          padding: 0 1.6rem 0 0.44rem;
          box-sizing: border-box;
          border: none;
          outline: none;
          color: #fff;
          resize: none;
          line &::placeholder {
            color: rgba(255, 255, 255, 0.5);
          }
        }
        .iconfont {
          // width: 0.56rem;
          // height: 0.56rem;
          // background: #ed5d18;
          font-size: 0.56rem;
          position: absolute;
          top: 50%;
          transform: translateY(-50%);
          right: 0.78rem;
          color: #fff;
          &.active {
            color: #ed5d18;
          }
        }
        .iconsend_icon {
          position: absolute;
          top: 50%;
          transform: translateY(-50%);
          // right: 0.78rem;
          right: 0.106667rem;
          width: 1.28rem;
          height: 0.693333rem;
          background: #ed5d18;
          color: #fff;
          font-size: 0.32rem;
          text-align: center;
          line-height: 0.693333rem;
          border-radius: 0.533333rem;
          // width: 0.67rem;
          // height: 0.67rem;
          // background-image: url(~@/assets/images/rtcLive/send_selected@2x.png);
          // background-size: 100% 100%;
        }
      }
    }
    .memberContent {
      height: auto;
      width: 100%;
      // background: #ffffff;
      border-radius: 0.28rem 0.28rem 0px 0px;
      position: absolute;
      left: 0;
      bottom: 0;
      &.animated {
        animation-duration: 0.3s;
      }
      .blurBox {
        background: rgba(0, 0, 0, 0.9);
        border-radius: 0.14rem 0.14rem 0px 0px;
        filter: blur(1px);
        position: absolute;
        width: 100%;
        height: 100%;
        z-index: 1;
        top: 0;
        left: 0;
      }
      .content {
        position: relative;
        width: 100%;
        height: 100%;
        z-index: 2;
        top: 0;
        left: 0;
      }
      .memberHeader {
        width: 100%;
        height: 1.28rem;
        text-align: center;
        line-height: 1.28rem;
        > span {
          font-size: 0.42rem;
          color: #fff;
        }
      }
      .memberList {
        width: 100%;
        height: 8.33rem;
        border-top-style: solid;
        border-top-color: rgba(0, 0, 0, 0.1);
        border-top-width: 1px;
        border-bottom-style: solid;
        border-bottom-color: rgba(0, 0, 0, 0.1);
        border-bottom-width: 1px;
        box-sizing: border-box;
        overflow-y: auto;
        &::-webkit-scrollbar {
          display: none;
        }
        .memberItem {
          width: 100%;
          height: 1.39rem;
          display: flex;
          align-items: center;
          justify-content: space-between;
          padding: 0.19rem 0.44rem;

          .userMsg {
            display: flex;
            align-items: center;
            justify-content: center;

            .avatar {
              width: 1rem;
              height: 1rem;
              border-radius: 50%;
              // overflow: hidden;
              margin-right: 0.28rem;
              > img {
                // width: 100%;
                // height: 100%;
                width: 1rem;
                height: 1rem;
              }
            }
            .name {
              font-size: 0.39rem;
              color: #fff;
            }
          }
          .button {
            display: flex;
            align-items: center;
            justify-content: center;
            > div {
              //   width: 0.56rem;
              //   height: 0.56rem;
              //   background: #fc6970;
              font-size: 0.65rem;
              color: #fff;
              &.micBtn {
                width: 0.65rem;
                height: 0.65rem;
                margin-right: 0.3rem;
                &.mute_all_mic {
                  background-image: url(~@/assets/images/rtcLive/mic_all_on@2x.png);
                  background-size: 100% 100%;
                }
                &.open_all_mic {
                  background-image: url(~@/assets/images/rtcLive/mic_all_off@2x.png);
                  background-size: 100% 100%;
                }
                &.mute_one_mic_on {
                  background-image: url(~@/assets/images/rtcLive/mic_on@2x.png);
                  background-size: 100% 100%;
                }
                &.mute_one_mic_off {
                  background-image: url(~@/assets/images/rtcLive/mic_off@2x.png);
                  background-size: 100% 100%;
                }
                &.ban_speak_on {
                  background-image: url(~@/assets/images/rtcLive/chat_on@2x.png);
                  background-size: 100% 100%;
                }
                &.ban_speak_off {
                  background-image: url(~@/assets/images/rtcLive/chat_off@2x.png);
                  background-size: 100% 100%;
                }
              }
              &.outBtn {
                margin-right: 0.3rem;
                width: 0.65rem;
                height: 0.65rem;
                &.icon_remove {
                  background-image: url(~@/assets/images/rtcLive/remove@2x.png);
                  background-size: 100% 100%;
                }
              }
            }
          }
        }
      }
      .memberBottom {
        width: 100%;
        padding: 0 0.44rem;
        box-sizing: border-box;
        display: flex;
        align-items: center;
        justify-content: center;
        padding: 0.28rem 0;
        box-sizing: border-box;
        > div {
          width: 4.61rem;
          height: 1.11rem;
          color: #ed5d18;
          border-radius: 0.11rem;
          border: 0.03rem solid #ed5d18;
          display: flex;
          align-items: center;
          justify-content: center;
          font-size: 0.39rem;
          &.mute_all {
            margin-right: 0.31rem;
          }
        }
      }
    }
  }

  .chat__area-layoutBox {
    display: block;
    width: 100%;
    height: auto;
    position: fixed;
    bottom: 0;
    left: 0;
    right: unset;
    top: unset;
    background: #fff;
    // padding-bottom: 0.821256rem;
    .chat__area-layoutBox_bg {
      width: 100vw;
      height: 100vh;
      position: fixed;
      z-index: 1;
      top: 0;
      left: 0;
    }
    .chat__area-l-content {
      display: -webkit-box;
      display: -ms-flexbox;
      display: flex;
      -webkit-box-orient: horizontal;
      -webkit-box-direction: normal;
      -ms-flex-direction: row;
      flex-direction: row;
      -webkit-box-align: center;
      -ms-flex-align: center;
      align-items: center;
      -webkit-box-pack: center;
      -ms-flex-pack: center;
      justify-content: center;
      min-height: 0.821256rem;
      padding: 0.241546rem 0;
      width: 100%;
      position: relative;
      z-index: 100;
      textarea {
        width: calc(100% - 0.96618rem);
        -ms-flex-preferred-size: calc(100% - 0.96618rem);
        flex-basis: calc(100% - 0.96618rem);
        background: none;
        border: none;
        border-radius: 0;
        color: #000;
        font-size: 0.386473rem;
        line-height: 0.483092rem;
        padding: 0 0.241546rem;
        resize: none;
        -webkit-user-select: text;
        caret-color: #ff4500;
        overflow: hidden !important;
      }
    }
  }

  @keyframes myAnimation {
    0% {
      background-position: 0px 0px;
      background-size: 13.3344rem auto;
    }

    100% {
      background-position: -13.1104rem 0px;
      background-size: 13.3344rem auto;
    }
  }
}
.sharetip {
  position: fixed;
  z-index: 99999;
  width: 100%;
  height: 100%;
  left: 0;
  right: 0;
  bottom: 0;
  top: 0;
  background-color: rgba($color: #000000, $alpha: 0.66);
  > img {
    position: absolute;
    right: 16%;
    top: 0;
    max-width: 70vw;
  }
}
</style>
