43 lines
1.4 KiB
Vue
43 lines
1.4 KiB
Vue
<script setup lang="ts">
|
|
import type { CopyrightFrontmatter, CopyrightOptions } from '../../shared/index.js'
|
|
import VPCopyright from '@theme/VPCopyright.vue'
|
|
import VPDocHeader from '@theme/VPDocHeader.vue'
|
|
import { computed } from 'vue'
|
|
import { isPlainObject } from 'vuepress/shared'
|
|
import { useData } from '../composables/index.js'
|
|
|
|
const { theme, frontmatter } = useData<'post'>()
|
|
|
|
const copyright = computed<CopyrightFrontmatter | null>(() => {
|
|
if ((frontmatter.value.copyright ?? theme.value.copyright ?? false) === false) {
|
|
return null
|
|
}
|
|
const docCopyright = (isPlainObject(frontmatter.value.copyright)
|
|
? frontmatter.value.copyright
|
|
: { license: frontmatter.value.copyright === true ? '' : frontmatter.value.copyright }) as CopyrightFrontmatter
|
|
|
|
if (!theme.value.copyright)
|
|
return docCopyright
|
|
|
|
const themeCopyright = (isPlainObject(theme.value.copyright)
|
|
? theme.value.copyright
|
|
: { license: theme.value.copyright === true ? undefined : theme.value.copyright }) as CopyrightOptions
|
|
|
|
docCopyright.license ??= themeCopyright.license
|
|
docCopyright.author ??= themeCopyright.author
|
|
docCopyright.creation ??= themeCopyright.creation
|
|
|
|
return docCopyright
|
|
})
|
|
</script>
|
|
|
|
<template>
|
|
<div v-if="copyright" class="vp-doc-copyright">
|
|
<VPDocHeader anchor="doc-copyright">
|
|
{{ theme.copyrightText || 'Copyright' }}
|
|
</VPDocHeader>
|
|
|
|
<VPCopyright v-bind="copyright" />
|
|
</div>
|
|
</template>
|