summaryrefslogtreecommitdiff
path: root/packages/frontend/src/directives/container.ts
blob: a8a93eb9be4c00d7eb3d31488a12fd1141e044d4 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
import { Directive } from 'vue';

const map = new WeakMap<HTMLElement, ResizeObserver>();

export default {
	mounted(el: HTMLElement, binding, vn) {
		const ro = new ResizeObserver((entries, observer) => {
			el.style.setProperty('--containerHeight', el.offsetHeight + 'px');
		});
		ro.observe(el);
		map.set(el, ro);
	},

	unmounted(el, binding, vn) {
		const ro = map.get(el);
		if (ro) {
			ro.disconnect();
			map.delete(el);
		}
	},
} as Directive;