Merge pull request #250 from kalcaddle/main

修复部分小问题
This commit is contained in:
街角小林 2023-08-10 09:23:02 +08:00 committed by GitHub
commit 2d41b5f9e6
3 changed files with 24 additions and 12 deletions

View File

@ -387,7 +387,7 @@ class Node {
if (this.isRoot && e.which === 3 && !this.mindMap.opt.readonly) {
e.stopPropagation()
}
if (!this.isRoot && !this.mindMap.opt.readonly) {
if (!this.isRoot && e.which !== 2 && !this.mindMap.opt.readonly) {
e.stopPropagation()
}
// 多选和取消多选
@ -413,7 +413,7 @@ class Node {
this.mindMap.emit('node_mousedown', this, e)
})
this.group.on('mouseup', e => {
if (!this.isRoot && !this.mindMap.opt.readonly) {
if (!this.isRoot && e.which !== 2 && !this.mindMap.opt.readonly) {
e.stopPropagation()
}
this.mindMap.emit('node_mouseup', this, e)

View File

@ -168,7 +168,7 @@ class RichText {
let scaleX = rect.width / originWidth
let scaleY = rect.height / originHeight
// 内边距
const paddingX = 6
const paddingX = 14
const paddingY = 4
if (!this.textEditNode) {
this.textEditNode = document.createElement('div')
@ -205,6 +205,11 @@ class RichText {
this.mindMap.opt.textAutoWrapWidth + paddingX * 2 + 'px'
this.textEditNode.style.transform = `scale(${scaleX}, ${scaleY})`
this.textEditNode.style.transformOrigin = 'left top'
this.textEditNode.style.borderRadius = (node.style.merge('borderRadius') || 5) + 'px'
if(node.style.merge('shape') == 'roundedRectangle'){
this.textEditNode.style.borderRadius = '50px';
}
if (!node.nodeData.data.richText) {
// 还不是富文本的情况
let text = node.nodeData.data.text.split(/\n/gim).join('<br>')

View File

@ -33,6 +33,7 @@ class TouchEvent {
// 手指按下事件
onTouchstart(e) {
this.touchesNum = e.touches.length
this.touchScaleViewBefore = false;
if (this.touchesNum === 1) {
let touch = e.touches[0]
this.singleTouchstartEvent = touch
@ -57,17 +58,22 @@ class TouchEvent {
let { x: touch2ClientX, y: touch2ClientY } = this.mindMap.toPos(touch2.clientX, touch2.clientY)
let cx = (touch1ClientX + touch2ClientX) / 2
let cy = (touch1ClientY + touch2ClientY) / 2
if (this.doubleTouchmoveDistance === 0) {
this.doubleTouchmoveDistance = distance
// 手势缩放,基于最开始的位置进行缩放(基于前一个位置缩放不是线性关系); 缩放同时支持位置拖动
var view = this.mindMap.view;
if(!this.touchScaleViewBefore){
this.touchScaleViewBefore = {distance:distance,scale:view.scale,x:view.x,y:view.y,cx:cx,cy:cy};
return;
} else if (distance > this.doubleTouchmoveDistance) {
// 放大
this.mindMap.view.enlarge(cx, cy, true)
} else {
// 缩小
this.mindMap.view.narrow(cx, cy, true)
}
this.doubleTouchmoveDistance = distance
var viewBefore = this.touchScaleViewBefore;
var scale = viewBefore.scale * (distance / viewBefore.distance);
if(Math.abs(distance - viewBefore.distance) <= 10){scale = viewBefore.scale;}
var ratio = (1 - scale / viewBefore.scale);
view.scale = scale < 0.1 ? 0.1 : scale;
view.x = viewBefore.x + (cx - viewBefore.x) * ratio + (cx - viewBefore.cx)*scale;
view.y = viewBefore.y + (cy - viewBefore.y) * ratio + (cy - viewBefore.cy)*scale;
view.transform();
this.mindMap.emit('scale',scale);
}
}
@ -95,6 +101,7 @@ class TouchEvent {
this.touchesNum = 0
this.singleTouchstartEvent = null
this.doubleTouchmoveDistance = 0
this.touchScaleViewBefore = null;
}
// 发送鼠标事件