UNPKG

@backstage/plugin-techdocs

Version:

The Backstage plugin that renders technical documentation for your components

37 lines (34 loc) 1.11 kB
import { useApi, configApiRef } from '@backstage/core-plugin-api'; import { useRef, useCallback } from 'react'; import { useNavigate } from 'react-router-dom'; function resolveUrlToRelative(url, baseUrl) { const parsedAppUrl = new URL(baseUrl); const appUrlPath = `${parsedAppUrl.origin}${parsedAppUrl.pathname.replace( /\/$/, "" )}`; const relativeUrl = url.replace(appUrlPath, "").replace(/^\/+/, ""); const parsedUrl = new URL(`http://localhost/${relativeUrl}`); return `${parsedUrl.pathname}${parsedUrl.search}${parsedUrl.hash}`; } function useNavigateUrl() { const navigate = useRef(useNavigate()); const configApi = useApi(configApiRef); const appBaseUrl = configApi.getOptionalString("app.baseUrl"); const navigateFn = useCallback( (to) => { let url = to; if (appBaseUrl) { try { url = resolveUrlToRelative(to, appBaseUrl); } catch (err) { } } navigate.current(url); }, [appBaseUrl] ); return navigateFn; } export { resolveUrlToRelative, useNavigateUrl }; //# sourceMappingURL=useNavigateUrl.esm.js.map