UNPKG

rvx

Version:

A signal based rendering library

48 lines 1.33 kB
import { ASYNC, AsyncContext } from "../async/async-context.js"; import { Context } from "../core/context.js"; import { ENV } from "../core/env.js"; import { capture } from "../core/lifecycle.js"; import { render } from "../core/view.js"; import { Node, WINDOW } from "./model.js"; function renderDetachedView(view) { const { first, last } = view; if (!(first instanceof Node)) { throw new Error("root is not an rvx dom node"); } if (first === last) { return first.outerHTML; } else { return first.parentNode.outerHTML; } } export function renderToString(component, props) { let html; capture(() => { ENV.inject(WINDOW, () => { const view = render(component(props)); html = renderDetachedView(view); }); })(); return html; } export async function renderToStringAsync(component, props) { const asyncCtx = new AsyncContext(); let view; const dispose = capture(() => { Context.inject([ ENV.with(WINDOW), ASYNC.with(asyncCtx), ], () => { view = render(component(props)); }); }); try { await asyncCtx.complete(); return renderDetachedView(view); } finally { dispose(); } } //# sourceMappingURL=render.js.map