Skip to content

Commit 7a299d3

Browse files
committed
Merge branch 'dev'
# Conflicts: # bower.json # dist/kityminder.editor.js # dist/kityminder.editor.min.js # package.json
2 parents 3bb6d2c + 65752c2 commit 7a299d3

File tree

6 files changed

+85
-77
lines changed

6 files changed

+85
-77
lines changed

bower.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "kityminder-editor",
3-
"version": "1.0.50",
3+
"version": "1.0.51",
44
"authors": [
55
66
],

dist/kityminder.editor.js

+39-38
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
/*!
22
* ====================================================
3-
* kityminder-editor - v1.0.50 - 2016-01-21
3+
* kityminder-editor - v1.0.51 - 2016-01-22
44
* https://github.com/fex-team/kityminder-editor
55
* GitHub: https://github.com/fex-team/kityminder-editor
66
* Copyright (c) 2016 ; Licensed
@@ -427,7 +427,7 @@ _p[7] = {
427427
/**
428428
* @fileOverview
429429
*
430-
* 用于拖拽节点时屏蔽键盘事件
430+
* 用于拖拽节点是屏蔽键盘事件
431431
*
432432
* @author: techird
433433
* @copyright: Baidu FEX, 2014
@@ -454,6 +454,7 @@ _p[8] = {
454454
});
455455
}
456456
var downX, downY;
457+
var editorRect;
457458
var MOUSE_HAS_DOWN = 0;
458459
var MOUSE_HAS_UP = 1;
459460
var flag = MOUSE_HAS_UP;
@@ -512,35 +513,37 @@ _p[8] = {
512513
downY = e.originEvent.clientY;
513514
maxX = minder.getPaper().container.clientWidth;
514515
maxY = minder.getPaper().container.clientHeight;
516+
editorRect = minder.getPaper().container.getBoundingClientRect();
515517
});
516518
minder.on("mousemove", function(e) {
517-
if (fsm.state() === "drag" && flag == MOUSE_HAS_DOWN && minder.getSelectedNode() && (Math.abs(downX - e.originEvent.clientX) > 10 || Math.abs(downY - e.originEvent.clientY) > 10)) {
518-
osx = e.originEvent.offsetX;
519-
osy = e.originEvent.offsetY;
520-
if (osx < 10) {
521-
move("right", 10 - osx);
522-
} else if (osx > maxX - 10) {
523-
move("left", 10 + osx - maxX);
524-
} else {
525-
freeHorizen = true;
526-
}
527-
if (osy < 10) {
528-
move("bottom", osy);
529-
} else if (osy > maxY - 10) {
530-
move("top", 10 + osy - maxY);
519+
if (flag == MOUSE_HAS_DOWN && minder.getSelectedNode() && (Math.abs(downX - e.originEvent.clientX) > 10 || Math.abs(downY - e.originEvent.clientY) > 10)) {
520+
if (fsm.state() === "drag") {
521+
osx = e.originEvent.clientX;
522+
osy = e.originEvent.clientY - editorRect.top;
523+
if (osx < 10) {
524+
move("right", 10 - osx);
525+
} else if (osx > maxX - 10) {
526+
move("left", 10 + osx - maxX);
527+
} else {
528+
freeHorizen = true;
529+
}
530+
if (osy < 10) {
531+
move("bottom", osy);
532+
} else if (osy > maxY - 10) {
533+
move("top", 10 + osy - maxY);
534+
} else {
535+
freeVirtical = true;
536+
}
537+
if (freeHorizen && freeVirtical) {
538+
freeHorizen = freeVirtical = false;
539+
move(false);
540+
}
531541
} else {
532-
freeVirtical = true;
533-
}
534-
if (freeHorizen && freeVirtical) {
535-
freeHorizen = freeVirtical = false;
536-
move(false);
537-
}
538-
}
539-
if (fsm.state() != "drag" && flag == MOUSE_HAS_DOWN && minder.getSelectedNode() && (Math.abs(downX - e.originEvent.clientX) > 10 || Math.abs(downY - e.originEvent.clientY) > 10)) {
540-
if (fsm.state() == "hotbox") {
541-
hotbox.active(Hotbox.STATE_IDLE);
542+
if (fsm.state() == "hotbox") {
543+
hotbox.active(Hotbox.STATE_IDLE);
544+
}
545+
return fsm.jump("drag", "user-drag");
542546
}
543-
return fsm.jump("drag", "user-drag");
544547
}
545548
});
546549
document.body.onmouseup = function(e) {
@@ -877,7 +880,7 @@ _p[12] = {
877880
}
878881
});
879882
// lost focus to commit
880-
receiver.onblur(function() {
883+
receiver.onblur(function(e) {
881884
if (fsm.state() == "input") {
882885
fsm.jump("normal", "input-commit");
883886
}
@@ -928,8 +931,11 @@ _p[12] = {
928931
// edit for the selected node
929932
function editText() {
930933
var node = minder.getSelectedNode();
934+
if (!node) {
935+
return;
936+
}
931937
var textContainer = receiverElement;
932-
receiverElement.innerHTML = "";
938+
receiverElement.innerText = "";
933939
if (node.getData("font-weight") === "bold") {
934940
var b = document.createElement("b");
935941
textContainer.appendChild(b);
@@ -1095,7 +1101,7 @@ _p[12] = {
10951101
}
10961102
text = text.replace(/^\n*|\n*$/g, "");
10971103
text = text.replace(new RegExp("(\n|\r|\n\r)( |" + String.fromCharCode(160) + "){4}", "g"), "$1 ");
1098-
minder.execCommand("text", text);
1104+
minder.getSelectedNode().setText(text);
10991105
if (isBold) {
11001106
minder.queryCommandState("bold") || minder.execCommand("bold");
11011107
} else {
@@ -1130,10 +1136,13 @@ _p[12] = {
11301136
return node;
11311137
}
11321138
importText(node, json, minder);
1139+
minder.fire("contentchange");
11331140
minder.getRoot().renderTree();
11341141
minder.layout(300);
11351142
});
11361143
} catch (e) {
1144+
minder.fire("contentchange");
1145+
minder.getRoot().renderTree();
11371146
// 无法被转换成脑图节点则不处理
11381147
if (e.toString() !== "Error: Invalid local format") {
11391148
throw e;
@@ -1162,12 +1171,6 @@ _p[12] = {
11621171
var node = minder.getSelectedNode();
11631172
textNodes = commitInputText(textNodes);
11641173
commitInputNode(node, textNodes);
1165-
if (node.type == "root") {
1166-
var rootText = minder.getRoot().getText();
1167-
minder.fire("initChangeRoot", {
1168-
text: rootText
1169-
});
1170-
}
11711174
}
11721175
function exitInputMode() {
11731176
receiverElement.classList.remove("input");
@@ -1212,8 +1215,6 @@ _p[13] = {
12121215
// 0-9 以及其上面的符号
12131216
if (e.keyCode >= 48 && e.keyCode <= 57) return true;
12141217
// 小键盘区域 (除回车外)
1215-
if (e.keyCode != 108 && e.keyCode >= 96 && e.keyCode <= 111) return true;
1216-
// 小键盘区域 (除回车外)
12171218
// @yinheli from pull request
12181219
if (e.keyCode != 108 && e.keyCode >= 96 && e.keyCode <= 111) return true;
12191220
// 输入法

dist/kityminder.editor.min.js

+2-2
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "kityminder-editor",
3-
"version": "1.0.50",
3+
"version": "1.0.51",
44
"description": "A powerful mind map editor",
55
"main": "kityminder.editor.js",
66
"scripts": {

src/runtime/drag.js

+30-30
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,7 @@ define(function(require, exports, module) {
3838
}
3939

4040
var downX, downY;
41+
var editorRect;
4142
var MOUSE_HAS_DOWN = 0;
4243
var MOUSE_HAS_UP = 1;
4344
var flag = MOUSE_HAS_UP;
@@ -82,44 +83,43 @@ define(function(require, exports, module) {
8283
downY = e.originEvent.clientY;
8384
maxX = minder.getPaper().container.clientWidth;
8485
maxY = minder.getPaper().container.clientHeight;
86+
editorRect = minder.getPaper().container.getBoundingClientRect();
8587
});
8688

8789
minder.on('mousemove', function(e) {
88-
if (fsm.state() === 'drag' && flag == MOUSE_HAS_DOWN && minder.getSelectedNode()
90+
if (flag == MOUSE_HAS_DOWN
91+
&& minder.getSelectedNode()
8992
&& (Math.abs(downX - e.originEvent.clientX) > 10
9093
|| Math.abs(downY - e.originEvent.clientY) > 10)) {
91-
osx = e.originEvent.offsetX;
92-
osy = e.originEvent.offsetY;
93-
if (osx < 10) {
94-
move('right', 10 - osx);
95-
} else if (osx > maxX - 10) {
96-
move('left', 10 + osx - maxX);
97-
} else {
98-
freeHorizen = true;
99-
}
100-
if (osy < 10) {
101-
move('bottom', osy);
102-
} else if (osy > maxY - 10) {
103-
move('top', 10 + osy - maxY);
94+
if (fsm.state() === 'drag') {
95+
osx = e.originEvent.clientX;
96+
osy = e.originEvent.clientY - editorRect.top;
97+
98+
if (osx < 10) {
99+
move('right', 10 - osx);
100+
} else if (osx > maxX - 10) {
101+
move('left', 10 + osx - maxX);
102+
} else {
103+
freeHorizen = true;
104+
}
105+
if (osy < 10) {
106+
move('bottom', osy);
107+
} else if (osy > maxY - 10) {
108+
move('top', 10 + osy - maxY);
109+
} else {
110+
freeVirtical = true;
111+
}
112+
if (freeHorizen && freeVirtical) {
113+
freeHorizen = freeVirtical = false;
114+
move(false);
115+
}
104116
} else {
105-
freeVirtical = true;
106-
}
107-
if (freeHorizen && freeVirtical) {
108-
freeHorizen = freeVirtical = false;
109-
move(false);
110-
}
111-
}
112-
if (fsm.state() != 'drag'
113-
&& flag == MOUSE_HAS_DOWN
114-
&& minder.getSelectedNode()
115-
&& (Math.abs(downX - e.originEvent.clientX) > 10
116-
|| Math.abs(downY - e.originEvent.clientY) > 10)) {
117+
if (fsm.state() == 'hotbox') {
118+
hotbox.active(Hotbox.STATE_IDLE);
119+
}
117120

118-
if (fsm.state() == 'hotbox') {
119-
hotbox.active(Hotbox.STATE_IDLE);
121+
return fsm.jump('drag', 'user-drag');
120122
}
121-
122-
return fsm.jump('drag', 'user-drag');
123123
}
124124
});
125125

src/runtime/input.js

+12-5
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,7 @@ define(function(require, exports, module) {
4848
});
4949

5050
// lost focus to commit
51-
receiver.onblur(function () {
51+
receiver.onblur(function (e) {
5252
if (fsm.state() == 'input') {
5353
fsm.jump('normal', 'input-commit');
5454
}
@@ -112,8 +112,11 @@ define(function(require, exports, module) {
112112
// edit for the selected node
113113
function editText() {
114114
var node = minder.getSelectedNode();
115+
if (!node) {
116+
return;
117+
}
115118
var textContainer = receiverElement;
116-
receiverElement.innerHTML = "";
119+
receiverElement.innerText = "";
117120
if (node.getData('font-weight') === 'bold') {
118121
var b = document.createElement('b');
119122
textContainer.appendChild(b);
@@ -147,7 +150,6 @@ define(function(require, exports, module) {
147150
receiverElement.style.minWidth = receiverElement.clientWidth + 'px';
148151
receiverElement.style.fontWeight = node.getData('font-weight') || '';
149152
receiverElement.style.fontStyle = node.getData('font-style') || '';
150-
151153
receiverElement.classList.add('input');
152154
receiverElement.focus();
153155
}
@@ -177,6 +179,7 @@ define(function(require, exports, module) {
177179
space_l, space_num, tab_num,
178180
i = 0, l = textNodes.length; i < l; i++) {
179181
str = textNodes[i];
182+
180183
switch (Object.prototype.toString.call(str)) {
181184
// 正常情况处理
182185
case '[object HTMLBRElement]': {
@@ -280,7 +283,7 @@ define(function(require, exports, module) {
280283

281284
text = text.replace(/^\n*|\n*$/g, '');
282285
text = text.replace(new RegExp('(\n|\r|\n\r)(\u0020|' + String.fromCharCode(160) + '){4}', 'g'), '$1\t');
283-
minder.execCommand('text', text);
286+
minder.getSelectedNode().setText(text);
284287
if (isBold) {
285288
minder.queryCommandState('bold') || minder.execCommand('bold');
286289
} else {
@@ -319,10 +322,14 @@ define(function(require, exports, module) {
319322
return node;
320323
}
321324
importText(node, json, minder);
325+
minder.fire("contentchange");
322326
minder.getRoot().renderTree();
323327
minder.layout(300);
324328
});
325329
} catch (e) {
330+
minder.fire("contentchange");
331+
minder.getRoot().renderTree();
332+
326333
// 无法被转换成脑图节点则不处理
327334
if (e.toString() !== 'Error: Invalid local format') {
328335
throw e;
@@ -339,6 +346,7 @@ define(function(require, exports, module) {
339346
* @Date: 2015.9.16
340347
*/
341348
var textNodes = [].slice.call(receiverElement.childNodes);
349+
342350
/**
343351
* @Desc: 增加setTimeout的原因:ie下receiverElement.innerHTML=""会导致后
344352
* 面commitInputText中使用textContent报错,不要问我什么原因!
@@ -358,7 +366,6 @@ define(function(require, exports, module) {
358366
var rootText = minder.getRoot().getText();
359367
minder.fire('initChangeRoot', {text: rootText});
360368
}
361-
362369
}
363370

364371
function exitInputMode() {

0 commit comments

Comments
 (0)