From f92146a1f436597987e802b8057f763dca6728eb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=A1=97=E8=A7=92=E5=B0=8F=E6=9E=97?= <1013335014@qq.com> Date: Fri, 26 Jul 2024 17:05:09 +0800 Subject: [PATCH] =?UTF-8?q?Fix=EF=BC=9A=E4=BF=AE=E5=A4=8D=E8=B7=A8?= =?UTF-8?q?=E5=B1=82=E7=BA=A7=E5=A4=8D=E5=88=B6=E8=8A=82=E7=82=B9=E6=97=B6?= =?UTF-8?q?=EF=BC=8C=E8=8A=82=E7=82=B9=E7=9A=84=E5=AF=8C=E6=96=87=E6=9C=AC?= =?UTF-8?q?=E6=A0=B7=E5=BC=8F=E6=B2=A1=E6=9C=89=E6=9B=B4=E6=96=B0=E7=9A=84?= =?UTF-8?q?=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- simple-mind-map/src/core/render/Render.js | 13 ++++++++++++- simple-mind-map/src/plugins/RichText.js | 3 ++- simple-mind-map/src/utils/index.js | 3 ++- 3 files changed, 16 insertions(+), 3 deletions(-) diff --git a/simple-mind-map/src/core/render/Render.js b/simple-mind-map/src/core/render/Render.js index d984310b..e6cfe40e 100644 --- a/simple-mind-map/src/core/render/Render.js +++ b/simple-mind-map/src/core/render/Render.js @@ -1482,7 +1482,18 @@ class Render { node.nodeData.children.push( ...data.map(item => { const newData = simpleDeepClone(item) - createUidForAppointNodes([newData], true) + createUidForAppointNodes([newData], true, node => { + // 可能跨层级复制,那么富文本样式需要更新 + if (this.mindMap.richText) { + // 如果设置了自定义样式那么不需要更新 + if ( + this.mindMap.richText.checkNodeHasCustomRichTextStyle(node.data) + ) { + return + } + node.data.resetRichText = true + } + }) return newData }) ) diff --git a/simple-mind-map/src/plugins/RichText.js b/simple-mind-map/src/plugins/RichText.js index 448fa328..962d5e58 100644 --- a/simple-mind-map/src/plugins/RichText.js +++ b/simple-mind-map/src/plugins/RichText.js @@ -13,6 +13,7 @@ import { nodeRichTextToTextWithWrap } from '../utils' import { CONSTANTS } from '../constants/constant' +import Node from '../core/render/node/Node' let extended = false @@ -676,7 +677,7 @@ class RichText { 'textDecoration', 'color' ] - const nodeData = node.getData() + const nodeData = node instanceof Node ? node.getData() : node for (let i = 0; i < list.length; i++) { if (nodeData[list[i]] !== undefined) { return true diff --git a/simple-mind-map/src/utils/index.js b/simple-mind-map/src/utils/index.js index 3ecf947b..dad28394 100644 --- a/simple-mind-map/src/utils/index.js +++ b/simple-mind-map/src/utils/index.js @@ -948,7 +948,7 @@ export const addDataToAppointNodes = (appointNodes, data = {}) => { // 给指定的节点列表树数据添加uid,会修改原数据 // createNewId默认为false,即如果节点不存在uid的话,会创建新的uid。如果传true,那么无论节点数据原来是否存在uid,都会创建新的uid -export const createUidForAppointNodes = (appointNodes, createNewId = false) => { +export const createUidForAppointNodes = (appointNodes, createNewId = false, handle = null) => { const walk = list => { list.forEach(node => { if (!node.data) { @@ -957,6 +957,7 @@ export const createUidForAppointNodes = (appointNodes, createNewId = false) => { if (createNewId || isUndef(node.data.uid)) { node.data.uid = createUid() } + handle && handle(node) if (node.children && node.children.length > 0) { walk(node.children) }