diff --git a/simple-mind-map/index.js b/simple-mind-map/index.js index 32a23c7b..1b283f4c 100644 --- a/simple-mind-map/index.js +++ b/simple-mind-map/index.js @@ -10,7 +10,7 @@ import BatchExecution from './src/BatchExecution' import { layoutValueList, CONSTANTS } from './src/utils/constant' import { SVG } from '@svgdotjs/svg.js' import { simpleDeepClone } from './src/utils' -import defaultTheme from './src/themes/default' +import defaultTheme, { checkIsNodeSizeIndependenceConfig } from './src/themes/default' // 默认选项配置 const defaultOpt = { @@ -267,7 +267,9 @@ class MindMap { // 设置主题配置 setThemeConfig(config) { this.opt.themeConfig = config - this.render(null, CONSTANTS.CHANGE_THEME) + // 检查改变的是否是节点大小无关的主题属性 + let res = checkIsNodeSizeIndependenceConfig(config) + 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 2b5e95cd..c9d9bfa6 100644 --- a/simple-mind-map/src/themes/default.js +++ b/simple-mind-map/src/themes/default.js @@ -156,4 +156,38 @@ export const supportActiveStyle = [ 'borderRadius' ] +// 检测主题配置是否是节点大小无关的 +const nodeSizeIndependenceList = [ + 'lineWidth', + 'lineColor', + 'lineDasharray', + 'lineStyle', + 'generalizationLineWidth', + 'generalizationLineColor', + 'associativeLineWidth', + 'associativeLineColor', + 'associativeLineActiveWidth', + 'associativeLineActiveColor', + 'associativeLineTextColor', + 'associativeLineTextFontSize', + 'associativeLineTextLineHeight', + 'associativeLineTextFontFamily', + 'backgroundColor', + 'backgroundImage', + 'backgroundRepeat', + 'backgroundPosition', + 'backgroundSize' +] +export const checkIsNodeSizeIndependenceConfig = (config) => { + let keys = Object.keys(config) + for(let i = 0; i < keys.length; i++) { + if (!nodeSizeIndependenceList.find((item) => { + return item === keys[i] + })) { + return false + } + } + return true +} + export const lineStyleProps = ['lineColor', 'lineDasharray', 'lineWidth']