UNPKG

one

Version:

One is a new React Framework that makes Vite serve both native and web.

47 lines (46 loc) 1.8 kB
import { useMemo } from "react"; import { removeSupportedExtensions } from "./matchers.native.js"; import { routeNode } from "./router.native.js"; import { sortRoutes } from "./sortRoutes.native.js"; function useSitemap() { return useMemo(function () { return getSitemap(routeNode); }, [routeNode]); } function getSitemap(root) { return root ? mapRouteToSitemap(root, []) : null; } function mapRouteToSitemap(route, parents) { var _route_internal, _route_generated; return { contextKey: route.contextKey, filename: getRouteFilename(route), href: getRouteHref(route, parents), isInitial: route.initialRouteName === route.route, isInternal: (_route_internal = route.internal) !== null && _route_internal !== void 0 ? _route_internal : false, isGenerated: (_route_generated = route.generated) !== null && _route_generated !== void 0 ? _route_generated : false, children: [...route.children].sort(sortRoutes).map(function (child) { return mapRouteToSitemap(child, getRouteSegments(route, parents)); }) }; } function getRouteSegments(route, parents) { return [...parents, ...route.route.split("/")]; } function getRouteHref(route, parents) { var path = getRouteSegments(route, parents).map(function (segment) { return segment === "index" ? "" : segment; }).filter(Boolean).join("/"); return `/${path}`; } function getRouteFilename(route) { var contextKey = removeSupportedExtensions(route.contextKey); var segments = contextKey.split("/"); if (route.contextKey.match(/_layout\.[jt]sx?$/)) { return segments.slice(-2).join("/"); } var routeSegmentsCount = route.route.split("/").length; return segments.slice(-routeSegmentsCount).join("/"); } export { getSitemap, useSitemap }; //# sourceMappingURL=sitemap.native.js.map