UNPKG

@yamada-ui/react

Version:

React UI components of the Yamada, by the Yamada, for the Yamada built with React and Emotion

45 lines (41 loc) 1.37 kB
"use client"; import { utils_exports } from "../../utils/index.js"; import { createContext, use, useCallback, useMemo, useRef } from "react"; import { jsx, jsxs } from "react/jsx-runtime"; //#region src/core/system/environment-provider.tsx const defaultEnvironment = { getDocument: () => document, getRootNode: () => document, getWindow: () => window }; const EnvironmentContext = createContext(defaultEnvironment); const EnvironmentProvider = ({ children, value }) => { const ref = useRef(null); const getRootNode = useCallback(() => { return (0, utils_exports.runIfFn)(value) ?? ref.current?.getRootNode() ?? document; }, [value, ref]); return /* @__PURE__ */ jsxs(EnvironmentContext, { value: useMemo(() => { if ((0, utils_exports.createdDom)()) return { getDocument: () => (0, utils_exports.getDocument)(getRootNode()), getRootNode, getWindow: () => (0, utils_exports.getWindow)(getRootNode()) }; else return { getDocument: () => void 0, getRootNode: () => void 0, getWindow: () => void 0 }; }, [getRootNode]), children: [children, !value ? /* @__PURE__ */ jsx("span", { ref, hidden: true }) : null] }); }; const useEnvironment = () => { return use(EnvironmentContext); }; //#endregion export { EnvironmentProvider, defaultEnvironment, useEnvironment }; //# sourceMappingURL=environment-provider.js.map