27 lines
745 B
TypeScript
27 lines
745 B
TypeScript
|
|
import { useMemo } from 'react';
|
||
|
|
import { useClientConfig } from './useClientConfig';
|
||
|
|
import { trimLeadingSlash, trimSlash, trimTrailingSlash } from '../utils/common';
|
||
|
|
|
||
|
|
export const usePathWithOrigin = (path: string): string => {
|
||
|
|
const { hashRouter } = useClientConfig();
|
||
|
|
const { origin } = window.location;
|
||
|
|
|
||
|
|
const pathWithOrigin = useMemo(() => {
|
||
|
|
let url: string = trimSlash(origin);
|
||
|
|
|
||
|
|
url += `/${trimSlash(import.meta.env.BASE_URL ?? '')}`;
|
||
|
|
url = trimTrailingSlash(url);
|
||
|
|
|
||
|
|
if (hashRouter?.enabled) {
|
||
|
|
url += `/#/${trimSlash(hashRouter.basename ?? '')}`;
|
||
|
|
url = trimTrailingSlash(url);
|
||
|
|
}
|
||
|
|
|
||
|
|
url += `/${trimLeadingSlash(path)}`;
|
||
|
|
|
||
|
|
return url;
|
||
|
|
}, [path, hashRouter, origin]);
|
||
|
|
|
||
|
|
return pathWithOrigin;
|
||
|
|
};
|