UNPKG

jest-react-fela

Version:
39 lines (34 loc) 1.37 kB
import { createElement, useEffect, useRef } from 'react'; import { createRenderer } from 'fela'; import { renderToStaticMarkup } from 'react-dom/server'; import { render } from 'react-dom'; import { RendererProvider, ThemeProvider } from 'react-fela'; import { createAsyncSnapshotFactory } from 'jest-fela-bindings'; // Wait for React to finish in concurrent mode https://github.com/reactwg/react-18/discussions/5#discussioncomment-2276079 export var CallbackWrapper = function CallbackWrapper(_ref) { var callback = _ref.callback, children = _ref.children; var once = useRef(false); useEffect(function () { if (once.current) return; once.current = true; callback(); }, [callback]); return children; }; var createRoot; try { // eslint-disable-next-line import/no-unresolved,global-require var ReactDOMClient = require('react-dom/client'); if (typeof ReactDOMClient !== 'undefined' && typeof ReactDOMClient.createRoot !== 'undefined') { createRoot = ReactDOMClient.createRoot; } // eslint-disable-next-line no-empty } catch (e) {} var renderHandler = { createRoot: { createRoot: createRoot, CallbackWrapper: CallbackWrapper }, render: render, renderToStaticMarkup: renderToStaticMarkup }; export default createAsyncSnapshotFactory(createElement, renderHandler, createRenderer(), RendererProvider, ThemeProvider);