UNPKG

@tanstack/solid-router

Version:

Modern and scalable routing for Solid applications

58 lines (57 loc) 1.9 kB
let _tanstack_router_core = require("@tanstack/router-core"); let solid_js_web = require("solid-js/web"); let solid_js = require("solid-js"); let _tanstack_router_core_isServer = require("@tanstack/router-core/isServer"); //#region src/lazyRouteComponent.tsx function lazyRouteComponent(importer, exportName) { let loadPromise; let comp; let error; const load = () => { if (!loadPromise) { error = void 0; loadPromise = importer().then((res) => { if (!(_tanstack_router_core_isServer.isServer ?? typeof window === "undefined")) { loadPromise = void 0; Lazy.preload = void 0; } comp = res[exportName ?? "default"]; return comp; }).catch((err) => { loadPromise = void 0; error = err; }); } return loadPromise; }; function Lazy(props) { if (comp || error) return render(props); return (0, solid_js_web.createComponent)(Loadable, props); } function render(props) { if (error) { if ((0, _tanstack_router_core.isModuleNotFoundError)(error)) { if (error instanceof Error && typeof window !== "undefined" && typeof sessionStorage !== "undefined") { const storageKey = `tanstack_router_reload:${error.message}`; if (!sessionStorage.getItem(storageKey)) { sessionStorage.setItem(storageKey, "1"); window.location.reload(); return null; } } } throw error; } return (0, solid_js_web.createComponent)(solid_js_web.Dynamic, (0, solid_js_web.mergeProps)({ component: comp }, props)); } const Loadable = (0, solid_js.lazy)(async () => { await load(); if (process.env.NODE_ENV !== "production" && !comp && !error) throw new Error(`lazyRouteComponent: export "${String(exportName ?? "default")}" not found`); return { default: render }; }); Lazy.preload = load; return Lazy; } //#endregion exports.lazyRouteComponent = lazyRouteComponent; //# sourceMappingURL=lazyRouteComponent.cjs.map