@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
JSX
import {
createContext
} from "./TVCIHLER.jsx";
import {
runIfFn
} from "./KGOB2IMX.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
};