UNPKG

@ark-ui/solid

Version:

A collection of unstyled, accessible UI components for Solid, utilizing state machines for seamless interaction.

47 lines (43 loc) 1.52 kB
import { createContext } from './TROPIN4C.js'; import { runIfFn } from './DT73WLR4.js'; import { createComponent, memo, template, use } from 'solid-js/web'; import { getWindow, getDocument } from '@zag-js/dom-query'; import { createSignal, createMemo, Show } from 'solid-js'; // src/providers/environment/use-environment-context.ts var [EnvironmentContextProvider, useEnvironmentContext] = createContext({ hookName: "useEnvironmentContext", providerName: "<EnvironmentProvider />", strict: false, defaultValue: () => ({ getRootNode: () => document, getDocument: () => document, getWindow: () => window }) }); // src/providers/environment/environment-provider.tsx var _tmpl$ = /* @__PURE__ */ template(`<span hidden>`); var EnvironmentProvider = (props) => { const [spanRef, setSpanRef] = createSignal(); const getRootNode = () => runIfFn(props.value) ?? spanRef()?.getRootNode() ?? document; const environment = createMemo(() => ({ getRootNode, getDocument: () => getDocument(getRootNode()), getWindow: () => getWindow(getRootNode()) })); return createComponent(EnvironmentContextProvider, { value: environment, get children() { return [memo(() => props.children), createComponent(Show, { get when() { return !props.value; }, get children() { var _el$ = _tmpl$(); use(setSpanRef, _el$); return _el$; } })]; } }); }; export { EnvironmentProvider, useEnvironmentContext };