<template>
	<main-header />
	<div class="view" ref="viewRef" :style="{ '--app-view-height': viewHeight + 'px' }">
		<RouteCache />
	</div>
	<login-dialog />
	<div id="loading" v-if="loading" v-loading="true"></div>
</template>

<script setup lang="ts">
	import { computed, onMounted, ref, onBeforeUnmount } from 'vue'
	import RouteCache from '@/components/RouteCache.vue'
	import MainHeader from '@/views/main-header.vue'
	import LoginDialog from '@/views/login/login-dialog.vue'
	import { useGlobalStore } from '@/stores'
	const globalStore = useGlobalStore()
	const loading = computed(() => globalStore.state.loading)
	const viewRef = ref()
	const viewHeight = ref(0)
	const observer = new ResizeObserver((entries) => {
		const { width, height } = entries[0].contentRect
		viewHeight.value = height
	})
	onMounted(() => {
		observer.observe(viewRef.value)
	})
	onBeforeUnmount(() => {
		observer.disconnect()
	})
</script>

<style lang="less">
	#app {
		font-size: 1.6rem;
		display: flex;
		flex-direction: column;
	}
	#loading {
		position: fixed;
		z-index: 999999999;
		top: 0;
		left: 0;
		width: 100%;
		height: 100%;
		// background-color: rgba(0, 0, 0, 0.3);
		// display: flex;
		// align-items: center;
		// justify-content: center;
	}
</style>
<style lang="less" scoped>
	* {
		--header-height: 8rem;
		--footer-height: 7rem;
	}
	.view {
		flex: 1;
		overflow: hidden;
	}
</style>
