UNPKG

@dvcol/svelte-utils

Version:

Svelte library for common utility functions and constants

18 lines (17 loc) 541 B
import { onDestroy } from 'svelte'; export const useWatchMedia = (query, callback, options) => { const media = window.matchMedia(query); let matches = $state(media.matches); const listener = (event) => { matches = event.matches; callback?.(event); }; media.addEventListener('change', listener, options); const destroy = () => media.removeEventListener('change', listener, options); onDestroy(() => destroy()); return { media, matches: () => matches, destroy, }; };