import * as Solid from 'solid-js';
import { TSR_DEFERRED_PROMISE, defer } from '@tanstack/router-core';
export function useAwaited({ promise: _promise, }) {
    const promise = defer(_promise);
    if (promise[TSR_DEFERRED_PROMISE].status === 'pending') {
        throw promise;
    }
    if (promise[TSR_DEFERRED_PROMISE].status === 'error') {
        throw promise[TSR_DEFERRED_PROMISE].error;
    }
    return [promise[TSR_DEFERRED_PROMISE].data, promise];
}
export function Await(props) {
    if (!('fallback' in props)) {
        return <AwaitInner {...props}/>;
    }
    return (<Solid.Suspense fallback={props.fallback}>
      <AwaitInner {...props}/>
    </Solid.Suspense>);
}
function AwaitInner(props) {
    const [resource] = Solid.createResource(() => defer(props.promise), async (promise) => ({ value: await promise }));
    return (<Solid.Show when={resource()}>
      {(result) => props.children(result().value)}
    </Solid.Show>);
}
//# sourceMappingURL=awaited.jsx.map