UNPKG

@tanstack/solid-router

Version:

Modern and scalable routing for Solid applications

54 lines (53 loc) 1.66 kB
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