aboutsummaryrefslogtreecommitdiff
path: root/src/lib/Tools/tool.ts
blob: fc50a715b545896174616a921468915a50fe5386 (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
import { browser } from '$app/environment';
import { page } from '$app/stores';

export const clearAllParameters = (saved: string[] = []) => {
	if (browser)
		page.subscribe((value) => {
			value.url.searchParams.forEach((_, key) => {
				if (!saved.includes(key) && key !== 'tool') {
					value.url.searchParams.delete(key);
				}
			});
			history.replaceState(null, '', `?${value.url.searchParams.toString()}`);
		});
};

export const parseOrDefault = <T = string | number>(
	urlParameters: URLSearchParams | null,
	parameter: string,
	fallback: T
): T =>
	typeof fallback === 'number'
		? ((browser && urlParameters?.size !== 0
				? parseInt(urlParameters?.get(parameter) || '', 10) || fallback
				: fallback) as T)
		: ((browser && urlParameters?.size !== 0
				? urlParameters?.get(parameter) || fallback
				: fallback) as T);