UNPKG

@sv-use/core

Version:

A collection of Svelte 5 utilities.

44 lines (43 loc) 1.2 kB
import { onMount } from 'svelte'; /** * Retrieves the status of a given permission. * @see https://svelte-librarian.github.io/sv-use/docs/core/get-permission */ export function getPermission(nameOrDesc, options = {}) { const { exposeControls = false } = options; const _descriptor = typeof nameOrDesc === 'string' ? { name: nameOrDesc } : nameOrDesc; let _current = $state('prompt'); let _isSupported = $state(false); function query() { return navigator.permissions.query(_descriptor); } onMount(async () => { if (!('permissions' in navigator)) return; try { const status = await query(); _isSupported = true; _current = status.state; status.onchange = async () => { _current = (await query()).state; }; } catch { /* empty */ } }); if (exposeControls) { return { get isSupported() { return _isSupported; }, get current() { return _current; }, query }; } else { return _current; } }