12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485 |
- 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}`
- }
|