@backstage/plugin-techdocs
Version:
The Backstage plugin that renders technical documentation for your components
27 lines (24 loc) • 1.25 kB
JavaScript
import { useMemo } from 'react';
import { useRouteRef } from '@backstage/core-plugin-api';
import { rootDocsRouteRef, rootCatalogDocsRouteRef } from '../../routes.esm.js';
const trimStartSlash = (path) => path.replace(/^\/+/, "");
const trimEndSlash = (path) => path.replace(/\/+$/, "");
function useEntityPageTechDocsRedirect(entityRef) {
const { kind, name, namespace } = entityRef;
const routeDocsRoot = useRouteRef(rootDocsRouteRef);
const routeDocsCatalog = useRouteRef(rootCatalogDocsRouteRef);
const reRouteLocationToCatalog = useMemo(() => {
const rootDocsPath = trimEndSlash(routeDocsRoot({ kind, namespace, name }));
const catalogDocsPath = trimEndSlash(routeDocsCatalog());
return (url) => {
if (url.toLocaleLowerCase("en-US").startsWith(rootDocsPath.toLocaleLowerCase("en-US"))) {
const suffix = trimStartSlash(url.slice(rootDocsPath.length));
return suffix.length === 0 || suffix.startsWith("#") ? `${catalogDocsPath}${suffix}` : `${catalogDocsPath}/${suffix}`;
}
return url;
};
}, [routeDocsRoot, routeDocsCatalog, kind, name, namespace]);
return reRouteLocationToCatalog;
}
export { useEntityPageTechDocsRedirect };
//# sourceMappingURL=useTechDocsLocation.esm.js.map