From 0ea618af39372a9240769689c8ec308aac57a7f2 Mon Sep 17 00:00:00 2001 From: wanglin2 <1013335014@qq.com> Date: Sun, 26 Feb 2023 10:07:03 +0800 Subject: [PATCH] =?UTF-8?q?Fix:1.Mac=E7=B3=BB=E7=BB=9F=E8=A7=A6=E6=8E=A7?= =?UTF-8?q?=E6=9D=BF=E7=BC=A9=E6=94=BE=E6=96=B9=E5=90=91=E7=9B=B8=E5=8F=8D?= =?UTF-8?q?=E7=9A=84=E9=97=AE=E9=A2=98;2.=E8=AE=BE=E5=A4=87=E5=83=8F?= =?UTF-8?q?=E7=B4=A0=E6=AF=94=E4=B8=8D=E4=B8=BA1=E6=97=B6=E5=AF=BC?= =?UTF-8?q?=E5=87=BA=E5=9B=BE=E7=89=87=E4=B8=AD=E5=AF=8C=E6=96=87=E6=9C=AC?= =?UTF-8?q?=E8=8A=82=E7=82=B9=E5=B0=BA=E5=AF=B8=E5=8F=98=E5=A4=A7=E7=9A=84?= =?UTF-8?q?=E9=97=AE=E9=A2=98.Feater:=E8=8A=82=E7=82=B9=E6=8A=9B=E5=87=BA?= =?UTF-8?q?=E9=BC=A0=E6=A0=87=E7=A7=BB=E5=85=A5=E5=92=8C=E7=A7=BB=E5=87=BA?= =?UTF-8?q?=E4=BA=8B=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- simple-mind-map/example/exampleData.js | 11 +++++++++++ simple-mind-map/example/exportFullData.json | 6 ++++++ simple-mind-map/package.json | 2 +- simple-mind-map/src/Event.js | 21 +++++++++++---------- simple-mind-map/src/Node.js | 10 +++++++++- simple-mind-map/src/RichText.js | 5 ++++- web/src/pages/Doc/en/changelog/index.md | 8 +++++++- web/src/pages/Doc/en/changelog/index.vue | 5 ++++- web/src/pages/Doc/en/constructor/index.md | 2 ++ web/src/pages/Doc/en/constructor/index.vue | 10 ++++++++++ web/src/pages/Doc/zh/changelog/index.md | 6 ++++++ web/src/pages/Doc/zh/changelog/index.vue | 3 +++ web/src/pages/Doc/zh/constructor/index.md | 2 ++ web/src/pages/Doc/zh/constructor/index.vue | 10 ++++++++++ 14 files changed, 86 insertions(+), 15 deletions(-) diff --git a/simple-mind-map/example/exampleData.js b/simple-mind-map/example/exampleData.js index 41af1dd2..76d94ea1 100644 --- a/simple-mind-map/example/exampleData.js +++ b/simple-mind-map/example/exampleData.js @@ -900,6 +900,17 @@ const data5 = { } } +// 富文本数据v0.4.0+,需要使用RichText插件才支持富文本编辑 +const richTextData = { + "root": { + "data": { + "text": "理想去年实验室", + "richText": true + }, + "children": [] + } +} + const rootData = { "root": { "data": { diff --git a/simple-mind-map/example/exportFullData.json b/simple-mind-map/example/exportFullData.json index 59d64dbe..2a417cbb 100644 --- a/simple-mind-map/example/exportFullData.json +++ b/simple-mind-map/example/exportFullData.json @@ -31,6 +31,12 @@ "isActive": false }, "children": [] + }, { + "data": { + "text": "理想去年实验室", + "richText": true + }, + "children": [] }] }] }, diff --git a/simple-mind-map/package.json b/simple-mind-map/package.json index 00cb8d25..f14a5773 100644 --- a/simple-mind-map/package.json +++ b/simple-mind-map/package.json @@ -1,6 +1,6 @@ { "name": "simple-mind-map", - "version": "0.4.0", + "version": "0.4.1", "description": "一个简单的web在线思维导图", "authors": [ { diff --git a/simple-mind-map/src/Event.js b/simple-mind-map/src/Event.js index fd0860c8..358ce718 100644 --- a/simple-mind-map/src/Event.js +++ b/simple-mind-map/src/Event.js @@ -43,12 +43,7 @@ class Event extends EventEmitter { this.mindMap.svg.on('mousedown', this.onSvgMousedown) window.addEventListener('mousemove', this.onMousemove) window.addEventListener('mouseup', this.onMouseup) - // 兼容火狐浏览器 - if (window.navigator.userAgent.toLowerCase().indexOf('firefox') != -1) { - this.mindMap.el.addEventListener('DOMMouseScroll', this.onMousewheel) - } else { - this.mindMap.el.addEventListener('mousewheel', this.onMousewheel) - } + this.mindMap.el.addEventListener('wheel', this.onMousewheel) this.mindMap.svg.on('contextmenu', this.onContextmenu) window.addEventListener('keyup', this.onKeyup) } @@ -59,7 +54,7 @@ class Event extends EventEmitter { this.mindMap.el.removeEventListener('mousedown', this.onMousedown) window.removeEventListener('mousemove', this.onMousemove) window.removeEventListener('mouseup', this.onMouseup) - this.mindMap.el.removeEventListener('mousewheel', this.onMousewheel) + this.mindMap.el.removeEventListener('wheel', this.onMousewheel) this.mindMap.svg.off('contextmenu', this.onContextmenu) window.removeEventListener('keyup', this.onKeyup) } @@ -110,10 +105,16 @@ class Event extends EventEmitter { e.stopPropagation() e.preventDefault() let dir - if ((e.wheelDeltaY || e.detail) > 0) { - dir = 'up' + // 解决mac触控板双指缩放方向相反的问题 + if (e.ctrlKey) { + if (e.deltaY > 0) dir = 'up' + if (e.deltaY < 0) dir = 'down' } else { - dir = 'down' + if ((e.wheelDeltaY || e.detail) > 0) { + dir = 'up' + } else { + dir = 'down' + } } this.emit('mousewheel', e, dir, this) } diff --git a/simple-mind-map/src/Node.js b/simple-mind-map/src/Node.js index 671a5e11..f5dce3cd 100644 --- a/simple-mind-map/src/Node.js +++ b/simple-mind-map/src/Node.js @@ -191,7 +191,9 @@ class Node { 'dblclick', 'contextmenu', 'mousedown', - 'mouseup' + 'mouseup', + 'mouseenter', + 'mouseleave' ]) } } @@ -677,6 +679,12 @@ class Node { e.stopPropagation() this.mindMap.emit('node_mouseup', this, e) }) + this.group.on('mouseenter', e => { + this.mindMap.emit('node_mouseenter', this, e) + }) + this.group.on('mouseleave', e => { + this.mindMap.emit('node_mouseleave', this, e) + }) // 双击事件 this.group.on('dblclick', e => { if (this.mindMap.opt.readonly) { diff --git a/simple-mind-map/src/RichText.js b/simple-mind-map/src/RichText.js index cb1f5100..2f240e85 100644 --- a/simple-mind-map/src/RichText.js +++ b/simple-mind-map/src/RichText.js @@ -372,10 +372,13 @@ class RichText { let canvas = await html2canvas(clone, { backgroundColor: null }) + // 优先使用原始宽高,因为当设备的window.devicePixelRatio不为1时,html2canvas输出的图片会更大 + let imgNodeWidth = parent.attr('data-width') || canvas.width + let imgNodeHeight = parent.attr('data-height') || canvas.height this.mindMap.el.removeChild(div) let imgNode = new SvgImage() .load(canvas.toDataURL()) - .size(canvas.width, canvas.height) + .size(imgNodeWidth, imgNodeHeight) .x((parent ? parent.attr('data-offsetx') : 0) || 0) item.replace(imgNode) if (index <= len - 1) { diff --git a/web/src/pages/Doc/en/changelog/index.md b/web/src/pages/Doc/en/changelog/index.md index af1a345b..289cf3bf 100644 --- a/web/src/pages/Doc/en/changelog/index.md +++ b/web/src/pages/Doc/en/changelog/index.md @@ -1,12 +1,18 @@ # Changelog +## 0.4.1 + +New: Add and throw node mouseenter and mouseleave events. + +Fix: 1.Mac system touchpad scaling is the opposite problem; 2.When the device window.devicePixelRatio is not 1, the size of the rich text node in the exported image will become larger when there are rich text nodes. + ## 0.4.0 New: The node supports rich text editing. ## 0.3.4 -New:Automatic line wrapping function is added to node text. +New: Automatic line wrapping function is added to node text. Fix: 1.Fix the problem of deletion exceptions if there are root nodes in the batch deleted nodes. 2.Fix the problem that high node height will overlap with other nodes in the case of bottom edge style. diff --git a/web/src/pages/Doc/en/changelog/index.vue b/web/src/pages/Doc/en/changelog/index.vue index 1abad000..f74b1cc1 100644 --- a/web/src/pages/Doc/en/changelog/index.vue +++ b/web/src/pages/Doc/en/changelog/index.vue @@ -1,10 +1,13 @@