UNPKG

ui-ingredients

Version:

Headless component library for Svelte powered by zag

32 lines (31 loc) 845 B
import { reflect } from '@zag-js/svelte'; import { getContext, hasContext, setContext } from 'svelte'; export function createContext(...args) { const k = args[0]; const s = args[1] ?? true; if (k.trim().length < 1) { const e = new Error(); e.name = 'ContextError'; e.message = 'Context key cannot be empty'; throw e; } function has() { return hasContext(k); } function set(v) { setContext(k, isFn(v) ? reflect(v) : v); } function get() { if (s && !has()) { const e = new Error(); e.name = 'ContextError'; e.message = "No context found for '%s'".replace('%s', k); throw e; } return getContext(k); } return [get, set, has]; } function isFn(v) { return typeof v === 'function'; }