UNPKG

one

Version:

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

65 lines 2.48 kB
var __defProp = Object.defineProperty; var __getOwnPropDesc = Object.getOwnPropertyDescriptor; var __getOwnPropNames = Object.getOwnPropertyNames; var __hasOwnProp = Object.prototype.hasOwnProperty; var __export = (target, all) => { for (var name in all) __defProp(target, name, { get: all[name], enumerable: true }); }; var __copyProps = (to, from, except, desc) => { if (from && typeof from === "object" || typeof from === "function") { for (let key of __getOwnPropNames(from)) if (!__hasOwnProp.call(to, key) && key !== except) __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); } return to; }; var __toCommonJS = mod => __copyProps(__defProp({}, "__esModule", { value: true }), mod); var sitemap_exports = {}; __export(sitemap_exports, { getSitemap: () => getSitemap, useSitemap: () => useSitemap }); module.exports = __toCommonJS(sitemap_exports); var import_react = require("react"); var import_matchers = require("./matchers.cjs"); var import_router = require("./router.cjs"); var import_sortRoutes = require("./sortRoutes.cjs"); function useSitemap() { return (0, import_react.useMemo)(() => getSitemap(import_router.routeNode), [import_router.routeNode]); } function getSitemap(root) { return root ? mapRouteToSitemap(root, []) : null; } function mapRouteToSitemap(route, parents) { return { contextKey: route.contextKey, filename: getRouteFilename(route), href: getRouteHref(route, parents), isInitial: route.initialRouteName === route.route, isInternal: route.internal ?? false, isGenerated: route.generated ?? false, children: [...route.children].sort(import_sortRoutes.sortRoutes).map(child => mapRouteToSitemap(child, getRouteSegments(route, parents))) }; } function getRouteSegments(route, parents) { return [...parents, ...route.route.split("/")]; } function getRouteHref(route, parents) { const path = getRouteSegments(route, parents).map(segment => segment === "index" ? "" : segment).filter(Boolean).join("/"); return `/${path}`; } function getRouteFilename(route) { const contextKey = (0, import_matchers.removeSupportedExtensions)(route.contextKey); const segments = contextKey.split("/"); if (route.contextKey.match(/_layout\.[jt]sx?$/)) { return segments.slice(-2).join("/"); } const routeSegmentsCount = route.route.split("/").length; return segments.slice(-routeSegmentsCount).join("/"); }