pengzhanbo 49b37962e5
feat(theme): add width/height props to <VPImage> (#475)
* feat(theme): add `width/height` props to `<VPImage>`

* chore: tweak
2025-02-23 01:48:54 +08:00

48 lines
1.1 KiB
TypeScript

export const EXTERNAL_URL_RE = /^[a-z]+:/i
export const PATHNAME_PROTOCOL_RE = /^pathname:\/\//
export const HASH_RE = /#.*$/
export const EXT_RE = /(index|README)?\.(md|html)$/
export const inBrowser = typeof document !== 'undefined'
export function toArray<T>(value: T | T[]): T[] {
return Array.isArray(value) ? value : [value]
}
export function isActive(
currentPath: string,
matchPath?: string,
asRegex = false,
): boolean {
if (matchPath === undefined)
return false
currentPath = normalize(`/${currentPath.replace(/^\//, '')}`)
if (asRegex)
return new RegExp(matchPath).test(currentPath)
if (normalize(matchPath) !== currentPath)
return false
const hashMatch = matchPath.match(HASH_RE)
if (hashMatch)
return (inBrowser ? location.hash : '') === hashMatch[0]
return true
}
export function normalize(path: string): string {
return decodeURI(path).replace(HASH_RE, '').replace(EXT_RE, '')
}
export function numToUnit(value?: string | number): string {
if (typeof value === 'undefined')
return ''
if (String(Number(value)) === String(value)) {
return `${value}px`
}
return value as string
}