@tanstack/solid-router
Version:
Modern and scalable routing for Solid applications
54 lines (53 loc) • 1.66 kB
JavaScript
const require_runtime = require("./_virtual/_rolldown/runtime.cjs");
let _tanstack_router_core = require("@tanstack/router-core");
let solid_js = require("solid-js");
solid_js = require_runtime.__toESM(solid_js, 1);
let _tanstack_router_core_isServer = require("@tanstack/router-core/isServer");
//#region src/routerStores.ts
var getStoreFactory = (opts) => {
if (_tanstack_router_core_isServer.isServer ?? opts.isServer) return {
createMutableStore: _tanstack_router_core.createNonReactiveMutableStore,
createReadonlyStore: _tanstack_router_core.createNonReactiveReadonlyStore,
batch: (fn) => fn()
};
let writeEpoch = 0;
function createSolidMutableStore(initialValue) {
const [signal, setSignal] = solid_js.createSignal(initialValue);
let current = initialValue;
let dirty = false;
return {
get: () => {
const settled = signal();
if (dirty && settled === current) dirty = false;
return dirty ? current : settled;
},
set: (next) => {
current = typeof next === "function" ? next(current) : next;
dirty = true;
writeEpoch++;
setSignal(() => current);
}
};
}
function createSolidReadonlyStore(read) {
const memo = solid_js.createRoot(() => solid_js.createMemo(read));
let cache;
let cachedAt = -1;
return { get: () => {
memo();
if (cachedAt !== writeEpoch) {
cache = solid_js.untrack(read);
cachedAt = writeEpoch;
}
return cache;
} };
}
return {
createMutableStore: createSolidMutableStore,
createReadonlyStore: createSolidReadonlyStore,
batch: (fn) => fn()
};
};
//#endregion
exports.getStoreFactory = getStoreFactory;
//# sourceMappingURL=routerStores.cjs.map