UNPKG

@tanstack/solid-router

Version:

Modern and scalable routing for Solid applications

75 lines (74 loc) 2.42 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); let _tanstack_router_core_isServer = require("@tanstack/router-core/isServer"); //#region src/routerStores.ts function initRouterStores(stores, createReadonlyStore) { stores.childMatchIdByRouteId = createReadonlyStore(() => { const ids = stores.matchesId.state; const obj = {}; for (let i = 0; i < ids.length - 1; i++) { const parentStore = stores.activeMatchStoresById.get(ids[i]); if (parentStore?.routeId) obj[parentStore.routeId] = ids[i + 1]; } return obj; }); stores.pendingRouteIds = createReadonlyStore(() => { const ids = stores.pendingMatchesId.state; const obj = {}; for (const id of ids) { const store = stores.pendingMatchStoresById.get(id); if (store?.routeId) obj[store.routeId] = true; } return obj; }); } function createSolidMutableStore(initialValue) { const [signal, setSignal] = solid_js.createSignal(initialValue); return { get state() { return signal(); }, setState: setSignal }; } var finalizationRegistry = null; if (typeof globalThis !== "undefined" && "FinalizationRegistry" in globalThis) finalizationRegistry = new FinalizationRegistry((cb) => cb()); function createSolidReadonlyStore(read) { let dispose; const memo = solid_js.createRoot((d) => { dispose = d; return solid_js.createMemo(read); }); const store = { get state() { return memo(); } }; finalizationRegistry?.register(store, dispose); return store; } 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(), init: (stores) => initRouterStores(stores, _tanstack_router_core.createNonReactiveReadonlyStore) }; let depth = 0; return { createMutableStore: createSolidMutableStore, createReadonlyStore: createSolidReadonlyStore, batch: (fn) => { depth++; fn(); depth--; if (depth === 0) try { solid_js.flush(); } catch {} }, init: (stores) => initRouterStores(stores, createSolidReadonlyStore) }; }; //#endregion exports.getStoreFactory = getStoreFactory; //# sourceMappingURL=routerStores.cjs.map