<template>
  <div class="h-full flex flex-col gap-7">
    <div class="tabs tabs-lift flex-shrink-0 mx-5">
      <label class="tab">
        <input
          type="radio"
          name="function-bar"
          id="1"
          :checked="checkID === 1"
          @change="handleTabChange"
        />
        <TerminalIcon class="icon" />
        日志终端
      </label>
      <label class="tab">
        <input
          type="radio"
          name="function-bar"
          id="2"
          :checked="checkID === 2"
          @change="handleTabChange"
        />
        <VideoIcon class="icon" />
        HTTP视频流
      </label>
      <label class="tab">
        <input
          type="radio"
          name="function-bar"
          id="3"
          :checked="checkID === 3"
          @change="handleTabChange"
        />
        <Monitor class="icon" />
        HDMI视频流
      </label>
      <label class="tab">
        <input
          type="radio"
          name="function-bar"
          id="4"
          :checked="checkID === 4"
          @change="handleTabChange"
        />
        <SquareActivityIcon class="icon" />
        示波器
      </label>
      <label class="tab">
        <input
          type="radio"
          name="function-bar"
          id="5"
          :checked="checkID === 5"
          @change="handleTabChange"
        />
        <Binary class="icon" />
        逻辑分析仪
      </label>
      <label class="tab">
        <input
          type="radio"
          name="function-bar"
          id="6"
          :checked="checkID === 6"
          @change="handleTabChange"
        />
        <Hand class="icon" />
        嵌入式逻辑分析仪
      </label>
      <!-- 全屏按钮 -->
      <button
        class="fullscreen-btn ml-auto btn btn-ghost btn-sm"
        @click="toggleFullscreen"
        :title="isFullscreen ? '退出全屏' : '全屏'"
      >
        <MaximizeIcon v-if="!isFullscreen" class="icon" />
        <MinimizeIcon v-else class="icon" />
      </button>
    </div>
    <!-- 主页面 -->
    <div class="flex-1 overflow-hidden">
      <div v-if="checkID === 1" class="h-full overflow-y-auto"></div>
      <div v-else-if="checkID === 2" class="h-full overflow-y-auto">
        <VideoStreamView />
      </div>
      <div v-else-if="checkID === 3" class="h-full overflow-y-auto">
        <HdmiVideoStreamView />
      </div>
      <div v-else-if="checkID === 4" class="h-full overflow-y-auto">
        <OscilloscopeView />
      </div>
      <div v-else-if="checkID === 5" class="h-full overflow-y-auto">
        <LogicAnalyzerView />
      </div>
      <div v-else-if="checkID === 6" class="h-full overflow-y-auto">
        <Debugger />
      </div>
    </div>
  </div>
</template>

<script setup lang="ts">
import {
  VideoIcon,
  SquareActivityIcon,
  TerminalIcon,
  MaximizeIcon,
  MinimizeIcon,
  Binary,
  Hand,
  Monitor,
} from "lucide-vue-next";
import { useLocalStorage } from "@vueuse/core";
import VideoStreamView from "@/views/Project/VideoStream.vue";
import HdmiVideoStreamView from "@/views/Project/HdmiVideoStream.vue";
import OscilloscopeView from "@/views/Project/Oscilloscope.vue";
import LogicAnalyzerView from "@/views/Project/LogicAnalyzer.vue";
import { isNull, toNumber } from "lodash";
import { onMounted, ref, watch } from "vue";
import Debugger from "./Debugger.vue";
import { useProvideLogicAnalyzer } from "@/components/LogicAnalyzer";
import { useProvideOscilloscope } from "@/components/Oscilloscope/OscilloscopeManager";

const analyzer = useProvideLogicAnalyzer();
const oscilloscopeManager = useProvideOscilloscope();

const checkID = useLocalStorage("checkID", 1);

// 定义事件
const emit = defineEmits<{
  toggleFullscreen: [];
}>();

// 接收父组件传递的全屏状态
const props = defineProps<{
  isFullscreen?: boolean;
}>();

const isFullscreen = ref(props.isFullscreen || false);

// 监听props变化
watch(
  () => props.isFullscreen,
  (newVal) => {
    isFullscreen.value = newVal || false;
  },
);

function handleTabChange(event: Event) {
  const target = event.currentTarget as HTMLInputElement;
  if (isNull(target)) return;

  checkID.value = toNumber(target.id);
}

function toggleFullscreen() {
  emit("toggleFullscreen");
}
</script>

<style scoped lang="postcss">
@import "@/assets/main.css";

.icon {
  @apply h-4 w-4 opacity-70 mr-1.5;
}

.tabs {
  @apply relative flex items-center;
}

.fullscreen-btn {
  @apply flex items-center justify-center p-2 rounded-lg transition-colors;
}

.fullscreen-btn .icon {
  @apply mr-0;
}
</style>
