From f7f234b4cb674effedeb81b99480882bf1e0c50a Mon Sep 17 00:00:00 2001 From: wanglin2 <1013335014@qq.com> Date: Mon, 28 Aug 2023 20:23:23 +0800 Subject: [PATCH] =?UTF-8?q?Feat=EF=BC=9A=E4=BC=98=E5=8C=96=E5=9F=BA?= =?UTF-8?q?=E7=A1=80=E6=A0=B7=E5=BC=8F=E7=9A=84=E8=AE=BE=E7=BD=AE=EF=BC=8C?= =?UTF-8?q?=E4=BF=AE=E6=94=B9=E4=B8=8D=E5=BD=B1=E5=93=8D=E5=A4=A7=E5=B0=8F?= =?UTF-8?q?=E7=9A=84=E4=B8=BB=E9=A2=98=E5=B1=9E=E6=80=A7=E6=97=B6=E4=B8=8D?= =?UTF-8?q?=E8=A7=A6=E5=8F=91=E5=85=A8=E9=87=8F=E6=B8=B2=E6=9F=93?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- simple-mind-map/index.js | 6 ++++-- simple-mind-map/src/themes/default.js | 3 ++- simple-mind-map/src/utils/index.js | 25 +++++++++++++++++++++++++ 3 files changed, 31 insertions(+), 3 deletions(-) diff --git a/simple-mind-map/index.js b/simple-mind-map/index.js index 71075b36..26715799 100644 --- a/simple-mind-map/index.js +++ b/simple-mind-map/index.js @@ -15,7 +15,7 @@ import { cssContent } from './src/constants/constant' import { SVG } from '@svgdotjs/svg.js' -import { simpleDeepClone, getType } from './src/utils' +import { simpleDeepClone, getType, getObjectChangedProps } from './src/utils' import defaultTheme, { checkIsNodeSizeIndependenceConfig } from './src/themes/default' @@ -201,9 +201,11 @@ class MindMap { // 设置主题配置 setThemeConfig(config) { + // 计算改变了的配置 + const changedConfig = getObjectChangedProps(this.themeConfig, config) this.opt.themeConfig = config // 检查改变的是否是节点大小无关的主题属性 - let res = checkIsNodeSizeIndependenceConfig(config) + let res = checkIsNodeSizeIndependenceConfig(changedConfig) this.render(null, res ? '' : CONSTANTS.CHANGE_THEME) } diff --git a/simple-mind-map/src/themes/default.js b/simple-mind-map/src/themes/default.js index addc497a..34bd20b6 100644 --- a/simple-mind-map/src/themes/default.js +++ b/simple-mind-map/src/themes/default.js @@ -158,7 +158,8 @@ const nodeSizeIndependenceList = [ 'backgroundImage', 'backgroundRepeat', 'backgroundPosition', - 'backgroundSize' + 'backgroundSize', + 'rootLineKeepSameInCurve' ] export const checkIsNodeSizeIndependenceConfig = (config) => { let keys = Object.keys(config) diff --git a/simple-mind-map/src/utils/index.js b/simple-mind-map/src/utils/index.js index c934eca6..405e2c56 100644 --- a/simple-mind-map/src/utils/index.js +++ b/simple-mind-map/src/utils/index.js @@ -632,3 +632,28 @@ export const isMobile = () => { navigator.userAgent ) } + +// 获取对象改变了的的属性 +export const getObjectChangedProps = (oldObject, newObject) => { + const res = {} + Object.keys(newObject).forEach((prop) => { + const oldVal = oldObject[prop] + const newVal = newObject[prop] + if (getType(oldVal) !== getType(newVal)) { + res[prop] = newVal + return + } + if (getType(oldVal) === 'Object') { + if (JSON.stringify(oldVal) !== JSON.stringify(newVal)) { + res[prop] = newVal + return + } + } else { + if (oldVal !== newVal) { + res[prop] = newVal + return + } + } + }) + return res +} \ No newline at end of file