UNPKG

rvx

Version:

A signal based rendering library

35 lines 1.11 kB
import { isolate } from "../core/isolate.js"; import { $ } from "../core/signals.js"; import { nest } from "../core/view.js"; import { ASYNC } from "./async-context.js"; export function nestAsync(source, component, pending, rejected) { const state = $({ type: 0, value: undefined }); let promise; if (typeof source === "function") { promise = isolate(source); } else { promise = source; } const ac = ASYNC.current; promise.then(value => { state.value = { type: 1, value }; }, (value) => { state.value = { type: 2, value }; if (ac === undefined && rejected === undefined) { void Promise.reject(value); } }); ac?.track(promise); return nest(state, state => { switch (state.type) { case 0: return pending?.(); case 1: return component?.(state.value); case 2: return rejected?.(state.value); } }); } export function Async(props) { return nestAsync(props.source, props.children, props.pending, props.rejected); } //# sourceMappingURL=async.js.map