<template>
    <!--element-plus语言国际化，全局修改为中文-->
    <el-config-provider :locale="locale" :size="assemblySize" :button="buttonConfig">
        <router-view />
    </el-config-provider>
</template>

<script lang="ts" setup>
import { useI18n } from 'vue-i18n'
import { getBrowserLang } from '@/utils'
import { useTheme } from '@/hooks/useTheme'
import { ElConfigProvider } from 'element-plus'
import { type LanguageType } from './stores/interface'
import { useGlobalStore } from '@/stores/modules/global'
import en from 'element-plus/es/locale/lang/en'
import zhCn from 'element-plus/es/locale/lang/zh-cn'

defineOptions({
    name: 'App'
})

const globalStore = useGlobalStore()

// init theme
const { initTheme } = useTheme()
initTheme()

// init language
const i18n = useI18n()
onMounted(() => {
    const language = globalStore.language ?? getBrowserLang()
    i18n.locale.value = language
    globalStore.setGlobalState('language', language as LanguageType)
    // 移除 autofit，使用 CSS 自适应
    // autofit.init({
    //     el: '#app',
    //     dw: 1440,
    //     dh: 900,
    //     resize: true,
    //     limit: 0.1
    // })
})

// element language
const locale = computed(() => {
    if (globalStore.language == 'zh') return zhCn
    if (globalStore.language == 'en') return en
    return getBrowserLang() == 'zh' ? zhCn : en
})

// element assemblySize
const assemblySize = computed(() => globalStore.assemblySize)

// element button config
const buttonConfig = reactive({ autoInsertSpace: false })

document.getElementById('loadingPage')?.remove()
</script>
<style scoped>
#app {
    width: 100vw;
    height: 100vh;
    overflow: hidden;
}
</style>
