mirror of
https://github.com/wanglin2/mind-map.git
synced 2026-02-26 03:58:50 +08:00
Compare commits
8 Commits
0.6.3
...
0.6.4-fix.
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
efe205ae70 | ||
|
|
a0d7473b1f | ||
|
|
7821781f20 | ||
|
|
b90d4ddf8a | ||
|
|
314562c167 | ||
|
|
5f0a9a7ce2 | ||
|
|
98e27841ad | ||
|
|
1b6467728c |
File diff suppressed because one or more lines are too long
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "simple-mind-map",
|
||||
"version": "0.6.3",
|
||||
"version": "0.6.4-fix.1",
|
||||
"description": "一个简单的web在线思维导图",
|
||||
"authors": [
|
||||
{
|
||||
|
||||
@@ -13,7 +13,9 @@ export const defaultOpt = {
|
||||
// 主题配置,会和所选择的主题进行合并
|
||||
themeConfig: {},
|
||||
// 放大缩小的增量比例
|
||||
scaleRatio: 0.1,
|
||||
scaleRatio: 0.2,
|
||||
// 鼠标缩放是否以鼠标当前位置为中心点,否则以画布中心点
|
||||
mouseScaleCenterUseMousePosition: true,
|
||||
// 最多显示几个标签
|
||||
maxTag: 5,
|
||||
// 导出图片时的内边距
|
||||
|
||||
@@ -60,29 +60,37 @@ class View {
|
||||
})
|
||||
// 放大缩小视图
|
||||
this.mindMap.event.on('mousewheel', (e, dir, event, isTouchPad) => {
|
||||
let {
|
||||
customHandleMousewheel,
|
||||
mousewheelAction,
|
||||
mouseScaleCenterUseMousePosition,
|
||||
mousewheelMoveStep
|
||||
} = this.mindMap.opt
|
||||
// 是否自定义鼠标滚轮事件
|
||||
if (
|
||||
this.mindMap.opt.customHandleMousewheel &&
|
||||
typeof this.mindMap.opt.customHandleMousewheel === 'function'
|
||||
customHandleMousewheel &&
|
||||
typeof customHandleMousewheel === 'function'
|
||||
) {
|
||||
return this.mindMap.opt.customHandleMousewheel(e)
|
||||
return customHandleMousewheel(e)
|
||||
}
|
||||
if (
|
||||
this.mindMap.opt.mousewheelAction === CONSTANTS.MOUSE_WHEEL_ACTION.ZOOM
|
||||
) {
|
||||
// 鼠标滚轮事件控制缩放
|
||||
if (mousewheelAction === CONSTANTS.MOUSE_WHEEL_ACTION.ZOOM) {
|
||||
let cx = mouseScaleCenterUseMousePosition ? e.clientX : undefined
|
||||
let cy = mouseScaleCenterUseMousePosition ? e.clientY : undefined
|
||||
switch (dir) {
|
||||
// 鼠标滚轮,向上和向左,都是缩小
|
||||
case CONSTANTS.DIR.UP:
|
||||
case CONSTANTS.DIR.LEFT:
|
||||
this.narrow()
|
||||
this.narrow(cx, cy)
|
||||
break
|
||||
// 鼠标滚轮,向下和向右,都是放大
|
||||
case CONSTANTS.DIR.DOWN:
|
||||
case CONSTANTS.DIR.RIGHT:
|
||||
this.enlarge()
|
||||
this.enlarge(cx, cy)
|
||||
break
|
||||
}
|
||||
} else {
|
||||
let step = this.mindMap.opt.mousewheelMoveStep
|
||||
} else {// 鼠标滚轮事件控制画布移动
|
||||
let step = mousewheelMoveStep
|
||||
if (isTouchPad) {
|
||||
step = 5
|
||||
}
|
||||
@@ -190,40 +198,43 @@ class View {
|
||||
}
|
||||
|
||||
// 缩小
|
||||
narrow() {
|
||||
let scale
|
||||
if (this.scale - this.mindMap.opt.scaleRatio > 0.1) {
|
||||
scale = this.scale - this.mindMap.opt.scaleRatio
|
||||
} else {
|
||||
scale = 0.1
|
||||
}
|
||||
this.scaleInCenter(this.mindMap.width / 2, this.mindMap.height / 2, scale)
|
||||
narrow(cx, cy) {
|
||||
const scale = Math.max(this.scale - this.mindMap.opt.scaleRatio, 0.1)
|
||||
this.scaleInCenter(scale, cx, cy)
|
||||
this.transform()
|
||||
this.mindMap.emit('scale', this.scale)
|
||||
}
|
||||
|
||||
// 放大
|
||||
enlarge() {
|
||||
enlarge(cx, cy) {
|
||||
const scale = this.scale + this.mindMap.opt.scaleRatio
|
||||
this.scaleInCenter(this.mindMap.width / 2, this.mindMap.height / 2, scale)
|
||||
this.scaleInCenter(scale, cx, cy)
|
||||
this.transform()
|
||||
this.mindMap.emit('scale', this.scale)
|
||||
}
|
||||
|
||||
// 基于画布中心进行缩放
|
||||
scaleInCenter(cx, cy, scale) {
|
||||
// 基于指定中心进行缩放,cx,cy 可不指定,此时会使用画布中心点
|
||||
scaleInCenter(scale, cx, cy) {
|
||||
if (cx === undefined || cy === undefined) {
|
||||
cx = this.mindMap.width / 2
|
||||
cy = this.mindMap.height / 2
|
||||
}
|
||||
const prevScale = this.scale
|
||||
const dx = (cx - this.x) * (1 - scale / prevScale)
|
||||
const dy = (cy - this.y) * (1 - scale / prevScale)
|
||||
|
||||
this.x += dx;
|
||||
this.y += dy;
|
||||
const ratio = 1 - scale / prevScale
|
||||
const dx = (cx - this.x) * ratio
|
||||
const dy = (cy - this.y) * ratio
|
||||
this.x += dx
|
||||
this.y += dy
|
||||
this.scale = scale
|
||||
}
|
||||
|
||||
// 设置缩放
|
||||
setScale(scale) {
|
||||
this.scale = scale
|
||||
setScale(scale, cx, cy) {
|
||||
if (cx !== undefined && cy !== undefined) {
|
||||
this.scaleInCenter(scale, cx, cy)
|
||||
} else {
|
||||
this.scale = scale
|
||||
}
|
||||
this.transform()
|
||||
this.mindMap.emit('scale', this.scale)
|
||||
}
|
||||
|
||||
@@ -50,16 +50,20 @@ class TouchEvent {
|
||||
} else if (len === 2) {
|
||||
let touch1 = e.touches[0]
|
||||
let touch2 = e.touches[1]
|
||||
let distance = Math.sqrt(
|
||||
Math.pow(touch1.clientX - touch2.clientX, 2) +
|
||||
Math.pow(touch1.clientY - touch2.clientY, 2)
|
||||
)
|
||||
let ox = touch1.clientX - touch2.clientX
|
||||
let oy = touch1.clientY - touch2.clientY
|
||||
let distance = Math.sqrt(Math.pow(ox, 2) + Math.pow(oy, 2))
|
||||
// 以两指中心点进行缩放
|
||||
let { x: touch1ClientX, y: touch1ClientY } = this.mindMap.toPos(touch1.clientX, touch1.clientY)
|
||||
let { x: touch2ClientX, y: touch2ClientY } = this.mindMap.toPos(touch2.clientX, touch2.clientY)
|
||||
let cx = (touch1ClientX + touch2ClientX) / 2
|
||||
let cy = (touch1ClientY + touch2ClientY) / 2
|
||||
if (distance > this.doubleTouchmoveDistance) {
|
||||
// 放大
|
||||
this.mindMap.view.enlarge()
|
||||
this.mindMap.view.enlarge(cx, cy)
|
||||
} else {
|
||||
// 缩小
|
||||
this.mindMap.view.narrow()
|
||||
this.mindMap.view.narrow(cx, cy)
|
||||
}
|
||||
this.doubleTouchmoveDistance = distance
|
||||
}
|
||||
|
||||
@@ -1,5 +1,15 @@
|
||||
# Changelog
|
||||
|
||||
## 0.6.4-fix.1
|
||||
|
||||
New: 1.When zooming with the mouse wheel, the default zoom is centered around the current position of the mouse, which can be turned off by configuring.
|
||||
|
||||
Fix: 1.Fixed an issue where the default value of the zoom center point was not updated after changing the canvas size.
|
||||
|
||||
## 0.6.4
|
||||
|
||||
New: 1.The default is to scale at the center point of the canvas. 2.Optimize the scaling of both fingers on the mobile end, with the center position of the two fingers as the center point for scaling.
|
||||
|
||||
## 0.6.3
|
||||
|
||||
Fix: 1.Fix the issue where the summary node will respond to inserting node shortcuts.
|
||||
|
||||
@@ -1,6 +1,11 @@
|
||||
<template>
|
||||
<div>
|
||||
<h1>Changelog</h1>
|
||||
<h2>0.6.4-fix.1</h2>
|
||||
<p>New: 1.When zooming with the mouse wheel, the default zoom is centered around the current position of the mouse, which can be turned off by configuring.</p>
|
||||
<p>Fix: 1.Fixed an issue where the default value of the zoom center point was not updated after changing the canvas size.</p>
|
||||
<h2>0.6.4</h2>
|
||||
<p>New: 1.The default is to scale at the center point of the canvas. 2.Optimize the scaling of both fingers on the mobile end, with the center position of the two fingers as the center point for scaling.</p>
|
||||
<h2>0.6.3</h2>
|
||||
<p>Fix: 1.Fix the issue where the summary node will respond to inserting node shortcuts.</p>
|
||||
<p>New: 1.Support custom node content.</p>
|
||||
|
||||
@@ -69,6 +69,7 @@ const mindMap = new MindMap({
|
||||
| beforeTextEdit(v0.6.0+) | Function/null | null | The callback method before the node is about to enter editing. If the method returns a value other than true, the editing will be canceled. The function can return a value or a promise, and the callback parameter is the node instance | |
|
||||
| isUseCustomNodeContent(v0.6.3+) | Boolean | false | Whether to customize node content | |
|
||||
| customCreateNodeContent(v0.6.3+) | Function/null | null | If `isUseCustomNodeContent` is set to `true`, then this option needs to be used to pass in a method that receives the node instance `node` as a parameter (if you want to obtain data for that node, you can use `node.nodeData.data`). You need to return the custom node content element, which is the DOM node. If a node does not require customization, you can return `null` | |
|
||||
| mouseScaleCenterUseMousePosition(v0.6.4-fix.1+) | Boolean | true | Is the mouse zoom centered around the current position of the mouse, otherwise centered around the canvas | |
|
||||
|
||||
### Watermark config
|
||||
|
||||
|
||||
@@ -343,6 +343,13 @@
|
||||
<td>If <code>isUseCustomNodeContent</code> is set to <code>true</code>, then this option needs to be used to pass in a method that receives the node instance <code>node</code> as a parameter (if you want to obtain data for that node, you can use <code>node.nodeData.data</code>). You need to return the custom node content element, which is the DOM node. If a node does not require customization, you can return <code>null</code></td>
|
||||
<td></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>mouseScaleCenterUseMousePosition(v0.6.4-fix.1+)</td>
|
||||
<td>Boolean</td>
|
||||
<td>true</td>
|
||||
<td>Is the mouse zoom centered around the current position of the mouse, otherwise centered around the canvas</td>
|
||||
<td></td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<h3>Watermark config</h3>
|
||||
|
||||
@@ -35,11 +35,19 @@ Translate the `y` direction to a specific position
|
||||
|
||||
Revert to the default transformation
|
||||
|
||||
### narrow()
|
||||
### narrow(cx, cy)
|
||||
|
||||
- `cx`:(v0.6.4+)Zoom to the specified position on the canvas, default to the center point of the canvas
|
||||
|
||||
- `cy`:(v0.6.4+)Zoom to the specified position on the canvas, default to the center point of the canvas
|
||||
|
||||
Zoom out
|
||||
|
||||
### enlarge()
|
||||
### enlarge(cx, cy)
|
||||
|
||||
- `cx`:(v0.6.4+)Zoom to the specified position on the canvas, default to the center point of the canvas
|
||||
|
||||
- `cy`:(v0.6.4+)Zoom to the specified position on the canvas, default to the center point of the canvas
|
||||
|
||||
Zoom in
|
||||
|
||||
@@ -56,8 +64,12 @@ Get the current transform data, can be used for display
|
||||
Dynamically set transform data, transform data can be obtained through the
|
||||
getTransformData method"
|
||||
|
||||
### setScale(scale)
|
||||
### setScale(scale, cx, cy)
|
||||
|
||||
> v0.2.17+
|
||||
|
||||
- `cx`:(v0.6.4+)Zoom to the specified position on the canvas, default to the center point of the canvas
|
||||
|
||||
- `cy`:(v0.6.4+)Zoom to the specified position on the canvas, default to the center point of the canvas
|
||||
|
||||
Setting Zoom
|
||||
@@ -25,9 +25,25 @@ through <code>mindMap.view</code></p>
|
||||
<p>Translate the <code>y</code> direction to a specific position</p>
|
||||
<h3>reset()</h3>
|
||||
<p>Revert to the default transformation</p>
|
||||
<h3>narrow()</h3>
|
||||
<h3>narrow(cx, cy)</h3>
|
||||
<ul>
|
||||
<li>
|
||||
<p><code>cx</code>:(v0.6.4+)Zoom to the specified position on the canvas, default to the center point of the canvas</p>
|
||||
</li>
|
||||
<li>
|
||||
<p><code>cy</code>:(v0.6.4+)Zoom to the specified position on the canvas, default to the center point of the canvas</p>
|
||||
</li>
|
||||
</ul>
|
||||
<p>Zoom out</p>
|
||||
<h3>enlarge()</h3>
|
||||
<h3>enlarge(cx, cy)</h3>
|
||||
<ul>
|
||||
<li>
|
||||
<p><code>cx</code>:(v0.6.4+)Zoom to the specified position on the canvas, default to the center point of the canvas</p>
|
||||
</li>
|
||||
<li>
|
||||
<p><code>cy</code>:(v0.6.4+)Zoom to the specified position on the canvas, default to the center point of the canvas</p>
|
||||
</li>
|
||||
</ul>
|
||||
<p>Zoom in</p>
|
||||
<h3>getTransformData()</h3>
|
||||
<blockquote>
|
||||
@@ -40,10 +56,18 @@ through <code>mindMap.view</code></p>
|
||||
</blockquote>
|
||||
<p>Dynamically set transform data, transform data can be obtained through the
|
||||
getTransformData method"</p>
|
||||
<h3>setScale(scale)</h3>
|
||||
<h3>setScale(scale, cx, cy)</h3>
|
||||
<blockquote>
|
||||
<p>v0.2.17+</p>
|
||||
</blockquote>
|
||||
<ul>
|
||||
<li>
|
||||
<p><code>cx</code>:(v0.6.4+)Zoom to the specified position on the canvas, default to the center point of the canvas</p>
|
||||
</li>
|
||||
<li>
|
||||
<p><code>cy</code>:(v0.6.4+)Zoom to the specified position on the canvas, default to the center point of the canvas</p>
|
||||
</li>
|
||||
</ul>
|
||||
<p>Setting Zoom</p>
|
||||
|
||||
</div>
|
||||
|
||||
@@ -1,5 +1,15 @@
|
||||
# Changelog
|
||||
|
||||
## 0.6.4-fix.1
|
||||
|
||||
新增:1.鼠标滚轮缩放时默认以鼠标当前位置为中心进行缩放,可以通过配置关闭该特性。
|
||||
|
||||
修复:1.修复改变了画布大小后缩放中心点默认值不随之更新的问题。
|
||||
|
||||
## 0.6.4
|
||||
|
||||
新增:1.默认以画布中心点进行缩放。 2.优化移动端双指缩放,以双指中心位置为中心点进行缩放。
|
||||
|
||||
## 0.6.3
|
||||
|
||||
修复:1.修复概要节点会响应插入节点快捷键的问题。
|
||||
|
||||
@@ -1,6 +1,11 @@
|
||||
<template>
|
||||
<div>
|
||||
<h1>Changelog</h1>
|
||||
<h2>0.6.4-fix.1</h2>
|
||||
<p>新增:1.鼠标滚轮缩放时默认以鼠标当前位置为中心进行缩放,可以通过配置关闭该特性。</p>
|
||||
<p>修复:1.修复改变了画布大小后缩放中心点默认值不随之更新的问题。</p>
|
||||
<h2>0.6.4</h2>
|
||||
<p>新增:1.默认以画布中心点进行缩放。 2.优化移动端双指缩放,以双指中心位置为中心点进行缩放。</p>
|
||||
<h2>0.6.3</h2>
|
||||
<p>修复:1.修复概要节点会响应插入节点快捷键的问题。</p>
|
||||
<p>新增:1.支持自定义节点内容。</p>
|
||||
|
||||
@@ -69,6 +69,7 @@ const mindMap = new MindMap({
|
||||
| beforeTextEdit(v0.6.0+) | Function/null | null | 节点即将进入编辑前的回调方法,如果该方法返回true以外的值,那么将取消编辑,函数可以返回一个值,或一个Promise,回调参数为节点实例 | |
|
||||
| isUseCustomNodeContent(v0.6.3+) | Boolean | false | 是否自定义节点内容 | |
|
||||
| customCreateNodeContent(v0.6.3+) | Function/null | null | 如果`isUseCustomNodeContent`设为`true`,那么需要使用该选项传入一个方法,接收节点实例`node`为参数(如果要获取该节点的数据,可以通过`node.nodeData.data`),需要返回自定义节点内容元素,也就是DOM节点,如果某个节点不需要自定义,那么返回`null`即可 | |
|
||||
| mouseScaleCenterUseMousePosition(v0.6.4-fix.1+) | Boolean | true | 鼠标缩放是否以鼠标当前位置为中心点,否则以画布中心点 | |
|
||||
|
||||
### 水印配置
|
||||
|
||||
|
||||
@@ -343,6 +343,13 @@
|
||||
<td>如果<code>isUseCustomNodeContent</code>设为<code>true</code>,那么需要使用该选项传入一个方法,接收节点实例<code>node</code>为参数(如果要获取该节点的数据,可以通过<code>node.nodeData.data</code>),需要返回自定义节点内容元素,也就是DOM节点,如果某个节点不需要自定义,那么返回<code>null</code>即可</td>
|
||||
<td></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>mouseScaleCenterUseMousePosition(v0.6.4-fix.1+)</td>
|
||||
<td>Boolean</td>
|
||||
<td>true</td>
|
||||
<td>鼠标缩放是否以鼠标当前位置为中心点,否则以画布中心点</td>
|
||||
<td></td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<h3>水印配置</h3>
|
||||
|
||||
@@ -34,11 +34,19 @@
|
||||
|
||||
恢复到默认的变换
|
||||
|
||||
### narrow()
|
||||
### narrow(cx, cy)
|
||||
|
||||
- `cx`:(v0.6.4+)以画布指定位置进行缩放,默认为画布中心点
|
||||
|
||||
- `cy`:(v0.6.4+)以画布指定位置进行缩放,默认为画布中心点
|
||||
|
||||
缩小
|
||||
|
||||
### enlarge()
|
||||
### enlarge(cx, cy)
|
||||
|
||||
- `cx`:(v0.6.4+)以画布指定位置进行缩放,默认为画布中心点
|
||||
|
||||
- `cy`:(v0.6.4+)以画布指定位置进行缩放,默认为画布中心点
|
||||
|
||||
放大
|
||||
|
||||
@@ -54,8 +62,13 @@
|
||||
|
||||
动态设置变换数据,可以通过getTransformData方法获取变换数据
|
||||
|
||||
### setScale(scale)
|
||||
### setScale(scale, cx, cy)
|
||||
|
||||
> v0.2.17+
|
||||
|
||||
设置缩放
|
||||
- `cx`:(v0.6.4+)以画布指定位置进行缩放,默认为画布中心点
|
||||
|
||||
- `cy`:(v0.6.4+)以画布指定位置进行缩放,默认为画布中心点
|
||||
|
||||
设置缩放
|
||||
|
||||
|
||||
@@ -24,9 +24,25 @@
|
||||
<p>平移<code>y</code>方向到指定位置</p>
|
||||
<h3>reset()</h3>
|
||||
<p>恢复到默认的变换</p>
|
||||
<h3>narrow()</h3>
|
||||
<h3>narrow(cx, cy)</h3>
|
||||
<ul>
|
||||
<li>
|
||||
<p><code>cx</code>:(v0.6.4+)以画布指定位置进行缩放,默认为画布中心点</p>
|
||||
</li>
|
||||
<li>
|
||||
<p><code>cy</code>:(v0.6.4+)以画布指定位置进行缩放,默认为画布中心点</p>
|
||||
</li>
|
||||
</ul>
|
||||
<p>缩小</p>
|
||||
<h3>enlarge()</h3>
|
||||
<h3>enlarge(cx, cy)</h3>
|
||||
<ul>
|
||||
<li>
|
||||
<p><code>cx</code>:(v0.6.4+)以画布指定位置进行缩放,默认为画布中心点</p>
|
||||
</li>
|
||||
<li>
|
||||
<p><code>cy</code>:(v0.6.4+)以画布指定位置进行缩放,默认为画布中心点</p>
|
||||
</li>
|
||||
</ul>
|
||||
<p>放大</p>
|
||||
<h3>getTransformData()</h3>
|
||||
<blockquote>
|
||||
@@ -38,10 +54,18 @@
|
||||
<p>v0.1.1+</p>
|
||||
</blockquote>
|
||||
<p>动态设置变换数据,可以通过getTransformData方法获取变换数据</p>
|
||||
<h3>setScale(scale)</h3>
|
||||
<h3>setScale(scale, cx, cy)</h3>
|
||||
<blockquote>
|
||||
<p>v0.2.17+</p>
|
||||
</blockquote>
|
||||
<ul>
|
||||
<li>
|
||||
<p><code>cx</code>:(v0.6.4+)以画布指定位置进行缩放,默认为画布中心点</p>
|
||||
</li>
|
||||
<li>
|
||||
<p><code>cy</code>:(v0.6.4+)以画布指定位置进行缩放,默认为画布中心点</p>
|
||||
</li>
|
||||
</ul>
|
||||
<p>设置缩放</p>
|
||||
|
||||
</div>
|
||||
|
||||
@@ -32,6 +32,7 @@ import Drag from 'simple-mind-map/src/plugins/Drag.js'
|
||||
import Select from 'simple-mind-map/src/plugins/Select.js'
|
||||
import RichText from 'simple-mind-map/src/plugins/RichText.js'
|
||||
import AssociativeLine from 'simple-mind-map/src/plugins/AssociativeLine.js'
|
||||
import TouchEvent from 'simple-mind-map/src/plugins/TouchEvent.js'
|
||||
import Outline from './Outline'
|
||||
import Style from './Style'
|
||||
import BaseStyle from './BaseStyle'
|
||||
@@ -67,6 +68,7 @@ MindMap
|
||||
.usePlugin(Export)
|
||||
.usePlugin(Select)
|
||||
.usePlugin(AssociativeLine)
|
||||
// .usePlugin(TouchEvent)
|
||||
|
||||
// 注册自定义主题
|
||||
// customThemeList.forEach((item) => {
|
||||
|
||||
Reference in New Issue
Block a user