diff --git a/simple-mind-map/src/constants/defaultOptions.js b/simple-mind-map/src/constants/defaultOptions.js index c13b3b05..d49a52aa 100644 --- a/simple-mind-map/src/constants/defaultOptions.js +++ b/simple-mind-map/src/constants/defaultOptions.js @@ -320,5 +320,7 @@ export const defaultOpt = { addContentToHeader: null, addContentToFooter: null, // 演示插件配置 - demonstrateConfig: null + demonstrateConfig: null, + // 移动节点到画布中心、回到根节点等操作时是否将缩放层级复位为100% + resetScaleOnMoveNodeToCenter: false } diff --git a/simple-mind-map/src/core/render/Render.js b/simple-mind-map/src/core/render/Render.js index 42e1779c..a7e9d809 100644 --- a/simple-mind-map/src/core/render/Render.js +++ b/simple-mind-map/src/core/render/Render.js @@ -1801,19 +1801,28 @@ class Render { // 移动节点到画布中心 moveNodeToCenter(node) { + const { resetScaleOnMoveNodeToCenter } = this.mindMap.opt + let { transform, state } = this.mindMap.view.getTransformData() + let { left, top, width, height } = node + if (!resetScaleOnMoveNodeToCenter) { + left *= transform.scaleX + top *= transform.scaleY + width *= transform.scaleX + height *= transform.scaleY + } let halfWidth = this.mindMap.width / 2 let halfHeight = this.mindMap.height / 2 - let { left, top, width, height } = node let nodeCenterX = left + width / 2 let nodeCenterY = top + height / 2 - let { state } = this.mindMap.view.getTransformData() let targetX = halfWidth - state.x let targetY = halfHeight - state.y let offsetX = targetX - nodeCenterX let offsetY = targetY - nodeCenterY this.mindMap.view.translateX(offsetX) this.mindMap.view.translateY(offsetY) - this.mindMap.view.setScale(1) + if (resetScaleOnMoveNodeToCenter) { + this.mindMap.view.setScale(1) + } } // 回到中心主题,即设置根节点到画布中心