aboutsummaryrefslogtreecommitdiff
path: root/src/lib/Utility/html.ts
blob: a41cda9fa7540ebdcd2c0ff20153a92c370de43b (plain) (blame)
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
import settings from '$stores/settings';
import { get } from 'svelte/store';

export const nbsp = (str: string) => str.replace(/ /g, ' ');

export const createHeightObserver = () => {
	const heightObserver = new ResizeObserver(() => {
		if (get(settings).displayLimitListHeight) {
			document.querySelectorAll('.list').forEach((list) => {
				const element = list as HTMLElement;

				element.style.height = 'auto';

				const elementBound = element.getBoundingClientRect();
				const height = window.innerHeight - elementBound.top - 2.5 * 16;

				if (elementBound.height > height) element.style.height = `${height}px`;
			});
		}
	});
	const collapseObserver = new MutationObserver(() => {
		document.querySelectorAll('.list').forEach((list) => {
			const element = list as HTMLDetailsElement;

			if (element.tagName === 'DETAILS' && !element.open) element.style.height = 'auto';
		});
	});

	document.querySelectorAll('.list').forEach((element) => heightObserver.observe(element));
	document
		.querySelectorAll('.list')
		.forEach((element) => collapseObserver.observe(element, { attributes: true }));
};