@backstage/plugin-techdocs
Version:
The Backstage plugin that renders technical documentation for your components
37 lines (34 loc) • 1.11 kB
JavaScript
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