feat(编辑器): 增强tiptap编辑器的mention和文本转换功能

修改mention插件的触发字符配置,并优化tiptapToString方法以正确处理mention、表情和换行符。现在能够保留表情的alt文本并正确格式化mention输出。
This commit is contained in:
Phoenix 2025-07-07 10:41:12 +08:00
parent e5a5b36dcc
commit 516680d0cb

View File

@ -209,6 +209,9 @@ const editor = useEditor({
},
suggestion: {
...suggestion,
char: '@', //
allowSpaces: false, //
allowedPrefixes: null, //
items: ({ query }) => {
return suggestion.items({
query,
@ -496,7 +499,36 @@ function tiptapToMessage() {
function tiptapToString() {
if (!editor.value) return ''
return editor.value.getText()
const json = editor.value.getJSON()
let result = ''
const processInlines = nodes => {
nodes.forEach(node => {
if (node.type === 'text') {
result += node.text
} else if (node.type === 'mention') {
result += `@${node.attrs.label} `
} else if (node.type === 'emoji') {
// 使alt
result += node.attrs.alt || ''
} else if (node.type === 'hardBreak') {
result += '\n'
}
})
}
if (json.content) {
json.content.forEach(node => {
if (node.type === 'paragraph') {
if (node.content) {
processInlines(node.content)
}
result += '\n'
}
})
}
return result.trim()
}