mind-map/web/src/utils/handleClipboardText.js

91 lines
2.3 KiB
JavaScript

import { imgToDataUrl } from 'simple-mind-map/src/utils/index'
// 处理知犀
const handleZHIXI = async data => {
try {
try {
if (!Array.isArray(data)) {
data = String(data).replace('￿', '')
data = JSON.parse(data)
}
} catch (error) {
console.log(error)
}
if (!Array.isArray(data)) {
data = []
}
const newNodeList = []
const waitLoadImageList = []
const walk = (list, newList) => {
list.forEach(async item => {
let newRoot = {}
newList.push(newRoot)
newRoot.data = {
text: item.data.text,
hyperlink: item.data.hyperlink,
hyperlinkTitle: item.data.hyperlinkTitle,
note: item.data.note
}
// 图片
if (item.data.image) {
let resolve = null
let promise = new Promise(_resolve => {
resolve = _resolve
})
waitLoadImageList.push(promise)
try {
newRoot.data.image = await imgToDataUrl(item.data.image)
newRoot.data.imageSize = item.data.imageSize
resolve()
} catch (error) {
resolve()
}
}
// 子节点
newRoot.children = []
if (item.children && item.children.length > 0) {
const children = []
item.children.forEach(item2 => {
// 概要
if (item2.data.type === 'generalize') {
newRoot.data.generalization = {
text: item2.data.text
}
} else {
children.push(item2)
}
})
walk(children, newRoot.children)
}
})
}
walk(data, newNodeList)
await Promise.all(waitLoadImageList)
return {
simpleMindMap: true,
data: newNodeList
}
} catch (error) {
return ''
}
}
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('￿')) {
const res = await handleZHIXI(text)
return res
}
return ''
}
export default handleClipboardText