@tanstack/react-router
Version:
Modern and scalable routing for React applications
49 lines (48 loc) • 1.28 kB
JavaScript
import * as React from "react";
import { isModuleNotFoundError } from "@tanstack/router-core";
function lazyRouteComponent(importer, exportName) {
let loadPromise;
let comp;
let error;
let reload;
const load = () => {
if (!loadPromise) {
loadPromise = importer().then((res) => {
loadPromise = void 0;
comp = res[exportName ?? "default"];
}).catch((err) => {
error = err;
if (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");
reload = true;
}
}
}
});
}
return loadPromise;
};
const lazyComp = function Lazy(props) {
if (reload) {
window.location.reload();
throw new Promise(() => {
});
}
if (error) {
throw error;
}
if (!comp) {
throw load();
}
return React.createElement(comp, props);
};
lazyComp.preload = load;
return lazyComp;
}
export {
lazyRouteComponent
};
//# sourceMappingURL=lazyRouteComponent.js.map