返回 slidev
titles.ts
根目录 / packages / slidev / node / virtual / titles.ts
1 import type { VirtualModuleTemplate } from './types'
2
3 export const templateTitleRendererMd: VirtualModuleTemplate = {
4 id: '/@slidev/title-renderer.md',
5 getContent({ data }) {
6 const lines = data.slides
7 .map(({ title }, i) => `<template ${i === 0 ? 'v-if' : 'v-else-if'}="no === ${i + 1}">\n\n${title}\n\n</template>`)
8
9 lines.push(
10 `<script setup lang="ts">`,
11 `import { useSlideContext } from '@slidev/client/context.ts'`,
12 `import { computed } from 'vue'`,
13 `const props = defineProps<{ no?: number | string }>()`,
14 `const { $page } = useSlideContext()`,
15 `const no = computed(() => +(props.no ?? $page.value))`,
16 `</script>`,
17 )
18
19 return lines.join('\n')
20 },
21 }
22
23 export const templateTitleRenderer: VirtualModuleTemplate = {
24 id: '/@slidev/title-renderer',
25 async getContent() {
26 return 'export { default } from "/@slidev/title-renderer.md"'
27 },
28 }
29
29 lines TYPESCRIPT