jest-react-fela
Version:
Jest helpers for react-fela
39 lines (34 loc) • 1.37 kB
JavaScript
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);