aboutsummaryrefslogtreecommitdiff
path: root/src/App.vue
blob: 7df08030be78170c1ab915db66ab9f4275b0361d (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
<script lang="ts">
import {defineComponent} from 'vue';
import TileTree from './components/TileTree.vue';


export default defineComponent({
	data(){
		return {
			width: document.documentElement.clientWidth,
			height: document.documentElement.clientHeight,
			tileTreeOffset: 5, // For space between tile-tree and display boundary
			// For window-resize-handler throttling
			resizeThrottled: false,
			resizeDelay: 50, //ms
		}
	},
	computed: {
		styles(){
			return {
				position: 'absolute',
				left: '0',
				top: '0',
				width: this.width + 'px',
				height: this.height + 'px',
				backgroundColor: 'black',
			};
		}
	},
	methods: {
		onResize(){
			if (!this.resizeThrottled){
				this.width = document.documentElement.clientWidth;
				this.height = document.documentElement.clientHeight;
				// Prevent re-triggering until after a delay
				this.resizeThrottled = true;
				setTimeout(() => {this.resizeThrottled = false;}, this.resizeDelay);
			}
		},
	},
	created(){
		window.addEventListener('resize', this.onResize);
	},
	unmounted(){
		window.removeEventListener('resize', this.onResize);
	},
	components: {
		TileTree
	},
})
</script>

<template>
<div :style="styles">
	<tile-tree :pos="[tileTreeOffset, tileTreeOffset]"
		:dims="[width - tileTreeOffset*2, height - tileTreeOffset*2]"/>
</div>
</template>