123456789101112131415161718192021222324252627282930313233343536373839 |
- 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,
- }
- }
|