import * as Solid from 'solid-js';
import { TSR_DEFERRED_PROMISE, defer } from '@tanstack/router-core';
export function useAwaited({ promise: _promise, }) {
    const promise = defer(_promise);
    const data = Solid.createMemo(async () => await promise);
    return [data(), promise];
}
function InnerAwait(props) {
    return (<Solid.Show when={props.ready()}>
      {(_) => {
            const state = props.deferred[TSR_DEFERRED_PROMISE];
            if (state.status === 'error') {
                throw state.error;
            }
            return props.children(state.data);
        }}
    </Solid.Show>);
}
export function Await(props) {
    const deferred = defer(props.promise);
    const ready = Solid.createMemo(async () => {
        await deferred;
        return true;
    });
    const inner = (<InnerAwait deferred={deferred} ready={ready}>
      {props.children}
    </InnerAwait>);
    if (props.fallback === undefined) {
        return inner;
    }
    return <Solid.Loading fallback={props.fallback}>{inner}</Solid.Loading>;
}
//# sourceMappingURL=awaited.jsx.map