Feat:支持自定义处理剪贴板中的文本数据

This commit is contained in:
wanglin2 2023-08-13 08:47:35 +08:00
parent 2c56cd453c
commit 726ebc5e88
2 changed files with 33 additions and 6 deletions

View File

@ -132,5 +132,23 @@ export const defaultOpt = {
enableAutoEnterTextEditWhenKeydown: false,
// 设置富文本节点编辑框和节点大小一致,形成伪原地编辑的效果
// 需要注意的是,只有当节点内只有文本、且形状是矩形才会有比较好的效果
richTextEditFakeInPlace: false
richTextEditFakeInPlace: false,
// 自定义对剪贴板文本的处理。当按ctrl+v粘贴时会读取用户剪贴板中的文本和图片默认只会判断文本是否是普通文本和simple-mind-map格式的节点数据如果你想处理其他思维导图的数据比如processon、zhixi等那么可以传递一个函数接受当前剪贴板中的文本为参数返回处理后的数据可以返回两种类型
/*
1.返回一个纯文本那么会直接以该文本创建一个子节点
2.返回一个节点对象格式如下
{
// 代表是simple-mind-map格式的数据
simpleMindMap: true,
// 节点数据同simple-mind-map节点数据格式
data: {
data: {
text: ''
},
children: []
}
}
*/
customHandleClipboardText: null
}

View File

@ -668,12 +668,21 @@ class Render {
if (text) {
// 判断粘贴的是否是simple-mind-map的数据
let smmData = null
try {
const parsedData = JSON.parse(text)
if (parsedData && parsedData.simpleMindMap) {
smmData = parsedData.data
if (this.mindMap.opt.customHandleClipboardText) {
const res = this.mindMap.opt.customHandleClipboardText(text)
if (typeof res === 'object' && res.simpleMindMap) {
smmData = res.data
} else {
text = String(res)
}
} catch (error) {}
} else {
try {
const parsedData = JSON.parse(text)
if (parsedData && parsedData.simpleMindMap) {
smmData = parsedData.data
}
} catch (error) {}
}
if (smmData) {
this.mindMap.execCommand(
'INSERT_CHILD_NODE',