@tanstack/solid-router
Version:
Modern and scalable routing for Solid applications
34 lines (33 loc) • 1.32 kB
JavaScript
require("./_virtual/_rolldown/runtime.cjs");
const require_useRouter = require("./useRouter.cjs");
let _tanstack_router_core_isServer = require("@tanstack/router-core/isServer");
let _tanstack_solid_store = require("@tanstack/solid-store");
//#region src/useRouterState.tsx
function deepEqual(a, b) {
if (Object.is(a, b)) return true;
if (typeof a !== "object" || a === null || typeof b !== "object" || b === null) return false;
const keysA = Object.keys(a);
const keysB = Object.keys(b);
if (keysA.length !== keysB.length) return false;
for (const key of keysA) {
if (!Object.prototype.hasOwnProperty.call(b, key)) return false;
if (!deepEqual(a[key], b[key])) return false;
}
return true;
}
function useRouterState(opts) {
const contextRouter = require_useRouter.useRouter({ warn: opts?.router === void 0 });
const router = opts?.router || contextRouter;
if (_tanstack_router_core_isServer.isServer ?? router.isServer) {
const state = router.state;
const selected = opts?.select ? opts.select(state) : state;
return (() => selected);
}
return (0, _tanstack_solid_store.useStore)(router.__store, (state) => {
if (opts?.select) return opts.select(state);
return state;
}, { equal: deepEqual });
}
//#endregion
exports.useRouterState = useRouterState;
//# sourceMappingURL=useRouterState.cjs.map