UNPKG

@ark-ui/solid

Version:

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

45 lines (40 loc) 1.29 kB
import { runIfFn } from "./KGOB2IMX.jsx"; import { createContext } from "./UZJJWJQM.jsx"; // src/providers/environment/environment-provider.tsx import { getDocument, getWindow } from "@zag-js/dom-query"; import { Show, createMemo, createSignal } 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 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 <EnvironmentContextProvider value={environment}> {props.children} <Show when={!props.value}> <span hidden ref={setSpanRef} /> </Show> </EnvironmentContextProvider>; }; export { useEnvironmentContext, EnvironmentProvider };