File size: 745 Bytes
70cf894
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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 { readable } from 'svelte/store';
import { browser } from '$app/environment';

const reduced_motion_query = '(prefers-reduced-motion: reduce)';

const get_initial_motion_preference = () => {
	if (!browser) return false;
	return window.matchMedia(reduced_motion_query).matches;
};

export const reduced_motion = readable(get_initial_motion_preference(), (set) => {
	if (browser) {
		/**
		 * @param {MediaQueryListEvent} event
		 */
		const set_reduced_motion = (event) => {
			set(event.matches);
		};
		const media_query_list = window.matchMedia(reduced_motion_query);
		media_query_list.addEventListener('change', set_reduced_motion);

		return () => {
			media_query_list.removeEventListener('change', set_reduced_motion);
		};
	}
});