@tanstack/solid-router
Version:
Modern and scalable routing for Solid applications
75 lines (74 loc) • 2.42 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);
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