@yamada-ui/react
Version:
React UI components of the Yamada, by the Yamada, for the Yamada built with React and Emotion
50 lines (46 loc) • 1.8 kB
JavaScript
"use client";
const require_rolldown_runtime = require('../../_virtual/rolldown_runtime.cjs');
const require_utils_index = require('../../utils/index.cjs');
let react = require("react");
react = require_rolldown_runtime.__toESM(react);
let react_jsx_runtime = require("react/jsx-runtime");
react_jsx_runtime = require_rolldown_runtime.__toESM(react_jsx_runtime);
//#region src/core/system/environment-provider.tsx
const defaultEnvironment = {
getDocument: () => document,
getRootNode: () => document,
getWindow: () => window
};
const EnvironmentContext = (0, react.createContext)(defaultEnvironment);
const EnvironmentProvider = ({ children, value }) => {
const ref = (0, react.useRef)(null);
const getRootNode = (0, react.useCallback)(() => {
return (0, require_utils_index.utils_exports.runIfFn)(value) ?? ref.current?.getRootNode() ?? document;
}, [value, ref]);
return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(EnvironmentContext, {
value: (0, react.useMemo)(() => {
if ((0, require_utils_index.utils_exports.createdDom)()) return {
getDocument: () => (0, require_utils_index.utils_exports.getDocument)(getRootNode()),
getRootNode,
getWindow: () => (0, require_utils_index.utils_exports.getWindow)(getRootNode())
};
else return {
getDocument: () => void 0,
getRootNode: () => void 0,
getWindow: () => void 0
};
}, [getRootNode]),
children: [children, !value ? /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
ref,
hidden: true
}) : null]
});
};
const useEnvironment = () => {
return (0, react.use)(EnvironmentContext);
};
//#endregion
exports.EnvironmentProvider = EnvironmentProvider;
exports.defaultEnvironment = defaultEnvironment;
exports.useEnvironment = useEnvironment;
//# sourceMappingURL=environment-provider.cjs.map