| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455 |
- import { endingSlashRE, isActive, isExternal, normalize } from 'vitepress/dist/client/theme-default/utils'
- import type { Route } from 'vitepress'
- export * from './colors'
- export { isArray, isNullish, isExternal, isActive, normalize, joinUrl, ensureEndingSlash, ensureStartingSlash, removeExtention } from 'vitepress/dist/client/theme-default/utils'
- export function utoa(data: string): string {
- return btoa(unescape(encodeURIComponent(data)))
- }
- export const throttleAndDebounce = (fn: () => any, delay: number) => {
- let timeout: ReturnType<typeof setTimeout>
- let called = false
- return () => {
- if (timeout) {
- clearTimeout(timeout)
- }
- if (!called) {
- fn()
- called = true
- setTimeout(() => {
- called = false
- }, delay)
- } else {
- timeout = setTimeout(fn, delay)
- }
- }
- }
- // When match === true, meaning `path` is a string for build regex
- export const isActiveLink = (route: Route, pathPattern: string, match?: boolean) => {
- if (!match) return isActive(route, pathPattern)
- const regex = new RegExp(pathPattern)
- return regex.test(normalize(`/${route.data.relativePath}`))
- }
- export function createGitHubUrl(docsRepo: string, docsDir: string, docsBranch: string, path: string, folder = 'examples/', ext = '.vue') {
- const base = isExternal(docsRepo) ? docsRepo : `https://github.com/${docsRepo}`
- return `${base.replace(endingSlashRE, '')}/edit/${docsBranch}/${docsDir ? `${docsDir.replace(endingSlashRE, '')}/` : ''}${folder || ''}${path}${ext || ''}`
- }
- export function createCrowdinUrl(targetLang: string) {
- let translateLang = ''
- // for zh-CN zh-HK zh-TW, maybe later we will have cases like Chinese lang
- // for now we just keep it as simple as possible.
- if (targetLang.startsWith('zh-')) {
- translateLang = targetLang.split('-').join('').toLocaleLowerCase()
- } else {
- translateLang = targetLang.split('-').shift()!.toLocaleLowerCase()
- }
- return `https://crowdin.com/translate/element-plus/all/en-${translateLang}`
- }
|