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;
    });
    return (<Solid.Loading fallback={props.fallback}>
      <InnerAwait deferred={deferred} ready={ready}>
        {props.children}
      </InnerAwait>
    </Solid.Loading>);
}
//# sourceMappingURL=awaited.jsx.map