mirror of
https://github.com/JefferyHcool/BiliNote.git
synced 2026-06-18 06:00:15 +08:00
backend 的 note_helper 会在笔记开头加一行 '> 来源链接:<url>'。侧边栏顶部已经有 封面 + 标题 + 跳原片链接的卡片,再在正文里出现一遍是冗余还吃高度。 MindMap 也会把它当作根节点的兄弟节点,影响导图结构。 加 stripSourceLink() helper(regex 直接复刻 web 端 MarkdownViewer.tsx:468 的处理), 在 MarkdownView 与 MindMap 渲染前剥掉。复制 / 下载导出的 .md 仍保留原行,便于溯源。 Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
33 lines
897 B
Vue
33 lines
897 B
Vue
<script setup lang="ts">
|
|
import { onMounted, ref, watch } from 'vue'
|
|
import { Transformer } from 'markmap-lib'
|
|
import { Markmap } from 'markmap-view'
|
|
import { absolutizeMarkdownImages, stripSourceLink } from '~/logic/api'
|
|
|
|
const props = defineProps<{ markdown: string }>()
|
|
|
|
const svgRef = ref<SVGSVGElement | null>(null)
|
|
let mm: Markmap | null = null
|
|
const transformer = new Transformer()
|
|
|
|
function render() {
|
|
if (!svgRef.value)
|
|
return
|
|
const md = absolutizeMarkdownImages(stripSourceLink(props.markdown || ''))
|
|
const { root } = transformer.transform(md)
|
|
if (!mm)
|
|
mm = Markmap.create(svgRef.value, undefined, root)
|
|
else
|
|
mm.setData(root).then(() => mm?.fit())
|
|
}
|
|
|
|
onMounted(render)
|
|
watch(() => props.markdown, render)
|
|
</script>
|
|
|
|
<template>
|
|
<div class="w-full h-full bg-white rounded border overflow-hidden">
|
|
<svg ref="svgRef" class="w-full h-full" />
|
|
</div>
|
|
</template>
|