import { useSiteData } from 'vitepress';
export const hashRE = /#.*$/;
export const extRE = /(index)?\.(md|html)$/;
export const endingSlashRE = /\/$/;
export const outboundRE = /^[a-z]+:/i;
export function withBase(path) {
    return (useSiteData().value.base + path).replace(/\/+/g, '/');
}
export function isExternal(path) {
    return outboundRE.test(path);
}
export function isActive(route, path) {
    if (path === undefined) {
        return false;
    }
    const routePath = normalize(route.path);
    const pagePath = normalize(path);
    return routePath === pagePath;
}
export function normalize(path) {
    return decodeURI(path).replace(hashRE, '').replace(extRE, '');
}
export function joinUrl(base, path) {
    const baseEndsWithSlash = base.endsWith('/');
    const pathStartsWithSlash = path.startsWith('/');
    if (baseEndsWithSlash && pathStartsWithSlash) {
        return base.slice(0, -1) + path;
    }
    if (!baseEndsWithSlash && !pathStartsWithSlash) {
        return `${base}/${path}`;
    }
    return base + path;
}
/**
 * get the path without filename (the last segment). for example, if the given
 * path is `/guide/getting-started.html`, this method will return `/guide/`.
 * Always with a trailing slash.
 */
export function getPathDirName(path) {
    const segments = path.split('/');
    if (segments[segments.length - 1]) {
        segments.pop();
    }
    return ensureEndingSlash(segments.join('/'));
}
export function ensureEndingSlash(path) {
    return /(\.html|\/)$/.test(path) ? path : `${path}/`;
}
