mirror of
https://gitee.com/element-plus/element-plus.git
synced 2024-12-14 01:11:25 +08:00
58 lines
1.4 KiB
TypeScript
58 lines
1.4 KiB
TypeScript
import { computed } from 'vue'
|
|
import { useData } from 'vitepress'
|
|
import { useLang } from '../composables/lang'
|
|
import { useLocale } from '../composables/locale'
|
|
import { defaultLang } from '../constant'
|
|
import { createCrowdinUrl, createGitHubUrl } from '../utils'
|
|
import editLinkLocale from '../../i18n/component/edit-link.json'
|
|
|
|
export function useEditLink() {
|
|
const { page, theme, frontmatter } = useData()
|
|
const lang = useLang()
|
|
const editLink = useLocale(editLinkLocale)
|
|
|
|
const canEditSource = computed(() => {
|
|
return lang.value === defaultLang
|
|
})
|
|
|
|
const url = computed(() => {
|
|
if (canEditSource.value) {
|
|
const {
|
|
repo,
|
|
docsDir = '',
|
|
docsBranch = 'dev',
|
|
docsRepo = repo,
|
|
editLinks,
|
|
} = theme.value
|
|
const showEditLink =
|
|
frontmatter.value.editLink != null
|
|
? frontmatter.value.editLink
|
|
: editLinks
|
|
const { relativePath } = page.value
|
|
if (!showEditLink || !relativePath || !repo) {
|
|
return null
|
|
}
|
|
return createGitHubUrl(
|
|
docsRepo,
|
|
docsDir,
|
|
docsBranch,
|
|
relativePath,
|
|
'',
|
|
''
|
|
)
|
|
}
|
|
|
|
return createCrowdinUrl(lang.value)
|
|
})
|
|
const text = computed(() => {
|
|
return canEditSource.value
|
|
? editLink.value['edit-on-github']
|
|
: editLink.value['edit-on-crowdin']
|
|
})
|
|
|
|
return {
|
|
url,
|
|
text,
|
|
}
|
|
}
|