UNPKG

843 BJavaScriptView Raw
1import * as React from 'react';
2import { SSRContext, createSSRManager } from './internal/SSRContext';
3import { isPromiseLike } from './utils';
4export function getMarkupFromTree(_ref) {
5 var tree = _ref.tree,
6 onBeforeRender = _ref.onBeforeRender,
7 renderFunction = _ref.renderFunction;
8 var ssrManager = createSSRManager();
9
10 function process() {
11 try {
12 if (onBeforeRender) {
13 onBeforeRender();
14 }
15
16 var html = renderFunction(React.createElement(SSRContext.Provider, {
17 value: ssrManager
18 }, tree));
19
20 if (!ssrManager.hasPromises()) {
21 return html;
22 }
23 } catch (e) {
24 if (!isPromiseLike(e)) {
25 throw e;
26 }
27
28 ssrManager.register(e);
29 }
30
31 return ssrManager.consumeAndAwaitPromises().then(process);
32 }
33
34 return Promise.resolve().then(process);
35}
\No newline at end of file