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: {
...suggestion, ...suggestion,
char: '@', //
allowSpaces: false, //
allowedPrefixes: null, //
items: ({ query }) => { items: ({ query }) => {
return suggestion.items({ return suggestion.items({
query, query,
@ -496,7 +499,36 @@ function tiptapToMessage() {
function tiptapToString() { function tiptapToString() {
if (!editor.value) return '' 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()
} }