Commit 592a7085 authored by techird's avatar techird

1.2.1 pre-release

parent 185ba60d
...@@ -7,26 +7,26 @@ ...@@ -7,26 +7,26 @@
<meta name="description" content="百度脑图,便捷的脑图编辑工具。让您在线上直接创建、保存并分享你的思路。"> <meta name="description" content="百度脑图,便捷的脑图编辑工具。让您在线上直接创建、保存并分享你的思路。">
<meta name="viewport" content="width=device-width, initial-scale=1, user-scalable=no"> <meta name="viewport" content="width=device-width, initial-scale=1, user-scalable=no">
<script src="lib/jquery-2.1.0.min.js?_=1406094941998" charset="utf-8"></script> <script src="lib/jquery-2.1.0.min.js?_=1406187190589" charset="utf-8"></script>
<script src="lib/ZeroClipboard.min.js?_=1406094941998" charset="utf-8"></script> <script src="lib/ZeroClipboard.min.js?_=1406187190589" charset="utf-8"></script>
<script type="text/javascript"> <script type="text/javascript">
ZeroClipboard.setDefaults( { moviePath: 'lib/ZeroClipboard.swf' } ); ZeroClipboard.setDefaults( { moviePath: 'lib/ZeroClipboard.swf' } );
</script> </script>
<script src="lib/kity.min.js?_=1406094941998" charset="utf-8"></script> <script src="lib/kity.min.js?_=1406187190589" charset="utf-8"></script>
<script src="kityminder.all.min.js?_=1406094941998" charset="utf-8"></script> <script src="kityminder.all.min.js?_=1406187190589" charset="utf-8"></script>
<script src="kityminder.config.js?_=1406094941998" charset="utf-8"></script> <script src="kityminder.config.js?_=1406187190589" charset="utf-8"></script>
<script src="lang/zh-cn/zh-cn.js?_=1406094941998" charset="utf-8"></script> <script src="lang/zh-cn/zh-cn.js?_=1406187190589" charset="utf-8"></script>
<script src="lib/zip.js?_=1406094941998" charset="utf-8"></script> <script src="lib/zip.js?_=1406187190589" charset="utf-8"></script>
<script> <script>
zip.inflateJSPath = 'lib/inflate.js'; zip.inflateJSPath = 'lib/inflate.js';
</script> </script>
<script src="lib/jquery.xml2json.js?_=1406094941998" charset="utf-8"></script> <script src="lib/jquery.xml2json.js?_=1406187190589" charset="utf-8"></script>
<script src="lib/baidu-frontia-js-full-1.0.0.js?_=1406094941998" charset="utf-8"></script> <script src="lib/baidu-frontia-js-full-1.0.0.js?_=1406187190589" charset="utf-8"></script>
<script src="social/draftmanager.js?_=1406094941998" charset="utf-8"></script> <script src="social/draftmanager.js?_=1406187190589" charset="utf-8"></script>
<script src="social/social.js?_=1406094941998" charset="utf-8"></script> <script src="social/social.js?_=1406187190589" charset="utf-8"></script>
<link href="social/social.css" rel="stylesheet"> <link href="social/social.css" rel="stylesheet">
<link href="themes/default/css/import.css" type="text/css" rel="stylesheet" /> <link href="themes/default/css/import.css" type="text/css" rel="stylesheet" />
...@@ -76,24 +76,30 @@ ...@@ -76,24 +76,30 @@
KityMinder KityMinder
<a id="km-version" <a id="km-version"
href="https://github.com/fex-team/kityminder/blob/dev/CHANGELOG.md" href="https://github.com/fex-team/kityminder/blob/dev/CHANGELOG.md"
target="blank"> target="blank"
tabindex="-1">
</a> </a>
under under
<a href="https://raw.githubusercontent.com/fex-team/kityminder/dev/LICENSE" <a href="https://raw.githubusercontent.com/fex-team/kityminder/dev/LICENSE"
target="_blank">BSD License target="_blank"
tabindex="-1">BSD License
</a>. </a>.
Powered by f-cube, Powered by f-cube,
<a href="http://fex.baidu.com" <a href="http://fex.baidu.com"
target="_blank">FEX target="_blank"
tabindex="-1">FEX
</a> | </a> |
<a href="https://github.com/fex-team/kityminder.git" <a href="https://github.com/fex-team/kityminder.git"
target="_blank">Source target="_blank"
tabindex="-1">Source
</a> </a>
<a href="https://github.com/fex-team/kityminder/issues/new" <a href="https://github.com/fex-team/kityminder/issues/new"
target="_blank">Bug target="_blank"
tabindex="-1">Bug
</a> | </a> |
<a href="mailto:kity@baidu.com" <a href="mailto:kity@baidu.com"
target="_blank">Contact Us target="_blank"
tabindex="-1">Contact Us
</a> </a>
</div> </div>
</div> </div>
......
/*! /*!
* ==================================================== * ====================================================
* kityminder - v1.1.3 - 2014-07-23 * kityminder - v1.2.1 - 2014-07-24
* https://github.com/fex-team/kityminder * https://github.com/fex-team/kityminder
* GitHub: https://github.com/fex-team/kityminder.git * GitHub: https://github.com/fex-team/kityminder.git
* Copyright (c) 2014 f-cube @ FEX; Licensed MIT * Copyright (c) 2014 f-cube @ FEX; Licensed MIT
...@@ -14,7 +14,7 @@ var KityMinder = window.KM = window.KityMinder = function() { ...@@ -14,7 +14,7 @@ var KityMinder = window.KM = window.KityMinder = function() {
instanceId = 0, instanceId = 0,
uuidMap = {}; uuidMap = {};
return { return {
version: '1.2.0', version: '1.2.1',
uuid: function(name) { uuid: function(name) {
name = name || 'unknown'; name = name || 'unknown';
uuidMap[name] = uuidMap[name] || 0; uuidMap[name] = uuidMap[name] || 0;
...@@ -2472,9 +2472,14 @@ kity.extendClass(Minder, { ...@@ -2472,9 +2472,14 @@ kity.extendClass(Minder, {
applyLayoutResult: function(root, duration) { applyLayoutResult: function(root, duration) {
root = root || this.getRoot(); root = root || this.getRoot();
var me = this; var me = this;
var complex = root.getComplex();
function consume() {
if (!--complex) me.fire('layoutallfinish');
}
// 节点复杂度大于 100,关闭动画 // 节点复杂度大于 100,关闭动画
// if (root.getComplex() > 100) duration = 0; if (complex > 300) duration = 0;
function applyMatrix(node, matrix) { function applyMatrix(node, matrix) {
node.getRenderContainer().setMatrix(node._lastLayoutTransform = matrix); node.getRenderContainer().setMatrix(node._lastLayoutTransform = matrix);
...@@ -2514,6 +2519,7 @@ kity.extendClass(Minder, { ...@@ -2514,6 +2519,7 @@ kity.extendClass(Minder, {
node: node, node: node,
matrix: matrix matrix: matrix
}); });
consume();
}); });
}); });
} }
...@@ -2525,7 +2531,19 @@ kity.extendClass(Minder, { ...@@ -2525,7 +2531,19 @@ kity.extendClass(Minder, {
node: node, node: node,
matrix: matrix matrix: matrix
}); });
consume();
} }
} else {
// 可能位置没有改变,但是相关布局变量变了
me.fire('layoutapply', {
node: node,
matrix: matrix
});
me.fire('layoutfinish', {
node: node,
matrix: matrix
});
consume();
} }
for (var i = 0; i < node.children.length; i++) { for (var i = 0; i < node.children.length; i++) {
...@@ -2710,7 +2728,7 @@ KityMinder.registerModule('Connect', { ...@@ -2710,7 +2728,7 @@ KityMinder.registerModule('Connect', {
'nodedetach': function(e) { 'nodedetach': function(e) {
this.removeConnect(e.node); this.removeConnect(e.node);
}, },
'layoutapply noderender': function(e) { 'layoutapply layoutfinish noderender': function(e) {
this.updateConnect(e.node); this.updateConnect(e.node);
} }
} }
...@@ -2841,8 +2859,8 @@ kity.extendClass(Minder, (function() { ...@@ -2841,8 +2859,8 @@ kity.extendClass(Minder, (function() {
} }
for (j = 0; j < nodes.length; j++) { for (j = 0; j < nodes.length; j++) {
this.fire('afterrender', { this.fire('noderender', {
node: node node: nodes[j]
}); });
} }
}, },
...@@ -3140,6 +3158,7 @@ KityMinder.registerModule('TemplateModule', { ...@@ -3140,6 +3158,7 @@ KityMinder.registerModule('TemplateModule', {
execute: function(minder, name) { execute: function(minder, name) {
minder.useTemplate(name); minder.useTemplate(name);
minder.execCommand('camera');
}, },
queryValue: function(minder) { queryValue: function(minder) {
...@@ -3923,7 +3942,7 @@ var TextRenderer = KityMinder.TextRenderer = kity.createClass('TextRenderer', { ...@@ -3923,7 +3942,7 @@ var TextRenderer = KityMinder.TextRenderer = kity.createClass('TextRenderer', {
return new kity.Text() return new kity.Text()
.setId(KityMinder.uuid('node_text')) .setId(KityMinder.uuid('node_text'))
.setVerticalAlign('middle') .setVerticalAlign('middle')
.setAttr('text-rendering', 'default'); .setAttr('text-rendering', 'inherit');
}, },
update: function(text, node) { update: function(text, node) {
...@@ -4039,9 +4058,7 @@ KityMinder.registerModule('Expand', function() { ...@@ -4039,9 +4058,7 @@ KityMinder.registerModule('Expand', function() {
function setExpandState(node, state, policy) { function setExpandState(node, state, policy) {
policy = policy || EXPAND_POLICY.KEEP_STATE; policy = policy || EXPAND_POLICY.KEEP_STATE;
policy(node, state, policy); policy(node, state, policy);
node.traverse(function(node) { node.renderTree();
node.render();
});
node.getMinder().layout(100); node.getMinder().layout(100);
} }
...@@ -4144,7 +4161,7 @@ KityMinder.registerModule('Expand', function() { ...@@ -4144,7 +4161,7 @@ KityMinder.registerModule('Expand', function() {
var pathData = ['M', 1.5 - this.radius, 0, 'L', this.radius - 1.5, 0]; var pathData = ['M', 1.5 - this.radius, 0, 'L', this.radius - 1.5, 0];
if (state == STATE_COLLAPSE) { if (state == STATE_COLLAPSE) {
pathData.push(['M', 0, 1.5 - this.radius, 'L', 0, this.radius - 1.5]); pathData.push(['M', 0, 1.5 - this.radius, 'L', 0, this.radius - 1.5]);
} }
this.sign.setPathData(pathData); this.sign.setPathData(pathData);
} }
}); });
...@@ -4201,7 +4218,9 @@ KityMinder.registerModule('Expand', function() { ...@@ -4201,7 +4218,9 @@ KityMinder.registerModule('Expand', function() {
'normal.keydown': function(e) { 'normal.keydown': function(e) {
if (this.getStatus() == 'textedit') return; if (this.getStatus() == 'textedit') return;
if (e.originEvent.keyCode == keymap['/']) { if (e.originEvent.keyCode == keymap['/']) {
var expanded = this.getSelectedNode().isExpanded(); var node = this.getSelectedNode();
if (!node) return;
var expanded = node.isExpanded();
this.getSelectedNodes().forEach(function(node) { this.getSelectedNodes().forEach(function(node) {
if (expanded) node.collapse(); if (expanded) node.collapse();
else node.expand(); else node.expand();
...@@ -5367,8 +5386,7 @@ var ViewDragger = kity.createClass("ViewDragger", { ...@@ -5367,8 +5386,7 @@ var ViewDragger = kity.createClass("ViewDragger", {
move: function(offset, duration) { move: function(offset, duration) {
if (!duration) { if (!duration) {
this._minder.getRenderContainer().translate(offset.x | 0, offset.y | 0); this._minder.getRenderContainer().translate(offset.x | 0, offset.y | 0);
} } else {
else {
this._minder.getRenderContainer().fxTranslate(offset.x | 0, offset.y | 0, duration, 'easeOutCubic'); this._minder.getRenderContainer().fxTranslate(offset.x | 0, offset.y | 0, duration, 'easeOutCubic');
} }
}, },
...@@ -5379,23 +5397,40 @@ var ViewDragger = kity.createClass("ViewDragger", { ...@@ -5379,23 +5397,40 @@ var ViewDragger = kity.createClass("ViewDragger", {
lastPosition = null, lastPosition = null,
currentPosition = null; currentPosition = null;
this._minder.on('normal.mousedown normal.touchstart readonly.mousedown readonly.touchstart', function(e) { function dragEnd(e) {
lastPosition = null;
if (e.originEvent.button == 2) { e.stopPropagation();
e.originEvent.preventDefault(); // 阻止中键拉动
} // 临时拖动需要还原状态
// 点击未选中的根节点临时开启 if (isTempDrag) {
if (e.getTargetNode() == this.getRoot() || e.originEvent.button == 2) { dragger.setEnabled(false);
lastPosition = e.getPosition(); isTempDrag = false;
isTempDrag = true; if (dragger._minder.getStatus() == 'hand')
dragger._minder.rollbackStatus();
} }
}) }
.on('normal.mousemove normal.touchmove readonly.touchmove readonly.mousemove', function(e) { this._minder.on('normal.mousedown normal.touchstart ' +
if (!isTempDrag) return; 'inputready.mousedown inputready.touchstart ' +
var offset = kity.Vector.fromPoints(lastPosition, e.getPosition()); 'readonly.mousedown readonly.touchstart', function(e) {
if (offset.length() > 3) this.setStatus('hand'); if (e.originEvent.button == 2) {
}) e.originEvent.preventDefault(); // 阻止中键拉动
}
// 点击未选中的根节点临时开启
if (e.getTargetNode() == this.getRoot() || e.originEvent.button == 2) {
lastPosition = e.getPosition();
isTempDrag = true;
}
})
.on('normal.mousemove normal.touchmove ' +
'readonly.touchmove readonly.mousemove ' +
'inputready.mousemove inputready.touchmove', function(e) {
if (!isTempDrag) return;
var offset = kity.Vector.fromPoints(lastPosition, e.getPosition());
if (offset.length() > 3) this.setStatus('hand');
})
.on('hand.beforemousedown hand.beforetouchstart', function(e) { .on('hand.beforemousedown hand.beforetouchstart', function(e) {
// 已经被用户打开拖放模式 // 已经被用户打开拖放模式
...@@ -5419,16 +5454,9 @@ var ViewDragger = kity.createClass("ViewDragger", { ...@@ -5419,16 +5454,9 @@ var ViewDragger = kity.createClass("ViewDragger", {
} }
}) })
.on('mouseup touchend', function(e) { .on('mouseup touchend', dragEnd);
lastPosition = null;
// 临时拖动需要还原状态 window.addEventListener('mouseup', dragEnd);
if (isTempDrag) {
dragger.setEnabled(false);
isTempDrag = false;
this.rollbackStatus();
}
});
} }
}); });
...@@ -5761,6 +5789,11 @@ var TreeDragger = kity.createClass('TreeDragger', { ...@@ -5761,6 +5789,11 @@ var TreeDragger = kity.createClass('TreeDragger', {
if (opacity < 1) minder.detachNode(node); if (opacity < 1) minder.detachNode(node);
else minder.attachNode(node); else minder.attachNode(node);
}, true); }, true);
if (opacity < 1) {
minder.removeConnect(source);
} else {
minder.createConnect(source);
}
}); });
}, },
...@@ -6174,7 +6207,7 @@ KityMinder.registerModule('KeyboardModule', function() { ...@@ -6174,7 +6207,7 @@ KityMinder.registerModule('KeyboardModule', function() {
var lastFrame; var lastFrame;
return { return {
'events': { 'events': {
'layoutfinish': function() { 'layoutallfinish': function() {
var root = this.getRoot(); var root = this.getRoot();
function build() { function build() {
buildPositionNetwork(root); buildPositionNetwork(root);
...@@ -6182,6 +6215,10 @@ KityMinder.registerModule('KeyboardModule', function() { ...@@ -6182,6 +6215,10 @@ KityMinder.registerModule('KeyboardModule', function() {
kity.Timeline.releaseFrame(lastFrame); kity.Timeline.releaseFrame(lastFrame);
lastFrame = kity.Timeline.requestFrame(build); lastFrame = kity.Timeline.requestFrame(build);
}, },
'inputready.beforekeydown': function(e) {
var keyEvent = e.originEvent;
if (keyEvent.shiftKey && keyEvent.keyCode == KityMinder.keymap.Tab) e.preventDefault();
},
'normal.keydown': function(e) { 'normal.keydown': function(e) {
var keys = KityMinder.keymap; var keys = KityMinder.keymap;
...@@ -6192,7 +6229,10 @@ KityMinder.registerModule('KeyboardModule', function() { ...@@ -6192,7 +6229,10 @@ KityMinder.registerModule('KeyboardModule', function() {
var keyEvent = e.originEvent; var keyEvent = e.originEvent;
if (keyEvent.altKey || keyEvent.ctrlKey || keyEvent.metaKey || keyEvent.shiftKey) return; if (keyEvent.altKey || keyEvent.ctrlKey || keyEvent.metaKey || keyEvent.shiftKey) {
if ([keys.Tab].indexOf(keyEvent.keyCode)) e.preventDefault;
return;
}
switch (keyEvent.keyCode) { switch (keyEvent.keyCode) {
case keys.Enter: case keys.Enter:
...@@ -7068,7 +7108,7 @@ Minder.Receiver = kity.createClass('Receiver', { ...@@ -7068,7 +7108,7 @@ Minder.Receiver = kity.createClass('Receiver', {
case keymap.Alt: case keymap.Alt:
case keymap.Cmd: case keymap.Cmd:
case keymap.F2: case keymap.F2:
if(this.selection.isHide() && this.km.getStatus() != 'inputready'){ if(this.selection.isHide() && this.km.getStatus() != 'textedit'){
this.km.setStatus('normal'); this.km.setStatus('normal');
return; return;
} }
...@@ -7786,6 +7826,11 @@ KityMinder.registerModule('Zoom', function() { ...@@ -7786,6 +7826,11 @@ KityMinder.registerModule('Zoom', function() {
me.setDefaultOptions('zoom', [10, 20, 30, 50, 80, 100, 120, 150, 200]); me.setDefaultOptions('zoom', [10, 20, 30, 50, 80, 100, 120, 150, 200]);
function setTextRendering() {
var value = me._zoomValue >= 100 ? 'optimize-speed' : 'geometricPrecision';
me.getRenderContainer().setAttr('text-rendering', value);
}
function fixPaperCTM(paper) { function fixPaperCTM(paper) {
var node = paper.shapeNode; var node = paper.shapeNode;
var ctm = node.getCTM(); var ctm = node.getCTM();
...@@ -7804,6 +7849,9 @@ KityMinder.registerModule('Zoom', function() { ...@@ -7804,6 +7849,9 @@ KityMinder.registerModule('Zoom', function() {
}; };
paper.setViewPort(viewport); paper.setViewPort(viewport);
if (value == 100) fixPaperCTM(paper); if (value == 100) fixPaperCTM(paper);
},
getZoomValue: function() {
return this._zoomValue;
} }
}); });
...@@ -7813,6 +7861,12 @@ KityMinder.registerModule('Zoom', function() { ...@@ -7813,6 +7861,12 @@ KityMinder.registerModule('Zoom', function() {
if (!value) return; if (!value) return;
setTextRendering();
if (minder.getRoot().getComplex() > 200) {
minder._zoomValue = value;
return minder.zoom(value);
}
var animator = new kity.Animator({ var animator = new kity.Animator({
beginValue: minder._zoomValue, beginValue: minder._zoomValue,
finishValue: value, finishValue: value,
...@@ -7824,14 +7878,7 @@ KityMinder.registerModule('Zoom', function() { ...@@ -7824,14 +7878,7 @@ KityMinder.registerModule('Zoom', function() {
if (timeline) { if (timeline) {
timeline.pause(); timeline.pause();
} }
function setTextRendering(value) { timeline = animator.start(minder, 300, 'easeInOutSine', function() {});
minder.getRoot().traverse(function(node) {
node.getTextShape().setAttr('text-rendering', value);
});
}
setTextRendering(value >= 100 ? 'optimize-speed' : 'geometricPrecision');
timeline = animator.start(minder, 300, 'easeInOutSine', function() {
});
} }
var ZoomCommand = kity.createClass('Zoom', { var ZoomCommand = kity.createClass('Zoom', {
...@@ -7883,6 +7930,7 @@ KityMinder.registerModule('Zoom', function() { ...@@ -7883,6 +7930,7 @@ KityMinder.registerModule('Zoom', function() {
return { return {
init: function() { init: function() {
this._zoomValue = 100; this._zoomValue = 100;
setTextRendering();
}, },
commands: { commands: {
'zoom-in': ZoomInCommand, 'zoom-in': ZoomInCommand,
......
This source diff could not be displayed because it is too large. You can view the blob instead.
...@@ -372,6 +372,8 @@ define("animate/frame", [], function(require, exports) { ...@@ -372,6 +372,8 @@ define("animate/frame", [], function(require, exports) {
var requestAnimationFrame = window.requestAnimationFrame || window.mozRequestAnimationFrame || window.webkitRequestAnimationFrame || window.msRequestAnimationFrame || function(fn) { var requestAnimationFrame = window.requestAnimationFrame || window.mozRequestAnimationFrame || window.webkitRequestAnimationFrame || window.msRequestAnimationFrame || function(fn) {
return setTimeout(fn, 1e3 / 60); return setTimeout(fn, 1e3 / 60);
}; };
var cancelAnimationFrame = window.cancelAnimationFrame || window.mozCancelAnimationFrame || window.webkitCancelAnimationFrame || window.msCancelAnimationFrame || window.clearTimeout;
var frameRequestId;
// 等待执行的帧的集合,这些帧的方法将在下个动画帧同步执行 // 等待执行的帧的集合,这些帧的方法将在下个动画帧同步执行
var pendingFrames = []; var pendingFrames = [];
/** /**
...@@ -381,7 +383,7 @@ define("animate/frame", [], function(require, exports) { ...@@ -381,7 +383,7 @@ define("animate/frame", [], function(require, exports) {
*/ */
function pushFrame(frame) { function pushFrame(frame) {
if (pendingFrames.push(frame) === 1) { if (pendingFrames.push(frame) === 1) {
requestAnimationFrame(executePendingFrames); frameRequestId = requestAnimationFrame(executePendingFrames);
} }
} }
/** /**
...@@ -393,6 +395,7 @@ define("animate/frame", [], function(require, exports) { ...@@ -393,6 +395,7 @@ define("animate/frame", [], function(require, exports) {
while (frames.length) { while (frames.length) {
executeFrame(frames.pop()); executeFrame(frames.pop());
} }
frameRequestId = 0;
} }
/** /**
* 请求一个帧,执行指定的动作。动作回调提供一些有用的信息 * 请求一个帧,执行指定的动作。动作回调提供一些有用的信息
...@@ -433,6 +436,9 @@ define("animate/frame", [], function(require, exports) { ...@@ -433,6 +436,9 @@ define("animate/frame", [], function(require, exports) {
if (~index) { if (~index) {
pendingFrames.splice(index, 1); pendingFrames.splice(index, 1);
} }
if (pendingFrames.length === 0) {
cancelAnimationFrame(frameRequestId);
}
} }
/** /**
* 初始化一个帧,主要用于后续计算 * 初始化一个帧,主要用于后续计算
......
This source diff could not be displayed because it is too large. You can view the blob instead.
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
"name": "kityminder", "name": "kityminder",
"title": "kityminder", "title": "kityminder",
"description": "Kity Minder", "description": "Kity Minder",
"version": "1.1.3", "version": "1.2.1",
"homepage": "https://github.com/fex-team/kityminder", "homepage": "https://github.com/fex-team/kityminder",
"author": { "author": {
"name": "f-cube @ FEX", "name": "f-cube @ FEX",
......
...@@ -3,7 +3,7 @@ var KityMinder = window.KM = window.KityMinder = function() { ...@@ -3,7 +3,7 @@ var KityMinder = window.KM = window.KityMinder = function() {
instanceId = 0, instanceId = 0,
uuidMap = {}; uuidMap = {};
return { return {
version: '1.2.0', version: '1.2.1',
uuid: function(name) { uuid: function(name) {
name = name || 'unknown'; name = name || 'unknown';
uuidMap[name] = uuidMap[name] || 0; uuidMap[name] = uuidMap[name] || 0;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment