import { isServer } from '@tanstack/router-core/isServer';
import * as Solid from 'solid-js';
import { replaceEqualDeep } from '@tanstack/router-core';
import { useRouter } from './useRouter';
export function useRouterState(opts) {
    const contextRouter = useRouter({
        warn: opts?.router === undefined,
    });
    const router = opts?.router || contextRouter;
    // During SSR we render exactly once and do not need reactivity.
    // Avoid subscribing to the store on the server since the server store
    // implementation does not provide subscribe() semantics.
    const _isServer = isServer ?? router.isServer;
    if (_isServer) {
        const state = router.stores.__store.state;
        const selected = (opts?.select ? opts.select(state) : state);
        return (() => selected);
    }
    if (!opts?.select) {
        return (() => router.stores.__store.state);
    }
    const select = opts.select;
    return Solid.createMemo((prev) => {
        const res = select(router.stores.__store.state);
        if (prev === undefined)
            return res;
        return replaceEqualDeep(prev, res);
    });
}
//# sourceMappingURL=useRouterState.jsx.map