From 2a8b71497ffe460e9960ead9c69f308b4a260cb6 Mon Sep 17 00:00:00 2001 From: wanglin2 <1013335014@qq.com> Date: Sun, 13 Aug 2023 09:49:29 +0800 Subject: [PATCH] =?UTF-8?q?Feat:=E8=87=AA=E5=AE=9A=E4=B9=89=E5=A4=84?= =?UTF-8?q?=E7=90=86=E5=89=AA=E8=B4=B4=E6=9D=BF=E5=87=BD=E6=95=B0=E6=94=AF?= =?UTF-8?q?=E6=8C=81=E8=BF=94=E5=9B=9EPromise=E5=AE=9E=E4=BE=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/constants/defaultOptions.js | 1 + simple-mind-map/src/core/render/Render.js | 26 +++++++++++++------ simple-mind-map/src/parse/xmind.js | 12 ++++----- 3 files changed, 25 insertions(+), 14 deletions(-) diff --git a/simple-mind-map/src/constants/defaultOptions.js b/simple-mind-map/src/constants/defaultOptions.js index 1ede82d0..7453122d 100644 --- a/simple-mind-map/src/constants/defaultOptions.js +++ b/simple-mind-map/src/constants/defaultOptions.js @@ -150,5 +150,6 @@ export const defaultOpt = { } } */ + // 如果你的处理逻辑存在异步逻辑,也可以返回一个promise customHandleClipboardText: null } diff --git a/simple-mind-map/src/core/render/Render.js b/simple-mind-map/src/core/render/Render.js index 2d4bc83f..02e11ff9 100644 --- a/simple-mind-map/src/core/render/Render.js +++ b/simple-mind-map/src/core/render/Render.js @@ -12,7 +12,8 @@ import { simpleDeepClone, walk, bfsWalk, - loadImage + loadImage, + isUndef } from '../../utils' import { shapeList } from './node/Shape' import { lineStyleProps } from '../../themes/default' @@ -668,14 +669,23 @@ class Render { if (text) { // 判断粘贴的是否是simple-mind-map的数据 let smmData = null + let useDefault = true + // 用户自定义处理 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) - } - } else { + try { + const res = await this.mindMap.opt.customHandleClipboardText(text) + if (!isUndef(res)) { + useDefault = false + if (typeof res === 'object' && res.simpleMindMap) { + smmData = res.data + } else { + text = String(res) + } + } + } catch (error) {} + } + // 默认处理 + if (useDefault) { try { const parsedData = JSON.parse(text) if (parsedData && parsedData.simpleMindMap) { diff --git a/simple-mind-map/src/parse/xmind.js b/simple-mind-map/src/parse/xmind.js index cdb752d2..b852067d 100644 --- a/simple-mind-map/src/parse/xmind.js +++ b/simple-mind-map/src/parse/xmind.js @@ -64,13 +64,13 @@ const transformXmind = async (content, files) => { } // 图片 if (node.image && /\.(jpg|jpeg|png|gif|webp)$/.test(node.image.src)) { + // 处理异步逻辑 + let resolve = null + let promise = new Promise(_resolve => { + resolve = _resolve + }) + waitLoadImageList.push(promise) try { - // 处理异步逻辑 - let resolve = null - let promise = new Promise(_resolve => { - resolve = _resolve - }) - waitLoadImageList.push(promise) // 读取图片 let imageType = /\.([^.]+)$/.exec(node.image.src)[1] let imageBase64 =