Demo:修复复制知犀思维导图多个节点时无法粘贴的问题

This commit is contained in:
wanglin2 2023-09-22 10:57:32 +08:00
parent a9ea4b8e33
commit 518b7642a0

View File

@ -1,30 +1,41 @@
import { imgToDataUrl } from 'simple-mind-map/src/utils/index' import { imgToDataUrl } from 'simple-mind-map/src/utils/index'
// 处理知犀 // 处理知犀
const handleZHIXI = async text => { const handleZHIXI = async data => {
text = text.replace('￿', '')
try { try {
// 只处理一项 try {
const node = JSON.parse(text)[0] if (!Array.isArray(data)) {
const newNode = {} data = String(data).replace('￿', '')
data = JSON.parse(data)
}
} catch (error) {
console.log(error)
}
if (!Array.isArray(data)) {
data = []
}
const newNodeList = []
const waitLoadImageList = [] const waitLoadImageList = []
const walk = async (root, newRoot) => { const walk = (list, newList) => {
list.forEach(async item => {
let newRoot = {}
newList.push(newRoot)
newRoot.data = { newRoot.data = {
text: root.data.text, text: item.data.text,
hyperlink: root.data.hyperlink, hyperlink: item.data.hyperlink,
hyperlinkTitle: root.data.hyperlinkTitle, hyperlinkTitle: item.data.hyperlinkTitle,
note: root.data.note note: item.data.note
} }
// 图片 // 图片
if (root.data.image) { if (item.data.image) {
let resolve = null let resolve = null
let promise = new Promise(_resolve => { let promise = new Promise(_resolve => {
resolve = _resolve resolve = _resolve
}) })
waitLoadImageList.push(promise) waitLoadImageList.push(promise)
try { try {
newRoot.data.image = await imgToDataUrl(root.data.image) newRoot.data.image = await imgToDataUrl(item.data.image)
newRoot.data.imageSize = root.data.imageSize newRoot.data.imageSize = item.data.imageSize
resolve() resolve()
} catch (error) { } catch (error) {
resolve() resolve()
@ -32,26 +43,27 @@ const handleZHIXI = async text => {
} }
// 子节点 // 子节点
newRoot.children = [] newRoot.children = []
if (root.children && root.children.length > 0) { if (item.children && item.children.length > 0) {
root.children.forEach(item => { const children = []
item.children.forEach(item2 => {
// 概要 // 概要
if (item.data.type === 'generalize') { if (item2.data.type === 'generalize') {
newRoot.data.generalization = { newRoot.data.generalization = {
text: item.data.text text: item2.data.text
} }
return } else {
children.push(item2)
}
})
walk(children, newRoot.children)
} }
let newChild = {}
newRoot.children.push(newChild)
walk(item, newChild)
}) })
} }
} walk(data, newNodeList)
walk(node, newNode)
await Promise.all(waitLoadImageList) await Promise.all(waitLoadImageList)
return { return {
simpleMindMap: true, simpleMindMap: true,
data: newNode data: newNodeList
} }
} catch (error) { } catch (error) {
return '' return ''
@ -59,7 +71,15 @@ const handleZHIXI = async text => {
} }
const handleClipboardText = async text => { const handleClipboardText = async text => {
// 处理知犀数据 // 知犀数据格式1
try {
let parsedData = JSON.parse(text)
if (parsedData.__c_zx_v !== undefined) {
const res = await handleZHIXI(parsedData.children)
return res
}
} catch (error) {}
// 知犀数据格式2
if (text.includes('￿')) { if (text.includes('￿')) {
const res = await handleZHIXI(text) const res = await handleZHIXI(text)
return res return res