UNPKG

leo-mind-map

Version:

一个简单的web在线思维导图

58 lines (53 loc) 1.37 kB
// 画布自动移动类 class AutoMove { constructor(mindMap) { this.mindMap = mindMap this.autoMoveTimer = null } // 鼠标移动事件 onMove(x, y, callback = () => {}, handle = () => {}) { callback() // 检测边缘移动 let step = this.mindMap.opt.selectTranslateStep let limit = this.mindMap.opt.selectTranslateLimit let count = 0 // 左边缘 if (x <= this.mindMap.elRect.left + limit) { handle('left', step) this.mindMap.view.translateX(step) count++ } // 右边缘 if (x >= this.mindMap.elRect.right - limit) { handle('right', step) this.mindMap.view.translateX(-step) count++ } // 上边缘 if (y <= this.mindMap.elRect.top + limit) { handle('top', step) this.mindMap.view.translateY(step) count++ } // 下边缘 if (y >= this.mindMap.elRect.bottom - limit) { handle('bottom', step) this.mindMap.view.translateY(-step) count++ } if (count > 0) { this.startAutoMove(x, y, callback, handle) } } // 开启自动移动 startAutoMove(x, y, callback, handle) { this.autoMoveTimer = setTimeout(() => { this.onMove(x, y, callback, handle) }, 20) } // 清除自动移动定时器 clearAutoMoveTimer() { clearTimeout(this.autoMoveTimer) } } export default AutoMove