@storybook/nextjs-vite
Version:
Storybook for Next.js and Vite: Develop, document, and test UI components in isolation
44 lines (42 loc) • 1.39 kB
JavaScript
import "./chunk-SL3VIQZ3.js";
// ../../lib/react-dom-shim/dist/react-18.js
import * as React from "react";
import * as ReactDOM from "react-dom/client";
var nodes = /* @__PURE__ */ new Map();
function getIsReactActEnvironment() {
return globalThis.IS_REACT_ACT_ENVIRONMENT;
}
var WithCallback = ({
callback,
children
}) => {
let once = React.useRef();
return React.useLayoutEffect(() => {
once.current !== callback && (once.current = callback, callback());
}, [callback]), children;
};
typeof Promise.withResolvers > "u" && (Promise.withResolvers = () => {
let resolve = null, reject = null;
return { promise: new Promise((res, rej) => {
resolve = res, reject = rej;
}), resolve, reject };
});
var renderElement = async (node, el, rootOptions) => {
let root = await getReactRoot(el, rootOptions);
if (getIsReactActEnvironment()) {
root.render(node);
return;
}
let { promise, resolve } = Promise.withResolvers();
return root.render(React.createElement(WithCallback, { callback: resolve }, node)), promise;
}, unmountElement = (el, shouldUseNewRootApi) => {
let root = nodes.get(el);
root && (root.unmount(), nodes.delete(el));
}, getReactRoot = async (el, rootOptions) => {
let root = nodes.get(el);
return root || (root = ReactDOM.createRoot(el, rootOptions), nodes.set(el, root)), root;
};
export {
renderElement,
unmountElement
};