@tanstack/router-plugin
Version:
Modern and scalable routing for React applications
44 lines (43 loc) • 1.96 kB
JavaScript
const require_runtime = require("../_virtual/_rolldown/runtime.cjs");
let _babel_template = require("@babel/template");
_babel_template = require_runtime.__toESM(_babel_template);
//#region src/core/route-hmr-statement.ts
function handleRouteUpdate(oldRoute, newRoute) {
newRoute._path = oldRoute._path;
newRoute._id = oldRoute._id;
newRoute._fullPath = oldRoute._fullPath;
newRoute._to = oldRoute._to;
newRoute.children = oldRoute.children;
newRoute.parentRoute = oldRoute.parentRoute;
const router = window.__TSR_ROUTER__;
router.routesById[newRoute.id] = newRoute;
router.routesByPath[newRoute.fullPath] = newRoute;
router.processedTree.matchCache.clear();
router.processedTree.flatCache?.clear();
router.processedTree.singleCache.clear();
router.resolvePathCache.clear();
walkReplaceSegmentTree(newRoute, router.processedTree.segmentTree);
const filter = (m) => m.routeId === oldRoute.id;
if (router.state.matches.find(filter) || router.state.pendingMatches?.find(filter)) router.invalidate({ filter });
function walkReplaceSegmentTree(route, node) {
if (node.route?.id === route.id) node.route = route;
if (node.index) walkReplaceSegmentTree(route, node.index);
node.static?.forEach((child) => walkReplaceSegmentTree(route, child));
node.staticInsensitive?.forEach((child) => walkReplaceSegmentTree(route, child));
node.dynamic?.forEach((child) => walkReplaceSegmentTree(route, child));
node.optional?.forEach((child) => walkReplaceSegmentTree(route, child));
node.wildcard?.forEach((child) => walkReplaceSegmentTree(route, child));
}
}
var routeHmrStatement = _babel_template.statement(`
if (import.meta.hot) {
import.meta.hot.accept((newModule) => {
if (Route && newModule && newModule.Route) {
(${handleRouteUpdate.toString()})(Route, newModule.Route)
}
})
}
`, { placeholderPattern: false })();
//#endregion
exports.routeHmrStatement = routeHmrStatement;
//# sourceMappingURL=route-hmr-statement.cjs.map