Commit 02cfffd3 authored by techird's avatar techird

Merge branch 'dev' into native-export

Conflicts:
	ui/doc.js
parents f33de2ea 9315bbcd
......@@ -8,6 +8,7 @@
"white": false,
"quotmark": false,
"browser": true,
"boss": true,
"predef" : [
"module",
"require",
......
# KityMinder 更新日志
## v1.3.2
### 功能更新
1. 支持全屏查看模式
2. 添加「视图」选项卡
3. 添加文件移动功能
4. 分享文件允许再次编辑
### 体验优化
1. 脑图加载时打开上次编辑的文件,而不是优先打开草稿箱
2. 修改展开按钮位置
## v1.3.1
### 功能更新
1. 添加了「展开全部节点」和「收起到一级节点」的菜单项
2. 添加了错误信息收集窗口
### BUG 修复
1. 缓存问题导致打开旧文件
2. 保存失败后草稿箱仍删除的问题
### 体验优化
1. 去除 alert,改用通知条来提示信息或错误
## v1.3.0
### 功能更新
......
......@@ -9,6 +9,18 @@ var path = require('path');
*-----------------------------------------------------*/
module.exports = function(grunt) {
// These plugins provide necessary tasks.
/* [Build plugin & task ] ------------------------------------*/
grunt.loadNpmTasks('grunt-contrib-clean');
grunt.loadNpmTasks('grunt-contrib-concat');
grunt.loadNpmTasks('grunt-contrib-uglify');
grunt.loadNpmTasks('grunt-contrib-copy');
grunt.loadNpmTasks('grunt-text-replace');
grunt.loadNpmTasks('grunt-contrib-watch');
grunt.loadNpmTasks('grunt-contrib-less');
grunt.loadNpmTasks('grunt-postcss');
grunt.loadNpmTasks('grunt-autoprefixer');
var banner = '/*!\n' +
' * ====================================================\n' +
' * <%= pkg.title || pkg.name %> - v<%= pkg.version %> - ' +
......@@ -36,14 +48,8 @@ module.exports = function(grunt) {
options: {
banner: banner + '(function(window) {\n\n',
footer: '\n\n})(window)',
process: function(src, filepath) {
return ['\n',
'/* ' + filepath + ' */',
src.replace(/^.+$/mg, ' $&'),
'/* ' + filepath + ' end */',
'\n',
].join('\n');
}
sourceMap: true,
sourceMapStyle: 'link'
},
src: sources.filter(function(source) {
return source.pack == '*' || source.pack.split('|').indexOf(pack) !== -1;
......@@ -67,7 +73,8 @@ module.exports = function(grunt) {
uglify: {
minimize: {
options: {
banner: banner
banner: banner,
sourceMap: true
},
files: (function() {
var files = {};
......@@ -90,6 +97,7 @@ module.exports = function(grunt) {
'static/**/*',
'lib/ZeroClipboard.swf',
'lib/inflate.js',
'lib/source-map.min.js',
'index.html',
'edit.html',
'viewshare.html',
......@@ -135,41 +143,40 @@ module.exports = function(grunt) {
watch: {
less: {
files: ['ui/theme/**/*.less'],
tasks: ['less:compile']
tasks: ['less:compile', 'autoprefixer']
}
},
less: {
compile: {
files: {
'ui/theme/default/css/default.all.css': [
'ui/theme/default/css/default.all.temp.css': [
'ui/theme/default/css/import.less'
]
},
options: {
sourceMap: true,
sourceMapFilename: 'ui/theme/default/css/default.all.css.map',
sourceMapFilename: 'ui/theme/default/css/default.all.temp.css.map',
sourceMapBasepath: 'ui/theme/default/css/'
// compress: true,
// cleancss: true
}
}
},
autoprefixer: {
all: {
options: {
map: true
},
src: 'ui/theme/default/css/default.all.temp.css',
dest: 'ui/theme/default/css/default.all.css'
}
}
});
// These plugins provide necessary tasks.
/* [Build plugin & task ] ------------------------------------*/
grunt.loadNpmTasks('grunt-contrib-clean');
grunt.loadNpmTasks('grunt-contrib-concat');
grunt.loadNpmTasks('grunt-contrib-uglify');
grunt.loadNpmTasks('grunt-contrib-copy');
grunt.loadNpmTasks('grunt-text-replace');
grunt.loadNpmTasks('grunt-contrib-watch');
grunt.loadNpmTasks('grunt-contrib-less');
// Build task(s).
grunt.registerTask('default', ['clean', 'concat', 'uglify', 'less', 'copy', 'replace']);
grunt.registerTask('dev', ['less', 'watch']);
grunt.registerTask('default', ['clean', 'concat', 'uglify', 'less', 'autoprefixer', 'copy', 'replace']);
grunt.registerTask('dev', ['less', 'autoprefixer', 'watch']);
};
\ No newline at end of file
......@@ -12,43 +12,29 @@ KityMinder 基于 SVG 技术实现,支持绝大多数的主流浏览器,包
1. Chrome
2. Firefox
3. Safari
4. IE9+<sup>*</sup>
*: IE9 不支持部分导出功能。
4. Internet Explorer 10 或以上
## 线上版本
产品地址:[http://naotu.baidu.com](http://naotu.baidu.com)
注意:由于历史原因,有三个发布过的公开地址:
1. [~~http://fex-team.baidu.com/kityminder/dist~~](http://fex-team.baidu.com/kityminder/dist)
2. [~~http://kitygraph.github.io/kityminder/dist~~](http://kitygraph.github.io/kityminder/dist)
3. [http://fex.baidu.com/kityminder/dist](http://fex.baidu.com/kityminder/dist)
第 1 个地址已经失效;
第 2 个地址不再维护更新(原因是我们项目地址迁移到了 fex-team);
第 3 个地址是更新频率最高的地址,新功能可以在这里尝鲜;
[产品地址](http://naotu.baidu.com)已经稳定,请大家放心使用。地址变动频繁带来的不便,请谅解。
## 依赖说明
KityMinder 依赖 Kity 库。刚下载的压缩包或者刚从 github 拉下来的代码会有一个空的 Kity 目录。要运行调试,必须加载 Kity 的依赖
KityMinder 依赖 Kity、FIO、FUI 库。需要二次开发 KityMinder,需要先从 Github 上拉代码下来
1. 如果你下载的是 KityMinder 的压缩包,那么需要手动下载 [Kity](http://fex.baidu.com/kityminder/kity/dist/kity.js) 库到 kity/dist/kity.js
```bash
git clone https://github.com/fex-team/kityminder.git
```
2. 如果你是从 github 上拉源代码下来的,那么可以更新一下子模块:
紧接着,需要初始化并更新子模块:
```bash
cd YOUR_KITYMINDER_PATH
git submodule init
git submodule update
```
## 联系我们
问题和建议反馈:[Github Issues](https://github.com/fex-team/kityminder/issues/new)
邮件组: kity@baidu.com
讨论群: 374918234
QQ 讨论群: 374918234
......@@ -20,12 +20,20 @@ if (isset($_REQUEST['content'])) {
if (!$filename) {
$filename = "kikyminder";
}
if (isset($_REQUEST['iehack'])) {
$filename = urlencode($filename);
}
header("Content-type: application/octet-stream; charset=utf8; name=".urlencode($filename));
header("Accept-Length: ".strlen($content));
header("Content-Length: ".strlen($content));
header("Content-Disposition: attachment; filename=".urlencode($filename));
header("Content-Disposition: attachment; filename=".$filename);
header('Content-Description: File Transfer');
if (isset($_REQUEST['stamp'])) {
setcookie($_REQUEST['stamp'], 1, time() + 30);
}
echo $content;
} else {
......
......@@ -15,6 +15,7 @@
{ path: 'lib/jquery.blob.js', pack: 'edit' },
{ path: 'lib/zip.js', pack: 'edit' },
{ path: 'lib/ZeroClipboard.min.js', pack: 'edit' },
{ path: 'lib/qrcode.js', pack: 'edit' },
{ path: 'lib/fui/dev-lib/jhtmls.min.js', pack: 'edit|share|m-share' },
{ path: 'lib/fui/dist/fui.all.js', pack: 'edit|share|m-share' },
{ path: 'lib/fio/src/fio.js', pack: 'index|edit' },
......@@ -122,19 +123,22 @@
{ path: 'ui/memory.js', pack: 'edit|share|m-share' },
{ path: 'ui/fuix.js', pack: 'edit|share|m-share' },
{ path: 'ui/fiox.js', pack: 'edit' },
{ path: 'ui/doc.js', pack: 'edit|share|m-share' },
{ path: 'ui/contextmenu.js', pack: 'edit' },
/* UI 组件 */
{ path: 'ui/widget/commandbutton.js', pack: 'edit|share' },
{ path: 'ui/widget/commandbuttonset.js', pack: 'edit' },
{ path: 'ui/widget/commandinputmenu.js', pack: 'edit' },
{ path: 'ui/widget/commandselectmenu.js', pack: 'edit' },
{ path: 'ui/widget/notice.js', pack: 'edit|share|m-share' },
{ path: 'ui/widget/friendlytimespan.js', pack: 'edit' },
{ path: 'ui/widget/locallist.js', pack: 'edit' },
{ path: 'ui/widget/netdiskfinder.js', pack: 'edit' },
{ path: 'ui/widget/menutab.js', pack: 'edit|share|m-share' },
/* 基本业务 */
{ path: 'ui/doc.js', pack: 'edit|share|m-share' },
{ path: 'ui/contextmenu.js', pack: 'edit|share' },
/* 视野导航 */
{ path: 'ui/nav.js', pack: 'edit|share' },
......@@ -165,11 +169,13 @@
/* UI 菜单 - 帮助 */
{ path: 'ui/menu/help/help.js', pack: 'edit|share'},
{ path: 'ui/menu/help/feedback.js', pack: 'edit|share'},
/* UI Top Bar */
{ path: 'ui/topbar/quickvisit.js', pack: 'edit' },
{ path: 'ui/topbar/quickvisit.js', pack: 'edit|share' },
{ path: 'ui/topbar/history.js', pack: 'edit' },
{ path: 'ui/topbar/user.js', pack: 'edit' },
{ path: 'ui/topbar/feedback.js', pack: 'edit|share' },
{ path: 'ui/topbar/search.js', pack: 'edit|share' },
{ path: 'ui/topbar/switch-view.js', pack: 'm-share' },
{ path: 'ui/topbar/m-logo.js', pack: 'm-share' },
......@@ -198,6 +204,7 @@
{ path: 'ui/ribbon/appearence/color.js', pack: 'edit' },
/* UI Ribbon「视图」面板 */
{ path: 'ui/ribbon/view/fullscreen.js', pack: 'edit' },
{ path: 'ui/ribbon/view/level.js', pack: 'edit' }
];
......
......@@ -2,9 +2,9 @@
<html>
<head>
<meta charset="utf-8">
<meta name="title" content="百度脑图(KityMinder)">
<meta name="title" content="百度脑图(KityMinder) - 控制创意,如此简单">
<meta name="keyword" content="kityminder,脑图,思维导图,kity,svg,minder,百度,fex,前端,在线">
<meta name="description" content="百度脑图,便捷的脑图编辑工具。让您在线上直接创建、保存并分享你的思路。">
<meta name="description" content="百度脑图,便捷的脑图编辑工具 - 控制创意,如此简单。让您在线上直接创建、保存并分享你的思路。免安装 云存储 易分享 体验舒适 功能丰富">
<meta name="viewport" content="width=device-width, initial-scale=1, user-scalable=no">
<title>百度脑图 - 便捷的思维编辑工具</title>
......@@ -27,17 +27,29 @@
apiKey: 'wiE55BGOG8BkGnpPs6UNtPbb'
});
$('hr').addClass('loading');
var $a = $('p.login a').hide();
function loadingAnimate(on) {
if (on) {
$('hr').addClass('loading');
loadingAnimate.timer = setTimeout(function() {
$('hr').addClass('animated');
}, 660);
} else {
clearTimeout(loadingAnimate.timer);
$('hr').removeClass('loading animated');
}
}
loadingAnimate(true);
fio.user.check().then(function(user) {
if (user) {
window.location.href = 'edit.html';
}
else {
$a.fadeIn(800);
$('hr').removeClass('loading');
loadingAnimate(false);
}
});
......@@ -46,9 +58,23 @@
urlparts.pop();
urlparts = urlparts.join('/');
fio.user.login({
redirectUrl: urlparts + '/edit.html'
redirectUrl: urlparts + '/edit.html',
remember: 7 * 24 * 60 * 60
});
$('hr').addClass('loading');
loadingAnimate(true);
});
function preload(url) {
return new Promise(function(resolve, reject) {
var img = new Image();
img.onload = resolve;
img.onerror = reject;
img.src = url;
});
}
preload('ui/theme/default/images/indexbackground.jpg').then(function() {
$('div.background').addClass('loaded');
});
});
......@@ -62,11 +88,36 @@
margin: 0;
padding: 0;
overflow: hidden;
-webkit-user-select: none;
height: 100%;
font-size: 0;
line-height: 0;
z-index: -2;
}
h1:before {
content: ' ';
body {
background: #99806B;
overflow: auto;
}
::-webkit-selection {
background: #FFEFEF;
color: #4A4F5D;
}
::-moz-selection {
background: #FFEFEF;
color: #4A4F5D;
}
::-ms-selection {
background: #FFEFEF;
color: #4A4F5D;
}
::selection {
background: #FFEFEF;
color: #4A4F5D;
}
div.background {
opacity: 0;
display: block;
background: url(ui/theme/default/images/indexbackground.jpg) no-repeat;
background-size: cover;
......@@ -82,9 +133,15 @@
-o-filter: blur(5px);
filter: url(ui/theme/default/images/blur.svg#blur);
filter: blur(5px);
-webkit-transition: opacity 1.5s ease;
transition: opacity 1.5s ease;
}
h1:after {
div.background.loaded {
opacity: 1;
}
h1:before {
content: ' ';
display: block;
position: absolute;
......@@ -92,7 +149,7 @@
bottom: 0;
left: 0;
right: 0;
background: rgba(0, 0, 0, .75);
background: rgba(0, 0, 0, .5);
z-index: -1;
}
......@@ -106,34 +163,65 @@
h1 {
margin: 0;
margin-top: 200px;
margin-top: 100px;
color: white;
font-size: 50px;
line-height: 1.4em;
}
h1 span {
font-size: 0.6em;
}
p span {
font-size: 12px;
display: block;
margin-top: 30px;
color: rgba(255, 255, 255, .7);
text-shadow: 0 0 1px rgba(0, 0, 0, .5);
}
hr {
height: 0;
border: none;
border-bottom: 1px solid #F98183;
width: 110px;
margin: 40px auto;
transition: transform 0.5s ease;
-webkit-transition: -webkit-transform 0.66s ease;
transition: transform 0.66s ease;
-webkit-backface-visibility: hidden;
}
hr.loading {
-webkit-transform: translate3d(100px, 0, 0);
transform: translate3d(100px, 0, 0);
}
hr.animated {
-webkit-animation: slide 1.33s ease-in-out infinite alternate;
animation: slide 1.33s ease-in-out infinite alternate;
}
@-webkit-keyframes slide {
0% { transform: translate3d(-100px, 0, 0); }
100% { transform: translate3d(100px, 0, 0); }
0% {
-webkit-transform: translate3d(100px, 0, 0);
transform: translate3d(100px, 0, 0);
}
100% {
-webkit-transform: translate3d(-100px, 0, 0);
transform: translate3d(-100px, 0, 0);
}
}
@keyframes slide {
0% { transform: translate3d(-100px, 0, 0); }
100% { transform: translate3d(100px, 0, 0); }
0% {
-webkit-transform: translate3d(100px, 0, 0);
transform: translate3d(100px, 0, 0);
}
100% {
-webkit-transform: translate3d(-100px, 0, 0);
transform: translate3d(-100px, 0, 0);
}
}
p.description {
......@@ -157,10 +245,15 @@
position: relative;
overflow: hidden;
margin-top: 50px;
-webkit-user-select: none;
-moz-user-select: none;
-mz-user-select: none;
user-select: none;
}
p.login a:active {
background: #FF6161;
-webkit-transform: scale(0.95);
transform: scale(0.95);
}
......@@ -175,24 +268,29 @@
bottom: 0;
border-radius: 30px;
transform: scale(0, 1);
-webkit-transform: scale(0, 1);
transition: transform 0.3s ease;
-webkit-transition: -webkit-transform 0.3s ease;
}
p.login a:hover:before {
transform: scale(1, 1);
-webkit-transform: scale(1, 1);
}
</style>
</head>
<body>
<h1>百度脑图 <br/> 便捷的思维编辑工具</h1>
<div class="background"></div>
<h1>百度脑图 <br/> <span>控制创意,如此简单</span></h1>
<hr />
<p class="description">
线上直接创建、保存并分享您的思路<br />
更加高效地工作或学习
免安装 云存储 易分享<br/>
舒适的体验 丰富的功能<br/>
</p>
<p class="login">
<a>立即体验</a>
<a>马上开启</a>
<span>使用百度账号登录</span>
</p>
</body>
......
......@@ -25,7 +25,7 @@
maxImageWidth: 200,
maxImageHeight: 200,
// 自动保存时间间隔(s)
autoSave: 10
// 修改后自动保存时间间隔(单位:秒);设置为 false 不自动保存
autoSave: 2
};
})();
\ No newline at end of file
......@@ -40,15 +40,115 @@ KityMinder.LANG['zh-cn'] = {
'resource': '资源',
'attachment': '附件'
},
'error_message': {
'title': '哎呀,脑图出错了',
'err_load': '加载脑图失败',
'err_save': '保存脑图失败',
'err_network': '网络错误',
'err_doc_resolve': '文档解析失败',
'err_unknown': '发生了奇怪的错误',
'err_localfile_read': '文件读取错误',
'err_download': '文件下载失败',
'err_remove_share': '取消分享失败',
'err_create_share': '分享失败',
'err_mkdir': '目录创建失败',
'err_ls': '读取目录失败',
'err_share_data': '加载分享内容出错',
'err_share_sync_fail': '分享内容同步失败',
'err_move_file': '文件移动失败',
'unknownreason': '可能是外星人篡改了代码...',
'pcs_code': {
3: "不支持此接口",
4: "没有权限执行此操作",
5: "IP未授权",
110: "用户会话已过期,请重新登录",
31001: "数据库查询错误",
31002: "数据库连接错误",
31003: "数据库返回空结果",
31021: "网络错误",
31022: "暂时无法连接服务器",
31023: "输入参数错误",
31024: "app id为空",
31025: "后端存储错误",
31041: "用户的cookie不是合法的百度cookie",
31042: "用户未登陆",
31043: "用户未激活",
31044: "用户未授权",
31045: "用户不存在",
31046: "用户已经存在",
31061: "文件已经存在",
31062: "文件名非法",
31063: "文件父目录不存在",
31064: "无权访问此文件",
31065: "目录已满",
31066: "文件不存在",
31067: "文件处理出错",
31068: "文件创建失败",
31069: "文件拷贝失败",
31070: "文件删除失败",
31071: "不能读取文件元信息",
31072: "文件移动失败",
31073: "文件重命名失败",
31079: "未找到文件MD5,请使用上传API上传整个文件。",
31081: "superfile创建失败",
31082: "superfile 块列表为空",
31083: "superfile 更新失败",
31101: "tag系统内部错误",
31102: "tag参数错误",
31103: "tag系统错误",
31110: "未授权设置此目录配额",
31111: "配额管理只支持两级目录",
31112: "超出配额",
31113: "配额不能超出目录祖先的配额",
31114: "配额不能比子目录配额小",
31141: "请求缩略图服务失败",
31201: "签名错误",
31202: "文件不存在",
31203: "设置acl失败",
31204: "请求acl验证失败",
31205: "获取acl失败",
31206: "acl不存在",
31207: "bucket已存在",
31208: "用户请求错误",
31209: "服务器错误",
31210: "服务器不支持",
31211: "禁止访问",
31212: "服务不可用",
31213: "重试出错",
31214: "上传文件data失败",
31215: "上传文件meta失败",
31216: "下载文件data失败",
31217: "下载文件meta失败",
31218: "容量超出限额",
31219: "请求数超出限额",
31220: "流量超出限额",
31298: "服务器返回值KEY非法",
31299: "服务器返回值KEY不存在"
}
},
'ui': {
'load_share_for_edit': '正在加载分享的文件...',
'share_sync_success': '分享内容已同步',
'fullscreen_exit_hint': '按 Esc 或 F11 退出全屏',
'error_detail': '详细信息',
'copy_and_feedback': '复制并反馈',
'move_file_confirm': '确定把 "{0}" 移动到 "{1}" 吗?',
'command': {
'appendsiblingnode': '新建兄弟节点',
'appendchildnode': '新建子节点',
'appendsiblingnode': '插入同级主题',
'appendchildnode': '插入下级主题',
'removenode': '删除',
'editnode': '编辑',
'arrangeup': '上移',
'arrangedown': '下移',
'resetlayout': '整理布局'
'resetlayout': '整理布局',
'expandtoleaf': '展开全部节点',
'collapsetolevel1': '收起到一级节点',
'fullscreen': '全屏'
},
'back': '返回',
......@@ -65,7 +165,9 @@ KityMinder.LANG['zh-cn'] = {
'quickvisit': {
'new': '新建 (Ctrl + Alt + N)',
'save': '保存 (Ctrl + S)',
'share': '分享 (Ctrl + Alt + S)'
'share': '分享 (Ctrl + Alt + S)',
'feedback': '反馈问题(F1)',
'editshare': '编辑'
},
'menu': {
......@@ -78,6 +180,7 @@ KityMinder.LANG['zh-cn'] = {
'sharetab': '分享',
'preferencetab': '设置',
'helptab': '帮助',
'feedbacktab': '反馈',
'recenttab': '最近使用',
'netdisktab': '百度云存储',
'localtab': '本地文件',
......@@ -93,7 +196,8 @@ KityMinder.LANG['zh-cn'] = {
'shareheader': '分享我的脑图',
'downloadheader': '导出到指定格式',
'preferenceheader': '偏好设置',
'helpheader': '帮助'
'helpheader': '帮助',
'feedbackheader': '反馈'
},
'mydocument': '我的文档',
......@@ -103,8 +207,6 @@ KityMinder.LANG['zh-cn'] = {
'dropfile': '或将文件拖至此处',
'unsupportedfile': '不支持的文件格式',
'untitleddoc': '未命名文档',
'errorloading': '加载失败:{0}',
'unknownreason': '可能是外星人篡改了代码...',
'overrideconfirm': '{0} 已存在,确认覆盖吗?',
'checklogin': '检查登录状态中...',
'loggingin': '正在登录...',
......@@ -120,7 +222,7 @@ KityMinder.LANG['zh-cn'] = {
'email_share': '邮件邀请',
'url_share': '脑图 URL 地址:',
'sns_share': '社交网络分享:',
'sns_share_text': '“{0}” - 我用「百度脑图」制作的思维导图,快看看吧!(地址:{1})',
'sns_share_text': '“{0}” - 我用百度脑图制作的思维导图,快看看吧!(地址:{1})',
'none_share_description': '不分享当前脑图',
'public_share_description': '创建任何人可见的分享',
'share_button_text': '创建',
......@@ -149,6 +251,7 @@ KityMinder.LANG['zh-cn'] = {
'fileformat': '保存格式',
'save': '保存',
'mkdir': '新建目录',
'recycle': '回收站',
'newdir': '未命名目录',
'bold': '加粗',
......@@ -161,8 +264,8 @@ KityMinder.LANG['zh-cn'] = {
'saveto': '另存为',
'hand': '允许拖拽',
'camera': '定位根节点',
'zoom-in': '放大',
'zoom-out': '缩小',
'zoom-in': '放大(Ctrl+)',
'zoom-out': '缩小(Ctrl-)',
'markers': '标签',
'resource': '资源',
'help': '帮助',
......@@ -174,8 +277,8 @@ KityMinder.LANG['zh-cn'] = {
'clearstyle': '清除样式',
'copystyle': '复制样式',
'pastestyle': '粘贴样式',
'appendsiblingnode': '下一主题',
'appendchildnode': '儿子主题',
'appendsiblingnode': '同级主题',
'appendchildnode': '下级主题',
'arrangeup': '前调',
'arrangedown': '后调',
'editnode': '编辑',
......@@ -209,12 +312,20 @@ KityMinder.LANG['zh-cn'] = {
'redirect': '您正在打开连接 {0},百度脑图不能保证连接的安全性,是否要继续?',
'navigator': '导航器',
'unsavedcontent': '当前文件还没有保存到网盘:\n\n{0}\n\n确定要继续操作么?(未保存的数据会缓存在草稿箱)',
'unsavedcontent': '当前文件还没有保存到网盘:\n\n{0}\n\n虽然未保存的数据会缓存在草稿箱,但是清除浏览器缓存会导致草稿箱清除。',
'shortcuts': '快捷键',
'contact': '联系我们',
'contact': '联系与反馈',
'email': '邮件组',
'qq_group': 'QQ 群'
'qq_group': 'QQ 群',
'github_issue': 'Github',
'baidu_tieba': '贴吧',
'clipboardunsupported': '您的浏览器不支持剪贴板,请使用快捷键复制',
'load_success': '<b>{0}</b> 加载成功',
'save_success': '<b>{0}</b> 已保存于 {1}',
'autosave_success': '<b>{0}</b> 已自动保存于 {1}'
},
'popupcolor': {
'clearColor': '清空颜色',
......
/*!
* ZeroClipboard
* The ZeroClipboard library provides an easy way to copy text to the clipboard using an invisible Adobe Flash movie and a JavaScript interface.
* Copyright (c) 2013 Jon Rohan, James M. Greene
* Licensed MIT
* http://zeroclipboard.org/
* v1.2.3
*/
!function(){"use strict";var a,b=function(){var a=/\-([a-z])/g,b=function(a,b){return b.toUpperCase()};return function(c){return c.replace(a,b)}}(),c=function(a,c){var d,e,f,g,h,i;if(window.getComputedStyle?d=window.getComputedStyle(a,null).getPropertyValue(c):(e=b(c),d=a.currentStyle?a.currentStyle[e]:a.style[e]),"cursor"===c&&(!d||"auto"===d))for(f=a.tagName.toLowerCase(),g=["a"],h=0,i=g.length;i>h;h++)if(f===g[h])return"pointer";return d},d=function(a){if(p.prototype._singleton){a||(a=window.event);var b;this!==window?b=this:a.target?b=a.target:a.srcElement&&(b=a.srcElement),p.prototype._singleton.setCurrent(b)}},e=function(a,b,c){a.addEventListener?a.addEventListener(b,c,!1):a.attachEvent&&a.attachEvent("on"+b,c)},f=function(a,b,c){a.removeEventListener?a.removeEventListener(b,c,!1):a.detachEvent&&a.detachEvent("on"+b,c)},g=function(a,b){if(a.addClass)return a.addClass(b),a;if(b&&"string"==typeof b){var c=(b||"").split(/\s+/);if(1===a.nodeType)if(a.className){for(var d=" "+a.className+" ",e=a.className,f=0,g=c.length;g>f;f++)d.indexOf(" "+c[f]+" ")<0&&(e+=" "+c[f]);a.className=e.replace(/^\s+|\s+$/g,"")}else a.className=b}return a},h=function(a,b){if(a.removeClass)return a.removeClass(b),a;if(b&&"string"==typeof b||void 0===b){var c=(b||"").split(/\s+/);if(1===a.nodeType&&a.className)if(b){for(var d=(" "+a.className+" ").replace(/[\n\t]/g," "),e=0,f=c.length;f>e;e++)d=d.replace(" "+c[e]+" "," ");a.className=d.replace(/^\s+|\s+$/g,"")}else a.className=""}return a},i=function(){var a,b,c,d=1;return"function"==typeof document.body.getBoundingClientRect&&(a=document.body.getBoundingClientRect(),b=a.right-a.left,c=document.body.offsetWidth,d=Math.round(100*(b/c))/100),d},j=function(a){var b={left:0,top:0,width:0,height:0,zIndex:999999999},d=c(a,"z-index");if(d&&"auto"!==d&&(b.zIndex=parseInt(d,10)),a.getBoundingClientRect){var e,f,g,h=a.getBoundingClientRect();"pageXOffset"in window&&"pageYOffset"in window?(e=window.pageXOffset,f=window.pageYOffset):(g=i(),e=Math.round(document.documentElement.scrollLeft/g),f=Math.round(document.documentElement.scrollTop/g));var j=document.documentElement.clientLeft||0,k=document.documentElement.clientTop||0;b.left=h.left+e-j,b.top=h.top+f-k,b.width="width"in h?h.width:h.right-h.left,b.height="height"in h?h.height:h.bottom-h.top}return b},k=function(a,b){var c=!(b&&b.useNoCache===!1);return c?(-1===a.indexOf("?")?"?":"&")+"nocache="+(new Date).getTime():""},l=function(a){var b=[],c=[];return a.trustedOrigins&&("string"==typeof a.trustedOrigins?c.push(a.trustedOrigins):"object"==typeof a.trustedOrigins&&"length"in a.trustedOrigins&&(c=c.concat(a.trustedOrigins))),a.trustedDomains&&("string"==typeof a.trustedDomains?c.push(a.trustedDomains):"object"==typeof a.trustedDomains&&"length"in a.trustedDomains&&(c=c.concat(a.trustedDomains))),c.length&&b.push("trustedOrigins="+encodeURIComponent(c.join(","))),"string"==typeof a.amdModuleId&&a.amdModuleId&&b.push("amdModuleId="+encodeURIComponent(a.amdModuleId)),"string"==typeof a.cjsModuleId&&a.cjsModuleId&&b.push("cjsModuleId="+encodeURIComponent(a.cjsModuleId)),b.join("&")},m=function(a,b){if(b.indexOf)return b.indexOf(a);for(var c=0,d=b.length;d>c;c++)if(b[c]===a)return c;return-1},n=function(a){if("string"==typeof a)throw new TypeError("ZeroClipboard doesn't accept query strings.");return a.length?a:[a]},o=function(a,b,c,d,e){e?window.setTimeout(function(){a.call(b,c,d)},0):a.call(b,c,d)},p=function(a,b){if(a&&(p.prototype._singleton||this).glue(a),p.prototype._singleton)return p.prototype._singleton;p.prototype._singleton=this,this.options={};for(var c in s)this.options[c]=s[c];for(var d in b)this.options[d]=b[d];this.handlers={},p.detectFlashSupport()&&v()},q=[];p.prototype.setCurrent=function(b){a=b,this.reposition();var d=b.getAttribute("title");d&&this.setTitle(d);var e=this.options.forceHandCursor===!0||"pointer"===c(b,"cursor");return r.call(this,e),this},p.prototype.setText=function(a){return a&&""!==a&&(this.options.text=a,this.ready()&&this.flashBridge.setText(a)),this},p.prototype.setTitle=function(a){return a&&""!==a&&this.htmlBridge.setAttribute("title",a),this},p.prototype.setSize=function(a,b){return this.ready()&&this.flashBridge.setSize(a,b),this},p.prototype.setHandCursor=function(a){return a="boolean"==typeof a?a:!!a,r.call(this,a),this.options.forceHandCursor=a,this};var r=function(a){this.ready()&&this.flashBridge.setHandCursor(a)};p.version="1.2.3";var s={moviePath:"ZeroClipboard.swf",trustedOrigins:null,text:null,hoverClass:"zeroclipboard-is-hover",activeClass:"zeroclipboard-is-active",allowScriptAccess:"sameDomain",useNoCache:!0,forceHandCursor:!1};p.setDefaults=function(a){for(var b in a)s[b]=a[b]},p.destroy=function(){p.prototype._singleton.unglue(q);var a=p.prototype._singleton.htmlBridge;a.parentNode.removeChild(a),delete p.prototype._singleton},p.detectFlashSupport=function(){var a=!1;if("function"==typeof ActiveXObject)try{new ActiveXObject("ShockwaveFlash.ShockwaveFlash")&&(a=!0)}catch(b){}return!a&&navigator.mimeTypes["application/x-shockwave-flash"]&&(a=!0),a};var t=null,u=null,v=function(){var a,b,c=p.prototype._singleton,d=document.getElementById("global-zeroclipboard-html-bridge");if(!d){var e={};for(var f in c.options)e[f]=c.options[f];e.amdModuleId=t,e.cjsModuleId=u;var g=l(e),h=' <object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" id="global-zeroclipboard-flash-bridge" width="100%" height="100%"> <param name="movie" value="'+c.options.moviePath+k(c.options.moviePath,c.options)+'"/> <param name="allowScriptAccess" value="'+c.options.allowScriptAccess+'"/> <param name="scale" value="exactfit"/> <param name="loop" value="false"/> <param name="menu" value="false"/> <param name="quality" value="best" /> <param name="bgcolor" value="#ffffff"/> <param name="wmode" value="transparent"/> <param name="flashvars" value="'+g+'"/> <embed src="'+c.options.moviePath+k(c.options.moviePath,c.options)+'" loop="false" menu="false" quality="best" bgcolor="#ffffff" width="100%" height="100%" name="global-zeroclipboard-flash-bridge" allowScriptAccess="always" allowFullScreen="false" type="application/x-shockwave-flash" wmode="transparent" pluginspage="http://www.macromedia.com/go/getflashplayer" flashvars="'+g+'" scale="exactfit"> </embed> </object>';d=document.createElement("div"),d.id="global-zeroclipboard-html-bridge",d.setAttribute("class","global-zeroclipboard-container"),d.setAttribute("data-clipboard-ready",!1),d.style.position="absolute",d.style.left="-9999px",d.style.top="-9999px",d.style.width="15px",d.style.height="15px",d.style.zIndex="9999",d.innerHTML=h,document.body.appendChild(d)}c.htmlBridge=d,a=document["global-zeroclipboard-flash-bridge"],a&&(b=a.length)&&(a=a[b-1]),c.flashBridge=a||d.children[0].lastElementChild};p.prototype.resetBridge=function(){return this.htmlBridge.style.left="-9999px",this.htmlBridge.style.top="-9999px",this.htmlBridge.removeAttribute("title"),this.htmlBridge.removeAttribute("data-clipboard-text"),h(a,this.options.activeClass),a=null,this.options.text=null,this},p.prototype.ready=function(){var a=this.htmlBridge.getAttribute("data-clipboard-ready");return"true"===a||a===!0},p.prototype.reposition=function(){if(!a)return!1;var b=j(a);return this.htmlBridge.style.top=b.top+"px",this.htmlBridge.style.left=b.left+"px",this.htmlBridge.style.width=b.width+"px",this.htmlBridge.style.height=b.height+"px",this.htmlBridge.style.zIndex=b.zIndex+1,this.setSize(b.width,b.height),this},p.dispatch=function(a,b){p.prototype._singleton.receiveEvent(a,b)},p.prototype.on=function(a,b){for(var c=a.toString().split(/\s/g),d=0;d<c.length;d++)a=c[d].toLowerCase().replace(/^on/,""),this.handlers[a]||(this.handlers[a]=b);return this.handlers.noflash&&!p.detectFlashSupport()&&this.receiveEvent("onNoFlash",null),this},p.prototype.addEventListener=p.prototype.on,p.prototype.off=function(a,b){for(var c=a.toString().split(/\s/g),d=0;d<c.length;d++){a=c[d].toLowerCase().replace(/^on/,"");for(var e in this.handlers)e===a&&this.handlers[e]===b&&delete this.handlers[e]}return this},p.prototype.removeEventListener=p.prototype.off,p.prototype.receiveEvent=function(b,c){b=b.toString().toLowerCase().replace(/^on/,"");var d=a,e=!0;switch(b){case"load":if(c&&parseFloat(c.flashVersion.replace(",",".").replace(/[^0-9\.]/gi,""))<10)return this.receiveEvent("onWrongFlash",{flashVersion:c.flashVersion}),void 0;this.htmlBridge.setAttribute("data-clipboard-ready",!0);break;case"mouseover":g(d,this.options.hoverClass);break;case"mouseout":h(d,this.options.hoverClass),this.resetBridge();break;case"mousedown":g(d,this.options.activeClass);break;case"mouseup":h(d,this.options.activeClass);break;case"datarequested":var f=d.getAttribute("data-clipboard-target"),i=f?document.getElementById(f):null;if(i){var j=i.value||i.textContent||i.innerText;j&&this.setText(j)}else{var k=d.getAttribute("data-clipboard-text");k&&this.setText(k)}e=!1;break;case"complete":this.options.text=null}if(this.handlers[b]){var l=this.handlers[b];"string"==typeof l&&"function"==typeof window[l]&&(l=window[l]),"function"==typeof l&&o(l,d,this,c,e)}},p.prototype.glue=function(a){a=n(a);for(var b=0;b<a.length;b++)-1==m(a[b],q)&&(q.push(a[b]),e(a[b],"mouseover",d));return this},p.prototype.unglue=function(a){a=n(a);for(var b=0;b<a.length;b++){f(a[b],"mouseover",d);var c=m(a[b],q);-1!=c&&q.splice(c,1)}return this},"function"==typeof define&&define.amd?define(["require","exports","module"],function(a,b,c){return t=c&&c.id||null,p}):"object"==typeof module&&module&&"object"==typeof module.exports&&module.exports?(u=module.id||null,module.exports=p):
window.ZeroClipboard=p
}();
\ No newline at end of file
* ZeroClipboard
* The ZeroClipboard library provides an easy way to copy text to the clipboard using an invisible Adobe Flash movie and a JavaScript interface.
* Copyright (c) 2014 Jon Rohan, James M. Greene
* Licensed MIT
* http://zeroclipboard.org/
* v2.1.6
*/
!function(a,b){"use strict";var c,d,e=a,f=e.document,g=e.navigator,h=e.setTimeout,i=e.encodeURIComponent,j=e.ActiveXObject,k=e.Error,l=e.Number.parseInt||e.parseInt,m=e.Number.parseFloat||e.parseFloat,n=e.Number.isNaN||e.isNaN,o=e.Math.round,p=e.Date.now,q=e.Object.keys,r=e.Object.defineProperty,s=e.Object.prototype.hasOwnProperty,t=e.Array.prototype.slice,u=function(){var a=function(a){return a};if("function"==typeof e.wrap&&"function"==typeof e.unwrap)try{var b=f.createElement("div"),c=e.unwrap(b);1===b.nodeType&&c&&1===c.nodeType&&(a=e.unwrap)}catch(d){}return a}(),v=function(a){return t.call(a,0)},w=function(){var a,c,d,e,f,g,h=v(arguments),i=h[0]||{};for(a=1,c=h.length;c>a;a++)if(null!=(d=h[a]))for(e in d)s.call(d,e)&&(f=i[e],g=d[e],i!==g&&g!==b&&(i[e]=g));return i},x=function(a){var b,c,d,e;if("object"!=typeof a||null==a)b=a;else if("number"==typeof a.length)for(b=[],c=0,d=a.length;d>c;c++)s.call(a,c)&&(b[c]=x(a[c]));else{b={};for(e in a)s.call(a,e)&&(b[e]=x(a[e]))}return b},y=function(a,b){for(var c={},d=0,e=b.length;e>d;d++)b[d]in a&&(c[b[d]]=a[b[d]]);return c},z=function(a,b){var c={};for(var d in a)-1===b.indexOf(d)&&(c[d]=a[d]);return c},A=function(a){if(a)for(var b in a)s.call(a,b)&&delete a[b];return a},B=function(a,b){if(a&&1===a.nodeType&&a.ownerDocument&&b&&(1===b.nodeType&&b.ownerDocument&&b.ownerDocument===a.ownerDocument||9===b.nodeType&&!b.ownerDocument&&b===a.ownerDocument))do{if(a===b)return!0;a=a.parentNode}while(a);return!1},C=function(a){var b;return"string"==typeof a&&a&&(b=a.split("#")[0].split("?")[0],b=a.slice(0,a.lastIndexOf("/")+1)),b},D=function(a){var b,c;return"string"==typeof a&&a&&(c=a.match(/^(?:|[^:@]*@|.+\)@(?=http[s]?|file)|.+?\s+(?: at |@)(?:[^:\(]+ )*[\(]?)((?:http[s]?|file):\/\/[\/]?.+?\/[^:\)]*?)(?::\d+)(?::\d+)?/),c&&c[1]?b=c[1]:(c=a.match(/\)@((?:http[s]?|file):\/\/[\/]?.+?\/[^:\)]*?)(?::\d+)(?::\d+)?/),c&&c[1]&&(b=c[1]))),b},E=function(){var a,b;try{throw new k}catch(c){b=c}return b&&(a=b.sourceURL||b.fileName||D(b.stack)),a},F=function(){var a,c,d;if(f.currentScript&&(a=f.currentScript.src))return a;if(c=f.getElementsByTagName("script"),1===c.length)return c[0].src||b;if("readyState"in c[0])for(d=c.length;d--;)if("interactive"===c[d].readyState&&(a=c[d].src))return a;return"loading"===f.readyState&&(a=c[c.length-1].src)?a:(a=E())?a:b},G=function(){var a,c,d,e=f.getElementsByTagName("script");for(a=e.length;a--;){if(!(d=e[a].src)){c=null;break}if(d=C(d),null==c)c=d;else if(c!==d){c=null;break}}return c||b},H=function(){var a=C(F())||G()||"";return a+"ZeroClipboard.swf"},I={bridge:null,version:"0.0.0",pluginType:"unknown",disabled:null,outdated:null,unavailable:null,deactivated:null,overdue:null,ready:null},J="11.0.0",K={},L={},M=null,N={ready:"Flash communication is established",error:{"flash-disabled":"Flash is disabled or not installed","flash-outdated":"Flash is too outdated to support ZeroClipboard","flash-unavailable":"Flash is unable to communicate bidirectionally with JavaScript","flash-deactivated":"Flash is too outdated for your browser and/or is configured as click-to-activate","flash-overdue":"Flash communication was established but NOT within the acceptable time limit"}},O={swfPath:H(),trustedDomains:a.location.host?[a.location.host]:[],cacheBust:!0,forceEnhancedClipboard:!1,flashLoadTimeout:3e4,autoActivate:!0,bubbleEvents:!0,containerId:"global-zeroclipboard-html-bridge",containerClass:"global-zeroclipboard-container",swfObjectId:"global-zeroclipboard-flash-bridge",hoverClass:"zeroclipboard-is-hover",activeClass:"zeroclipboard-is-active",forceHandCursor:!1,title:null,zIndex:999999999},P=function(a){if("object"==typeof a&&null!==a)for(var b in a)if(s.call(a,b))if(/^(?:forceHandCursor|title|zIndex|bubbleEvents)$/.test(b))O[b]=a[b];else if(null==I.bridge)if("containerId"===b||"swfObjectId"===b){if(!cb(a[b]))throw new Error("The specified `"+b+"` value is not valid as an HTML4 Element ID");O[b]=a[b]}else O[b]=a[b];{if("string"!=typeof a||!a)return x(O);if(s.call(O,a))return O[a]}},Q=function(){return{browser:y(g,["userAgent","platform","appName"]),flash:z(I,["bridge"]),zeroclipboard:{version:Fb.version,config:Fb.config()}}},R=function(){return!!(I.disabled||I.outdated||I.unavailable||I.deactivated)},S=function(a,b){var c,d,e,f={};if("string"==typeof a&&a)e=a.toLowerCase().split(/\s+/);else if("object"==typeof a&&a&&"undefined"==typeof b)for(c in a)s.call(a,c)&&"string"==typeof c&&c&&"function"==typeof a[c]&&Fb.on(c,a[c]);if(e&&e.length){for(c=0,d=e.length;d>c;c++)a=e[c].replace(/^on/,""),f[a]=!0,K[a]||(K[a]=[]),K[a].push(b);if(f.ready&&I.ready&&Fb.emit({type:"ready"}),f.error){var g=["disabled","outdated","unavailable","deactivated","overdue"];for(c=0,d=g.length;d>c;c++)if(I[g[c]]===!0){Fb.emit({type:"error",name:"flash-"+g[c]});break}}}return Fb},T=function(a,b){var c,d,e,f,g;if(0===arguments.length)f=q(K);else if("string"==typeof a&&a)f=a.split(/\s+/);else if("object"==typeof a&&a&&"undefined"==typeof b)for(c in a)s.call(a,c)&&"string"==typeof c&&c&&"function"==typeof a[c]&&Fb.off(c,a[c]);if(f&&f.length)for(c=0,d=f.length;d>c;c++)if(a=f[c].toLowerCase().replace(/^on/,""),g=K[a],g&&g.length)if(b)for(e=g.indexOf(b);-1!==e;)g.splice(e,1),e=g.indexOf(b,e);else g.length=0;return Fb},U=function(a){var b;return b="string"==typeof a&&a?x(K[a])||null:x(K)},V=function(a){var b,c,d;return a=db(a),a&&!jb(a)?"ready"===a.type&&I.overdue===!0?Fb.emit({type:"error",name:"flash-overdue"}):(b=w({},a),ib.call(this,b),"copy"===a.type&&(d=pb(L),c=d.data,M=d.formatMap),c):void 0},W=function(){if("boolean"!=typeof I.ready&&(I.ready=!1),!Fb.isFlashUnusable()&&null===I.bridge){var a=O.flashLoadTimeout;"number"==typeof a&&a>=0&&h(function(){"boolean"!=typeof I.deactivated&&(I.deactivated=!0),I.deactivated===!0&&Fb.emit({type:"error",name:"flash-deactivated"})},a),I.overdue=!1,nb()}},X=function(){Fb.clearData(),Fb.blur(),Fb.emit("destroy"),ob(),Fb.off()},Y=function(a,b){var c;if("object"==typeof a&&a&&"undefined"==typeof b)c=a,Fb.clearData();else{if("string"!=typeof a||!a)return;c={},c[a]=b}for(var d in c)"string"==typeof d&&d&&s.call(c,d)&&"string"==typeof c[d]&&c[d]&&(L[d]=c[d])},Z=function(a){"undefined"==typeof a?(A(L),M=null):"string"==typeof a&&s.call(L,a)&&delete L[a]},$=function(a){return"undefined"==typeof a?x(L):"string"==typeof a&&s.call(L,a)?L[a]:void 0},_=function(a){if(a&&1===a.nodeType){c&&(xb(c,O.activeClass),c!==a&&xb(c,O.hoverClass)),c=a,wb(a,O.hoverClass);var b=a.getAttribute("title")||O.title;if("string"==typeof b&&b){var d=mb(I.bridge);d&&d.setAttribute("title",b)}var e=O.forceHandCursor===!0||"pointer"===yb(a,"cursor");Cb(e),Bb()}},ab=function(){var a=mb(I.bridge);a&&(a.removeAttribute("title"),a.style.left="0px",a.style.top="-9999px",a.style.width="1px",a.style.top="1px"),c&&(xb(c,O.hoverClass),xb(c,O.activeClass),c=null)},bb=function(){return c||null},cb=function(a){return"string"==typeof a&&a&&/^[A-Za-z][A-Za-z0-9_:\-\.]*$/.test(a)},db=function(a){var b;if("string"==typeof a&&a?(b=a,a={}):"object"==typeof a&&a&&"string"==typeof a.type&&a.type&&(b=a.type),b){!a.target&&/^(copy|aftercopy|_click)$/.test(b.toLowerCase())&&(a.target=d),w(a,{type:b.toLowerCase(),target:a.target||c||null,relatedTarget:a.relatedTarget||null,currentTarget:I&&I.bridge||null,timeStamp:a.timeStamp||p()||null});var e=N[a.type];return"error"===a.type&&a.name&&e&&(e=e[a.name]),e&&(a.message=e),"ready"===a.type&&w(a,{target:null,version:I.version}),"error"===a.type&&(/^flash-(disabled|outdated|unavailable|deactivated|overdue)$/.test(a.name)&&w(a,{target:null,minimumVersion:J}),/^flash-(outdated|unavailable|deactivated|overdue)$/.test(a.name)&&w(a,{version:I.version})),"copy"===a.type&&(a.clipboardData={setData:Fb.setData,clearData:Fb.clearData}),"aftercopy"===a.type&&(a=qb(a,M)),a.target&&!a.relatedTarget&&(a.relatedTarget=eb(a.target)),a=fb(a)}},eb=function(a){var b=a&&a.getAttribute&&a.getAttribute("data-clipboard-target");return b?f.getElementById(b):null},fb=function(a){if(a&&/^_(?:click|mouse(?:over|out|down|up|move))$/.test(a.type)){var c=a.target,d="_mouseover"===a.type&&a.relatedTarget?a.relatedTarget:b,g="_mouseout"===a.type&&a.relatedTarget?a.relatedTarget:b,h=Ab(c),i=e.screenLeft||e.screenX||0,j=e.screenTop||e.screenY||0,k=f.body.scrollLeft+f.documentElement.scrollLeft,l=f.body.scrollTop+f.documentElement.scrollTop,m=h.left+("number"==typeof a._stageX?a._stageX:0),n=h.top+("number"==typeof a._stageY?a._stageY:0),o=m-k,p=n-l,q=i+o,r=j+p,s="number"==typeof a.movementX?a.movementX:0,t="number"==typeof a.movementY?a.movementY:0;delete a._stageX,delete a._stageY,w(a,{srcElement:c,fromElement:d,toElement:g,screenX:q,screenY:r,pageX:m,pageY:n,clientX:o,clientY:p,x:o,y:p,movementX:s,movementY:t,offsetX:0,offsetY:0,layerX:0,layerY:0})}return a},gb=function(a){var b=a&&"string"==typeof a.type&&a.type||"";return!/^(?:(?:before)?copy|destroy)$/.test(b)},hb=function(a,b,c,d){d?h(function(){a.apply(b,c)},0):a.apply(b,c)},ib=function(a){if("object"==typeof a&&a&&a.type){var b=gb(a),c=K["*"]||[],d=K[a.type]||[],f=c.concat(d);if(f&&f.length){var g,h,i,j,k,l=this;for(g=0,h=f.length;h>g;g++)i=f[g],j=l,"string"==typeof i&&"function"==typeof e[i]&&(i=e[i]),"object"==typeof i&&i&&"function"==typeof i.handleEvent&&(j=i,i=i.handleEvent),"function"==typeof i&&(k=w({},a),hb(i,j,[k],b))}return this}},jb=function(a){var b=a.target||c||null,e="swf"===a._source;delete a._source;var f=["flash-disabled","flash-outdated","flash-unavailable","flash-deactivated","flash-overdue"];switch(a.type){case"error":-1!==f.indexOf(a.name)&&w(I,{disabled:"flash-disabled"===a.name,outdated:"flash-outdated"===a.name,unavailable:"flash-unavailable"===a.name,deactivated:"flash-deactivated"===a.name,overdue:"flash-overdue"===a.name,ready:!1});break;case"ready":var g=I.deactivated===!0;w(I,{disabled:!1,outdated:!1,unavailable:!1,deactivated:!1,overdue:g,ready:!g});break;case"beforecopy":d=b;break;case"copy":var h,i,j=a.relatedTarget;!L["text/html"]&&!L["text/plain"]&&j&&(i=j.value||j.outerHTML||j.innerHTML)&&(h=j.value||j.textContent||j.innerText)?(a.clipboardData.clearData(),a.clipboardData.setData("text/plain",h),i!==h&&a.clipboardData.setData("text/html",i)):!L["text/plain"]&&a.target&&(h=a.target.getAttribute("data-clipboard-text"))&&(a.clipboardData.clearData(),a.clipboardData.setData("text/plain",h));break;case"aftercopy":Fb.clearData(),b&&b!==vb()&&b.focus&&b.focus();break;case"_mouseover":Fb.focus(b),O.bubbleEvents===!0&&e&&(b&&b!==a.relatedTarget&&!B(a.relatedTarget,b)&&kb(w({},a,{type:"mouseenter",bubbles:!1,cancelable:!1})),kb(w({},a,{type:"mouseover"})));break;case"_mouseout":Fb.blur(),O.bubbleEvents===!0&&e&&(b&&b!==a.relatedTarget&&!B(a.relatedTarget,b)&&kb(w({},a,{type:"mouseleave",bubbles:!1,cancelable:!1})),kb(w({},a,{type:"mouseout"})));break;case"_mousedown":wb(b,O.activeClass),O.bubbleEvents===!0&&e&&kb(w({},a,{type:a.type.slice(1)}));break;case"_mouseup":xb(b,O.activeClass),O.bubbleEvents===!0&&e&&kb(w({},a,{type:a.type.slice(1)}));break;case"_click":d=null,O.bubbleEvents===!0&&e&&kb(w({},a,{type:a.type.slice(1)}));break;case"_mousemove":O.bubbleEvents===!0&&e&&kb(w({},a,{type:a.type.slice(1)}))}return/^_(?:click|mouse(?:over|out|down|up|move))$/.test(a.type)?!0:void 0},kb=function(a){if(a&&"string"==typeof a.type&&a){var b,c=a.target||null,d=c&&c.ownerDocument||f,g={view:d.defaultView||e,canBubble:!0,cancelable:!0,detail:"click"===a.type?1:0,button:"number"==typeof a.which?a.which-1:"number"==typeof a.button?a.button:d.createEvent?0:1},h=w(g,a);c&&d.createEvent&&c.dispatchEvent&&(h=[h.type,h.canBubble,h.cancelable,h.view,h.detail,h.screenX,h.screenY,h.clientX,h.clientY,h.ctrlKey,h.altKey,h.shiftKey,h.metaKey,h.button,h.relatedTarget],b=d.createEvent("MouseEvents"),b.initMouseEvent&&(b.initMouseEvent.apply(b,h),b._source="js",c.dispatchEvent(b)))}},lb=function(){var a=f.createElement("div");return a.id=O.containerId,a.className=O.containerClass,a.style.position="absolute",a.style.left="0px",a.style.top="-9999px",a.style.width="1px",a.style.height="1px",a.style.zIndex=""+Db(O.zIndex),a},mb=function(a){for(var b=a&&a.parentNode;b&&"OBJECT"===b.nodeName&&b.parentNode;)b=b.parentNode;return b||null},nb=function(){var a,b=I.bridge,c=mb(b);if(!b){var d=ub(e.location.host,O),g="never"===d?"none":"all",h=sb(O),i=O.swfPath+rb(O.swfPath,O);c=lb();var j=f.createElement("div");c.appendChild(j),f.body.appendChild(c);var k=f.createElement("div"),l="activex"===I.pluginType;k.innerHTML='<object id="'+O.swfObjectId+'" name="'+O.swfObjectId+'" width="100%" height="100%" '+(l?'classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000"':'type="application/x-shockwave-flash" data="'+i+'"')+">"+(l?'<param name="movie" value="'+i+'"/>':"")+'<param name="allowScriptAccess" value="'+d+'"/><param name="allowNetworking" value="'+g+'"/><param name="menu" value="false"/><param name="wmode" value="transparent"/><param name="flashvars" value="'+h+'"/></object>',b=k.firstChild,k=null,u(b).ZeroClipboard=Fb,c.replaceChild(b,j)}return b||(b=f[O.swfObjectId],b&&(a=b.length)&&(b=b[a-1]),!b&&c&&(b=c.firstChild)),I.bridge=b||null,b},ob=function(){var a=I.bridge;if(a){var b=mb(a);b&&("activex"===I.pluginType&&"readyState"in a?(a.style.display="none",function c(){if(4===a.readyState){for(var d in a)"function"==typeof a[d]&&(a[d]=null);a.parentNode&&a.parentNode.removeChild(a),b.parentNode&&b.parentNode.removeChild(b)}else h(c,10)}()):(a.parentNode&&a.parentNode.removeChild(a),b.parentNode&&b.parentNode.removeChild(b))),I.ready=null,I.bridge=null,I.deactivated=null}},pb=function(a){var b={},c={};if("object"==typeof a&&a){for(var d in a)if(d&&s.call(a,d)&&"string"==typeof a[d]&&a[d])switch(d.toLowerCase()){case"text/plain":case"text":case"air:text":case"flash:text":b.text=a[d],c.text=d;break;case"text/html":case"html":case"air:html":case"flash:html":b.html=a[d],c.html=d;break;case"application/rtf":case"text/rtf":case"rtf":case"richtext":case"air:rtf":case"flash:rtf":b.rtf=a[d],c.rtf=d}return{data:b,formatMap:c}}},qb=function(a,b){if("object"!=typeof a||!a||"object"!=typeof b||!b)return a;var c={};for(var d in a)if(s.call(a,d)){if("success"!==d&&"data"!==d){c[d]=a[d];continue}c[d]={};var e=a[d];for(var f in e)f&&s.call(e,f)&&s.call(b,f)&&(c[d][b[f]]=e[f])}return c},rb=function(a,b){var c=null==b||b&&b.cacheBust===!0;return c?(-1===a.indexOf("?")?"?":"&")+"noCache="+p():""},sb=function(a){var b,c,d,f,g="",h=[];if(a.trustedDomains&&("string"==typeof a.trustedDomains?f=[a.trustedDomains]:"object"==typeof a.trustedDomains&&"length"in a.trustedDomains&&(f=a.trustedDomains)),f&&f.length)for(b=0,c=f.length;c>b;b++)if(s.call(f,b)&&f[b]&&"string"==typeof f[b]){if(d=tb(f[b]),!d)continue;if("*"===d){h.length=0,h.push(d);break}h.push.apply(h,[d,"//"+d,e.location.protocol+"//"+d])}return h.length&&(g+="trustedOrigins="+i(h.join(","))),a.forceEnhancedClipboard===!0&&(g+=(g?"&":"")+"forceEnhancedClipboard=true"),"string"==typeof a.swfObjectId&&a.swfObjectId&&(g+=(g?"&":"")+"swfObjectId="+i(a.swfObjectId)),g},tb=function(a){if(null==a||""===a)return null;if(a=a.replace(/^\s+|\s+$/g,""),""===a)return null;var b=a.indexOf("//");a=-1===b?a:a.slice(b+2);var c=a.indexOf("/");return a=-1===c?a:-1===b||0===c?null:a.slice(0,c),a&&".swf"===a.slice(-4).toLowerCase()?null:a||null},ub=function(){var a=function(a){var b,c,d,e=[];if("string"==typeof a&&(a=[a]),"object"!=typeof a||!a||"number"!=typeof a.length)return e;for(b=0,c=a.length;c>b;b++)if(s.call(a,b)&&(d=tb(a[b]))){if("*"===d){e.length=0,e.push("*");break}-1===e.indexOf(d)&&e.push(d)}return e};return function(b,c){var d=tb(c.swfPath);null===d&&(d=b);var e=a(c.trustedDomains),f=e.length;if(f>0){if(1===f&&"*"===e[0])return"always";if(-1!==e.indexOf(b))return 1===f&&b===d?"sameDomain":"always"}return"never"}}(),vb=function(){try{return f.activeElement}catch(a){return null}},wb=function(a,b){if(!a||1!==a.nodeType)return a;if(a.classList)return a.classList.contains(b)||a.classList.add(b),a;if(b&&"string"==typeof b){var c=(b||"").split(/\s+/);if(1===a.nodeType)if(a.className){for(var d=" "+a.className+" ",e=a.className,f=0,g=c.length;g>f;f++)d.indexOf(" "+c[f]+" ")<0&&(e+=" "+c[f]);a.className=e.replace(/^\s+|\s+$/g,"")}else a.className=b}return a},xb=function(a,b){if(!a||1!==a.nodeType)return a;if(a.classList)return a.classList.contains(b)&&a.classList.remove(b),a;if("string"==typeof b&&b){var c=b.split(/\s+/);if(1===a.nodeType&&a.className){for(var d=(" "+a.className+" ").replace(/[\n\t]/g," "),e=0,f=c.length;f>e;e++)d=d.replace(" "+c[e]+" "," ");a.className=d.replace(/^\s+|\s+$/g,"")}}return a},yb=function(a,b){var c=e.getComputedStyle(a,null).getPropertyValue(b);return"cursor"!==b||c&&"auto"!==c||"A"!==a.nodeName?c:"pointer"},zb=function(){var a,b,c,d=1;return"function"==typeof f.body.getBoundingClientRect&&(a=f.body.getBoundingClientRect(),b=a.right-a.left,c=f.body.offsetWidth,d=o(b/c*100)/100),d},Ab=function(a){var b={left:0,top:0,width:0,height:0};if(a.getBoundingClientRect){var c,d,g,h=a.getBoundingClientRect();"pageXOffset"in e&&"pageYOffset"in e?(c=e.pageXOffset,d=e.pageYOffset):(g=zb(),c=o(f.documentElement.scrollLeft/g),d=o(f.documentElement.scrollTop/g));var i=f.documentElement.clientLeft||0,j=f.documentElement.clientTop||0;b.left=h.left+c-i,b.top=h.top+d-j,b.width="width"in h?h.width:h.right-h.left,b.height="height"in h?h.height:h.bottom-h.top}return b},Bb=function(){var a;if(c&&(a=mb(I.bridge))){var b=Ab(c);w(a.style,{width:b.width+"px",height:b.height+"px",top:b.top+"px",left:b.left+"px",zIndex:""+Db(O.zIndex)})}},Cb=function(a){I.ready===!0&&(I.bridge&&"function"==typeof I.bridge.setHandCursor?I.bridge.setHandCursor(a):I.ready=!1)},Db=function(a){if(/^(?:auto|inherit)$/.test(a))return a;var b;return"number"!=typeof a||n(a)?"string"==typeof a&&(b=Db(l(a,10))):b=a,"number"==typeof b?b:"auto"},Eb=function(a){function b(a){var b=a.match(/[\d]+/g);return b.length=3,b.join(".")}function c(a){return!!a&&(a=a.toLowerCase())&&(/^(pepflashplayer\.dll|libpepflashplayer\.so|pepperflashplayer\.plugin)$/.test(a)||"chrome.plugin"===a.slice(-13))}function d(a){a&&(i=!0,a.version&&(l=b(a.version)),!l&&a.description&&(l=b(a.description)),a.filename&&(k=c(a.filename)))}var e,f,h,i=!1,j=!1,k=!1,l="";if(g.plugins&&g.plugins.length)e=g.plugins["Shockwave Flash"],d(e),g.plugins["Shockwave Flash 2.0"]&&(i=!0,l="2.0.0.11");else if(g.mimeTypes&&g.mimeTypes.length)h=g.mimeTypes["application/x-shockwave-flash"],e=h&&h.enabledPlugin,d(e);else if("undefined"!=typeof a){j=!0;try{f=new a("ShockwaveFlash.ShockwaveFlash.7"),i=!0,l=b(f.GetVariable("$version"))}catch(n){try{f=new a("ShockwaveFlash.ShockwaveFlash.6"),i=!0,l="6.0.21"}catch(o){try{f=new a("ShockwaveFlash.ShockwaveFlash"),i=!0,l=b(f.GetVariable("$version"))}catch(p){j=!1}}}}I.disabled=i!==!0,I.outdated=l&&m(l)<m(J),I.version=l||"0.0.0",I.pluginType=k?"pepper":j?"activex":i?"netscape":"unknown"};Eb(j);var Fb=function(){return this instanceof Fb?void("function"==typeof Fb._createClient&&Fb._createClient.apply(this,v(arguments))):new Fb};r(Fb,"version",{value:"2.1.6",writable:!1,configurable:!0,enumerable:!0}),Fb.config=function(){return P.apply(this,v(arguments))},Fb.state=function(){return Q.apply(this,v(arguments))},Fb.isFlashUnusable=function(){return R.apply(this,v(arguments))},Fb.on=function(){return S.apply(this,v(arguments))},Fb.off=function(){return T.apply(this,v(arguments))},Fb.handlers=function(){return U.apply(this,v(arguments))},Fb.emit=function(){return V.apply(this,v(arguments))},Fb.create=function(){return W.apply(this,v(arguments))},Fb.destroy=function(){return X.apply(this,v(arguments))},Fb.setData=function(){return Y.apply(this,v(arguments))},Fb.clearData=function(){return Z.apply(this,v(arguments))},Fb.getData=function(){return $.apply(this,v(arguments))},Fb.focus=Fb.activate=function(){return _.apply(this,v(arguments))},Fb.blur=Fb.deactivate=function(){return ab.apply(this,v(arguments))},Fb.activeElement=function(){return bb.apply(this,v(arguments))};var Gb=0,Hb={},Ib=0,Jb={},Kb={};w(O,{autoActivate:!0});var Lb=function(a){var b=this;b.id=""+Gb++,Hb[b.id]={instance:b,elements:[],handlers:{}},a&&b.clip(a),Fb.on("*",function(a){return b.emit(a)}),Fb.on("destroy",function(){b.destroy()}),Fb.create()},Mb=function(a,b){var c,d,e,f={},g=Hb[this.id]&&Hb[this.id].handlers;if("string"==typeof a&&a)e=a.toLowerCase().split(/\s+/);else if("object"==typeof a&&a&&"undefined"==typeof b)for(c in a)s.call(a,c)&&"string"==typeof c&&c&&"function"==typeof a[c]&&this.on(c,a[c]);if(e&&e.length){for(c=0,d=e.length;d>c;c++)a=e[c].replace(/^on/,""),f[a]=!0,g[a]||(g[a]=[]),g[a].push(b);if(f.ready&&I.ready&&this.emit({type:"ready",client:this}),f.error){var h=["disabled","outdated","unavailable","deactivated","overdue"];for(c=0,d=h.length;d>c;c++)if(I[h[c]]){this.emit({type:"error",name:"flash-"+h[c],client:this});break}}}return this},Nb=function(a,b){var c,d,e,f,g,h=Hb[this.id]&&Hb[this.id].handlers;if(0===arguments.length)f=q(h);else if("string"==typeof a&&a)f=a.split(/\s+/);else if("object"==typeof a&&a&&"undefined"==typeof b)for(c in a)s.call(a,c)&&"string"==typeof c&&c&&"function"==typeof a[c]&&this.off(c,a[c]);if(f&&f.length)for(c=0,d=f.length;d>c;c++)if(a=f[c].toLowerCase().replace(/^on/,""),g=h[a],g&&g.length)if(b)for(e=g.indexOf(b);-1!==e;)g.splice(e,1),e=g.indexOf(b,e);else g.length=0;return this},Ob=function(a){var b=null,c=Hb[this.id]&&Hb[this.id].handlers;return c&&(b="string"==typeof a&&a?c[a]?c[a].slice(0):[]:x(c)),b},Pb=function(a){if(Ub.call(this,a)){"object"==typeof a&&a&&"string"==typeof a.type&&a.type&&(a=w({},a));var b=w({},db(a),{client:this});Vb.call(this,b)}return this},Qb=function(a){a=Wb(a);for(var b=0;b<a.length;b++)if(s.call(a,b)&&a[b]&&1===a[b].nodeType){a[b].zcClippingId?-1===Jb[a[b].zcClippingId].indexOf(this.id)&&Jb[a[b].zcClippingId].push(this.id):(a[b].zcClippingId="zcClippingId_"+Ib++,Jb[a[b].zcClippingId]=[this.id],O.autoActivate===!0&&Xb(a[b]));var c=Hb[this.id]&&Hb[this.id].elements;-1===c.indexOf(a[b])&&c.push(a[b])}return this},Rb=function(a){var b=Hb[this.id];if(!b)return this;var c,d=b.elements;a="undefined"==typeof a?d.slice(0):Wb(a);for(var e=a.length;e--;)if(s.call(a,e)&&a[e]&&1===a[e].nodeType){for(c=0;-1!==(c=d.indexOf(a[e],c));)d.splice(c,1);var f=Jb[a[e].zcClippingId];if(f){for(c=0;-1!==(c=f.indexOf(this.id,c));)f.splice(c,1);0===f.length&&(O.autoActivate===!0&&Yb(a[e]),delete a[e].zcClippingId)}}return this},Sb=function(){var a=Hb[this.id];return a&&a.elements?a.elements.slice(0):[]},Tb=function(){this.unclip(),this.off(),delete Hb[this.id]},Ub=function(a){if(!a||!a.type)return!1;if(a.client&&a.client!==this)return!1;var b=Hb[this.id]&&Hb[this.id].elements,c=!!b&&b.length>0,d=!a.target||c&&-1!==b.indexOf(a.target),e=a.relatedTarget&&c&&-1!==b.indexOf(a.relatedTarget),f=a.client&&a.client===this;return d||e||f?!0:!1},Vb=function(a){if("object"==typeof a&&a&&a.type){var b=gb(a),c=Hb[this.id]&&Hb[this.id].handlers["*"]||[],d=Hb[this.id]&&Hb[this.id].handlers[a.type]||[],f=c.concat(d);if(f&&f.length){var g,h,i,j,k,l=this;for(g=0,h=f.length;h>g;g++)i=f[g],j=l,"string"==typeof i&&"function"==typeof e[i]&&(i=e[i]),"object"==typeof i&&i&&"function"==typeof i.handleEvent&&(j=i,i=i.handleEvent),"function"==typeof i&&(k=w({},a),hb(i,j,[k],b))}return this}},Wb=function(a){return"string"==typeof a&&(a=[]),"number"!=typeof a.length?[a]:a},Xb=function(a){if(a&&1===a.nodeType){var b=function(a){(a||(a=e.event))&&("js"!==a._source&&(a.stopImmediatePropagation(),a.preventDefault()),delete a._source)},c=function(c){(c||(c=e.event))&&(b(c),Fb.focus(a))};a.addEventListener("mouseover",c,!1),a.addEventListener("mouseout",b,!1),a.addEventListener("mouseenter",b,!1),a.addEventListener("mouseleave",b,!1),a.addEventListener("mousemove",b,!1),Kb[a.zcClippingId]={mouseover:c,mouseout:b,mouseenter:b,mouseleave:b,mousemove:b}}},Yb=function(a){if(a&&1===a.nodeType){var b=Kb[a.zcClippingId];if("object"==typeof b&&b){for(var c,d,e=["move","leave","enter","out","over"],f=0,g=e.length;g>f;f++)c="mouse"+e[f],d=b[c],"function"==typeof d&&a.removeEventListener(c,d,!1);delete Kb[a.zcClippingId]}}};Fb._createClient=function(){Lb.apply(this,v(arguments))},Fb.prototype.on=function(){return Mb.apply(this,v(arguments))},Fb.prototype.off=function(){return Nb.apply(this,v(arguments))},Fb.prototype.handlers=function(){return Ob.apply(this,v(arguments))},Fb.prototype.emit=function(){return Pb.apply(this,v(arguments))},Fb.prototype.clip=function(){return Qb.apply(this,v(arguments))},Fb.prototype.unclip=function(){return Rb.apply(this,v(arguments))},Fb.prototype.elements=function(){return Sb.apply(this,v(arguments))},Fb.prototype.destroy=function(){return Tb.apply(this,v(arguments))},Fb.prototype.setText=function(a){return Fb.setData("text/plain",a),this},Fb.prototype.setHtml=function(a){return Fb.setData("text/html",a),this},Fb.prototype.setRichText=function(a){return Fb.setData("application/rtf",a),this},Fb.prototype.setData=function(){return Fb.setData.apply(this,v(arguments)),this},Fb.prototype.clearData=function(){return Fb.clearData.apply(this,v(arguments)),this},Fb.prototype.getData=function(){return Fb.getData.apply(this,v(arguments))},"function"==typeof define&&define.amd?define(function(){return Fb}):"object"==typeof module&&module&&"object"==typeof module.exports&&module.exports?module.exports=Fb:a.ZeroClipboard=Fb}(function(){return this||window}());
\ No newline at end of file
No preview for this file type
Copyright (c) 2010-2011 Gabe Lerner (gabelerner@gmail.com) - http://code.google.com/p/canvg/
Permission is hereby granted, free of charge, to any person
obtaining a copy of this software and associated documentation
files (the "Software"), to deal in the Software without
restriction, including without limitation the rights to use,
copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the
Software is furnished to do so, subject to the following
conditions:
The above copyright notice and this permission notice shall be
included in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
OTHER DEALINGS IN THE SOFTWARE.
\ No newline at end of file
/*
StackBlur - a fast almost Gaussian Blur For Canvas
Version: 0.5
Author: Mario Klingemann
Contact: mario@quasimondo.com
Website: http://www.quasimondo.com/StackBlurForCanvas
Twitter: @quasimondo
In case you find this class useful - especially in commercial projects -
I am not totally unhappy for a small donation to my PayPal account
mario@quasimondo.de
Or support me on flattr:
https://flattr.com/thing/72791/StackBlur-a-fast-almost-Gaussian-Blur-Effect-for-CanvasJavascript
Copyright (c) 2010 Mario Klingemann
Permission is hereby granted, free of charge, to any person
obtaining a copy of this software and associated documentation
files (the "Software"), to deal in the Software without
restriction, including without limitation the rights to use,
copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the
Software is furnished to do so, subject to the following
conditions:
The above copyright notice and this permission notice shall be
included in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
OTHER DEALINGS IN THE SOFTWARE.
*/
var mul_table = [
512,512,456,512,328,456,335,512,405,328,271,456,388,335,292,512,
454,405,364,328,298,271,496,456,420,388,360,335,312,292,273,512,
482,454,428,405,383,364,345,328,312,298,284,271,259,496,475,456,
437,420,404,388,374,360,347,335,323,312,302,292,282,273,265,512,
497,482,468,454,441,428,417,405,394,383,373,364,354,345,337,328,
320,312,305,298,291,284,278,271,265,259,507,496,485,475,465,456,
446,437,428,420,412,404,396,388,381,374,367,360,354,347,341,335,
329,323,318,312,307,302,297,292,287,282,278,273,269,265,261,512,
505,497,489,482,475,468,461,454,447,441,435,428,422,417,411,405,
399,394,389,383,378,373,368,364,359,354,350,345,341,337,332,328,
324,320,316,312,309,305,301,298,294,291,287,284,281,278,274,271,
268,265,262,259,257,507,501,496,491,485,480,475,470,465,460,456,
451,446,442,437,433,428,424,420,416,412,408,404,400,396,392,388,
385,381,377,374,370,367,363,360,357,354,350,347,344,341,338,335,
332,329,326,323,320,318,315,312,310,307,304,302,299,297,294,292,
289,287,285,282,280,278,275,273,271,269,267,265,263,261,259];
var shg_table = [
9, 11, 12, 13, 13, 14, 14, 15, 15, 15, 15, 16, 16, 16, 16, 17,
17, 17, 17, 17, 17, 17, 18, 18, 18, 18, 18, 18, 18, 18, 18, 19,
19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 20, 20, 20,
20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 21,
21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 22, 22, 22, 22, 22, 22,
22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22,
22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 23,
23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23,
23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23,
23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23,
23, 23, 23, 23, 23, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24,
24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24,
24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24,
24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24,
24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24 ];
function stackBlurImage( imageID, canvasID, radius, blurAlphaChannel )
{
var img = document.getElementById( imageID );
var w = img.naturalWidth;
var h = img.naturalHeight;
var canvas = document.getElementById( canvasID );
canvas.style.width = w + "px";
canvas.style.height = h + "px";
canvas.width = w;
canvas.height = h;
var context = canvas.getContext("2d");
context.clearRect( 0, 0, w, h );
context.drawImage( img, 0, 0 );
if ( isNaN(radius) || radius < 1 ) return;
if ( blurAlphaChannel )
stackBlurCanvasRGBA( canvasID, 0, 0, w, h, radius );
else
stackBlurCanvasRGB( canvasID, 0, 0, w, h, radius );
}
function stackBlurCanvasRGBA( id, top_x, top_y, width, height, radius )
{
if ( isNaN(radius) || radius < 1 ) return;
radius |= 0;
var canvas = document.getElementById( id );
var context = canvas.getContext("2d");
var imageData;
try {
try {
imageData = context.getImageData( top_x, top_y, width, height );
} catch(e) {
// NOTE: this part is supposedly only needed if you want to work with local files
// so it might be okay to remove the whole try/catch block and just use
// imageData = context.getImageData( top_x, top_y, width, height );
try {
netscape.security.PrivilegeManager.enablePrivilege("UniversalBrowserRead");
imageData = context.getImageData( top_x, top_y, width, height );
} catch(e) {
alert("Cannot access local image");
throw new Error("unable to access local image data: " + e);
return;
}
}
} catch(e) {
alert("Cannot access image");
throw new Error("unable to access image data: " + e);
}
var pixels = imageData.data;
var x, y, i, p, yp, yi, yw, r_sum, g_sum, b_sum, a_sum,
r_out_sum, g_out_sum, b_out_sum, a_out_sum,
r_in_sum, g_in_sum, b_in_sum, a_in_sum,
pr, pg, pb, pa, rbs;
var div = radius + radius + 1;
var w4 = width << 2;
var widthMinus1 = width - 1;
var heightMinus1 = height - 1;
var radiusPlus1 = radius + 1;
var sumFactor = radiusPlus1 * ( radiusPlus1 + 1 ) / 2;
var stackStart = new BlurStack();
var stack = stackStart;
for ( i = 1; i < div; i++ )
{
stack = stack.next = new BlurStack();
if ( i == radiusPlus1 ) var stackEnd = stack;
}
stack.next = stackStart;
var stackIn = null;
var stackOut = null;
yw = yi = 0;
var mul_sum = mul_table[radius];
var shg_sum = shg_table[radius];
for ( y = 0; y < height; y++ )
{
r_in_sum = g_in_sum = b_in_sum = a_in_sum = r_sum = g_sum = b_sum = a_sum = 0;
r_out_sum = radiusPlus1 * ( pr = pixels[yi] );
g_out_sum = radiusPlus1 * ( pg = pixels[yi+1] );
b_out_sum = radiusPlus1 * ( pb = pixels[yi+2] );
a_out_sum = radiusPlus1 * ( pa = pixels[yi+3] );
r_sum += sumFactor * pr;
g_sum += sumFactor * pg;
b_sum += sumFactor * pb;
a_sum += sumFactor * pa;
stack = stackStart;
for( i = 0; i < radiusPlus1; i++ )
{
stack.r = pr;
stack.g = pg;
stack.b = pb;
stack.a = pa;
stack = stack.next;
}
for( i = 1; i < radiusPlus1; i++ )
{
p = yi + (( widthMinus1 < i ? widthMinus1 : i ) << 2 );
r_sum += ( stack.r = ( pr = pixels[p])) * ( rbs = radiusPlus1 - i );
g_sum += ( stack.g = ( pg = pixels[p+1])) * rbs;
b_sum += ( stack.b = ( pb = pixels[p+2])) * rbs;
a_sum += ( stack.a = ( pa = pixels[p+3])) * rbs;
r_in_sum += pr;
g_in_sum += pg;
b_in_sum += pb;
a_in_sum += pa;
stack = stack.next;
}
stackIn = stackStart;
stackOut = stackEnd;
for ( x = 0; x < width; x++ )
{
pixels[yi+3] = pa = (a_sum * mul_sum) >> shg_sum;
if ( pa != 0 )
{
pa = 255 / pa;
pixels[yi] = ((r_sum * mul_sum) >> shg_sum) * pa;
pixels[yi+1] = ((g_sum * mul_sum) >> shg_sum) * pa;
pixels[yi+2] = ((b_sum * mul_sum) >> shg_sum) * pa;
} else {
pixels[yi] = pixels[yi+1] = pixels[yi+2] = 0;
}
r_sum -= r_out_sum;
g_sum -= g_out_sum;
b_sum -= b_out_sum;
a_sum -= a_out_sum;
r_out_sum -= stackIn.r;
g_out_sum -= stackIn.g;
b_out_sum -= stackIn.b;
a_out_sum -= stackIn.a;
p = ( yw + ( ( p = x + radius + 1 ) < widthMinus1 ? p : widthMinus1 ) ) << 2;
r_in_sum += ( stackIn.r = pixels[p]);
g_in_sum += ( stackIn.g = pixels[p+1]);
b_in_sum += ( stackIn.b = pixels[p+2]);
a_in_sum += ( stackIn.a = pixels[p+3]);
r_sum += r_in_sum;
g_sum += g_in_sum;
b_sum += b_in_sum;
a_sum += a_in_sum;
stackIn = stackIn.next;
r_out_sum += ( pr = stackOut.r );
g_out_sum += ( pg = stackOut.g );
b_out_sum += ( pb = stackOut.b );
a_out_sum += ( pa = stackOut.a );
r_in_sum -= pr;
g_in_sum -= pg;
b_in_sum -= pb;
a_in_sum -= pa;
stackOut = stackOut.next;
yi += 4;
}
yw += width;
}
for ( x = 0; x < width; x++ )
{
g_in_sum = b_in_sum = a_in_sum = r_in_sum = g_sum = b_sum = a_sum = r_sum = 0;
yi = x << 2;
r_out_sum = radiusPlus1 * ( pr = pixels[yi]);
g_out_sum = radiusPlus1 * ( pg = pixels[yi+1]);
b_out_sum = radiusPlus1 * ( pb = pixels[yi+2]);
a_out_sum = radiusPlus1 * ( pa = pixels[yi+3]);
r_sum += sumFactor * pr;
g_sum += sumFactor * pg;
b_sum += sumFactor * pb;
a_sum += sumFactor * pa;
stack = stackStart;
for( i = 0; i < radiusPlus1; i++ )
{
stack.r = pr;
stack.g = pg;
stack.b = pb;
stack.a = pa;
stack = stack.next;
}
yp = width;
for( i = 1; i <= radius; i++ )
{
yi = ( yp + x ) << 2;
r_sum += ( stack.r = ( pr = pixels[yi])) * ( rbs = radiusPlus1 - i );
g_sum += ( stack.g = ( pg = pixels[yi+1])) * rbs;
b_sum += ( stack.b = ( pb = pixels[yi+2])) * rbs;
a_sum += ( stack.a = ( pa = pixels[yi+3])) * rbs;
r_in_sum += pr;
g_in_sum += pg;
b_in_sum += pb;
a_in_sum += pa;
stack = stack.next;
if( i < heightMinus1 )
{
yp += width;
}
}
yi = x;
stackIn = stackStart;
stackOut = stackEnd;
for ( y = 0; y < height; y++ )
{
p = yi << 2;
pixels[p+3] = pa = (a_sum * mul_sum) >> shg_sum;
if ( pa > 0 )
{
pa = 255 / pa;
pixels[p] = ((r_sum * mul_sum) >> shg_sum ) * pa;
pixels[p+1] = ((g_sum * mul_sum) >> shg_sum ) * pa;
pixels[p+2] = ((b_sum * mul_sum) >> shg_sum ) * pa;
} else {
pixels[p] = pixels[p+1] = pixels[p+2] = 0;
}
r_sum -= r_out_sum;
g_sum -= g_out_sum;
b_sum -= b_out_sum;
a_sum -= a_out_sum;
r_out_sum -= stackIn.r;
g_out_sum -= stackIn.g;
b_out_sum -= stackIn.b;
a_out_sum -= stackIn.a;
p = ( x + (( ( p = y + radiusPlus1) < heightMinus1 ? p : heightMinus1 ) * width )) << 2;
r_sum += ( r_in_sum += ( stackIn.r = pixels[p]));
g_sum += ( g_in_sum += ( stackIn.g = pixels[p+1]));
b_sum += ( b_in_sum += ( stackIn.b = pixels[p+2]));
a_sum += ( a_in_sum += ( stackIn.a = pixels[p+3]));
stackIn = stackIn.next;
r_out_sum += ( pr = stackOut.r );
g_out_sum += ( pg = stackOut.g );
b_out_sum += ( pb = stackOut.b );
a_out_sum += ( pa = stackOut.a );
r_in_sum -= pr;
g_in_sum -= pg;
b_in_sum -= pb;
a_in_sum -= pa;
stackOut = stackOut.next;
yi += width;
}
}
context.putImageData( imageData, top_x, top_y );
}
function stackBlurCanvasRGB( id, top_x, top_y, width, height, radius )
{
if ( isNaN(radius) || radius < 1 ) return;
radius |= 0;
var canvas = document.getElementById( id );
var context = canvas.getContext("2d");
var imageData;
try {
try {
imageData = context.getImageData( top_x, top_y, width, height );
} catch(e) {
// NOTE: this part is supposedly only needed if you want to work with local files
// so it might be okay to remove the whole try/catch block and just use
// imageData = context.getImageData( top_x, top_y, width, height );
try {
netscape.security.PrivilegeManager.enablePrivilege("UniversalBrowserRead");
imageData = context.getImageData( top_x, top_y, width, height );
} catch(e) {
alert("Cannot access local image");
throw new Error("unable to access local image data: " + e);
return;
}
}
} catch(e) {
alert("Cannot access image");
throw new Error("unable to access image data: " + e);
}
var pixels = imageData.data;
var x, y, i, p, yp, yi, yw, r_sum, g_sum, b_sum,
r_out_sum, g_out_sum, b_out_sum,
r_in_sum, g_in_sum, b_in_sum,
pr, pg, pb, rbs;
var div = radius + radius + 1;
var w4 = width << 2;
var widthMinus1 = width - 1;
var heightMinus1 = height - 1;
var radiusPlus1 = radius + 1;
var sumFactor = radiusPlus1 * ( radiusPlus1 + 1 ) / 2;
var stackStart = new BlurStack();
var stack = stackStart;
for ( i = 1; i < div; i++ )
{
stack = stack.next = new BlurStack();
if ( i == radiusPlus1 ) var stackEnd = stack;
}
stack.next = stackStart;
var stackIn = null;
var stackOut = null;
yw = yi = 0;
var mul_sum = mul_table[radius];
var shg_sum = shg_table[radius];
for ( y = 0; y < height; y++ )
{
r_in_sum = g_in_sum = b_in_sum = r_sum = g_sum = b_sum = 0;
r_out_sum = radiusPlus1 * ( pr = pixels[yi] );
g_out_sum = radiusPlus1 * ( pg = pixels[yi+1] );
b_out_sum = radiusPlus1 * ( pb = pixels[yi+2] );
r_sum += sumFactor * pr;
g_sum += sumFactor * pg;
b_sum += sumFactor * pb;
stack = stackStart;
for( i = 0; i < radiusPlus1; i++ )
{
stack.r = pr;
stack.g = pg;
stack.b = pb;
stack = stack.next;
}
for( i = 1; i < radiusPlus1; i++ )
{
p = yi + (( widthMinus1 < i ? widthMinus1 : i ) << 2 );
r_sum += ( stack.r = ( pr = pixels[p])) * ( rbs = radiusPlus1 - i );
g_sum += ( stack.g = ( pg = pixels[p+1])) * rbs;
b_sum += ( stack.b = ( pb = pixels[p+2])) * rbs;
r_in_sum += pr;
g_in_sum += pg;
b_in_sum += pb;
stack = stack.next;
}
stackIn = stackStart;
stackOut = stackEnd;
for ( x = 0; x < width; x++ )
{
pixels[yi] = (r_sum * mul_sum) >> shg_sum;
pixels[yi+1] = (g_sum * mul_sum) >> shg_sum;
pixels[yi+2] = (b_sum * mul_sum) >> shg_sum;
r_sum -= r_out_sum;
g_sum -= g_out_sum;
b_sum -= b_out_sum;
r_out_sum -= stackIn.r;
g_out_sum -= stackIn.g;
b_out_sum -= stackIn.b;
p = ( yw + ( ( p = x + radius + 1 ) < widthMinus1 ? p : widthMinus1 ) ) << 2;
r_in_sum += ( stackIn.r = pixels[p]);
g_in_sum += ( stackIn.g = pixels[p+1]);
b_in_sum += ( stackIn.b = pixels[p+2]);
r_sum += r_in_sum;
g_sum += g_in_sum;
b_sum += b_in_sum;
stackIn = stackIn.next;
r_out_sum += ( pr = stackOut.r );
g_out_sum += ( pg = stackOut.g );
b_out_sum += ( pb = stackOut.b );
r_in_sum -= pr;
g_in_sum -= pg;
b_in_sum -= pb;
stackOut = stackOut.next;
yi += 4;
}
yw += width;
}
for ( x = 0; x < width; x++ )
{
g_in_sum = b_in_sum = r_in_sum = g_sum = b_sum = r_sum = 0;
yi = x << 2;
r_out_sum = radiusPlus1 * ( pr = pixels[yi]);
g_out_sum = radiusPlus1 * ( pg = pixels[yi+1]);
b_out_sum = radiusPlus1 * ( pb = pixels[yi+2]);
r_sum += sumFactor * pr;
g_sum += sumFactor * pg;
b_sum += sumFactor * pb;
stack = stackStart;
for( i = 0; i < radiusPlus1; i++ )
{
stack.r = pr;
stack.g = pg;
stack.b = pb;
stack = stack.next;
}
yp = width;
for( i = 1; i <= radius; i++ )
{
yi = ( yp + x ) << 2;
r_sum += ( stack.r = ( pr = pixels[yi])) * ( rbs = radiusPlus1 - i );
g_sum += ( stack.g = ( pg = pixels[yi+1])) * rbs;
b_sum += ( stack.b = ( pb = pixels[yi+2])) * rbs;
r_in_sum += pr;
g_in_sum += pg;
b_in_sum += pb;
stack = stack.next;
if( i < heightMinus1 )
{
yp += width;
}
}
yi = x;
stackIn = stackStart;
stackOut = stackEnd;
for ( y = 0; y < height; y++ )
{
p = yi << 2;
pixels[p] = (r_sum * mul_sum) >> shg_sum;
pixels[p+1] = (g_sum * mul_sum) >> shg_sum;
pixels[p+2] = (b_sum * mul_sum) >> shg_sum;
r_sum -= r_out_sum;
g_sum -= g_out_sum;
b_sum -= b_out_sum;
r_out_sum -= stackIn.r;
g_out_sum -= stackIn.g;
b_out_sum -= stackIn.b;
p = ( x + (( ( p = y + radiusPlus1) < heightMinus1 ? p : heightMinus1 ) * width )) << 2;
r_sum += ( r_in_sum += ( stackIn.r = pixels[p]));
g_sum += ( g_in_sum += ( stackIn.g = pixels[p+1]));
b_sum += ( b_in_sum += ( stackIn.b = pixels[p+2]));
stackIn = stackIn.next;
r_out_sum += ( pr = stackOut.r );
g_out_sum += ( pg = stackOut.g );
b_out_sum += ( pb = stackOut.b );
r_in_sum -= pr;
g_in_sum -= pg;
b_in_sum -= pb;
stackOut = stackOut.next;
yi += width;
}
}
context.putImageData( imageData, top_x, top_y );
}
function BlurStack()
{
this.r = 0;
this.g = 0;
this.b = 0;
this.a = 0;
this.next = null;
}
\ No newline at end of file
This source diff could not be displayed because it is too large. You can view the blob instead.
/**
* A class to parse color values
* @author Stoyan Stefanov <sstoo@gmail.com>
* @link http://www.phpied.com/rgb-color-parser-in-javascript/
* @license Use it if you like it
*/
function RGBColor(color_string)
{
this.ok = false;
// strip any leading #
if (color_string.charAt(0) == '#') { // remove # if any
color_string = color_string.substr(1,6);
}
color_string = color_string.replace(/ /g,'');
color_string = color_string.toLowerCase();
// before getting into regexps, try simple matches
// and overwrite the input
var simple_colors = {
aliceblue: 'f0f8ff',
antiquewhite: 'faebd7',
aqua: '00ffff',
aquamarine: '7fffd4',
azure: 'f0ffff',
beige: 'f5f5dc',
bisque: 'ffe4c4',
black: '000000',
blanchedalmond: 'ffebcd',
blue: '0000ff',
blueviolet: '8a2be2',
brown: 'a52a2a',
burlywood: 'deb887',
cadetblue: '5f9ea0',
chartreuse: '7fff00',
chocolate: 'd2691e',
coral: 'ff7f50',
cornflowerblue: '6495ed',
cornsilk: 'fff8dc',
crimson: 'dc143c',
cyan: '00ffff',
darkblue: '00008b',
darkcyan: '008b8b',
darkgoldenrod: 'b8860b',
darkgray: 'a9a9a9',
darkgreen: '006400',
darkkhaki: 'bdb76b',
darkmagenta: '8b008b',
darkolivegreen: '556b2f',
darkorange: 'ff8c00',
darkorchid: '9932cc',
darkred: '8b0000',
darksalmon: 'e9967a',
darkseagreen: '8fbc8f',
darkslateblue: '483d8b',
darkslategray: '2f4f4f',
darkturquoise: '00ced1',
darkviolet: '9400d3',
deeppink: 'ff1493',
deepskyblue: '00bfff',
dimgray: '696969',
dodgerblue: '1e90ff',
feldspar: 'd19275',
firebrick: 'b22222',
floralwhite: 'fffaf0',
forestgreen: '228b22',
fuchsia: 'ff00ff',
gainsboro: 'dcdcdc',
ghostwhite: 'f8f8ff',
gold: 'ffd700',
goldenrod: 'daa520',
gray: '808080',
green: '008000',
greenyellow: 'adff2f',
honeydew: 'f0fff0',
hotpink: 'ff69b4',
indianred : 'cd5c5c',
indigo : '4b0082',
ivory: 'fffff0',
khaki: 'f0e68c',
lavender: 'e6e6fa',
lavenderblush: 'fff0f5',
lawngreen: '7cfc00',
lemonchiffon: 'fffacd',
lightblue: 'add8e6',
lightcoral: 'f08080',
lightcyan: 'e0ffff',
lightgoldenrodyellow: 'fafad2',
lightgrey: 'd3d3d3',
lightgreen: '90ee90',
lightpink: 'ffb6c1',
lightsalmon: 'ffa07a',
lightseagreen: '20b2aa',
lightskyblue: '87cefa',
lightslateblue: '8470ff',
lightslategray: '778899',
lightsteelblue: 'b0c4de',
lightyellow: 'ffffe0',
lime: '00ff00',
limegreen: '32cd32',
linen: 'faf0e6',
magenta: 'ff00ff',
maroon: '800000',
mediumaquamarine: '66cdaa',
mediumblue: '0000cd',
mediumorchid: 'ba55d3',
mediumpurple: '9370d8',
mediumseagreen: '3cb371',
mediumslateblue: '7b68ee',
mediumspringgreen: '00fa9a',
mediumturquoise: '48d1cc',
mediumvioletred: 'c71585',
midnightblue: '191970',
mintcream: 'f5fffa',
mistyrose: 'ffe4e1',
moccasin: 'ffe4b5',
navajowhite: 'ffdead',
navy: '000080',
oldlace: 'fdf5e6',
olive: '808000',
olivedrab: '6b8e23',
orange: 'ffa500',
orangered: 'ff4500',
orchid: 'da70d6',
palegoldenrod: 'eee8aa',
palegreen: '98fb98',
paleturquoise: 'afeeee',
palevioletred: 'd87093',
papayawhip: 'ffefd5',
peachpuff: 'ffdab9',
peru: 'cd853f',
pink: 'ffc0cb',
plum: 'dda0dd',
powderblue: 'b0e0e6',
purple: '800080',
red: 'ff0000',
rosybrown: 'bc8f8f',
royalblue: '4169e1',
saddlebrown: '8b4513',
salmon: 'fa8072',
sandybrown: 'f4a460',
seagreen: '2e8b57',
seashell: 'fff5ee',
sienna: 'a0522d',
silver: 'c0c0c0',
skyblue: '87ceeb',
slateblue: '6a5acd',
slategray: '708090',
snow: 'fffafa',
springgreen: '00ff7f',
steelblue: '4682b4',
tan: 'd2b48c',
teal: '008080',
thistle: 'd8bfd8',
tomato: 'ff6347',
turquoise: '40e0d0',
violet: 'ee82ee',
violetred: 'd02090',
wheat: 'f5deb3',
white: 'ffffff',
whitesmoke: 'f5f5f5',
yellow: 'ffff00',
yellowgreen: '9acd32'
};
for (var key in simple_colors) {
if (color_string == key) {
color_string = simple_colors[key];
}
}
// emd of simple type-in colors
// array of color definition objects
var color_defs = [
{
re: /^rgb\((\d{1,3}),\s*(\d{1,3}),\s*(\d{1,3})\)$/,
example: ['rgb(123, 234, 45)', 'rgb(255,234,245)'],
process: function (bits){
return [
parseInt(bits[1]),
parseInt(bits[2]),
parseInt(bits[3])
];
}
},
{
re: /^(\w{2})(\w{2})(\w{2})$/,
example: ['#00ff00', '336699'],
process: function (bits){
return [
parseInt(bits[1], 16),
parseInt(bits[2], 16),
parseInt(bits[3], 16)
];
}
},
{
re: /^(\w{1})(\w{1})(\w{1})$/,
example: ['#fb0', 'f0f'],
process: function (bits){
return [
parseInt(bits[1] + bits[1], 16),
parseInt(bits[2] + bits[2], 16),
parseInt(bits[3] + bits[3], 16)
];
}
}
];
// search through the definitions to find a match
for (var i = 0; i < color_defs.length; i++) {
var re = color_defs[i].re;
var processor = color_defs[i].process;
var bits = re.exec(color_string);
if (bits) {
channels = processor(bits);
this.r = channels[0];
this.g = channels[1];
this.b = channels[2];
this.ok = true;
}
}
// validate/cleanup values
this.r = (this.r < 0 || isNaN(this.r)) ? 0 : ((this.r > 255) ? 255 : this.r);
this.g = (this.g < 0 || isNaN(this.g)) ? 0 : ((this.g > 255) ? 255 : this.g);
this.b = (this.b < 0 || isNaN(this.b)) ? 0 : ((this.b > 255) ? 255 : this.b);
// some getters
this.toRGB = function () {
return 'rgb(' + this.r + ', ' + this.g + ', ' + this.b + ')';
}
this.toHex = function () {
var r = this.r.toString(16);
var g = this.g.toString(16);
var b = this.b.toString(16);
if (r.length == 1) r = '0' + r;
if (g.length == 1) g = '0' + g;
if (b.length == 1) b = '0' + b;
return '#' + r + g + b;
}
// help
this.getHelpXML = function () {
var examples = new Array();
// add regexps
for (var i = 0; i < color_defs.length; i++) {
var example = color_defs[i].example;
for (var j = 0; j < example.length; j++) {
examples[examples.length] = example[j];
}
}
// add type-in colors
for (var sc in simple_colors) {
examples[examples.length] = sc;
}
var xml = document.createElement('ul');
xml.setAttribute('id', 'rgbcolor-examples');
for (var i = 0; i < examples.length; i++) {
try {
var list_item = document.createElement('li');
var list_color = new RGBColor(examples[i]);
var example_div = document.createElement('div');
example_div.style.cssText =
'margin: 3px; '
+ 'border: 1px solid black; '
+ 'background:' + list_color.toHex() + '; '
+ 'color:' + list_color.toHex()
;
example_div.appendChild(document.createTextNode('test'));
var list_item_value = document.createTextNode(
' ' + examples[i] + ' -> ' + list_color.toRGB() + ' -> ' + list_color.toHex()
);
list_item.appendChild(example_div);
list_item.appendChild(list_item_value);
xml.appendChild(list_item);
} catch(e){}
}
return xml;
}
}
Subproject commit a830f3ce3dc62a8f4cf64611045f51453a9095ac
Subproject commit 43cc299309c7ec3a1c0c91cb890ba9b0907a1053
Subproject commit 2100743a23276853658906608e093d1227739084
Subproject commit 5abfcd8d5ece0bcece486dec435288ec7bcd281d
......@@ -269,7 +269,8 @@ define("promise/polyfill",
return isFunction(resolve);
}());
if (!es6PromiseSupport || ~window.location.href.indexOf('rsvpromise')) {
// !es6PromiseSupport || ~window.location.href.indexOf('rsvpromise')
if (true) {
local.Promise = RSVPPromise;
}
}
......
/**
* @fileoverview
* - Using the 'QRCode for Javascript library'
* - Fixed dataset of 'QRCode for Javascript library' for support full-spec.
* - this library has no dependencies.
*
* @author davidshimjs
* @see <a href="http://www.d-project.com/" target="_blank">http://www.d-project.com/</a>
* @see <a href="http://jeromeetienne.github.com/jquery-qrcode/" target="_blank">http://jeromeetienne.github.com/jquery-qrcode/</a>
*/
(function () {
//---------------------------------------------------------------------
// QRCode for JavaScript
//
// Copyright (c) 2009 Kazuhiko Arase
//
// URL: http://www.d-project.com/
//
// Licensed under the MIT license:
// http://www.opensource.org/licenses/mit-license.php
//
// The word "QR Code" is registered trademark of
// DENSO WAVE INCORPORATED
// http://www.denso-wave.com/qrcode/faqpatent-e.html
//
//---------------------------------------------------------------------
function QR8bitByte(data) {
this.mode = QRMode.MODE_8BIT_BYTE;
this.data = data;
this.parsedData = [];
// Added to support UTF-8 Characters
for (var i = 0, l = this.data.length; i < l; i++) {
var byteArray = [];
var code = this.data.charCodeAt(i);
if (code > 0x10000) {
byteArray[0] = 0xF0 | ((code & 0x1C0000) >>> 18);
byteArray[1] = 0x80 | ((code & 0x3F000) >>> 12);
byteArray[2] = 0x80 | ((code & 0xFC0) >>> 6);
byteArray[3] = 0x80 | (code & 0x3F);
} else if (code > 0x800) {
byteArray[0] = 0xE0 | ((code & 0xF000) >>> 12);
byteArray[1] = 0x80 | ((code & 0xFC0) >>> 6);
byteArray[2] = 0x80 | (code & 0x3F);
} else if (code > 0x80) {
byteArray[0] = 0xC0 | ((code & 0x7C0) >>> 6);
byteArray[1] = 0x80 | (code & 0x3F);
} else {
byteArray[0] = code;
}
this.parsedData.push(byteArray);
}
this.parsedData = Array.prototype.concat.apply([], this.parsedData);
if (this.parsedData.length != this.data.length) {
this.parsedData.unshift(191);
this.parsedData.unshift(187);
this.parsedData.unshift(239);
}
}
QR8bitByte.prototype = {
getLength: function (buffer) {
return this.parsedData.length;
},
write: function (buffer) {
for (var i = 0, l = this.parsedData.length; i < l; i++) {
buffer.put(this.parsedData[i], 8);
}
}
};
function QRCodeModel(typeNumber, errorCorrectLevel) {
this.typeNumber = typeNumber;
this.errorCorrectLevel = errorCorrectLevel;
this.modules = null;
this.moduleCount = 0;
this.dataCache = null;
this.dataList = [];
}
QRCodeModel.prototype={addData:function(data){var newData=new QR8bitByte(data);this.dataList.push(newData);this.dataCache=null;},isDark:function(row,col){if(row<0||this.moduleCount<=row||col<0||this.moduleCount<=col){throw new Error(row+","+col);}
return this.modules[row][col];},getModuleCount:function(){return this.moduleCount;},make:function(){this.makeImpl(false,this.getBestMaskPattern());},makeImpl:function(test,maskPattern){this.moduleCount=this.typeNumber*4+17;this.modules=new Array(this.moduleCount);for(var row=0;row<this.moduleCount;row++){this.modules[row]=new Array(this.moduleCount);for(var col=0;col<this.moduleCount;col++){this.modules[row][col]=null;}}
this.setupPositionProbePattern(0,0);this.setupPositionProbePattern(this.moduleCount-7,0);this.setupPositionProbePattern(0,this.moduleCount-7);this.setupPositionAdjustPattern();this.setupTimingPattern();this.setupTypeInfo(test,maskPattern);if(this.typeNumber>=7){this.setupTypeNumber(test);}
if(this.dataCache==null){this.dataCache=QRCodeModel.createData(this.typeNumber,this.errorCorrectLevel,this.dataList);}
this.mapData(this.dataCache,maskPattern);},setupPositionProbePattern:function(row,col){for(var r=-1;r<=7;r++){if(row+r<=-1||this.moduleCount<=row+r)continue;for(var c=-1;c<=7;c++){if(col+c<=-1||this.moduleCount<=col+c)continue;if((0<=r&&r<=6&&(c==0||c==6))||(0<=c&&c<=6&&(r==0||r==6))||(2<=r&&r<=4&&2<=c&&c<=4)){this.modules[row+r][col+c]=true;}else{this.modules[row+r][col+c]=false;}}}},getBestMaskPattern:function(){var minLostPoint=0;var pattern=0;for(var i=0;i<8;i++){this.makeImpl(true,i);var lostPoint=QRUtil.getLostPoint(this);if(i==0||minLostPoint>lostPoint){minLostPoint=lostPoint;pattern=i;}}
return pattern;},createMovieClip:function(target_mc,instance_name,depth){var qr_mc=target_mc.createEmptyMovieClip(instance_name,depth);var cs=1;this.make();for(var row=0;row<this.modules.length;row++){var y=row*cs;for(var col=0;col<this.modules[row].length;col++){var x=col*cs;var dark=this.modules[row][col];if(dark){qr_mc.beginFill(0,100);qr_mc.moveTo(x,y);qr_mc.lineTo(x+cs,y);qr_mc.lineTo(x+cs,y+cs);qr_mc.lineTo(x,y+cs);qr_mc.endFill();}}}
return qr_mc;},setupTimingPattern:function(){for(var r=8;r<this.moduleCount-8;r++){if(this.modules[r][6]!=null){continue;}
this.modules[r][6]=(r%2==0);}
for(var c=8;c<this.moduleCount-8;c++){if(this.modules[6][c]!=null){continue;}
this.modules[6][c]=(c%2==0);}},setupPositionAdjustPattern:function(){var pos=QRUtil.getPatternPosition(this.typeNumber);for(var i=0;i<pos.length;i++){for(var j=0;j<pos.length;j++){var row=pos[i];var col=pos[j];if(this.modules[row][col]!=null){continue;}
for(var r=-2;r<=2;r++){for(var c=-2;c<=2;c++){if(r==-2||r==2||c==-2||c==2||(r==0&&c==0)){this.modules[row+r][col+c]=true;}else{this.modules[row+r][col+c]=false;}}}}}},setupTypeNumber:function(test){var bits=QRUtil.getBCHTypeNumber(this.typeNumber);for(var i=0;i<18;i++){var mod=(!test&&((bits>>i)&1)==1);this.modules[Math.floor(i/3)][i%3+this.moduleCount-8-3]=mod;}
for(var i=0;i<18;i++){var mod=(!test&&((bits>>i)&1)==1);this.modules[i%3+this.moduleCount-8-3][Math.floor(i/3)]=mod;}},setupTypeInfo:function(test,maskPattern){var data=(this.errorCorrectLevel<<3)|maskPattern;var bits=QRUtil.getBCHTypeInfo(data);for(var i=0;i<15;i++){var mod=(!test&&((bits>>i)&1)==1);if(i<6){this.modules[i][8]=mod;}else if(i<8){this.modules[i+1][8]=mod;}else{this.modules[this.moduleCount-15+i][8]=mod;}}
for(var i=0;i<15;i++){var mod=(!test&&((bits>>i)&1)==1);if(i<8){this.modules[8][this.moduleCount-i-1]=mod;}else if(i<9){this.modules[8][15-i-1+1]=mod;}else{this.modules[8][15-i-1]=mod;}}
this.modules[this.moduleCount-8][8]=(!test);},mapData:function(data,maskPattern){var inc=-1;var row=this.moduleCount-1;var bitIndex=7;var byteIndex=0;for(var col=this.moduleCount-1;col>0;col-=2){if(col==6)col--;while(true){for(var c=0;c<2;c++){if(this.modules[row][col-c]==null){var dark=false;if(byteIndex<data.length){dark=(((data[byteIndex]>>>bitIndex)&1)==1);}
var mask=QRUtil.getMask(maskPattern,row,col-c);if(mask){dark=!dark;}
this.modules[row][col-c]=dark;bitIndex--;if(bitIndex==-1){byteIndex++;bitIndex=7;}}}
row+=inc;if(row<0||this.moduleCount<=row){row-=inc;inc=-inc;break;}}}}};QRCodeModel.PAD0=0xEC;QRCodeModel.PAD1=0x11;QRCodeModel.createData=function(typeNumber,errorCorrectLevel,dataList){var rsBlocks=QRRSBlock.getRSBlocks(typeNumber,errorCorrectLevel);var buffer=new QRBitBuffer();for(var i=0;i<dataList.length;i++){var data=dataList[i];buffer.put(data.mode,4);buffer.put(data.getLength(),QRUtil.getLengthInBits(data.mode,typeNumber));data.write(buffer);}
var totalDataCount=0;for(var i=0;i<rsBlocks.length;i++){totalDataCount+=rsBlocks[i].dataCount;}
if(buffer.getLengthInBits()>totalDataCount*8){throw new Error("code length overflow. ("
+buffer.getLengthInBits()
+">"
+totalDataCount*8
+")");}
if(buffer.getLengthInBits()+4<=totalDataCount*8){buffer.put(0,4);}
while(buffer.getLengthInBits()%8!=0){buffer.putBit(false);}
while(true){if(buffer.getLengthInBits()>=totalDataCount*8){break;}
buffer.put(QRCodeModel.PAD0,8);if(buffer.getLengthInBits()>=totalDataCount*8){break;}
buffer.put(QRCodeModel.PAD1,8);}
return QRCodeModel.createBytes(buffer,rsBlocks);};QRCodeModel.createBytes=function(buffer,rsBlocks){var offset=0;var maxDcCount=0;var maxEcCount=0;var dcdata=new Array(rsBlocks.length);var ecdata=new Array(rsBlocks.length);for(var r=0;r<rsBlocks.length;r++){var dcCount=rsBlocks[r].dataCount;var ecCount=rsBlocks[r].totalCount-dcCount;maxDcCount=Math.max(maxDcCount,dcCount);maxEcCount=Math.max(maxEcCount,ecCount);dcdata[r]=new Array(dcCount);for(var i=0;i<dcdata[r].length;i++){dcdata[r][i]=0xff&buffer.buffer[i+offset];}
offset+=dcCount;var rsPoly=QRUtil.getErrorCorrectPolynomial(ecCount);var rawPoly=new QRPolynomial(dcdata[r],rsPoly.getLength()-1);var modPoly=rawPoly.mod(rsPoly);ecdata[r]=new Array(rsPoly.getLength()-1);for(var i=0;i<ecdata[r].length;i++){var modIndex=i+modPoly.getLength()-ecdata[r].length;ecdata[r][i]=(modIndex>=0)?modPoly.get(modIndex):0;}}
var totalCodeCount=0;for(var i=0;i<rsBlocks.length;i++){totalCodeCount+=rsBlocks[i].totalCount;}
var data=new Array(totalCodeCount);var index=0;for(var i=0;i<maxDcCount;i++){for(var r=0;r<rsBlocks.length;r++){if(i<dcdata[r].length){data[index++]=dcdata[r][i];}}}
for(var i=0;i<maxEcCount;i++){for(var r=0;r<rsBlocks.length;r++){if(i<ecdata[r].length){data[index++]=ecdata[r][i];}}}
return data;};var QRMode={MODE_NUMBER:1<<0,MODE_ALPHA_NUM:1<<1,MODE_8BIT_BYTE:1<<2,MODE_KANJI:1<<3};var QRErrorCorrectLevel={L:1,M:0,Q:3,H:2};var QRMaskPattern={PATTERN000:0,PATTERN001:1,PATTERN010:2,PATTERN011:3,PATTERN100:4,PATTERN101:5,PATTERN110:6,PATTERN111:7};var QRUtil={PATTERN_POSITION_TABLE:[[],[6,18],[6,22],[6,26],[6,30],[6,34],[6,22,38],[6,24,42],[6,26,46],[6,28,50],[6,30,54],[6,32,58],[6,34,62],[6,26,46,66],[6,26,48,70],[6,26,50,74],[6,30,54,78],[6,30,56,82],[6,30,58,86],[6,34,62,90],[6,28,50,72,94],[6,26,50,74,98],[6,30,54,78,102],[6,28,54,80,106],[6,32,58,84,110],[6,30,58,86,114],[6,34,62,90,118],[6,26,50,74,98,122],[6,30,54,78,102,126],[6,26,52,78,104,130],[6,30,56,82,108,134],[6,34,60,86,112,138],[6,30,58,86,114,142],[6,34,62,90,118,146],[6,30,54,78,102,126,150],[6,24,50,76,102,128,154],[6,28,54,80,106,132,158],[6,32,58,84,110,136,162],[6,26,54,82,110,138,166],[6,30,58,86,114,142,170]],G15:(1<<10)|(1<<8)|(1<<5)|(1<<4)|(1<<2)|(1<<1)|(1<<0),G18:(1<<12)|(1<<11)|(1<<10)|(1<<9)|(1<<8)|(1<<5)|(1<<2)|(1<<0),G15_MASK:(1<<14)|(1<<12)|(1<<10)|(1<<4)|(1<<1),getBCHTypeInfo:function(data){var d=data<<10;while(QRUtil.getBCHDigit(d)-QRUtil.getBCHDigit(QRUtil.G15)>=0){d^=(QRUtil.G15<<(QRUtil.getBCHDigit(d)-QRUtil.getBCHDigit(QRUtil.G15)));}
return((data<<10)|d)^QRUtil.G15_MASK;},getBCHTypeNumber:function(data){var d=data<<12;while(QRUtil.getBCHDigit(d)-QRUtil.getBCHDigit(QRUtil.G18)>=0){d^=(QRUtil.G18<<(QRUtil.getBCHDigit(d)-QRUtil.getBCHDigit(QRUtil.G18)));}
return(data<<12)|d;},getBCHDigit:function(data){var digit=0;while(data!=0){digit++;data>>>=1;}
return digit;},getPatternPosition:function(typeNumber){return QRUtil.PATTERN_POSITION_TABLE[typeNumber-1];},getMask:function(maskPattern,i,j){switch(maskPattern){case QRMaskPattern.PATTERN000:return(i+j)%2==0;case QRMaskPattern.PATTERN001:return i%2==0;case QRMaskPattern.PATTERN010:return j%3==0;case QRMaskPattern.PATTERN011:return(i+j)%3==0;case QRMaskPattern.PATTERN100:return(Math.floor(i/2)+Math.floor(j/3))%2==0;case QRMaskPattern.PATTERN101:return(i*j)%2+(i*j)%3==0;case QRMaskPattern.PATTERN110:return((i*j)%2+(i*j)%3)%2==0;case QRMaskPattern.PATTERN111:return((i*j)%3+(i+j)%2)%2==0;default:throw new Error("bad maskPattern:"+maskPattern);}},getErrorCorrectPolynomial:function(errorCorrectLength){var a=new QRPolynomial([1],0);for(var i=0;i<errorCorrectLength;i++){a=a.multiply(new QRPolynomial([1,QRMath.gexp(i)],0));}
return a;},getLengthInBits:function(mode,type){if(1<=type&&type<10){switch(mode){case QRMode.MODE_NUMBER:return 10;case QRMode.MODE_ALPHA_NUM:return 9;case QRMode.MODE_8BIT_BYTE:return 8;case QRMode.MODE_KANJI:return 8;default:throw new Error("mode:"+mode);}}else if(type<27){switch(mode){case QRMode.MODE_NUMBER:return 12;case QRMode.MODE_ALPHA_NUM:return 11;case QRMode.MODE_8BIT_BYTE:return 16;case QRMode.MODE_KANJI:return 10;default:throw new Error("mode:"+mode);}}else if(type<41){switch(mode){case QRMode.MODE_NUMBER:return 14;case QRMode.MODE_ALPHA_NUM:return 13;case QRMode.MODE_8BIT_BYTE:return 16;case QRMode.MODE_KANJI:return 12;default:throw new Error("mode:"+mode);}}else{throw new Error("type:"+type);}},getLostPoint:function(qrCode){var moduleCount=qrCode.getModuleCount();var lostPoint=0;for(var row=0;row<moduleCount;row++){for(var col=0;col<moduleCount;col++){var sameCount=0;var dark=qrCode.isDark(row,col);for(var r=-1;r<=1;r++){if(row+r<0||moduleCount<=row+r){continue;}
for(var c=-1;c<=1;c++){if(col+c<0||moduleCount<=col+c){continue;}
if(r==0&&c==0){continue;}
if(dark==qrCode.isDark(row+r,col+c)){sameCount++;}}}
if(sameCount>5){lostPoint+=(3+sameCount-5);}}}
for(var row=0;row<moduleCount-1;row++){for(var col=0;col<moduleCount-1;col++){var count=0;if(qrCode.isDark(row,col))count++;if(qrCode.isDark(row+1,col))count++;if(qrCode.isDark(row,col+1))count++;if(qrCode.isDark(row+1,col+1))count++;if(count==0||count==4){lostPoint+=3;}}}
for(var row=0;row<moduleCount;row++){for(var col=0;col<moduleCount-6;col++){if(qrCode.isDark(row,col)&&!qrCode.isDark(row,col+1)&&qrCode.isDark(row,col+2)&&qrCode.isDark(row,col+3)&&qrCode.isDark(row,col+4)&&!qrCode.isDark(row,col+5)&&qrCode.isDark(row,col+6)){lostPoint+=40;}}}
for(var col=0;col<moduleCount;col++){for(var row=0;row<moduleCount-6;row++){if(qrCode.isDark(row,col)&&!qrCode.isDark(row+1,col)&&qrCode.isDark(row+2,col)&&qrCode.isDark(row+3,col)&&qrCode.isDark(row+4,col)&&!qrCode.isDark(row+5,col)&&qrCode.isDark(row+6,col)){lostPoint+=40;}}}
var darkCount=0;for(var col=0;col<moduleCount;col++){for(var row=0;row<moduleCount;row++){if(qrCode.isDark(row,col)){darkCount++;}}}
var ratio=Math.abs(100*darkCount/moduleCount/moduleCount-50)/5;lostPoint+=ratio*10;return lostPoint;}};var QRMath={glog:function(n){if(n<1){throw new Error("glog("+n+")");}
return QRMath.LOG_TABLE[n];},gexp:function(n){while(n<0){n+=255;}
while(n>=256){n-=255;}
return QRMath.EXP_TABLE[n];},EXP_TABLE:new Array(256),LOG_TABLE:new Array(256)};for(var i=0;i<8;i++){QRMath.EXP_TABLE[i]=1<<i;}
for(var i=8;i<256;i++){QRMath.EXP_TABLE[i]=QRMath.EXP_TABLE[i-4]^QRMath.EXP_TABLE[i-5]^QRMath.EXP_TABLE[i-6]^QRMath.EXP_TABLE[i-8];}
for(var i=0;i<255;i++){QRMath.LOG_TABLE[QRMath.EXP_TABLE[i]]=i;}
function QRPolynomial(num,shift){if(num.length==undefined){throw new Error(num.length+"/"+shift);}
var offset=0;while(offset<num.length&&num[offset]==0){offset++;}
this.num=new Array(num.length-offset+shift);for(var i=0;i<num.length-offset;i++){this.num[i]=num[i+offset];}}
QRPolynomial.prototype={get:function(index){return this.num[index];},getLength:function(){return this.num.length;},multiply:function(e){var num=new Array(this.getLength()+e.getLength()-1);for(var i=0;i<this.getLength();i++){for(var j=0;j<e.getLength();j++){num[i+j]^=QRMath.gexp(QRMath.glog(this.get(i))+QRMath.glog(e.get(j)));}}
return new QRPolynomial(num,0);},mod:function(e){if(this.getLength()-e.getLength()<0){return this;}
var ratio=QRMath.glog(this.get(0))-QRMath.glog(e.get(0));var num=new Array(this.getLength());for(var i=0;i<this.getLength();i++){num[i]=this.get(i);}
for(var i=0;i<e.getLength();i++){num[i]^=QRMath.gexp(QRMath.glog(e.get(i))+ratio);}
return new QRPolynomial(num,0).mod(e);}};function QRRSBlock(totalCount,dataCount){this.totalCount=totalCount;this.dataCount=dataCount;}
QRRSBlock.RS_BLOCK_TABLE=[[1,26,19],[1,26,16],[1,26,13],[1,26,9],[1,44,34],[1,44,28],[1,44,22],[1,44,16],[1,70,55],[1,70,44],[2,35,17],[2,35,13],[1,100,80],[2,50,32],[2,50,24],[4,25,9],[1,134,108],[2,67,43],[2,33,15,2,34,16],[2,33,11,2,34,12],[2,86,68],[4,43,27],[4,43,19],[4,43,15],[2,98,78],[4,49,31],[2,32,14,4,33,15],[4,39,13,1,40,14],[2,121,97],[2,60,38,2,61,39],[4,40,18,2,41,19],[4,40,14,2,41,15],[2,146,116],[3,58,36,2,59,37],[4,36,16,4,37,17],[4,36,12,4,37,13],[2,86,68,2,87,69],[4,69,43,1,70,44],[6,43,19,2,44,20],[6,43,15,2,44,16],[4,101,81],[1,80,50,4,81,51],[4,50,22,4,51,23],[3,36,12,8,37,13],[2,116,92,2,117,93],[6,58,36,2,59,37],[4,46,20,6,47,21],[7,42,14,4,43,15],[4,133,107],[8,59,37,1,60,38],[8,44,20,4,45,21],[12,33,11,4,34,12],[3,145,115,1,146,116],[4,64,40,5,65,41],[11,36,16,5,37,17],[11,36,12,5,37,13],[5,109,87,1,110,88],[5,65,41,5,66,42],[5,54,24,7,55,25],[11,36,12],[5,122,98,1,123,99],[7,73,45,3,74,46],[15,43,19,2,44,20],[3,45,15,13,46,16],[1,135,107,5,136,108],[10,74,46,1,75,47],[1,50,22,15,51,23],[2,42,14,17,43,15],[5,150,120,1,151,121],[9,69,43,4,70,44],[17,50,22,1,51,23],[2,42,14,19,43,15],[3,141,113,4,142,114],[3,70,44,11,71,45],[17,47,21,4,48,22],[9,39,13,16,40,14],[3,135,107,5,136,108],[3,67,41,13,68,42],[15,54,24,5,55,25],[15,43,15,10,44,16],[4,144,116,4,145,117],[17,68,42],[17,50,22,6,51,23],[19,46,16,6,47,17],[2,139,111,7,140,112],[17,74,46],[7,54,24,16,55,25],[34,37,13],[4,151,121,5,152,122],[4,75,47,14,76,48],[11,54,24,14,55,25],[16,45,15,14,46,16],[6,147,117,4,148,118],[6,73,45,14,74,46],[11,54,24,16,55,25],[30,46,16,2,47,17],[8,132,106,4,133,107],[8,75,47,13,76,48],[7,54,24,22,55,25],[22,45,15,13,46,16],[10,142,114,2,143,115],[19,74,46,4,75,47],[28,50,22,6,51,23],[33,46,16,4,47,17],[8,152,122,4,153,123],[22,73,45,3,74,46],[8,53,23,26,54,24],[12,45,15,28,46,16],[3,147,117,10,148,118],[3,73,45,23,74,46],[4,54,24,31,55,25],[11,45,15,31,46,16],[7,146,116,7,147,117],[21,73,45,7,74,46],[1,53,23,37,54,24],[19,45,15,26,46,16],[5,145,115,10,146,116],[19,75,47,10,76,48],[15,54,24,25,55,25],[23,45,15,25,46,16],[13,145,115,3,146,116],[2,74,46,29,75,47],[42,54,24,1,55,25],[23,45,15,28,46,16],[17,145,115],[10,74,46,23,75,47],[10,54,24,35,55,25],[19,45,15,35,46,16],[17,145,115,1,146,116],[14,74,46,21,75,47],[29,54,24,19,55,25],[11,45,15,46,46,16],[13,145,115,6,146,116],[14,74,46,23,75,47],[44,54,24,7,55,25],[59,46,16,1,47,17],[12,151,121,7,152,122],[12,75,47,26,76,48],[39,54,24,14,55,25],[22,45,15,41,46,16],[6,151,121,14,152,122],[6,75,47,34,76,48],[46,54,24,10,55,25],[2,45,15,64,46,16],[17,152,122,4,153,123],[29,74,46,14,75,47],[49,54,24,10,55,25],[24,45,15,46,46,16],[4,152,122,18,153,123],[13,74,46,32,75,47],[48,54,24,14,55,25],[42,45,15,32,46,16],[20,147,117,4,148,118],[40,75,47,7,76,48],[43,54,24,22,55,25],[10,45,15,67,46,16],[19,148,118,6,149,119],[18,75,47,31,76,48],[34,54,24,34,55,25],[20,45,15,61,46,16]];QRRSBlock.getRSBlocks=function(typeNumber,errorCorrectLevel){var rsBlock=QRRSBlock.getRsBlockTable(typeNumber,errorCorrectLevel);if(rsBlock==undefined){throw new Error("bad rs block @ typeNumber:"+typeNumber+"/errorCorrectLevel:"+errorCorrectLevel);}
var length=rsBlock.length/3;var list=[];for(var i=0;i<length;i++){var count=rsBlock[i*3+0];var totalCount=rsBlock[i*3+1];var dataCount=rsBlock[i*3+2];for(var j=0;j<count;j++){list.push(new QRRSBlock(totalCount,dataCount));}}
return list;};QRRSBlock.getRsBlockTable=function(typeNumber,errorCorrectLevel){switch(errorCorrectLevel){case QRErrorCorrectLevel.L:return QRRSBlock.RS_BLOCK_TABLE[(typeNumber-1)*4+0];case QRErrorCorrectLevel.M:return QRRSBlock.RS_BLOCK_TABLE[(typeNumber-1)*4+1];case QRErrorCorrectLevel.Q:return QRRSBlock.RS_BLOCK_TABLE[(typeNumber-1)*4+2];case QRErrorCorrectLevel.H:return QRRSBlock.RS_BLOCK_TABLE[(typeNumber-1)*4+3];default:return undefined;}};function QRBitBuffer(){this.buffer=[];this.length=0;}
QRBitBuffer.prototype={get:function(index){var bufIndex=Math.floor(index/8);return((this.buffer[bufIndex]>>>(7-index%8))&1)==1;},put:function(num,length){for(var i=0;i<length;i++){this.putBit(((num>>>(length-i-1))&1)==1);}},getLengthInBits:function(){return this.length;},putBit:function(bit){var bufIndex=Math.floor(this.length/8);if(this.buffer.length<=bufIndex){this.buffer.push(0);}
if(bit){this.buffer[bufIndex]|=(0x80>>>(this.length%8));}
this.length++;}};var QRCodeLimitLength=[[17,14,11,7],[32,26,20,14],[53,42,32,24],[78,62,46,34],[106,84,60,44],[134,106,74,58],[154,122,86,64],[192,152,108,84],[230,180,130,98],[271,213,151,119],[321,251,177,137],[367,287,203,155],[425,331,241,177],[458,362,258,194],[520,412,292,220],[586,450,322,250],[644,504,364,280],[718,560,394,310],[792,624,442,338],[858,666,482,382],[929,711,509,403],[1003,779,565,439],[1091,857,611,461],[1171,911,661,511],[1273,997,715,535],[1367,1059,751,593],[1465,1125,805,625],[1528,1190,868,658],[1628,1264,908,698],[1732,1370,982,742],[1840,1452,1030,790],[1952,1538,1112,842],[2068,1628,1168,898],[2188,1722,1228,958],[2303,1809,1283,983],[2431,1911,1351,1051],[2563,1989,1423,1093],[2699,2099,1499,1139],[2809,2213,1579,1219],[2953,2331,1663,1273]];
function _isSupportCanvas() {
return typeof CanvasRenderingContext2D != "undefined";
}
// android 2.x doesn't support Data-URI spec
function _getAndroid() {
var android = false;
var sAgent = navigator.userAgent;
if (/android/i.test(sAgent)) { // android
android = true;
aMat = sAgent.toString().match(/android ([0-9]\.[0-9])/i);
if (aMat && aMat[1]) {
android = parseFloat(aMat[1]);
}
}
return android;
}
var svgDrawer = (function() {
var Drawing = function (el, htOption) {
this._el = el;
this._htOption = htOption;
};
Drawing.prototype.draw = function (oQRCode) {
var _htOption = this._htOption;
var _el = this._el;
var nCount = oQRCode.getModuleCount();
var nWidth = Math.floor(_htOption.width / nCount);
var nHeight = Math.floor(_htOption.height / nCount);
this.clear();
function makeSVG(tag, attrs) {
var el = document.createElementNS('http://www.w3.org/2000/svg', tag);
for (var k in attrs)
if (attrs.hasOwnProperty(k)) el.setAttribute(k, attrs[k]);
return el;
}
var svg = makeSVG("svg" , {'viewBox': '0 0 ' + String(nCount) + " " + String(nCount), 'width': '100%', 'height': '100%', 'fill': _htOption.colorLight});
svg.setAttributeNS("http://www.w3.org/2000/xmlns/", "xmlns:xlink", "http://www.w3.org/1999/xlink");
_el.appendChild(svg);
svg.appendChild(makeSVG("rect", {"fill": _htOption.colorDark, "width": "1", "height": "1", "id": "template"}));
for (var row = 0; row < nCount; row++) {
for (var col = 0; col < nCount; col++) {
if (oQRCode.isDark(row, col)) {
var child = makeSVG("use", {"x": String(row), "y": String(col)});
child.setAttributeNS("http://www.w3.org/1999/xlink", "href", "#template")
svg.appendChild(child);
}
}
}
};
Drawing.prototype.clear = function () {
while (this._el.hasChildNodes())
this._el.removeChild(this._el.lastChild);
};
return Drawing;
})();
var useSVG = document.documentElement.tagName.toLowerCase() === "svg";
// Drawing in DOM by using Table tag
var Drawing = useSVG ? svgDrawer : !_isSupportCanvas() ? (function () {
var Drawing = function (el, htOption) {
this._el = el;
this._htOption = htOption;
};
/**
* Draw the QRCode
*
* @param {QRCode} oQRCode
*/
Drawing.prototype.draw = function (oQRCode) {
var _htOption = this._htOption;
var _el = this._el;
var nCount = oQRCode.getModuleCount();
var nWidth = Math.floor(_htOption.width / nCount);
var nHeight = Math.floor(_htOption.height / nCount);
var aHTML = ['<table style="border:0;border-collapse:collapse;">'];
for (var row = 0; row < nCount; row++) {
aHTML.push('<tr>');
for (var col = 0; col < nCount; col++) {
aHTML.push('<td style="border:0;border-collapse:collapse;padding:0;margin:0;width:' + nWidth + 'px;height:' + nHeight + 'px;background-color:' + (oQRCode.isDark(row, col) ? _htOption.colorDark : _htOption.colorLight) + ';"></td>');
}
aHTML.push('</tr>');
}
aHTML.push('</table>');
_el.innerHTML = aHTML.join('');
// Fix the margin values as real size.
var elTable = _el.childNodes[0];
var nLeftMarginTable = (_htOption.width - elTable.offsetWidth) / 2;
var nTopMarginTable = (_htOption.height - elTable.offsetHeight) / 2;
if (nLeftMarginTable > 0 && nTopMarginTable > 0) {
elTable.style.margin = nTopMarginTable + "px " + nLeftMarginTable + "px";
}
};
/**
* Clear the QRCode
*/
Drawing.prototype.clear = function () {
this._el.innerHTML = '';
};
return Drawing;
})() : (function () { // Drawing in Canvas
function _onMakeImage() {
this._elImage.src = this._elCanvas.toDataURL("image/png");
this._elImage.style.display = "block";
this._elCanvas.style.display = "none";
}
// Android 2.1 bug workaround
// http://code.google.com/p/android/issues/detail?id=5141
if (this._android && this._android <= 2.1) {
var factor = 1 / window.devicePixelRatio;
var drawImage = CanvasRenderingContext2D.prototype.drawImage;
CanvasRenderingContext2D.prototype.drawImage = function (image, sx, sy, sw, sh, dx, dy, dw, dh) {
if (("nodeName" in image) && /img/i.test(image.nodeName)) {
for (var i = arguments.length - 1; i >= 1; i--) {
arguments[i] = arguments[i] * factor;
}
} else if (typeof dw == "undefined") {
arguments[1] *= factor;
arguments[2] *= factor;
arguments[3] *= factor;
arguments[4] *= factor;
}
drawImage.apply(this, arguments);
};
}
/**
* Check whether the user's browser supports Data URI or not
*
* @private
* @param {Function} fSuccess Occurs if it supports Data URI
* @param {Function} fFail Occurs if it doesn't support Data URI
*/
function _safeSetDataURI(fSuccess, fFail) {
var self = this;
self._fFail = fFail;
self._fSuccess = fSuccess;
// Check it just once
if (self._bSupportDataURI === null) {
var el = document.createElement("img");
var fOnError = function() {
self._bSupportDataURI = false;
if (self._fFail) {
_fFail.call(self);
}
};
var fOnSuccess = function() {
self._bSupportDataURI = true;
if (self._fSuccess) {
self._fSuccess.call(self);
}
};
el.onabort = fOnError;
el.onerror = fOnError;
el.onload = fOnSuccess;
el.src = "data:image/gif;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAAHElEQVQI12P4//8/w38GIAXDIBKE0DHxgljNBAAO9TXL0Y4OHwAAAABJRU5ErkJggg=="; // the Image contains 1px data.
return;
} else if (self._bSupportDataURI === true && self._fSuccess) {
self._fSuccess.call(self);
} else if (self._bSupportDataURI === false && self._fFail) {
self._fFail.call(self);
}
};
/**
* Drawing QRCode by using canvas
*
* @constructor
* @param {HTMLElement} el
* @param {Object} htOption QRCode Options
*/
var Drawing = function (el, htOption) {
this._bIsPainted = false;
this._android = _getAndroid();
this._htOption = htOption;
this._elCanvas = document.createElement("canvas");
this._elCanvas.width = htOption.width;
this._elCanvas.height = htOption.height;
el.appendChild(this._elCanvas);
this._el = el;
this._oContext = this._elCanvas.getContext("2d");
this._bIsPainted = false;
this._elImage = document.createElement("img");
this._elImage.alt = "Scan me!";
this._elImage.style.display = "none";
this._el.appendChild(this._elImage);
this._bSupportDataURI = null;
};
/**
* Draw the QRCode
*
* @param {QRCode} oQRCode
*/
Drawing.prototype.draw = function (oQRCode) {
var _elImage = this._elImage;
var _oContext = this._oContext;
var _htOption = this._htOption;
var nCount = oQRCode.getModuleCount();
var nWidth = _htOption.width / nCount;
var nHeight = _htOption.height / nCount;
var nRoundedWidth = Math.round(nWidth);
var nRoundedHeight = Math.round(nHeight);
_elImage.style.display = "none";
this.clear();
for (var row = 0; row < nCount; row++) {
for (var col = 0; col < nCount; col++) {
var bIsDark = oQRCode.isDark(row, col);
var nLeft = col * nWidth;
var nTop = row * nHeight;
_oContext.strokeStyle = bIsDark ? _htOption.colorDark : _htOption.colorLight;
_oContext.lineWidth = 1;
_oContext.fillStyle = bIsDark ? _htOption.colorDark : _htOption.colorLight;
_oContext.fillRect(nLeft, nTop, nWidth, nHeight);
// 안티 앨리어싱 방지 처리
_oContext.strokeRect(
Math.floor(nLeft) + 0.5,
Math.floor(nTop) + 0.5,
nRoundedWidth,
nRoundedHeight
);
_oContext.strokeRect(
Math.ceil(nLeft) - 0.5,
Math.ceil(nTop) - 0.5,
nRoundedWidth,
nRoundedHeight
);
}
}
this._bIsPainted = true;
};
/**
* Make the image from Canvas if the browser supports Data URI.
*/
Drawing.prototype.makeImage = function () {
if (this._bIsPainted) {
_safeSetDataURI.call(this, _onMakeImage);
}
};
/**
* Return whether the QRCode is painted or not
*
* @return {Boolean}
*/
Drawing.prototype.isPainted = function () {
return this._bIsPainted;
};
/**
* Clear the QRCode
*/
Drawing.prototype.clear = function () {
this._oContext.clearRect(0, 0, this._elCanvas.width, this._elCanvas.height);
this._bIsPainted = false;
};
/**
* @private
* @param {Number} nNumber
*/
Drawing.prototype.round = function (nNumber) {
if (!nNumber) {
return nNumber;
}
return Math.floor(nNumber * 1000) / 1000;
};
return Drawing;
})();
/**
* Get the type by string length
*
* @private
* @param {String} sText
* @param {Number} nCorrectLevel
* @return {Number} type
*/
function _getTypeNumber(sText, nCorrectLevel) {
var nType = 1;
var length = _getUTF8Length(sText);
for (var i = 0, len = QRCodeLimitLength.length; i <= len; i++) {
var nLimit = 0;
switch (nCorrectLevel) {
case QRErrorCorrectLevel.L :
nLimit = QRCodeLimitLength[i][0];
break;
case QRErrorCorrectLevel.M :
nLimit = QRCodeLimitLength[i][1];
break;
case QRErrorCorrectLevel.Q :
nLimit = QRCodeLimitLength[i][2];
break;
case QRErrorCorrectLevel.H :
nLimit = QRCodeLimitLength[i][3];
break;
}
if (length <= nLimit) {
break;
} else {
nType++;
}
}
if (nType > QRCodeLimitLength.length) {
throw new Error("Too long data");
}
return nType;
}
function _getUTF8Length(sText) {
var replacedText = encodeURI(sText).toString().replace(/\%[0-9a-fA-F]{2}/g, 'a');
return replacedText.length + (replacedText.length != sText ? 3 : 0);
}
/**
* @class QRCode
* @constructor
* @example
* new QRCode(document.getElementById("test"), "http://jindo.dev.naver.com/collie");
*
* @example
* var oQRCode = new QRCode("test", {
* text : "http://naver.com",
* width : 128,
* height : 128
* });
*
* oQRCode.clear(); // Clear the QRCode.
* oQRCode.makeCode("http://map.naver.com"); // Re-create the QRCode.
*
* @param {HTMLElement|String} el target element or 'id' attribute of element.
* @param {Object|String} vOption
* @param {String} vOption.text QRCode link data
* @param {Number} [vOption.width=256]
* @param {Number} [vOption.height=256]
* @param {String} [vOption.colorDark="#000000"]
* @param {String} [vOption.colorLight="#ffffff"]
* @param {QRCode.CorrectLevel} [vOption.correctLevel=QRCode.CorrectLevel.H] [L|M|Q|H]
*/
window.QRCode = function (el, vOption) {
this._htOption = {
width : 256,
height : 256,
typeNumber : 4,
colorDark : "#000000",
colorLight : "#ffffff",
correctLevel : QRErrorCorrectLevel.H
};
if (typeof vOption === 'string') {
vOption = {
text : vOption
};
}
// Overwrites options
if (vOption) {
for (var i in vOption) {
this._htOption[i] = vOption[i];
}
}
if (typeof el == "string") {
el = document.getElementById(el);
}
this._android = _getAndroid();
this._el = el;
this._oQRCode = null;
this._oDrawing = new Drawing(this._el, this._htOption);
if (this._htOption.text) {
this.makeCode(this._htOption.text);
}
};
/**
* Make the QRCode
*
* @param {String} sText link data
*/
QRCode.prototype.makeCode = function (sText) {
this._oQRCode = new QRCodeModel(_getTypeNumber(sText, this._htOption.correctLevel), this._htOption.correctLevel);
this._oQRCode.addData(sText);
this._oQRCode.make();
this._el.title = sText;
this._oDrawing.draw(this._oQRCode);
this.makeImage();
};
/**
* Make the Image from Canvas element
* - It occurs automatically
* - Android below 3 doesn't support Data-URI spec.
*
* @private
*/
QRCode.prototype.makeImage = function () {
if (typeof this._oDrawing.makeImage == "function" && (!this._android || this._android >= 3)) {
this._oDrawing.makeImage();
}
};
/**
* Clear the QRCode
*/
QRCode.prototype.clear = function () {
this._oDrawing.clear();
};
/**
* @name QRCode.CorrectLevel
*/
QRCode.CorrectLevel = QRErrorCorrectLevel;
})();
function define(e,t,n){if(typeof e!="string")throw new TypeError("Expected string, got: "+e);arguments.length==2&&(n=t);if(e in define.modules)throw new Error("Module already defined: "+e);define.modules[e]=n}function Domain(){this.modules={},this._currentModule=null}define.modules={},function(){function e(e){var t=e.split("/"),n=1;while(n<t.length)t[n]===".."?t.splice(n-1,1):t[n]==="."?t.splice(n,1):n++;return t.join("/")}function t(e,t){return e=e.trim(),t=t.trim(),/^\//.test(t)?t:e.replace(/\/*$/,"/")+t}function n(e){var t=e.split("/");return t.pop(),t.join("/")}Domain.prototype.require=function(e,t){if(Array.isArray(e)){var n=e.map(function(e){return this.lookup(e)},this);return t&&t.apply(null,n),undefined}return this.lookup(e)},Domain.prototype.lookup=function(r){/^\./.test(r)&&(r=e(t(n(this._currentModule),r)));if(r in this.modules){var i=this.modules[r];return i}if(r in define.modules){var i=define.modules[r];if(typeof i=="function"){var s={},o=this._currentModule;this._currentModule=r,i(this.require.bind(this),s,{id:r,uri:""}),this._currentModule=o,i=s}return this.modules[r]=i,i}throw new Error("Module not defined: "+r)}}(),define.Domain=Domain,define.globalDomain=new Domain;var require=define.globalDomain.require.bind(define.globalDomain);define("source-map/source-map-generator",["require","exports","module","source-map/base64-vlq","source-map/util","source-map/array-set"],function(e,t,n){function o(e){e||(e={}),this._file=i.getArg(e,"file",null),this._sourceRoot=i.getArg(e,"sourceRoot",null),this._sources=new s,this._names=new s,this._mappings=[],this._sourcesContents=null}var r=e("./base64-vlq"),i=e("./util"),s=e("./array-set").ArraySet;o.prototype._version=3,o.fromSourceMap=function(t){var n=t.sourceRoot,r=new o({file:t.file,sourceRoot:n});return t.eachMapping(function(e){var t={generated:{line:e.generatedLine,column:e.generatedColumn}};e.source!=null&&(t.source=e.source,n!=null&&(t.source=i.relative(n,t.source)),t.original={line:e.originalLine,column:e.originalColumn},e.name!=null&&(t.name=e.name)),r.addMapping(t)}),t.sources.forEach(function(e){var n=t.sourceContentFor(e);n!=null&&r.setSourceContent(e,n)}),r},o.prototype.addMapping=function(t){var n=i.getArg(t,"generated"),r=i.getArg(t,"original",null),s=i.getArg(t,"source",null),o=i.getArg(t,"name",null);this._validateMapping(n,r,s,o),s!=null&&!this._sources.has(s)&&this._sources.add(s),o!=null&&!this._names.has(o)&&this._names.add(o),this._mappings.push({generatedLine:n.line,generatedColumn:n.column,originalLine:r!=null&&r.line,originalColumn:r!=null&&r.column,source:s,name:o})},o.prototype.setSourceContent=function(t,n){var r=t;this._sourceRoot!=null&&(r=i.relative(this._sourceRoot,r)),n!=null?(this._sourcesContents||(this._sourcesContents={}),this._sourcesContents[i.toSetString(r)]=n):this._sourcesContents&&(delete this._sourcesContents[i.toSetString(r)],Object.keys(this._sourcesContents).length===0&&(this._sourcesContents=null))},o.prototype.applySourceMap=function(t,n,r){var o=n;if(n==null){if(t.file==null)throw new Error('SourceMapGenerator.prototype.applySourceMap requires either an explicit source file, or the source map\'s "file" property. Both were omitted.');o=t.file}var u=this._sourceRoot;u!=null&&(o=i.relative(u,o));var a=new s,f=new s;this._mappings.forEach(function(e){if(e.source===o&&e.originalLine!=null){var n=t.originalPositionFor({line:e.originalLine,column:e.originalColumn});n.source!=null&&(e.source=n.source,r!=null&&(e.source=i.join(r,e.source)),u!=null&&(e.source=i.relative(u,e.source)),e.originalLine=n.line,e.originalColumn=n.column,n.name!=null&&(e.name=n.name))}var s=e.source;s!=null&&!a.has(s)&&a.add(s);var l=e.name;l!=null&&!f.has(l)&&f.add(l)},this),this._sources=a,this._names=f,t.sources.forEach(function(e){var n=t.sourceContentFor(e);n!=null&&(r!=null&&(e=i.join(r,e)),u!=null&&(e=i.relative(u,e)),this.setSourceContent(e,n))},this)},o.prototype._validateMapping=function(t,n,r,i){if(t&&"line"in t&&"column"in t&&t.line>0&&t.column>=0&&!n&&!r&&!i)return;if(t&&"line"in t&&"column"in t&&n&&"line"in n&&"column"in n&&t.line>0&&t.column>=0&&n.line>0&&n.column>=0&&r)return;throw new Error("Invalid mapping: "+JSON.stringify({generated:t,source:r,original:n,name:i}))},o.prototype._serializeMappings=function(){var t=0,n=1,s=0,o=0,u=0,a=0,f="",l;this._mappings.sort(i.compareByGeneratedPositions);for(var c=0,h=this._mappings.length;c<h;c++){l=this._mappings[c];if(l.generatedLine!==n){t=0;while(l.generatedLine!==n)f+=";",n++}else if(c>0){if(!i.compareByGeneratedPositions(l,this._mappings[c-1]))continue;f+=","}f+=r.encode(l.generatedColumn-t),t=l.generatedColumn,l.source!=null&&(f+=r.encode(this._sources.indexOf(l.source)-a),a=this._sources.indexOf(l.source),f+=r.encode(l.originalLine-1-o),o=l.originalLine-1,f+=r.encode(l.originalColumn-s),s=l.originalColumn,l.name!=null&&(f+=r.encode(this._names.indexOf(l.name)-u),u=this._names.indexOf(l.name)))}return f},o.prototype._generateSourcesContent=function(t,n){return t.map(function(e){if(!this._sourcesContents)return null;n!=null&&(e=i.relative(n,e));var t=i.toSetString(e);return Object.prototype.hasOwnProperty.call(this._sourcesContents,t)?this._sourcesContents[t]:null},this)},o.prototype.toJSON=function(){var t={version:this._version,sources:this._sources.toArray(),names:this._names.toArray(),mappings:this._serializeMappings()};return this._file!=null&&(t.file=this._file),this._sourceRoot!=null&&(t.sourceRoot=this._sourceRoot),this._sourcesContents&&(t.sourcesContent=this._generateSourcesContent(t.sources,t.sourceRoot)),t},o.prototype.toString=function(){return JSON.stringify(this)},t.SourceMapGenerator=o}),define("source-map/base64-vlq",["require","exports","module","source-map/base64"],function(e,t,n){function a(e){return e<0?(-e<<1)+1:(e<<1)+0}function f(e){var t=(e&1)===1,n=e>>1;return t?-n:n}var r=e("./base64"),i=5,s=1<<i,o=s-1,u=s;t.encode=function(t){var n="",s,f=a(t);do s=f&o,f>>>=i,f>0&&(s|=u),n+=r.encode(s);while(f>0);return n},t.decode=function(t,n){var s=0,a=t.length,l=0,c=0,h,p;do{if(s>=a)throw new Error("Expected more digits in base 64 VLQ value.");p=r.decode(t.charAt(s++)),h=!!(p&u),p&=o,l+=p<<c,c+=i}while(h);n.value=f(l),n.rest=t.slice(s)}}),define("source-map/base64",["require","exports","module"],function(e,t,n){var r={},i={};"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".split("").forEach(function(e,t){r[e]=t,i[t]=e}),t.encode=function(t){if(t in i)return i[t];throw new TypeError("Must be between 0 and 63: "+t)},t.decode=function(t){if(t in r)return r[t];throw new TypeError("Not a valid base 64 digit: "+t)}}),define("source-map/util",["require","exports","module"],function(e,t,n){function r(e,t,n){if(t in e)return e[t];if(arguments.length===3)return n;throw new Error('"'+t+'" is a required argument.')}function o(e){var t=e.match(i);return t?{scheme:t[1],auth:t[2],host:t[3],port:t[4],path:t[5]}:null}function u(e){var t="";return e.scheme&&(t+=e.scheme+":"),t+="//",e.auth&&(t+=e.auth+"@"),e.host&&(t+=e.host),e.port&&(t+=":"+e.port),e.path&&(t+=e.path),t}function a(e){var t=e,n=o(e);if(n){if(!n.path)return e;t=n.path}var r=t.charAt(0)==="/",i=t.split(/\/+/);for(var s,a=0,f=i.length-1;f>=0;f--)s=i[f],s==="."?i.splice(f,1):s===".."?a++:a>0&&(s===""?(i.splice(f+1,a),a=0):(i.splice(f,2),a--));return t=i.join("/"),t===""&&(t=r?"/":"."),n?(n.path=t,u(n)):t}function f(e,t){e===""&&(e="."),t===""&&(t=".");var n=o(t),r=o(e);r&&(e=r.path||"/");if(n&&!n.scheme)return r&&(n.scheme=r.scheme),u(n);if(n||t.match(s))return t;if(r&&!r.host&&!r.path)return r.host=t,u(r);var i=t.charAt(0)==="/"?t:a(e.replace(/\/+$/,"")+"/"+t);return r?(r.path=i,u(r)):i}function l(e,t){e===""&&(e="."),e=e.replace(/\/$/,"");var n=o(e);return t.charAt(0)=="/"&&n&&n.path=="/"?t.slice(1):t.indexOf(e+"/")===0?t.substr(e.length+1):t}function c(e){return"$"+e}function h(e){return e.substr(1)}function p(e,t){var n=e||"",r=t||"";return(n>r)-(n<r)}function d(e,t,n){var r;return r=p(e.source,t.source),r?r:(r=e.originalLine-t.originalLine,r?r:(r=e.originalColumn-t.originalColumn,r||n?r:(r=p(e.name,t.name),r?r:(r=e.generatedLine-t.generatedLine,r?r:e.generatedColumn-t.generatedColumn))))}function v(e,t,n){var r;return r=e.generatedLine-t.generatedLine,r?r:(r=e.generatedColumn-t.generatedColumn,r||n?r:(r=p(e.source,t.source),r?r:(r=e.originalLine-t.originalLine,r?r:(r=e.originalColumn-t.originalColumn,r?r:p(e.name,t.name)))))}t.getArg=r;var i=/^(?:([\w+\-.]+):)?\/\/(?:(\w+:\w+)@)?([\w.]*)(?::(\d+))?(\S*)$/,s=/^data:.+\,.+$/;t.urlParse=o,t.urlGenerate=u,t.normalize=a,t.join=f,t.relative=l,t.toSetString=c,t.fromSetString=h,t.compareByOriginalPositions=d,t.compareByGeneratedPositions=v}),define("source-map/array-set",["require","exports","module","source-map/util"],function(e,t,n){function i(){this._array=[],this._set={}}var r=e("./util");i.fromArray=function(t,n){var r=new i;for(var s=0,o=t.length;s<o;s++)r.add(t[s],n);return r},i.prototype.add=function(t,n){var i=this.has(t),s=this._array.length;(!i||n)&&this._array.push(t),i||(this._set[r.toSetString(t)]=s)},i.prototype.has=function(t){return Object.prototype.hasOwnProperty.call(this._set,r.toSetString(t))},i.prototype.indexOf=function(t){if(this.has(t))return this._set[r.toSetString(t)];throw new Error('"'+t+'" is not in the set.')},i.prototype.at=function(t){if(t>=0&&t<this._array.length)return this._array[t];throw new Error("No element indexed by "+t)},i.prototype.toArray=function(){return this._array.slice()},t.ArraySet=i}),define("source-map/source-map-consumer",["require","exports","module","source-map/util","source-map/binary-search","source-map/array-set","source-map/base64-vlq"],function(e,t,n){function u(e){var t=e;typeof e=="string"&&(t=JSON.parse(e.replace(/^\)\]\}'/,"")));var n=r.getArg(t,"version"),i=r.getArg(t,"sources"),o=r.getArg(t,"names",[]),u=r.getArg(t,"sourceRoot",null),a=r.getArg(t,"sourcesContent",null),f=r.getArg(t,"mappings"),l=r.getArg(t,"file",null);if(n!=this._version)throw new Error("Unsupported version: "+n);this._names=s.fromArray(o,!0),this._sources=s.fromArray(i,!0),this.sourceRoot=u,this.sourcesContent=a,this._mappings=f,this.file=l}var r=e("./util"),i=e("./binary-search"),s=e("./array-set").ArraySet,o=e("./base64-vlq");u.fromSourceMap=function(t){var n=Object.create(u.prototype);return n._names=s.fromArray(t._names.toArray(),!0),n._sources=s.fromArray(t._sources.toArray(),!0),n.sourceRoot=t._sourceRoot,n.sourcesContent=t._generateSourcesContent(n._sources.toArray(),n.sourceRoot),n.file=t._file,n.__generatedMappings=t._mappings.slice().sort(r.compareByGeneratedPositions),n.__originalMappings=t._mappings.slice().sort(r.compareByOriginalPositions),n},u.prototype._version=3,Object.defineProperty(u.prototype,"sources",{get:function(){return this._sources.toArray().map(function(e){return this.sourceRoot!=null?r.join(this.sourceRoot,e):e},this)}}),u.prototype.__generatedMappings=null,Object.defineProperty(u.prototype,"_generatedMappings",{get:function(){return this.__generatedMappings||(this.__generatedMappings=[],this.__originalMappings=[],this._parseMappings(this._mappings,this.sourceRoot)),this.__generatedMappings}}),u.prototype.__originalMappings=null,Object.defineProperty(u.prototype,"_originalMappings",{get:function(){return this.__originalMappings||(this.__generatedMappings=[],this.__originalMappings=[],this._parseMappings(this._mappings,this.sourceRoot)),this.__originalMappings}}),u.prototype._nextCharIsMappingSeparator=function(t){var n=t.charAt(0);return n===";"||n===","},u.prototype._parseMappings=function(t,n){var i=1,s=0,u=0,a=0,f=0,l=0,c=t,h={},p;while(c.length>0)if(c.charAt(0)===";")i++,c=c.slice(1),s=0;else if(c.charAt(0)===",")c=c.slice(1);else{p={},p.generatedLine=i,o.decode(c,h),p.generatedColumn=s+h.value,s=p.generatedColumn,c=h.rest;if(c.length>0&&!this._nextCharIsMappingSeparator(c)){o.decode(c,h),p.source=this._sources.at(f+h.value),f+=h.value,c=h.rest;if(c.length===0||this._nextCharIsMappingSeparator(c))throw new Error("Found a source, but no line and column");o.decode(c,h),p.originalLine=u+h.value,u=p.originalLine,p.originalLine+=1,c=h.rest;if(c.length===0||this._nextCharIsMappingSeparator(c))throw new Error("Found a source and line, but no column");o.decode(c,h),p.originalColumn=a+h.value,a=p.originalColumn,c=h.rest,c.length>0&&!this._nextCharIsMappingSeparator(c)&&(o.decode(c,h),p.name=this._names.at(l+h.value),l+=h.value,c=h.rest)}this.__generatedMappings.push(p),typeof p.originalLine=="number"&&this.__originalMappings.push(p)}this.__generatedMappings.sort(r.compareByGeneratedPositions),this.__originalMappings.sort(r.compareByOriginalPositions)},u.prototype._findMapping=function(t,n,r,s,o){if(t[r]<=0)throw new TypeError("Line must be greater than or equal to 1, got "+t[r]);if(t[s]<0)throw new TypeError("Column must be greater than or equal to 0, got "+t[s]);return i.search(t,n,o)},u.prototype.originalPositionFor=function(t){var n={generatedLine:r.getArg(t,"line"),generatedColumn:r.getArg(t,"column")},i=this._findMapping(n,this._generatedMappings,"generatedLine","generatedColumn",r.compareByGeneratedPositions);if(i&&i.generatedLine===n.generatedLine){var s=r.getArg(i,"source",null);return s!=null&&this.sourceRoot!=null&&(s=r.join(this.sourceRoot,s)),{source:s,line:r.getArg(i,"originalLine",null),column:r.getArg(i,"originalColumn",null),name:r.getArg(i,"name",null)}}return{source:null,line:null,column:null,name:null}},u.prototype.sourceContentFor=function(t){if(!this.sourcesContent)return null;this.sourceRoot!=null&&(t=r.relative(this.sourceRoot,t));if(this._sources.has(t))return this.sourcesContent[this._sources.indexOf(t)];var n;if(this.sourceRoot!=null&&(n=r.urlParse(this.sourceRoot))){var i=t.replace(/^file:\/\//,"");if(n.scheme=="file"&&this._sources.has(i))return this.sourcesContent[this._sources.indexOf(i)];if((!n.path||n.path=="/")&&this._sources.has("/"+t))return this.sourcesContent[this._sources.indexOf("/"+t)]}throw new Error('"'+t+'" is not in the SourceMap.')},u.prototype.generatedPositionFor=function(t){var n={source:r.getArg(t,"source"),originalLine:r.getArg(t,"line"),originalColumn:r.getArg(t,"column")};this.sourceRoot!=null&&(n.source=r.relative(this.sourceRoot,n.source));var i=this._findMapping(n,this._originalMappings,"originalLine","originalColumn",r.compareByOriginalPositions);return i?{line:r.getArg(i,"generatedLine",null),column:r.getArg(i,"generatedColumn",null)}:{line:null,column:null}},u.GENERATED_ORDER=1,u.ORIGINAL_ORDER=2,u.prototype.eachMapping=function(t,n,i){var s=n||null,o=i||u.GENERATED_ORDER,a;switch(o){case u.GENERATED_ORDER:a=this._generatedMappings;break;case u.ORIGINAL_ORDER:a=this._originalMappings;break;default:throw new Error("Unknown order of iteration.")}var f=this.sourceRoot;a.map(function(e){var t=e.source;return t!=null&&f!=null&&(t=r.join(f,t)),{source:t,generatedLine:e.generatedLine,generatedColumn:e.generatedColumn,originalLine:e.originalLine,originalColumn:e.originalColumn,name:e.name}}).forEach(t,s)},t.SourceMapConsumer=u}),define("source-map/binary-search",["require","exports","module"],function(e,t,n){function r(e,t,n,i,s){var o=Math.floor((t-e)/2)+e,u=s(n,i[o],!0);return u===0?i[o]:u>0?t-o>1?r(o,t,n,i,s):i[o]:o-e>1?r(e,o,n,i,s):e<0?null:i[e]}t.search=function(t,n,i){return n.length>0?r(-1,n.length,t,n,i):null}}),define("source-map/source-node",["require","exports","module","source-map/source-map-generator","source-map/util"],function(e,t,n){function u(e,t,n,r,i){this.children=[],this.sourceContents={},this.line=e==null?null:e,this.column=t==null?null:t,this.source=n==null?null:n,this.name=i==null?null:i,r!=null&&this.add(r)}var r=e("./source-map-generator").SourceMapGenerator,i=e("./util"),s=/(\r?\n)/,o=/\r\n|[\s\S]/g;u.fromStringWithSourceMap=function(t,n,r){function p(e,t){if(e===null||e.source===undefined)o.add(t);else{var n=r?i.join(r,e.source):e.source;o.add(new u(e.originalLine,e.originalColumn,n,t,e.name))}}var o=new u,a=t.split(s),f=function(){var e=a.shift(),t=a.shift()||"";return e+t},l=1,c=0,h=null;return n.eachMapping(function(e){if(h!==null){if(!(l<e.generatedLine)){var n=a[0],t=n.substr(0,e.generatedColumn-c);a[0]=n.substr(e.generatedColumn-c),c=e.generatedColumn,p(h,t),h=e;return}var t="";p(h,f()),l++,c=0}while(l<e.generatedLine)o.add(f()),l++;if(c<e.generatedColumn){var n=a[0];o.add(n.substr(0,e.generatedColumn)),a[0]=n.substr(e.generatedColumn),c=e.generatedColumn}h=e},this),a.length>0&&(h&&p(h,f()),o.add(a.join(""))),n.sources.forEach(function(e){var t=n.sourceContentFor(e);t!=null&&(r!=null&&(e=i.join(r,e)),o.setSourceContent(e,t))}),o},u.prototype.add=function(t){if(Array.isArray(t))t.forEach(function(e){this.add(e)},this);else{if(!(t instanceof u||typeof t=="string"))throw new TypeError("Expected a SourceNode, string, or an array of SourceNodes and strings. Got "+t);t&&this.children.push(t)}return this},u.prototype.prepend=function(t){if(Array.isArray(t))for(var n=t.length-1;n>=0;n--)this.prepend(t[n]);else{if(!(t instanceof u||typeof t=="string"))throw new TypeError("Expected a SourceNode, string, or an array of SourceNodes and strings. Got "+t);this.children.unshift(t)}return this},u.prototype.walk=function(t){var n;for(var r=0,i=this.children.length;r<i;r++)n=this.children[r],n instanceof u?n.walk(t):n!==""&&t(n,{source:this.source,line:this.line,column:this.column,name:this.name})},u.prototype.join=function(t){var n,r,i=this.children.length;if(i>0){n=[];for(r=0;r<i-1;r++)n.push(this.children[r]),n.push(t);n.push(this.children[r]),this.children=n}return this},u.prototype.replaceRight=function(t,n){var r=this.children[this.children.length-1];return r instanceof u?r.replaceRight(t,n):typeof r=="string"?this.children[this.children.length-1]=r.replace(t,n):this.children.push("".replace(t,n)),this},u.prototype.setSourceContent=function(t,n){this.sourceContents[i.toSetString(t)]=n},u.prototype.walkSourceContents=function(t){for(var n=0,r=this.children.length;n<r;n++)this.children[n]instanceof u&&this.children[n].walkSourceContents(t);var s=Object.keys(this.sourceContents);for(var n=0,r=s.length;n<r;n++)t(i.fromSetString(s[n]),this.sourceContents[s[n]])},u.prototype.toString=function(){var t="";return this.walk(function(e){t+=e}),t},u.prototype.toStringWithSourceMap=function(t){var n={code:"",line:1,column:0},i=new r(t),u=!1,a=null,f=null,l=null,c=null;return this.walk(function(e,t){n.code+=e,t.source!==null&&t.line!==null&&t.column!==null?((a!==t.source||f!==t.line||l!==t.column||c!==t.name)&&i.addMapping({source:t.source,original:{line:t.line,column:t.column},generated:{line:n.line,column:n.column},name:t.name}),a=t.source,f=t.line,l=t.column,c=t.name,u=!0):u&&(i.addMapping({generated:{line:n.line,column:n.column}}),a=null,u=!1),e.match(o).forEach(function(e,r,o){s.test(e)?(n.line++,n.column=0,r+1===o.length?(a=null,u=!1):u&&i.addMapping({source:t.source,original:{line:t.line,column:t.column},generated:{line:n.line,column:n.column},name:t.name})):n.column+=e.length})}),this.walkSourceContents(function(e,t){i.setSourceContent(e,t)}),{code:n.code,map:i}},t.SourceNode=u}),this.sourceMap={SourceMapConsumer:require("source-map/source-map-consumer").SourceMapConsumer,SourceMapGenerator:require("source-map/source-map-generator").SourceMapGenerator,SourceNode:require("source-map/source-node").SourceNode}
\ No newline at end of file
......@@ -723,7 +723,6 @@
entriesCallback(dataView);
}
}catch(e){
console.log(e);
onerror(ERR_READ);
}
......
......@@ -2,7 +2,7 @@
"name": "kityminder",
"title": "kityminder",
"description": "Kity Minder",
"version": "1.3.0",
"version": "1.3.1",
"homepage": "https://github.com/fex-team/kityminder",
"author": {
"name": "f-cube @ FEX",
......@@ -30,13 +30,14 @@
"dependencies": {},
"devDependencies": {
"grunt": "~0.4.1",
"grunt-contrib-concat": "~0.3.0",
"grunt-contrib-uglify": "~0.2.6",
"grunt-contrib-concat": "~0.5.0",
"grunt-contrib-uglify": "~0.4.0",
"grunt-contrib-copy": "~0.5.0",
"grunt-text-replace": "~0.3.9",
"grunt-contrib-watch": "~0.6.1",
"grunt-contrib-less": "~0.11.3",
"grunt-contrib-clean": "~0.6.0"
"grunt-contrib-clean": "~0.6.0",
"grunt-autoprefixer": "~1.0.1"
}
}
\ No newline at end of file
......@@ -24,13 +24,13 @@ KityMinder.registerConnectProvider('under', function(node, parent, connection, w
var p1, p2, p3, mx;
if (side == 'right') {
p1 = new kity.Point(pBox.right + 10, startY);
p2 = new kity.Point(box.left, underY);
p3 = new kity.Point(box.right + 10, underY);
p1 = new kity.Point(pBox.right, startY);
p2 = new kity.Point(box.left - 10, underY);
p3 = new kity.Point(box.right, underY);
} else {
p1 = new kity.Point(pBox.left - 10, startY);
p2 = new kity.Point(box.right, underY);
p3 = new kity.Point(box.left - 10, underY);
p1 = new kity.Point(pBox.left, startY);
p2 = new kity.Point(box.right + 10, underY);
p3 = new kity.Point(box.left, underY);
}
mx = (p1.x + p2.x) / 2;
......
......@@ -13,7 +13,12 @@ Utils.extend(KityMinder, {
/* 脑图数据升级 */
function c_120_130(json) {
traverse(json, function(node) {
var data = node.data;
delete data.layout_bottom_offset;
delete data.layout_default_offset;
delete data.layout_filetree_offset;
});
}
/**
......@@ -57,6 +62,8 @@ Utils.extend(KityMinder, {
case '1.1.3':
c_113_120(json);
case '1.2.0':
case '1.2.1':
c_120_130(json);
}
return json;
......
......@@ -20,7 +20,9 @@ var MinderEvent = kity.createClass('MindEvent', {
while (!findShape.minderNode && findShape.container) {
findShape = findShape.container;
}
return findShape.minderNode || null;
var node = findShape.minderNode;
if (node && findShape.getOpacity() < 1) return null;
return node || null;
},
stopPropagation: function() {
......@@ -78,17 +80,11 @@ kity.extendClass(Minder, {
},
// TODO: mousemove lazy bind
_bindPaperEvents: function() {
this._paper.on('click dblclick keydown keyup keypress paste mousedown contextmenu mouseup mousemove mousewheel DOMMouseScroll touchstart touchmove touchend dragenter dragleave drop', this._firePharse.bind(this));
this._paper.on('click dblclick mousedown contextmenu mouseup mousemove mouseover mousewheel DOMMouseScroll touchstart touchmove touchend dragenter dragleave drop', this._firePharse.bind(this));
if (window) {
window.addEventListener('resize', this._firePharse.bind(this));
window.addEventListener('blur', this._firePharse.bind(this));
}
this._renderTarget.onfocus = function() {
console.log('focus');
};
this._renderTarget.onblur = function() {
console.log('blur');
};
},
_bindKeyboardEvents: function() {
if ((navigator.userAgent.indexOf('iPhone') == -1) && (navigator.userAgent.indexOf('iPod') == -1) && (navigator.userAgent.indexOf('iPad') == -1)) {
......@@ -157,8 +153,8 @@ kity.extendClass(Minder, {
callbacks[i].call(this, e);
if (this.getStatus() != lastStatus || e.shouldStopPropagationImmediately()) {
/* this.getStatus() != lastStatus ||*/
if (e.shouldStopPropagationImmediately()) {
break;
}
}
......
......@@ -9,9 +9,17 @@ var keymap = KityMinder.keymap = (function(origin) {
var aKeyCode = 65;
var aCharCode = 'a'.charCodeAt(0);
// letters
'abcdefghijklmnopqrstuvwxyz'.split('').forEach(function(letter) {
ret[letter] = aKeyCode + (letter.charCodeAt(0) - aCharCode);
});
// numbers
var n = 9;
do {
ret[n.toString()] = n + 48;
} while(--n);
return ret;
})({
'Backspace': 8,
......@@ -32,6 +40,7 @@ var keymap = KityMinder.keymap = (function(origin) {
'End': 35,
'Home': 36,
'Insert': 45,
'Left': 37,
'Up': 38,
......@@ -44,7 +53,6 @@ var keymap = KityMinder.keymap = (function(origin) {
39: 1,
40: 1
},
'Insert': 45,
'Del': 46,
......@@ -52,10 +60,20 @@ var keymap = KityMinder.keymap = (function(origin) {
'Cmd': 91,
'CmdFF': 224,
'F1': 112,
'F2': 113,
'F3': 114,
'F4': 115,
'F5': 116,
'F6': 117,
'F7': 118,
'F8': 119,
'F9': 120,
'F10': 121,
'F11': 122,
'F12': 123,
'`': 192,
'=': 187,
'-': 189,
......
......@@ -3,7 +3,7 @@ var KityMinder = window.KM = window.KityMinder = function() {
instanceId = 0,
uuidMap = {};
return {
version: '1.3.0',
version: '1.3.1',
uuid: function(name) {
name = name || 'unknown';
uuidMap[name] = uuidMap[name] || 0;
......
......@@ -243,7 +243,7 @@ kity.extendClass(Minder, {
// layout all children first
// 剪枝:收起的节点无需计算
if (node.isExpanded()) {
if (node.isExpanded() || true) {
node.children.forEach(function(child) {
layoutNode(child);
});
......@@ -296,7 +296,7 @@ kity.extendClass(Minder, {
}
// 节点复杂度大于 100,关闭动画
if (complex > 300) duration = 0;
if (complex > 200) duration = 0;
function applyMatrix(node, matrix) {
node.setGlobalLayoutTransform(matrix);
......@@ -330,14 +330,14 @@ kity.extendClass(Minder, {
.start(node, duration, 'ease')
.on('finish', function() {
//可能性能低的时候会丢帧,手动添加一帧
kity.Timeline.requestFrame(function() {
setTimeout(function() {
applyMatrix(node, matrix);
me.fire('layoutfinish', {
node: node,
matrix: matrix
});
consume();
});
}, 150);
});
}
......@@ -561,7 +561,9 @@ var ResetLayoutCommand = kity.createClass('ResetLayoutCommand', {
});
});
minder.layout(300);
}
},
enableReadOnly: true
});
KityMinder.registerModule('LayoutModule', {
......
......@@ -46,6 +46,8 @@ kity.extendClass(Minder, {
}
this._modules[name] = moduleDeals;
if (!moduleDeals) continue;
if (moduleDeals.init) {
moduleDeals.init.call(me, this._options);
}
......
......@@ -20,14 +20,14 @@ kity.extendClass(Minder, {
me.bkqueryCommandValue = me.queryCommandValue;
me.queryCommandState = function(type) {
var cmd = this._getCommand(type);
if (cmd && cmd.enableReadOnly === false) {
if (cmd && cmd.enableReadOnly) {
return me.bkqueryCommandState.apply(me, arguments);
}
return -1;
};
me.queryCommandValue = function(type) {
var cmd = this._getCommand(type);
if (cmd && cmd.enableReadOnly === false) {
if (cmd && cmd.enableReadOnly) {
return me.bkqueryCommandValue.apply(me, arguments);
}
return null;
......@@ -48,7 +48,7 @@ kity.extendClass(Minder, {
delete me.bkqueryCommandValue;
}
this.rollbackStatus();
this.setStatus('normal');
me._interactChange();
}
......
......@@ -22,7 +22,9 @@ kity.extendClass(Minder, {
var sf = ~window.location.href.indexOf('status');
var tf = ~window.location.href.indexOf('trace');
return function(status) {
// 在 readonly 模式下,只有 force 为 true 才能切换回来
return function(status, force) {
if (this._status == 'readonly' && !force) return this;
if (status != this._status) {
this._rollbackStatus = this._status;
this._status = status;
......
......@@ -17,7 +17,7 @@ kity.extendClass(Minder, (function() {
},
getTemplate: function() {
return this._template || null;
return this._template || 'default';
},
setTemplate: function(name) {
......@@ -25,7 +25,7 @@ kity.extendClass(Minder, (function() {
},
getTemplateSupport: function(method) {
var supports = KityMinder._templates[this._template];
var supports = KityMinder._templates[this.getTemplate()];
return supports && supports[method];
},
......
......@@ -57,6 +57,9 @@ kity.extendClass(Minder, {
setTheme: function(name) {
this._theme = name || null;
this.getRenderTarget().style.background = this.getStyle('background');
this.fire('themechange', {
theme: name
});
},
/**
......
......@@ -79,10 +79,6 @@ layouts.forEach(function(name) {
doLayout: function(parent, children) {
if (!children.length) {
return false;
}
var pbox = parent.getContentBox();
if (axis == 'x') {
......@@ -93,6 +89,10 @@ layouts.forEach(function(name) {
parent.setLayoutVectorOut(new kity.Vector(0, dir));
}
if (!children.length) {
return false;
}
children.forEach(function(child) {
var cbox = child.getContentBox();
child.setLayoutTransform(new kity.Matrix());
......
......@@ -4,9 +4,14 @@ KityMinder.registerLayout('mind', kity.createClass({
doLayout: function(node, children) {
var layout = this;
var half = Math.ceil(children.length / 2);
var right = children.slice(0, half);
var left = children.slice(half);
var half = Math.ceil(node.children.length / 2);
var right = [];
var left = [];
children.forEach(function(child) {
if (child.getIndex() < half) right.push(child);
else left.push(child);
});
var leftLayout = KityMinder.getLayoutInstance('left');
var rightLayout = KityMinder.getLayoutInstance('right');
......
......@@ -38,6 +38,8 @@ KityMinder.registerModule( "ClipboardModule", function () {
execute: function(km) {
var ancestors = km.getSelectedAncestors();
if (ancestors.length === 0) return;
sendToClipboard(ancestors);
km.select(MinderNode.getCommonAncestor(ancestors), true);
......
......@@ -16,9 +16,13 @@ KityMinder.registerModule('TextEditModule', function() {
//当前是否有选区存在
var selectionReadyShow = false;
var mousedownNode,mouseupTimer,mousedownTimer;
var lastMinderNode;
function inputStatusReady(node){
if (node && km.isSingleSelect() && node.isSelected()) {
node.getTextGroup().setStyle('cursor','default');
var color = node.getStyle('text-selection-color');
......@@ -66,6 +70,7 @@ KityMinder.registerModule('TextEditModule', function() {
'normal.beforemousedown textedit.beforemousedown inputready.beforemousedown': function(e) {
//右键直接退出
if (e.isRightMB()) {
if (!e.getTargetNode()) this.setStatus('normal');
return;
}
......@@ -91,9 +96,13 @@ KityMinder.registerModule('TextEditModule', function() {
if(node){
if (this.isSingleSelect() && node.isSelected()) {
lastMinderNode = node;
mousedownNode = node;
var textGroup = node.getTextGroup();
textGroup.setStyle('cursor', 'default');
sel.collapse(true);
sel.setColor(node.getStyle('text-selection-color'));
......@@ -103,17 +112,24 @@ KityMinder.registerModule('TextEditModule', function() {
.setRange(range)
.setReady();
if(selectionReadyShow){
textGroup.setStyle('cursor', 'text');
sel.setShowStatus();
setTimeout(function() {
clearTimeout(mousedownTimer);
mousedownTimer = setTimeout(function() {
if(dblclickEvent){
dblclickEvent = false;
return;
}
sel.collapse(true)
.updatePosition(receiver.getOffsetByIndex())
.setShow();
}, 200);
textGroup.setStyle('cursor','text');
},200);
km.setStatus('textedit');
}
......@@ -127,6 +143,12 @@ KityMinder.registerModule('TextEditModule', function() {
//当点击空白处时,光标需要消失
receiver.clear();
if(lastMinderNode){
lastMinderNode.getTextGroup().setStyle('cursor','default');
}
},
'inputready.keyup':function(){
if(sel.isHide()){
......@@ -158,6 +180,7 @@ KityMinder.registerModule('TextEditModule', function() {
var node = e.getTargetNode();
mousedownNode = null;
if (node && !selectionReadyShow && receiver.isReady()) {
......@@ -169,8 +192,8 @@ KityMinder.registerModule('TextEditModule', function() {
if(browser.ipad){
receiver.focus();
}
setTimeout(function() {
clearTimeout(mouseupTimer);
mouseupTimer = setTimeout(function() {
if(dblclickEvent){
dblclickEvent = false;
return;
......@@ -178,6 +201,7 @@ KityMinder.registerModule('TextEditModule', function() {
sel.collapse(true)
.updatePosition(receiver.getOffsetByIndex())
.setShow();
node.getTextGroup().setStyle('cursor','text');
}, 200);
......@@ -193,8 +217,6 @@ KityMinder.registerModule('TextEditModule', function() {
if(!sel.collapsed){
receiver.updateContainerRangeBySel();
}
}
......@@ -208,11 +230,13 @@ KityMinder.registerModule('TextEditModule', function() {
}
//ipad下不做框选
if (mouseDownStatus && receiver.isReady() && selectionReadyShow) {
var node = e.getTargetNode();
e.stopPropagationImmediately();
if(node){
var offset = e.getPosition(node.getRenderContainer());
if(mousedownNode){
var offset = e.getPosition( mousedownNode.getRenderContainer());
receiver
.updateSelectionByMousePosition(offset)
......@@ -234,10 +258,10 @@ KityMinder.registerModule('TextEditModule', function() {
'normal.dblclick textedit.dblclick inputready.dblclick': function(e) {
var node = e.getTargetNode();
dblclickEvent = true;
if(node){
//跟mouseup的timeout有冲突,这里做标记处理
dblclickEvent = true;
inputStatusReady(node);
......
......@@ -53,7 +53,7 @@ Minder.keyboarder = kity.createClass('keyboarder', function(){
this._keyup(e);
}
},
_setTextToContainer : function(keyCode){
_setTextToContainer : function(keyCode,iskeyUp){
var me = this;
//同步节点
me.minderNode = me.re.minderNode;
......@@ -65,7 +65,7 @@ Minder.keyboarder = kity.createClass('keyboarder', function(){
}
if(keymap.controlKeys[keyCode]){
if(keymap.controlKeys[keyCode] && !iskeyUp ){
return;
}
//当第一次输入内容时进行保存
......@@ -95,17 +95,23 @@ Minder.keyboarder = kity.createClass('keyboarder', function(){
me.inputTextTimer = setTimeout(function(){
me.km.layout(300);
},250);
},300);
}
me.re.updateTextOffsetData()
.updateRange()
.updateSelectionByRange();
me.selection
.updateOffsetByTextData(me.re.textData)
.updatePosition()
.setHoldShow();
.updatePosition();
//当然inputready状态时,如果输入文字,节点内文本会被先选中然后再消失,体验不好
if(me.km.getStatus() != 'inputready'){
me.selection.setHoldShow();
}
me.timer = setTimeout(function() {
......@@ -134,12 +140,13 @@ Minder.keyboarder = kity.createClass('keyboarder', function(){
switch (keyCode) {
case keymap.Enter:
if(e.originEvent.shiftKey){
if(e.originEvent.shiftKey && me.selection.isShow()){
me._handlerEnterkey();
e.preventDefault();
return false;
};
case keymap.Tab:
case keymap.Insert:
if(this.selection.isShow()){
this.re.clear();
this.km.setStatus('inputready');
......@@ -159,6 +166,7 @@ Minder.keyboarder = kity.createClass('keyboarder', function(){
case keymap.Del:
case keymap['/']:
case keymap.F2:
case keymap.Insert:
if(this.selection.isHide()){
this.km.setStatus('normal');
return;
......@@ -186,7 +194,6 @@ Minder.keyboarder = kity.createClass('keyboarder', function(){
//修正在cvs方式下_keyup会把节点文字选中
this.isShortcutCopyKey = true;
this.km.setStatus('normal');
return;
}
......@@ -228,11 +235,12 @@ Minder.keyboarder = kity.createClass('keyboarder', function(){
this.isShortcutCopyKey = false;
//针对不能连续删除做处理
if(keymap.Del == keyCode || keymap.Backspace == keyCode)
me._setTextToContainer(keyCode);
//if(keymap.Del == keyCode || keymap.Backspace == keyCode)
// me._setTextToContainer(keyCode);
me._setTextToContainer(keyCode);
},
_beforeKeyup:function(e){
var me = this;
var orgEvt = e.originEvent;
var keyCode = orgEvt.keyCode;
......@@ -240,6 +248,7 @@ Minder.keyboarder = kity.createClass('keyboarder', function(){
switch (keyCode) {
case keymap.Enter:
case keymap.Tab:
case keymap.Insert:
case keymap.F2:
if(browser.ipad){
if(this.selection.isShow()){
......@@ -255,7 +264,7 @@ Minder.keyboarder = kity.createClass('keyboarder', function(){
}
if (keymap.Enter == keyCode && (this.isTypeText || browser.mac && browser.gecko)) {
me._setTextToContainer(keyCode);
me._setTextToContainer(keyCode,true);
}
if (this.re.keydownNode === this.re.minderNode) {
this.km.rollbackStatus();
......@@ -273,19 +282,20 @@ Minder.keyboarder = kity.createClass('keyboarder', function(){
}
}
me._setTextToContainer(keyCode);
me._setTextToContainer(keyCode,true);
return;
}
if (this.isTypeText) {
me._setTextToContainer(keyCode);
me._setTextToContainer(keyCode,true);
return;
}
if (browser.mac && browser.gecko){
me._setTextToContainer(keyCode);
me._setTextToContainer(keyCode,true);
return;
}
me._setTextToContainer(keyCode);
me._setTextToContainer(keyCode,true);
return true;
},
......@@ -296,7 +306,6 @@ Minder.keyboarder = kity.createClass('keyboarder', function(){
if(this.km.getStatus() == 'normal' && node && this.selection.isHide()){
if(this.isShortcutCopyKey){
console.log(this.km.getStatus())
return;
}
......
......@@ -7,7 +7,12 @@ Minder.Range = kity.createClass('Range',function(){
if(node.nodeType == 1){
//默认不会出现得不到子节点的情况
node = node.childNodes[offset];
if(node.nodeType == 3){
if(!node && rng.startContainer && rng.startContainer.nodeName == 'DIV' ) {
rng.startContainer.innerHTML = '<p></p>';
offset = 0;
}else if(node.nodeType == 3){
offset = 0;
}
}
......
......@@ -220,7 +220,7 @@ Minder.Receiver = kity.createClass('Receiver', {
this.selection.setHeight((this.minderNode.getData('font-size') || this.minderNode.getStyle('font-size')) * 1);
return this;
},
updateSelectionByMousePosition: function(offset,dir) {
updateSelectionByMousePosition: function(offset) {
var me = this;
var result = 0;
......@@ -240,7 +240,6 @@ Minder.Receiver = kity.createClass('Receiver', {
result += i;
if (offset.x - v.x > v.width / 2) {
result += 1;
}
......@@ -257,6 +256,13 @@ Minder.Receiver = kity.createClass('Receiver', {
return false;
}else{
if(first.y > offset.y && l === 0){
result = 0;
return false;
}else if(l == me.textData.length - 1 && first.y + lineHeight < offset.y){
result += arr.length + 1;
return false;
}
result += arr.length + (arr.length == 1 && arr[0].width === 0 ? 0 : 1);
return;
}
......
//模拟光标
Minder.Selection = kity.createClass( 'Selection', {
base: kity.Group,
base: kity.Path,
constructor: function ( height, color, width ) {
this.callBase();
this.height = height || 20;
......@@ -15,7 +15,7 @@ Minder.Selection = kity.createClass( 'Selection', {
this.setStyle('cursor','text');
this._show = false;
this.offset = [];
this.setTranslate(-0.5, -1.5);
},
setMinderNode : function(node){
this.minderNode = node;
......@@ -45,7 +45,8 @@ Minder.Selection = kity.createClass( 'Selection', {
if(i === 0 || cIndex === startOffset){
tmpOffset.x = o.x;
tmpOffset.y = o.y;
tmpOffset.width = i === 0 && offset && offset.x <= o.x && cIndex != startOffset ? 0 : o.width;
tmpOffset.width = o.width;
//i === 0 && offset && offset.x <= o.x && cIndex != startOffset ? 0 :
}else if(cIndex < endOffset){
tmpOffset.width += o.width;
}else if(cIndex === endOffset){
......@@ -54,7 +55,6 @@ Minder.Selection = kity.createClass( 'Selection', {
}
cIndex++;
});
if(tmpOffset.x !== undefined) {
arrOffset.push(tmpOffset);
......@@ -73,21 +73,31 @@ Minder.Selection = kity.createClass( 'Selection', {
}
this._show = true;
},
updatePosition:function(offset){
updatePosition: function(offset){
var me = this;
this.clear();
offset = offset || this.offset;
if(this.collapsed){
var r = Math.round;
var rect = new kity.Rect().fill(null).stroke(null).setWidth(2).setHeight(this.height);
rect.setPosition(Math.round(offset.x) - 0.5,Math.round(offset.y) - 1.5);
this.addShape(rect);
}else{
utils.each(offset,function(i,v){
var rect = new kity.Rect().fill(null).stroke(null).setWidth(v.width).setHeight(me.height);
rect.setPosition(Math.round(v.x) - 0.5,Math.round(v.y) - 1.5);
me.addShape(rect);
});
var rect = function (x, y, w, h) {
return ['M', r(x), r(y),
'h', r(w),
'v', r(h),
'h', -r(w),
'v', -r(h),
'z'];
};
offset = offset !== undefined ? offset : this.offset;
if(this.collapsed){
if (isNaN(offset.x) || isNaN(offset.y)) {
if (console) console.warn('editor.selection.js 不正确的偏移位置');
return this;
}
this.setPathData(rect(offset.x, offset.y, this.width, this.height));
} else {
this.setPathData(offset.reduce(function (prev, current) {
return prev.concat(rect(current.x, current.y, current.width, me.height));
}, []));
}
this._show = true;
return this;
......
......@@ -76,8 +76,12 @@ KityMinder.registerModule('Expand', function() {
if (!changed) return;
var vo = node.getVertexOut();
node.renderTree().getMinder().layout(100);
/* 如何加展开效果:
var vo = node.getVertexOut();
if (state == STATE_EXPAND) {
var m = node.getGlobalLayoutTransform().clone().translate(vo.x, vo.y);
......@@ -99,6 +103,7 @@ KityMinder.registerModule('Expand', function() {
});
}
*/
}
// 将展开的操作和状态读取接口拓展到 MinderNode 上
......@@ -146,7 +151,7 @@ KityMinder.registerModule('Expand', function() {
});
},
queryState: function(km) {
return 0;
return !km.getSelectedNode() ? 0 : -1;
}
});
var CollapseNodeCommand = kity.createClass('CollapseNodeCommand', {
......@@ -158,7 +163,7 @@ KityMinder.registerModule('Expand', function() {
});
},
queryState: function(km) {
return 0;
return !km.getSelectedNode() ? 0 : -1;
}
});
var Expander = kity.createClass('Expander', {
......@@ -166,9 +171,9 @@ KityMinder.registerModule('Expand', function() {
constructor: function(node) {
this.callBase();
this.radius = 5;
this.radius = 6;
this.outline = new kity.Circle(this.radius).stroke('gray').fill('white');
this.sign = new kity.Path().stroke('black');
this.sign = new kity.Path().stroke('gray');
this.addShapes([this.outline, this.sign]);
this.initEvent(node);
this.setId(KityMinder.uuid('node_expander'));
......@@ -228,16 +233,16 @@ KityMinder.registerModule('Expand', function() {
expander.setState(visible && node.children.length ? node.getData(EXPAND_STATE_DATA) : 'hide');
var vector = node.getLayoutVectorOut().normalize(expander.radius + node.getStyle('stroke-width'));
var position = node.getVertexOut().offset(vector);
var vector = node.getLayoutVectorIn().normalize(expander.radius + node.getStyle('stroke-width'));
var position = node.getVertexIn().offset(vector.reverse());
this.expander.setTranslate(position);
}
});
return {
commands: {
'ExpandNode': ExpandNodeCommand,
'CollapseNode': CollapseNodeCommand
'expandtoleaf': ExpandNodeCommand,
'collapsetolevel1': CollapseNodeCommand
},
events: {
'layoutapply': function(e) {
......@@ -271,6 +276,17 @@ KityMinder.registerModule('Expand', function() {
},
renderers: {
outside: ExpanderRenderer
},
contextmenu: [{
command: 'expandtoleaf'
}, {
command: 'collapsetolevel1'
}, {
divider: true
}],
commandShortcutKeys: {
'expandtoleaf': 'Alt+`',
'collapsetolevel1': 'Alt+1'
}
};
});
\ No newline at end of file
......@@ -5,10 +5,11 @@ KityMinder.registerModule("hyperlink", function() {
"hyperlink": kity.createClass("hyperlink", {
base: Command,
execute: function(km, url) {
execute: function(km, url, title) {
var nodes = km.getSelectedNodes();
utils.each(nodes, function(i, n) {
n.setData('hyperlink', url);
n.setData('hyperlinkTitle', title);
n.render();
});
km.layout();
......@@ -29,7 +30,10 @@ KityMinder.registerModule("hyperlink", function() {
},
queryValue: function(km) {
var node = km.getSelectedNode();
return node.getData('hyperlink');
return {
url: node.getData('hyperlink'),
title: node.getData('hyperlinkTitle')
};
}
}),
"unhyperlink": kity.createClass("hyperlink", {
......@@ -80,7 +84,6 @@ KityMinder.registerModule("hyperlink", function() {
link.setTarget('_blank');
link.setStyle('cursor', 'pointer');
link.on('mouseover', function() {
outline.fill('rgba(255, 255, 200, .8)');
}).on('mouseout', function() {
......@@ -90,7 +93,6 @@ KityMinder.registerModule("hyperlink", function() {
},
shouldRender: function(node) {
return node.getData('hyperlink');
},
......@@ -98,7 +100,16 @@ KityMinder.registerModule("hyperlink", function() {
var href = node.getData('hyperlink');
link.setHref(href);
link.setAttr('xlink:title', href);
var title = node.getData('hyperlinkTitle');
if (title) {
title = [title, '(', href, ')'].join('');
} else {
title = href;
}
link.node.setAttributeNS('http://www.w3.org/1999/xlink', 'title', title);
var spaceRight = node.getStyle('space-right');
link.setTranslate(box.right + spaceRight + 2, -5);
......
......@@ -32,7 +32,7 @@ KityMinder.registerModule('image', function() {
var ImageCommand = kity.createClass('ImageCommand', {
base: Command,
execute: function(km, url) {
execute: function(km, url, title) {
var nodes = km.getSelectedNodes();
loadImageSize(url, function(width, height) {
......@@ -43,6 +43,7 @@ KityMinder.registerModule('image', function() {
km.getOptions('maxImageWidth'),
km.getOptions('maxImageHeight'));
n.setData('image', url);
n.setData('imageTitle', title);
n.setData('imageSize', size);
n.render();
});
......@@ -67,7 +68,10 @@ KityMinder.registerModule('image', function() {
},
queryValue: function(km) {
var node = km.getSelectedNode();
return node.getData('image');
return {
url: node.getData('image'),
title: node.getData('imageTitle')
};
}
});
......@@ -114,11 +118,16 @@ KityMinder.registerModule('image', function() {
update: function(image, node, box) {
var url = node.getData('image');
var title = node.getData('imageTitle');
var size = node.getData('imageSize');
var spaceTop = node.getStyle('space-top');
if (!size) return;
if (title) {
image.node.setAttributeNS('http://www.w3.org/1999/xlink', 'title', title);
}
var x = box.cx - size.width / 2;
var y = box.y - size.height - spaceTop;
......
......@@ -142,7 +142,9 @@ KityMinder.registerModule('KeyboardModule', function() {
queryState: function(km) {
return km.getSelectedNode() ? 0 : -1;
}
},
enableReadOnly: true
});
// 稀释用
......@@ -159,7 +161,7 @@ KityMinder.registerModule('KeyboardModule', function() {
var root = this.getRoot();
buildPositionNetwork(root);
},
'normal.keydown': function(e) {
'normal.keydown readonly.keydown': function(e) {
var minder = this;
['left', 'right', 'up', 'down'].forEach(function(key) {
if (e.isShortcutKey(key)) {
......
......@@ -106,7 +106,7 @@ KityMinder.registerModule('NodeModule', function() {
'appendsiblingnode': 'normal::Enter',
'appendchildnode': 'normal::Insert|Tab',
'editnode': 'normal::F2',
'removenode': 'normal::Delete|Backspace'
'removenode': 'normal::Del|Backspace'
}
};
});
\ No newline at end of file
......@@ -20,7 +20,7 @@ KityMinder.registerModule('Select', function() {
return {
selectStart: function(e) {
// 只接受左键
if (e.originEvent.button) return;
if (e.originEvent.button || e.originEvent.altKey) return;
// 清理不正确状态
if (startPosition) {
......@@ -107,7 +107,7 @@ KityMinder.registerModule('Select', function() {
});
},
'events': {
'normal.mousedown textedit.mousedown inputready.mousedown': function(e) {
'mousedown': function(e) {
var downNode = e.getTargetNode();
......@@ -140,8 +140,8 @@ KityMinder.registerModule('Select', function() {
lastDownPosition = e.getPosition(this.getRenderContainer());
}
},
'normal.mousemove textedit.mousemove inputready.mousemove': marqueeActivator.selectMove,
'normal.mouseup textedit.mouseup inputready.mouseup': function(e) {
'mousemove': marqueeActivator.selectMove,
'mouseup': function(e) {
var upNode = e.getTargetNode();
// 如果 mouseup 发生在 lastDownNode 外,是无需理会的
......@@ -158,10 +158,7 @@ KityMinder.registerModule('Select', function() {
//全选操作
'normal.keydown inputready.keydown':function(e){
var keyEvent = e.originEvent;
if ( (keyEvent.ctrlKey || keyEvent.metaKey) && keymap.a == keyEvent.keyCode){
if ( e.isShortcutKey('ctrl+a') ){
var selectedNodes = [];
this.getRoot().traverse(function(node){
......
......@@ -38,29 +38,34 @@ var TextRenderer = KityMinder.TextRenderer = kity.createClass('TextRenderer', {
this.setTextStyle(node, textGroup);
for (var i = 0, text, textShape;
(text = textArr[i], textShape = textGroup.getItem(i),
text !== undefined || textShape !== undefined); i++) {
var textLength = textArr.length;
var textGroupLength = textGroup.getItems().length;
if (text === undefined && textShape) {
if(textLength < textGroupLength){
for( var i = textLength,ci;ci = textGroup.getItem(i);){
textGroup.removeItem(i);
} else {
if (text !== undefined && !textShape) {
textShape = new kity.Text()
.setAttr('text-rendering', 'inherit');
if (kity.Browser.ie) {
textShape.setVerticalAlign('top');
} else {
textShape.setAttr('dominant-baseline', 'text-before-edge');
}
textGroup.addItem(textShape);
}
}else if(textLength > textGroupLength){
var length = textLength - textGroupLength;
for(var i = 0;i < length;i++){
var textShape = new kity.Text()
.setAttr('text-rendering', 'inherit');
if (kity.Browser.ie) {
textShape.setVerticalAlign('top');
} else {
textShape.setAttr('dominant-baseline', 'text-before-edge');
}
textShape.setContent(text);
textGroup.addItem(textShape);
}
}
for (var i = 0, text, textShape;
(text = textArr[i], textShape = textGroup.getItem(i)); i++) {
textShape.setContent(text);
}
this.setTextStyle(node, textGroup);
return function() {
......
......@@ -100,14 +100,14 @@ var ViewDragger = kity.createClass("ViewDragger", {
e.originEvent.preventDefault(); // 阻止中键拉动
}
// 点击未选中的根节点临时开启
if (e.getTargetNode() == this.getRoot() || e.originEvent.button == 2) {
if (e.getTargetNode() == this.getRoot() || e.originEvent.button == 2 || e.originEvent.altKey) {
lastPosition = e.getPosition();
isTempDrag = true;
}
})
.on('normal.mousemove normal.touchmove ' +
'readonly.touchmove readonly.mousemove ' +
'readonly.mousemove readonly.touchmove ' +
'inputready.mousemove inputready.touchmove', function(e) {
if (e.type == 'touchmove') {
e.preventDefault(); // 阻止浏览器的后退事件
......@@ -115,7 +115,7 @@ var ViewDragger = kity.createClass("ViewDragger", {
if (!isTempDrag) return;
var offset = kity.Vector.fromPoints(lastPosition, e.getPosition());
if (offset.length() > 10) {
this.setStatus('hand');
this.setStatus('hand', true);
var paper = dragger._minder.getPaper();
paper.setStyle('cursor', '-webkit-grabbing');
}
......@@ -163,7 +163,7 @@ KityMinder.registerModule('View', function() {
execute: function(minder) {
if (minder.getStatus() != 'hand') {
minder.setStatus('hand');
minder.setStatus('hand', true);
} else {
minder.rollbackStatus();
}
......@@ -173,7 +173,7 @@ KityMinder.registerModule('View', function() {
queryState: function(minder) {
return minder.getStatus() == 'hand' ? 1 : 0;
},
enableReadOnly: false
enableReadOnly: true
});
var CameraCommand = kity.createClass('CameraCommand', {
......@@ -190,7 +190,7 @@ KityMinder.registerModule('View', function() {
dragger.move(new kity.Point(dx, dy), duration);
this.setContentChanged(false);
},
enableReadOnly: false
enableReadOnly: true
});
var MoveCommand = kity.createClass('MoveCommand', {
......@@ -213,7 +213,9 @@ KityMinder.registerModule('View', function() {
dragger.move(new kity.Point(-size.width / 2, 0), duration);
break;
}
}
},
enableReadOnly: true
});
return {
......@@ -226,23 +228,11 @@ KityMinder.registerModule('View', function() {
'move': MoveCommand
},
events: {
keyup: function(e) {
if (this.getStatus() == 'hand' && e.getKeyCode() == 18) {
this.execCommand('hand');
e.preventDefault();
}
},
keydown: function(e) {
var minder = this;
if (this.getStatus() != 'hand' && e.getKeyCode() == 18) {
this.execCommand('hand');
e.preventDefault();
} else if (this.getStatus() == 'hand') {
this.execCommand('hand');
}
['up', 'down', 'left', 'right'].forEach(function(name) {
if (e.isShortcutKey('ctrl+' + name)) {
if (e.isShortcutKey('ctrl+' + name) && minder.getStatus() != 'textedit') {
minder.removeAllSelectedNodes();
minder.execCommand('move', name, 100);
e.preventDefault();
......@@ -300,7 +290,7 @@ KityMinder.registerModule('View', function() {
new kity.Point((a.width - b.width) / 2 | 0, (a.height - b.height) / 2 | 0));
this._lastClientSize = a;
},
selectionchange: function() {
'selectionchange layoutallfinish': function(e) {
var selected = this.getSelectedNode();
if (!selected) return;
......
......@@ -44,24 +44,26 @@ KityMinder.registerModule('Zoom', function() {
if (minder.getRoot().getComplex() > 200) {
minder._zoomValue = value;
return minder.zoom(value);
}
var animator = new kity.Animator({
beginValue: minder._zoomValue,
finishValue: value,
setter: function(target, value) {
target.zoom(value);
minder.zoom(value);
minder.fire('viewchange');
} else {
var animator = new kity.Animator({
beginValue: minder._zoomValue,
finishValue: value,
setter: function(target, value) {
target.zoom(value);
}
});
minder._zoomValue = value;
if (timeline) {
timeline.pause();
}
});
minder._zoomValue = value;
if (timeline) {
timeline.pause();
timeline = animator.start(minder, 300, 'easeInOutSine');
timeline.on('finish', function() {
minder.fire('viewchange');
});
}
timeline = animator.start(minder, 300, 'easeInOutSine', function() {});
timeline.on('finish', function() {
minder.fire('viewchange');
minder.fire('zoom', { zoom: value });
});
minder.fire('zoom', { zoom: value });
}
var ZoomCommand = kity.createClass('Zoom', {
......@@ -88,7 +90,7 @@ KityMinder.registerModule('Zoom', function() {
}
return 0;
},
enableReadOnly: false
enableReadOnly: true
});
var ZoomOutCommand = kity.createClass('ZoomOutCommand', {
......@@ -107,7 +109,7 @@ KityMinder.registerModule('Zoom', function() {
}
return 0;
},
enableReadOnly: false
enableReadOnly: true
});
return {
......
......@@ -13,6 +13,7 @@ if (!kity.Browser.ie) {
image.onerror = function(err) {
reject(err);
};
image.crossOrigin = '';
image.src = url;
});
}
......@@ -53,19 +54,25 @@ if (!kity.Browser.ie) {
svgXml = $('<div></div>').append($svg).html();
// Dummy IE
svgXml = svgXml.replace(' xmlns="http://www.w3.org/2000/svg" xmlns:NS1="" NS1:ns1:xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:NS2="" NS2:xmlns:ns1=""', '');
// svg 含有 &nbsp; 符号导出报错 Entity 'nbsp' not defined
svgXml = svgXml.replace(/&nbsp;/g, '&#xa0;');
blob = new Blob([svgXml], {
type: 'image/svg+xml;charset=utf-8'
type: 'image/svg+xml'
});
svgUrl = DomURL.createObjectURL(blob);
//svgUrl = 'data:image/svg+xml;charset=utf-8,' + encodeURIComponent(svgXml);
return {
width: width,
height: height,
dataUrl: svgUrl
dataUrl: svgUrl,
xml: svgXml
};
}
......@@ -109,11 +116,27 @@ if (!kity.Browser.ie) {
}
function drawSVG() {
return loadImage(svgDataUrl).then(function(svgImage) {
drawImage(ctx, svgImage, padding, padding);
DomURL.revokeObjectURL(svgDataUrl);
return generateDataUrl(canvas);
});
if (typeof(window.canvg) != 'undefined') {
return new Promise(function(resolve) {
window.canvg(canvas, svgInfo.xml, {
ignoreMouse: true,
ignoreAnimation: true,
ignoreDimensions: true,
ignoreClear: true,
offsetX: padding,
offsetY: padding,
renderCallback: function() {
resolve(generateDataUrl(canvas));
}
});
});
} else {
return loadImage(svgDataUrl).then(function(svgImage) {
drawImage(ctx, svgImage, padding, padding);
DomURL.revokeObjectURL(svgDataUrl);
return generateDataUrl(canvas);
});
}
}
if (bgUrl) {
......
......@@ -22,7 +22,7 @@ KityMinder.registerTheme('classic', {
'main-shadow': 'rgba(0, 0, 0, .25)',
'sub-color': 'white',
'sub-background': 'none',
'sub-background': 'transparent',
'sub-stroke': 'none',
'sub-font-size': 12,
'sub-padding': [5, 10],
......
......@@ -27,7 +27,7 @@
'main-space': 5,
'sub-color': 'black',
'sub-background': 'none',
'sub-background': 'transparent',
'sub-stroke': 'none',
'sub-font-size': 12,
'sub-padding': compat ? [3, 5] : [5, 10],
......
......@@ -23,9 +23,10 @@
<div class="share-body">
<h3>$lang.url_share</h3>
<p>
<input id="share-url" type="url" value="http://naotu.baidu.com/?shareId=kcev3dd" />
<input id="share-url" class="fui-widget fui-selectable" type="url" readonly value="http://naotu.baidu.com/?shareId=kcev3dd" />
<button id="copy-share-url" data-clipboard-target="share-url" type="button">$lang.copy</button>
</p>
<p class="share-qr-code"></p>
<h3>$lang.sns_share</h3>
<p id="share-platform" class="bdsharebuttonbox">
<a href="#" class="bds_tsina" data-cmd="tsina" title="分享到新浪微博"></a>
......
<h2 class="contact">$lang.contact</h2>
<p>
百度脑图当前版本: v<a class="km-version" target="_blank" href="https://github.com/fex-team/kityminder/tree/master/CHANGELOG.md"></a>
</p>
<p>
欢迎给我们反馈问题,以下是我们的反馈渠道。
</p>
<ul class="contact-content">
<li class="email">
<label>$lang.email</label>
<a href="mailto:kity@baidu.com?subject=脑图使用反馈">kity@baidu.com</a>
</li>
<li class="qq">
<label>$lang.qq_group</label>
<a>374918234</a>
</li>
<li class="tieba">
<label>$lang.baidu_tieba</label>
<a target="_blank" href="http://tieba.baidu.com/f?kw=%B0%D9%B6%C8%C4%D4%CD%BC">百度脑图</a></li>
<li class="github">
<label>$lang.github_issue</label>
<a target="_blank" href="https://github.com/fex-team/kityminder/issues">Issues</a>
</li>
</ul>
\ No newline at end of file
<h2 class="shortcut">$lang.shortcuts</h2>
<div class="shortcut-content"></div>
<h2 class="contact">$lang.contact</h2>
<ul class="contact-content">
<li>$lang.email: <a href="mailto:kity@baidu.com">kity@baidu.com</a></li>
<li>$lang.qq_group: <a>KityMinder (374918234)</a></li>
</ul>
\ No newline at end of file
<div class="shortcut-content"></div>
\ No newline at end of file
......@@ -18,9 +18,9 @@
## 视野控制
`Space`: 切换编辑/抓手模式
`滚轮`: 移动视野
`右键拖动`: 拖动视野
`Alt` + `拖动` or `右键拖动`: 拖动视野
`滚轮` or `触摸板`: 移动视野
`Ctrl` + `Up`, `Down`, `Left`, `Right`: 视野导航
`空白处双击`, `Ctrl + Enter`: 居中根节点
`Ctrl` + `+`, `-`: 放大/缩小视野
......
......@@ -18,6 +18,15 @@ KityMinder.registerUI('contextmenu', function(minder) {
.addClass('km-context-menu fui-popup-menu')
.appendTo('#content-wrapper');
var downPosition;
function distance(p1, p2) {
var dx = p1[0] - p2[0];
var dy = p1[1] - p2[1];
var ds = Math.sqrt(dx * dx + dy * dy);
return ds;
}
$menu.delegate('li', 'mousedown', function(e, info) {
var item = $(e.target).closest('li').data('menu');
if (item.command) {
......@@ -31,14 +40,22 @@ KityMinder.registerUI('contextmenu', function(minder) {
$('#content-wrapper').on('mousedown', function(e) {
$menu.hide();
if (e.button == 2) {
downPosition = [e.pageX, e.pageY];
} else {
downPosition = null;
}
});
minder.on('mouseup', function(e) {
//e.preventDefault();
if (minder.getStatus() == 'hand' || !e.isRightMB()) return;
if (!e.isRightMB()) return;
e = e.originEvent;
var d = distance(downPosition, [e.pageX, e.pageY]);
if (isNaN(d) || d > 5) return;
$menu.empty();
......
......@@ -12,6 +12,7 @@ KityMinder.registerUI('doc', function(minder) {
var ret = minder.getUI('eve').setup({});
var current = { saved: true };
var loading = false;
var notice = minder.getUI('widget/notice');
/**
* 加载文档
......@@ -53,10 +54,11 @@ KityMinder.registerUI('doc', function(minder) {
})['catch'](function(e) {
current = restore;
alert('加载文件失败:' + doc.title);
console.error((new Error()).stack);
notice.error('err_doc_resolve', e);
}).then(function(doc) {
loading = false;
if (doc)
notice.info( minder.getLang('ui.load_success', doc.title ) );
return doc;
});
}
......@@ -74,8 +76,9 @@ KityMinder.registerUI('doc', function(minder) {
return current;
}
function checkSaved() {
function checkSaved(noConfirm) {
if (!fio.user.current()) return true;
if (noConfirm) return current.saved;
return current.saved || window.confirm(minder.getLang('ui.unsavedcontent', '* ' + current.title));
}
......
......@@ -17,45 +17,76 @@ KityMinder.registerUI('menu/default', function(minder) {
var $share = minder.getUI('menu/share/share');
var $draft = minder.getUI('menu/open/draft');
// 主菜单默认选中「打开」
$menu.$tabs.select(1);
// 打开菜单默认选中「本地文件」
$open.$tabs.select(2);
if ($draft.hasDraft()) {
// 草稿箱有草稿,默认选中「草稿箱」,并打开最近编辑的文件
$open.$tabs.select(3);
$draft.openLast();
} else {
// 没有草稿,但用户登陆了
setMenuDefaults();
// $menu.show();
// $menu.$tabs.select(1);
// $open.$tabs.select(1);
// return;
loadLandingFile();
function setMenuDefaults() {
// 主菜单默认选中「打开」
$menu.$tabs.select(1);
// 打开菜单默认选中「本地文件」
$open.$tabs.select(2);
// 保存菜单默认选中「导出到本地」
$save.$tabs.select(1);
// 如果用户登陆了,选中「百度云存储」
fio.user.check().then(function(user) {
if (user) {
// 有最近文件选中「最近文件」
if ($recent.hasRecent()) {
$open.$tabs.select(0);
$recent.loadLast();
}
// 否则选中网盘目录
else {
$open.$tabs.select(1);
}
$save.$tabs.select(0);
}
});
$share.$menu.$tabs.select(0); // 当前脑图
}
// 保存菜单默认选中「导出到本地」
$save.$tabs.select(1);
function loadLandingFile() {
var pattern = /(?:shareId|share_id)=(\w+)([&#]|$)/;
var match = pattern.exec(window.location) || pattern.exec(document.referrer);
// 如果用户登陆了,选中「百度云存储」
fio.user.check().then(function(user) {
if (user) {
$save.$tabs.select(0);
if (match) {
return $share.loadShareFile();
}
});
$share.$tabs.select(0); // 当前脑图
// $menu.show();
// $menu.$tabs.select(4);
// 检查登录状态
fio.user.check().then(function(user) {
var draft = $draft.last();
var recent = $recent.last();
// 登录
if (user) {
if (recent) {
if (draft) {
if (recent.time > draft.time) openRecent();
else openDraft();
} else {
openRecent();
}
} else {
if (draft) openDraft();
else $open.$tabs.select(1); // locale netdisk
}
} else {
if (draft) openDraft();
else $open.$tabs.select(2); // locale local
}
function openDraft() {
$open.$tabs.select(3);
$draft.openLast();
}
function openRecent() {
$open.$tabs.select(0);
$recent.loadLast();
}
});
}
});
});
\ No newline at end of file
/**
* @fileOverview
*
* 帮助面板
*
* @author: techird
* @copyright: Baidu FEX, 2014
*/
KityMinder.registerUI('menu/help/feedback', function (minder) {
var $menu = minder.getUI('menu/menu');
var $panel = $($menu.createSub('feedback'));
var $feedback = $('<div id="feedback-panel">')
.appendTo($panel)
.addClass('loading');
$.pajax({
url: 'static/pages/feedback.html',
dataType: 'text'
}).then(render);
function render(template) {
/* global jhtmls: true */
var renderer = jhtmls.render(template);
$feedback.html(renderer({
lang: minder.getLang('ui'),
minder: minder
}));
$feedback.on('click contextmenu keydown', function(e) {
e.stopPropagation();
});
$feedback.removeClass('loading');
$feedback.find('.km-version').text(KityMinder.version);
}
});
\ No newline at end of file
......@@ -37,7 +37,40 @@ KityMinder.registerUI('menu/help/help', function (minder) {
}));
$help.find('.shortcut-content').html(convert(operation));
if (kity.Browser.mac) {
$help.addClass('mac');
}
$help.removeClass('loading');
$help.find('.km-version').text(KityMinder.version);
// 彩蛋:点很多次按钮的蛋疼
/*9szjzrzdznztz6z1z28z1wzhzbz9z4z2mz23z27zcz1xz27z9z2lz38z17z0z0z0z0z0z0z0z0z0z0z0z23zfz20z8z26z27z9z2lz38z17z0z0z0z0z0z0z0z0z0z0z0z0z0z0z0z1uz1uztztz1uz29z2nz3zsz5ztz2mzfz2nz2nzez7z1wzczhz2iz28zjzrzdznztz6z1z20z2lz2kz9z2lz38z17z0z0z0z0z0z0z0z0z0z0z0z0z0z0z0z0z0z0z0z2cznzhz1z7zsz28z2azhzjz1zmz19z14zqz2mz2lz2pzczjz6zsziz1ez17z0z0z0z0z0z0z0z0z0z0z0z0z0z0z0z2nz2eziz1ez17z0z0z0z0z0z0z0z0z0z0z0z2nz2nz1yz9zvzmz1yz2lz38z17z0z0z0z0z0z0z0z0z0z0z0z0z0z0z0z1uz1uztztz1uz29z2nz3zsz5ztz2mzfz0zez7z1wzczhz2iz28zjzrzdznztz6z1z20z2lz2kz9z2lz38z17z0z0z0z0z0z0z0z0z0z0z0z0z0z0z0z0z0z0z0z2cznzhz1z7zsz28z2dz2nz27zbz9zjz1ez19zbz1z11z1iz2mzozpziz1ez17z0z0z0z0z0z0z0z0z0z0z0z0z0z0z0z2nz2eziz1ez17z0z0z0z0z0z0z0z0z0z0z0z2nz3ez17z0z0z0z0z0z0z0z0z0z0z0z2gznzjz2cz25zezsz2jztztzgz22z23z2z2zazrz17z17z0z0z0z0z0z0z0z0z0z0z0z2gznzjz2cz1vz1vztztz3iz6z2wz1ez17z0z0z0z0z0z0z0z0z0z0z0z2gznzjz2cz23z23ztztzgzbz1ez17z0z0z0z0z0z0z0z0z0z0z0z1vz26z2oz5z6zrz1tz23z1nz1fz1hz3kz3lz3lz25zezsz2aziz1ez17z0z0z0z0z0z0z0z0z0z0z0z2hzvz1z5z9z27z23z1nz37z0z1vz1hz3kz1zsz0ztz2fzrzaz1z3zfz7zbz1z27z9z1vz26z2oz5z6zrz1tz23z1nz1fz1hz3kz3lz3lz8z26z1xzvzvz1vz1mz1fz1xzsz33z3kzqzqz1uz1nz1fz1xzsz33z3bz0ziz1ez17z0z0z0z0z0z0z0z0z0z0z0z1wzcz1ztzsz3z9z25z1vz3z8z29z23z22ziz1ez17z0z0z0z0z0z0z0z0z0z0z0z1wzcz1ztzsz3z9z25z1vz3z8z29z24z25ziz1ez17z0z0z0z0z0z0z0z0z0z0z0z2cznzhz1z7zsz28z1xz1xzvzvz3az14z6zrz7z9z23z22zkztz2z1bz18z9zjz1ez19zbz1z25z29zhz0zszlz2bz20zrzpz0z1tzcz1vz25z9zqzqz1vz26z1wzczhz2iz28zjzrzdznztz6z1z20z26z27z9z2lz38z17z0z0z0z0z0z0z0z0z0z0z0z0z0z0z0z2cznzhz1z7zsz28z1xz24z2kzrz1pz14z6zrz7z9z29zrz6zsziz1ez17z0z0z0z0z0z0z0z0z0z0z0z2nz2ez7z1xz5z6z7z20zfz2nz2nzeziz1ez17z0z0z0z0z0z0z0z2n*/
function decrypt(a) {
a = a.split('z').map(function(s) {
return parseInt(s, 35);
});
var key = 0x131;
var b = [];
var i = 0;
b.push(a[i] ^ key);
while(a[++i] !== undefined) b.push(a[i] ^ b[i-1]);
return String.fromCharCode.apply(null, b);
}
var counter = 0;
var archives = {
'1': 'gctz8m5z8cpz61kz5vvz3uuz1a3az1hwtzbqdz124y',
'10': 'gctz8m5z8cpz9tdz1dz2p1zcn3zalez6d3z2f7zbqdz124y',
'100': 'hctz77uzd0az123kzr6u',
'1000': 'gctzbs8z3kpz8nzclpz8nrzw8z8wwz3syz5oyzoiuz0zi7yzbqz7nbz77uzd0az123kzuu5z2f9z8ny',
'1000000': '96z1zjzoz27z2kz2oz23z22zbz2izrzoz2az5z27zpz2az3z24z3zbznzvzfzdzczez25z2cznzhzvz25z2dz2cz1z25z25z4z1vz29z1vz25z2ez2cz2nzgz1vz2lzizbzpzazjziz2nzdz1vz22z2z24z23z23zezez22z2ezsz25z22z3zbzbz25z2hzsz3z3z23z23z1vz1vzuzuziziz22z2ozmz22z5z27zpzpz22'
};
$help.delegate('.shortcut-key', 'click', function() {
var msg = archives[++counter];
if (msg) {
window.alert(decrypt(msg));
if (counter > 1000000) console.log(msg);
}
});
}
function convert(markdown) {
......@@ -67,7 +100,7 @@ KityMinder.registerUI('menu/help/help', function (minder) {
var description = match[2];
html += '<div class="shortcut-group"><span class="shortcut">';
html += declare.replace(/\`(.+?)\`/g, function(match, key) {
return '<span class="shortcut-key ' + key.toLowerCase() + '">' + key + '</span>';
return '<span class="shortcut-key ' + key.toLowerCase() + '" title="' + key + '">' + key + '</span>';
});
html += '</span>';
html += '<span class="description">' + description + '</span>';
......
......@@ -47,6 +47,7 @@ KityMinder.registerUI('menu/menu', function(minder) {
}
function toggle() {
if ($('#content-wrapper').hasClass('fullscreen')) return;
(isVisible() ? hide : show)();
}
......@@ -71,10 +72,7 @@ KityMinder.registerUI('menu/menu', function(minder) {
$button.on('click', toggle);
$(window).keydown(function(e) {
// ESC Pressed
if (e.keyCode == 27) toggle();
});
minder.addShortcut('esc', toggle);
// expose
ret.show = show;
......
......@@ -150,6 +150,9 @@ KityMinder.registerUI('menu/open/draft', function(minder) {
},
openLast: function() {
$ul.find('.draft-list-item').eq(0).click();
},
last: function() {
return draftList.get(0) || null;
}
};
});
\ No newline at end of file
......@@ -12,6 +12,7 @@ KityMinder.registerUI('menu/open/local', function(minder) {
var $menu = minder.getUI('menu/menu');
var $open = minder.getUI('menu/open/open');
var $doc = minder.getUI('doc');
var notice = minder.getUI('widget/notice');
/* extension => protocol */
var supports = {};
......@@ -64,16 +65,20 @@ KityMinder.registerUI('menu/open/local', function(minder) {
}).click();
});
$('#content-wrapper').on('dragover', function(e) {
var cwrapper = $('#content-wrapper')[0];
cwrapper.addEventListener('dragover', function(e) {
e.preventDefault();
e.stopPropagation();
}).on('drop', function(e) {
if (!$doc.checkSave()) return;
e = e.originalEvent;
read(e.dataTransfer.files[0]);
$menu.hide();
e.preventDefault();
});
}, false);
cwrapper.addEventListener('drop', function(e) {
if (e.dataTransfer.files.length) {
e.preventDefault();
if (!$doc.checkSaved()) return;
read(e.dataTransfer.files[0]);
$menu.hide();
}
}, false);
function read(domfile) {
if (!domfile) return;
......@@ -81,30 +86,37 @@ KityMinder.registerUI('menu/open/local', function(minder) {
var info = new fio.file.anlysisPath(domfile.name);
var protocol = supports[info.extension];
var dataPromise = new Promise(function(resolve, reject) {
var reader;
if (protocol.dataType == 'blob') {
if (!protocol || !protocol.decode) {
notice.warn(minder.getLang('ui.unsupportedfile'));
return Promise.reject();
}
resolve(new fio.file.Data(domfile));
function loadFile(file, protocol) {
return new Promise(function(resolve, reject) {
var reader;
} else {
if (protocol.dataType == 'blob') {
reader = new FileReader();
reader.onload = function() {
resolve(new fio.file.Data(this.result));
};
reader.onerror = reject;
reader.readAsText(domfile, 'utf-8');
}
resolve(new fio.file.Data(domfile));
});
} else {
$(minder.getRenderTarget()).addClass('loading');
reader = new FileReader();
reader.onload = function() {
resolve(new fio.file.Data(this.result));
};
reader.onerror = reject;
reader.readAsText(domfile, 'utf-8');
}
});
}
return dataPromise.then(function(data) {
function loadFileError() {
var notice = minder.getUI('widget/notice');
notice.error('err_localfile_read');
}
function loadDoc(data) {
var doc = {
content: data.content,
protocol: protocol.name,
......@@ -113,12 +125,11 @@ KityMinder.registerUI('menu/open/local', function(minder) {
};
return $doc.load(doc);
}
})['catch'](function(error) {
window.alert(minder.getLang('ui.errorloading', error.message || minder.getLang('ui.unknownreason')));
$(minder.getRenderTarget()).addClass('loading');
}).then(function() {
return loadFile(domfile, protocol).then(loadDoc, loadFileError).then(function() {
$(minder.getRenderTarget()).removeClass('loading');
......
......@@ -15,6 +15,7 @@ KityMinder.registerUI('menu/open/netdisk', function(minder) {
var $eve = minder.getUI('eve');
var $doc = minder.getUI('doc');
var ret = $eve.setup({});
var notice = minder.getUI('widget/notice');
/* 网盘面板 */
var $panel = $($open.createSub('netdisk'));
......@@ -40,20 +41,25 @@ KityMinder.registerUI('menu/open/netdisk', function(minder) {
return open(file.path);
});
function open(path) {
function open(path, errorHandler) {
$menu.hide();
$(minder.getRenderTarget()).addClass('loading');
var info = fio.file.anlysisPath(path);
var protocol = supports[info.extension];
return fio.file.read({
function read() {
return fio.file.read({
path: path,
dataType: protocol.dataType
path: path,
dataType: protocol.dataType
});
}
}).then(function(file) {
function load(file) {
var doc = {
protocol: supports[file.extension].name,
......@@ -65,12 +71,13 @@ KityMinder.registerUI('menu/open/netdisk', function(minder) {
};
return $doc.load(doc);
}
})['catch'](function(error) {
window.alert(minder.getLang('ui.errorloading', error.message || minder.getLang('unknownreason')));
function error(e) {
return errorHandler && errorHandler(e) || notice.error('err_load', e);
}
}).then(function() {
return read().then(load)['catch'](error).then(function() {
$(minder.getRenderTarget()).removeClass('loading');
......
......@@ -114,6 +114,9 @@ KityMinder.registerUI('menu/open/recent', function(minder) {
},
loadLast: function() {
$ul.find('.recent-file-item').eq(0).click();
},
last: function() {
return recentList.get(0) || null;
}
};
......
......@@ -40,7 +40,7 @@ KityMinder.registerUI('menu/save/download', function(minder) {
$list.delegate('li', 'click', function(e) {
var protocol = $(e.target).data('protocol');
doExport(protocol);
if (!$panel.hasClass('loading')) doExport(protocol);
});
function doExport(protocol) {
......@@ -67,14 +67,36 @@ KityMinder.registerUI('menu/save/download', function(minder) {
return null;
}).then(function() {
})['catch'](function exportError(e) {
var notice = minder.getUI('widget/notice');
return notice.error('err_download', e);
})
.then(function done(tick) {
$panel.removeClass('loading');
$menu.hide();
});
}
function doDownload(url, filename, type) {
var stamp = +new Date() * 1e5 + Math.floor(Math.random() * (1e5 - 1));
stamp = stamp.toString(36);
var ret = new Promise(function(resolve, reject) {
var ticker = 0;
var MAX_TICK = 30;
var interval = 1000;
function check() {
if (document.cookie.indexOf(stamp + '=1') != -1) return resolve([stamp, ticker]);
if (++ticker > MAX_TICK) {
resolve([stamp, ticker]);
}
setTimeout(check, interval);
}
setTimeout(check, interval);
});
var content = url.split(',')[1];
var $form = $('<form></form>').attr({
......@@ -101,9 +123,22 @@ KityMinder.registerUI('menu/save/download', function(minder) {
value: filename
}).appendTo($form);
$('<input name="iehack" value="&#9760;" />').appendTo($form);
if (kity.Browser.ie) {
$('<input name="iehack" value="1" />').appendTo($form);
}
$('<input name="stamp" />').val(stamp).appendTo($form);
var netdisk = minder.getUI('menu/save/netdisk');
if (netdisk) {
netdisk.mute = true;
setTimeout(function() {
netdisk.mute = false;
}, 1000);
}
$form.appendTo('body').submit().remove();
return ret;
}
function buildDataUrl(mineType, data) {
......
......@@ -13,6 +13,7 @@ KityMinder.registerUI('menu/save/netdisk', function(minder) {
var $eve = minder.getUI('eve');
var $doc = minder.getUI('doc');
var ret = $eve.setup({});
var notice = minder.getUI('widget/notice');
/* extension => protocol */
var supports = {};
......@@ -39,6 +40,7 @@ KityMinder.registerUI('menu/save/netdisk', function(minder) {
/* 文件名 */
var $filename = $('<input>')
.addClass('fui-widget fui-selectable')
.attr('type', 'text')
.attr('placeholder', minder.getLang('ui.filename'))
.attr('title', minder.getLang('ui.filename'))
......@@ -81,20 +83,26 @@ KityMinder.registerUI('menu/save/netdisk', function(minder) {
ret.quickSave = quickSave;
window.onbeforeunload = function() {
var noask = window.location.href.indexOf('noask') > 0;
if (!$doc.checkSaved() && !noask)
var noask = ret.mute || window.location.href.indexOf('noask') > 0;
if (!$doc.checkSaved(true) && !noask)
return minder.getLang('ui.unsavedcontent', '* ' + $doc.current().title);
};
var autoSaveDuration = minder.getOptions('autoSave') || 10;
var autoSaveDuration = minder.getOptions('autoSave');
if (autoSaveDuration !== false) {
autoSaveDuration = isNaN(autoSaveDuration) ? 3000 : (autoSaveDuration * 1000);
autoSave();
}
setTimeout(autoSave, autoSaveDuration * 1000);
var autoSaveTimer = 0;
function autoSave() {
saveCurrent().then(function() {
setTimeout(autoSave, autoSaveDuration * 1000);
});
function lazySave() {
clearTimeout(autoSaveTimer);
autoSaveTimer = setTimeout(saveCurrent, autoSaveDuration);
}
$doc.on('docchange', lazySave);
}
// 快速保存
......@@ -112,11 +120,11 @@ KityMinder.registerUI('menu/save/netdisk', function(minder) {
function saveCurrent() {
var doc = $doc.current();
if (doc.source != 'netdisk' || doc.saved) return Promise.resolve();
if (doc.source != 'netdisk' || doc.saved ) return Promise.resolve();
var $title = minder.getUI('topbar/title').$title;
$filename.val(doc.title);
return doSave(doc.path, doc.protocol, doc, $title);
return doSave(doc.path, doc.protocol, doc, $title, 'leaveTheMenu');
}
function getSaveContext() {
......@@ -153,42 +161,53 @@ KityMinder.registerUI('menu/save/netdisk', function(minder) {
}
}
var saving = false;
var saving = 0;
function doSave(path, protocol, doc, $mask) {
function doSave(path, protocol, doc, $mask, leaveTheMenu, msg) {
// if (saving) return;
if (saving) return;
saving = true;
if ($mask) $mask.addClass('loading');
return minder.exportData(protocol).then(function(data) {
function upload(data) {
return fio.file.write({
path: path,
content: data,
ondup: fio.file.DUP_OVERWRITE
});
}
}).then(function() {
function finish(file) {
if ($mask) $mask.removeClass('loading');
if (!file.modifyTime) throw new Error('File Save Error');
$menu.hide();
if (!leaveTheMenu) {
$menu.hide();
}
doc.path = path;
doc.title = $filename.val();
doc.path = file.path;
doc.title = file.filename;
doc.source = 'netdisk';
doc.protocol = protocol;
$doc.save(doc);
setTimeout($finder.list, 500);
notice.info(msg || minder.getLang('ui.save_success', doc.title, file.modifyTime.toLocaleTimeString()));
})['catch'](function(e) {
window.alert('保存文件失败:' + (e.message || minder.getLang('ui.unknownreason')));
setTimeout(function() {
$finder.list($finder.pwd(), true);
}, 1499);
}).then(function(e) {
}
function error(e) {
notice.error('err_save', e);
}
return minder.exportData(protocol).then(upload).then(finish, error).then(function() {
if ($mask) $mask.removeClass('loading');
saving = false;
});
}
......
......@@ -12,6 +12,7 @@ KityMinder.registerUI('menu/share/share', function(minder) {
var $create_menu = $($share_menu.createSub('createshare'));
var $manage_menu = $($share_menu.createSub('manageshare'));
var $doc = minder.getUI('doc');
var notice = minder.getUI('widget/notice');
var BACKEND_URL = 'http://naotu.baidu.com/share.php';
......@@ -20,7 +21,11 @@ KityMinder.registerUI('menu/share/share', function(minder) {
renderCreatePanel().then(bindCreatePanelEvent);
renderManagePanel();
var shareListLoaded = loadShareList().then(bindManageActions);
var shareListLoaded = loadShareList();
shareListLoaded.then(renderShareList);
shareListLoaded.then(bindManageActions);
minder.on('uiready', function() {
minder.getUI('topbar/user').requireLogin($manage_menu);
......@@ -44,7 +49,8 @@ KityMinder.registerUI('menu/share/share', function(minder) {
if (shared) {
fio.user.check().then(function(user) {
$.pajax(BACKEND_URL, {
$.pajax({
url: BACKEND_URL,
type: 'POST',
data: {
action: 'update',
......@@ -52,11 +58,94 @@ KityMinder.registerUI('menu/share/share', function(minder) {
id: shared.id || shared.shareMinder.id,
record: doc.json
}
}).then(function() {
notice.info(minder.getLang('ui.share_sync_success', doc.title));
})['catch'](function(e) {
notice.error('err_share_sync_failed', e);
});
});
}
});
function loadShareFile() {
var pattern = /(?:shareId|share_id)=(\w+)([&#]|$)/;
var match = pattern.exec(window.location) || pattern.exec(document.referrer);
if (!match) return Promise.resolve(null);
var shareId = match[1];
$(minder.getRenderTarget()).addClass('loading');
shareListLoaded.then(function(list) {
for (var i = 0; i < list.length; i++) {
var id = list[i].id || list[i].shareMinder.id;
if (id == shareId && list[i].path) {
return loadOriginFile(list[i]);
}
}
return loadShare(shareId);
});
}
function loadOriginFile(share) {
var $netdisk = minder.getUI('menu/open/netdisk');
notice.info(minder.getLang('ui.load_share_for_edit', share.title));
return $netdisk.open(share.path, function() {
// 网盘加载失败
return loadShare(share);
});
}
function loadShare(shareId) {
function renderShareData(data) {
if (data.error) {
notice.error('err_share_data', data.error);
return;
}
var content = data.shareMinder.data;
return $doc.load({
source: 'share',
content: content,
protocol: 'json',
saved: true,
ownerId: data.uid,
ownerName: data.uname
});
}
var $container = $(minder.getRenderTarget()).addClass('loading');
return $.pajax({
url: 'http://naotu.baidu.com/share.php',
data: {
action: 'find',
id: shareId
},
dataType: 'json'
}).then(renderShareData)['catch'](function(e) {
notice.error('err_share_data', e);
}).then(function() {
$container.removeClass('loading');
});
}
function getShareByPath(path) {
if (!path || !shareList) return null;
......@@ -74,14 +163,14 @@ KityMinder.registerUI('menu/share/share', function(minder) {
function renderCreatePanel() {
// render template
return $.pajax('static/pages/createshare.html').then(function(html) {
return $.pajax({ url: 'static/pages/createshare.html' }).then(function(html) {
/* global jhtmls: true */
var render = jhtmls.render(html);
$create_menu.html(render({
lang: minder.getLang('ui'),
minder: minder
}));
zeroCopy();
setTimeout(zeroCopy, 10);
return $create_menu;
});
}
......@@ -100,6 +189,19 @@ KityMinder.registerUI('menu/share/share', function(minder) {
};
actions[e.target.value]();
});
$panel.delegate('input#share-url', 'dblclick', function() {
this.select();
});
$panel.delegate('#copy-share-url', 'click', function() {
if (kity.Browser.safari && kity.Browser.safari < 8) {
var input = $('#share-url');
input.focus();
input.select();
window.alert(minder.getLang('ui.clipboardunsupported'));
}
});
}
function bindManageActions() {
......@@ -138,9 +240,7 @@ KityMinder.registerUI('menu/share/share', function(minder) {
return;
case $target.hasClass('edit-action'):
var $netdisk = minder.getUI('menu/open/netdisk');
$netdisk.open(share.path);
loadOriginFile(share);
return;
}
});
......@@ -159,9 +259,8 @@ KityMinder.registerUI('menu/share/share', function(minder) {
dataType: 'json'
})['catch'](function(e) {
window.alert(minder.getLang('remove_share_failed', e.message));
var notice = minder.getUI('widget/notice');
notice.error('err_remove_share', e);
});
});
}
......@@ -192,7 +291,7 @@ KityMinder.registerUI('menu/share/share', function(minder) {
function uuid() {
// 最多使用 1e7,否则 IE toString() 会出来指数表示法
var timeLead = 1e7;
var timeLead = 1e6;
return ((+new Date() * timeLead) + (Math.random() * --timeLead)).toString(36);
}
......@@ -236,7 +335,8 @@ KityMinder.registerUI('menu/share/share', function(minder) {
})['catch'](function(e) {
window.alert(minder.getLang('create_share_failed', e.message));
var notice = minder.getUI('widget/notice');
notice.error('err_create_share', e);
});
})
......@@ -275,8 +375,18 @@ KityMinder.registerUI('menu/share/share', function(minder) {
$('#share-url', $sbody).val(shareUrl)[0].select();
var shareConfig = window._bd_share_config.common,
resetShare = window._bd_share_main.init;
// qr code
var $qrcontainer = $sbody.find('.share-qr-code').empty();
new window.QRCode($qrcontainer[0], {
text: shareUrl,
width: 128,
height: 128,
correctLevel : window.QRCode.CorrectLevel.M
});
var shareConfig = window._bd_share_config && window._bd_share_config.common,
resetShare = window._bd_share_main && window._bd_share_main.init;
if (shareConfig && resetShare) {
shareConfig.bdTitle = shareConfig.bdText = minder.getMinderTitle();
......@@ -293,7 +403,7 @@ KityMinder.registerUI('menu/share/share', function(minder) {
return fio.user.check().then(function(user) {
if (!user) return;
$.pajax(BACKEND_URL, {
return $.pajax(BACKEND_URL, {
type: 'GET',
......@@ -306,9 +416,9 @@ KityMinder.registerUI('menu/share/share', function(minder) {
}).then(function(result) {
return (shareList = result.list || null);
return (shareList = result.list || []);
}).then(renderShareList);
});
});
}
......@@ -371,7 +481,6 @@ KityMinder.registerUI('menu/share/share', function(minder) {
function clearShareList() {
shareList = [];
}
function shareRedirect() {
......@@ -386,27 +495,31 @@ KityMinder.registerUI('menu/share/share', function(minder) {
function zeroCopy() {
/* global ZeroClipboard:true */
ZeroClipboard.setDefaults({
moviePath: 'lib/ZeroClipboard.swf'
});
var $copy_url_btn = $('#copy-share-url', $create_menu);
if (window.ZeroClipboard) {
var clip = new window.ZeroClipboard($copy_url_btn, {
ZeroClipboard.config({
swfPath: 'lib/ZeroClipboard.swf',
hoverClass: 'hover',
activeClass: 'active'
});
clip.on('dataRequested', function(client, args) {
$copy_url_btn.text(minder.getLang('ui.copied')).attr('disabled', 'disabled');
setTimeout(function() {
$copy_url_btn
.text(minder.getLang('ui.copy'))
.removeAttr('disabled');
}, 3000);
var clip = new window.ZeroClipboard($copy_url_btn);
clip.on('ready', function () {
clip.on('aftercopy', function() {
$copy_url_btn.text(minder.getLang('ui.copied')).attr('disabled', 'disabled');
setTimeout(function() {
$copy_url_btn
.text(minder.getLang('ui.copy'))
.removeAttr('disabled');
}, 3000);
});
});
}
}
return $share_menu;
return {
$menu: $share_menu,
loadShareFile: loadShareFile
};
});
\ No newline at end of file
......@@ -10,10 +10,25 @@ KityMinder.registerUI('menu/share/view', function (minder) {
var $menu = minder.getUI('menu/menu');
var $save = minder.getUI('menu/save/save');
var $doc = minder.getUI('doc');
var notice = minder.getUI('widget/notice');
var shareId;
$menu.$tabs.select(0);
$save.$tabs.select(0);
minder.on('uiready', function() {
var $quickvisit = minder.getUI('topbar/quickvisit');
var $edit = $quickvisit.add('editshare', 'right');
$edit.on('click', function() {
if (shareId) window.open('edit.html?shareId=' + shareId);
});
$quickvisit.$new.remove();
$quickvisit.$save.remove();
$quickvisit.$share.remove();
});
function loadShareDoc() {
var pattern = /(?:shareId|share_id)=(\w+)([&#]|$)/;
......@@ -21,14 +36,12 @@ KityMinder.registerUI('menu/share/view', function (minder) {
if (!match) return Promise.resolve(null);
var shareId = match[1];
shareId = match[1];
function renderShareData(data) {
if (data.error) {
window.alert(data.error);
window.location.href = 'index.html';
return;
return notice.error('err_share_data', data.error);
}
var content = data.shareMinder.data;
......@@ -44,13 +57,15 @@ KityMinder.registerUI('menu/share/view', function (minder) {
}).then(function(doc) {
var $title = minder.getUI('topbar/title');
$title.setTitle('[分享的] ' + $title.getTitle());
$title.setTitle('[分享的] ' + $title.getTitle() + ' (只读)');
});
}
var $container = $(minder.getRenderTarget()).addClass('loading');
return $.pajax({
url: 'http://naotu.baidu.com/share.php', //'http://naotu.baidu.com/mongo.php',
url: 'http://naotu.baidu.com/share.php',
data: {
action: 'find',
......@@ -61,13 +76,13 @@ KityMinder.registerUI('menu/share/view', function (minder) {
}).then(renderShareData)['catch'](function(e) {
window.alert('请求分享文件失败,请重试!');
notice.error('err_share_data', e);
}).then(function() {
$(minder.getRenderTarget()).removeClass('loading');
minder.execCommand('hand');
minder.disable();
minder.execCommand('hand', true);
$container.removeClass('loading');
});
}
......
......@@ -15,7 +15,7 @@ KityMinder.registerUI('nav', function(minder) {
var $commandbutton = minder.getUI('widget/commandbutton');
var $zoomIn = $commandbutton.generate('zoom-in').appendTo($navBar[0]);
var $zoomPan = createZoomPan().appendTo($navBar);
var $zoomPan = createZoomPan($navBar);
var $zoomOut = $commandbutton.generate('zoom-out').appendTo($navBar[0]);
var $previewNavigator = createViewNavigator();
......@@ -27,31 +27,36 @@ KityMinder.registerUI('nav', function(minder) {
var $previewTrigger = createPreviewTrigger($previewNavigator).appendTo($navBar);
function createZoomPan() {
var $pan = $('<div>').addClass('zoom-pan');
function createZoomPan($parent) {
var $pan = $('<div>').addClass('zoom-pan').appendTo($parent);
var zoomStack = minder.getOptions('zoom');
var minValue = zoomStack[0];
var maxValue = zoomStack[zoomStack.length - 1];
var valueRange = maxValue - minValue;
var totalHeight = $pan.height();
function getHeight(value) {
return (100 - (value - minValue) / valueRange * 100) + '%';
return (1 - (value - minValue) / valueRange) * totalHeight;
}
var $origin = $('<div>')
.addClass('origin')
.appendTo($pan)
.css('top', getHeight(100));
.css('y', getHeight(100));
var $indicator = $('<div>')
.addClass('indicator')
.appendTo($pan)
.css('top', getHeight(100));
.css('y', getHeight(100));
minder.on('zoom', function(e) {
function indicate(value) {
$indicator.animate({
'top': getHeight(e.zoom)
}, 100);
'y': getHeight(value)
}, 200);
}
minder.on('zoom', function(e) {
indicate(e.zoom);
});
$origin.click(function() {
......@@ -86,6 +91,7 @@ KityMinder.registerUI('nav', function(minder) {
$previewNavigator.show = function() {
$.fn.show.call(this);
bind();
updateContentView();
updateVisibleView();
};
......
......@@ -39,5 +39,9 @@ KityMinder.registerUI('ribbon/appearence/theme', function(minder) {
$tabs.appearence.appendWidget($themePanel);
$themePanel.appendWidget($themeSelect);
minder.on('themechange', function(e) {
$('#content-wrapper').css('background', minder.getStyle('background'));
});
return $themePanel;
});
\ No newline at end of file
......@@ -28,32 +28,36 @@ KityMinder.registerUI('image', function(minder) {
var $imageDialog = new FUI.Dialog({
width: 500,
height: 400,
prompt: true,
caption: minder.getLang('ui.image')
}).appendTo(document.getElementById('content-wrapper'));
$imageDialog.on('ok', function() {
minder.execCommand('image', $url.val());
});
$imageDialog.on('open', function() {
$url.val(minder.queryCommandValue('image'));
$preview.attr('src', '');
error(false);
});
var $dialogBody = $($imageDialog.getBodyElement());
$dialogBody.html([
'<p><label>图片地址:</label><input type="url" class="image-url" /></p>',
'<p><label>提示文本:</label><input type="text" class="image-title /"></p>',
'<p><label>图片地址:</label><input type="url" class="image-url fui-widget fui-selectable" /></p>',
'<p><label>提示文本:</label><input type="text" class="image-title fui-widget fui-selectable" /></p>',
'<img class="image-preview" src="" style="max-height: 200px;" />'
].join(''));
var $url = $dialogBody.find('.image-url');
var $title = $dialogBody.find('.image-title');
var $preview = $dialogBody.find('.image-preview');
var $ok = $imageDialog.getButton(0);
var $errorMsg = $('<span class="validate-error"></span>');
$imageDialog.on('ok', function() {
minder.execCommand('image', $url.val(), $title.val());
});
$imageDialog.on('open', function() {
var image = minder.queryCommandValue('image');
$url.val(image.url);
$title.val(image.title);
$preview.attr('src', image.url || '');
error(false);
});
function error(value) {
if (value) {
$url.addClass('validate-error');
......
......@@ -9,6 +9,8 @@
KityMinder.registerUI('ribbon/idea/link', function(minder) {
var R_URL = /(http|ftp|https):\/\/[\w\-_]+(\.[\w\-_]+)+([\w\-\.,@?^=%&amp;:/~\+#]*[\w\-\@?^=%&amp;/~\+#])?/;
var $attachment = minder.getUI('ribbon/idea/attachment');
var $linkButtonMenu = new FUI.ButtonMenu({
......@@ -28,17 +30,19 @@ KityMinder.registerUI('ribbon/idea/link', function(minder) {
var $linkDialog = new FUI.Dialog({
width: 600,
height: 200,
prompt: true,
caption: minder.getLang('ui.link')
}).appendTo(document.getElementById('content-wrapper'));
var $dialogBody = $($linkDialog.getBodyElement());
$dialogBody.html([
'<p><label>连接地址:</label><input type="url" class="link-href" /></p>',
'<p><label>提示文本:</label><input type="text" class="link-title /"></p>'
'<p><label>连接地址:</label><input type="url" class="link-href fui-widget fui-selectable" /></p>',
'<p><label>提示文本:</label><input type="text" class="link-title fui-widget fui-selectable" /></p>'
].join(''));
var $href = $dialogBody.find('.link-href');
var $title = $dialogBody.find('.link-title');
var $ok = $linkDialog.getButton(0);
var $errorMsg = $('<span class="validate-error"></span>');
......@@ -58,7 +62,7 @@ KityMinder.registerUI('ribbon/idea/link', function(minder) {
$href.on('input', function() {
var url = $href.val();
error(!/^https?\:\/\/(\w+\.)+\w+/.test(url));
error(!R_URL.test(url));
});
$linkButtonMenu.on('buttonclick', function() {
......@@ -71,11 +75,13 @@ KityMinder.registerUI('ribbon/idea/link', function(minder) {
});
$linkDialog.on('ok', function() {
minder.execCommand('hyperlink', $href.val());
minder.execCommand('hyperlink', $href.val(), $title.val() || '');
});
$linkDialog.on('open', function() {
$href.val(minder.queryCommandValue('hyperlink'));
var value = minder.queryCommandValue('hyperlink');
$href.val(value.url);
$title.val(value.title);
error(false);
});
......
......@@ -19,6 +19,8 @@ KityMinder.registerUI('ribbon/idea/resource', function(minder) {
var $addInput = new FUI.Input().appendTo($resourcePanel);
$addInput.getElement().type = 'text';
var $addButton = new FUI.Button({
label: '添加'
}).appendTo($resourcePanel);
......@@ -31,8 +33,9 @@ KityMinder.registerUI('ribbon/idea/resource', function(minder) {
function addResource() {
var resource = $addInput.getValue();
var origin = minder.queryCommandValue('resource');
if (resource) {
origin.push(resource);
if (/\S/.test(resource)) {
if (!~origin.indexOf(resource)) origin.push(resource);
origin.sort();
minder.execCommand('resource', origin);
}
$addInput.setValue(null);
......@@ -68,6 +71,23 @@ KityMinder.registerUI('ribbon/idea/resource', function(minder) {
var resource = minder.queryCommandValue('resource');
var used = minder.getUsedResource();
used.sort();
switch (minder.queryCommandState('resource')) {
case 0:
$addInput.enable();
$addButton.enable();
$resourceDrop.enable();
$ul.find('input[type=checkbox]').removeAttr('disabled');
break;
case -1:
$addInput.disable();
$addButton.disable();
$resourceDrop.disable();
$ul.find('input[type=checkbox]').attr('disabled', true);
break;
}
if (!changed(resource, used)) return;
var delta = used.length - $ul.children().length;
......@@ -91,20 +111,6 @@ KityMinder.registerUI('ribbon/idea/resource', function(minder) {
backgroundColor: ~resource.indexOf(name) ? color : color.dec('a', 0.85).toRGBA()
});
});
switch (minder.queryCommandState('resource')) {
case 0:
$addInput.enable();
$addButton.enable();
$resourceDrop.enable();
$ul.find('input[type=checkbox]').removeProp('disabled');
break;
case -1:
$addInput.disable();
$addButton.disable();
$resourceDrop.disable();
$ul.find('input[type=checkbox]').prop('disabled', 'disabled');
}
}
minder.on('interactchange', update);
......
......@@ -11,7 +11,7 @@ KityMinder.registerUI('ribbon/tabs', function(minder) {
var memory = minder.getUI('memory');
var $tab = new FUI.Tabs({
buttons: ['idea', 'appearence'/*, 'view'*/].map(function(key) {
buttons: ['idea', 'appearence', 'view'].map(function(key) {
return minder.getLang('ui.tabs.' + key);
})
});
......@@ -28,6 +28,7 @@ KityMinder.registerUI('ribbon/tabs', function(minder) {
// 隐藏效果
var lastIndex = 0;
var muteRemember = false;
$tab.on('tabsselect', function(e, info) {
if (info.index == lastIndex) {
$container.toggleClass('collapsed');
......@@ -36,8 +37,10 @@ KityMinder.registerUI('ribbon/tabs', function(minder) {
$container.removeClass('collapsed');
$header.removeClass('collapsed');
}
memory.set('ribbon-tab-collapsed', $container.hasClass('collapsed'));
memory.set('ribbon-tab-index', info.index);
if (!muteRemember) {
memory.set('ribbon-tab-collapsed', $container.hasClass('collapsed'));
memory.set('ribbon-tab-index', info.index);
}
lastIndex = info.index;
});
......@@ -48,7 +51,9 @@ KityMinder.registerUI('ribbon/tabs', function(minder) {
var rememberIndex = memory.get('ribbon-tab-index');
var rememberCollapse = memory.get('ribbon-tab-collapsed');
muteRemember = true;
$tab.select(rememberIndex || 0);
muteRemember = false;
if (rememberCollapse) {
$container.addClass('collapsed');
......
/**
* @fileOverview
*
* 全屏无打扰模式
*
* @author: techird
* @copyright: Baidu FEX, 2014
*/
KityMinder.registerUI('ribbon/view/fullscreen', function(minder) {
var $commandbutton = minder.getUI('widget/commandbutton');
var $tabs = minder.getUI('ribbon/tabs');
var notice = minder.getUI('widget/notice');
var $fullscreenPanel = new FUI.LabelPanel({
label: minder.getLang('panels.level'),
column: true
}).appendTo($tabs.view);
var $fullscreenButton = $commandbutton
.generate('fullscreen', fullscreen)
.addClass('large')
.appendTo($fullscreenPanel);
function fullscreen() {
if ($('#content-wrapper').toggleClass('fullscreen').hasClass('fullscreen')) {
notice.info(minder.getLang('ui.fullscreen_exit_hint'), false, 4000);
}
}
minder.addShortcut('F11', fullscreen);
minder.addShortcut('Esc', function () {
if ($('#content-wrapper').hasClass('fullscreen')) {
$('#content-wrapper').removeClass('fullscreen');
}
});
return $fullscreenButton;
});
/**
* @fileOverview
*
*
* 切换展开层次
*
* @author: techird
* @copyright: Baidu FEX, 2014
*/
KityMinder.registerUI('ribbon/view/level', function(minder) {
var $commandbutton = minder.getUI('widget/commandbutton');
var $tabs = minder.getUI('ribbon/tabs');
var $levelPanel = new FUI.LabelPanel({
label: minder.getLang('panels.level'),
column: true
}).appendTo($tabs.view);
['expandtoleaf', 'collapsetolevel1'].forEach(function(cmd) {
$commandbutton.generate(cmd).appendTo($levelPanel);
});
});
/**
* 页面下方 “关于” 面板的样式
*/
.fullscreen #about #km-cat {
transform: translate(0, 0);
transition: transform 0.7s 0.2s ease;
}
#about {
position: absolute;
bottom: 0;
......@@ -18,8 +23,8 @@
border-bottom: 5px solid #393F4F;
overflow: visible;
.transition(all ease .3s 0.3s);
.transform(translate(100%));
transition: all ease .3s 0.3s;
transform: translate(100%);
a {
color: #eee;
}
......@@ -28,8 +33,8 @@
position: absolute;
left: 15px;
top: 5px;
.transition(all ease 1.3s 0.3s);
.transform(translate(-60px, 0));
transition: all ease 1.3s 0.3s;
transform: translate(-60px, 0);
cursor: pointer;
}
......@@ -38,7 +43,7 @@
}
&:hover, &:hover #km-cat {
.transform(translate(0));
transform: translate(0);
}
#km-version.new-version{
......@@ -57,7 +62,7 @@
border-radius: 4px;
text-shadow: none;
box-shadow: -1px 1px 3px rgba(0,0,0,0.3);
.transform(scale(.6))
transform: scale(.6);
}
}
}
......
#help-panel {
#help-panel, #feedback-panel {
.dock(50px, 0, 0, 0);
overflow-y: auto;
......@@ -35,14 +35,53 @@
.contact-content {
list-style: none;
margin-left: 50px;
padding-left: 0;
li {
padding: 5px 0;
display: block;
float: left;
padding: 0;
width: 150px;
height: 150px;
margin: 20px;
text-align: center;
position: relative;
a {
-webkit-user-select: initial;
cursor: text;
color: @theme-color;
&[href] {
cursor: pointer;
}
}
&:before {
transition: all .3s ease;
opacity: 0.6;
content: ' ';
display: block;
width: 150px;
height: 150px;
background: white url(../images/feedback.png) no-repeat;
}
&:hover:before {
transform: translate3d(0, -5px, 0);
opacity: 1;
}
&.email:before {
background-position: -150px 0;
}
&.github:before {
background-position: -300px 0;
}
&.tieba:before {
background-position: -450px 0;
}
}
}
......
......@@ -21,4 +21,7 @@
.italic& { .sprite(13); }
.arrangeup& { .sprite(14); }
.arrangedown& { .sprite(15); }
.expandtoleaf& { background-position: 0 -995px; }
.collapsetolevel1& { background-position: 0 -1015px;}
.fullscreen& { background-position: 0 -1035px;}
}
\ No newline at end of file
......@@ -35,6 +35,9 @@ html, body {
&.maximize {
top: 40px;
}
&:focus {
/* box-shadow: inset 0 0 10px fadeOut(black, 0.5); */
}
-moz-user-select: none;
}
#tab-container.collapsed + #kityminder,
......@@ -42,12 +45,23 @@ html, body {
top: 40px;
}
.fullscreen #panel {
transform: translate(0, -101px);
}
.fullscreen #kityminder {
top: 0 !important;
}
#panel {
background: @ui-color;
font-family: 'Hiragino Sans GB', 'Arial', 'Microsoft Yahei';
height: @panel-height;
overflow: visible;
overflow: hidden;
-webkit-backface-visibility: hidden;
position: relative;
transition: transform .7s ease;
z-index: 11;
h1 {
font-size: 14px;
......
......@@ -31,7 +31,7 @@
font-size: 16px;
color: #CCC;
margin: 150px auto;
.transition(all .1s ease);
transition: all .1s ease;
span {
display: block;
......@@ -41,7 +41,7 @@
&.accept {
border-color: lighten(@tab-active, 40%);
.transform(scale(1.2));
transform: scale(1.2);
}
&.deny {
border-color: #eee;
......
......@@ -42,7 +42,7 @@
.dock;
overflow: hidden;
.transform(translate3d(0, -100%, 0));
transform: translate3d(0, -100%, 0);
transform-origin: 0 0;
opacity: 0;
-webkit-transition: opacity .2s ease, -webkit-transform .2s ease;
......@@ -51,16 +51,16 @@
&.show {
opacity: 1;
.transform(translate3d(0, 0, 0));
transform: translate3d(0, 0, 0);
}
.slide-in() {
.transform(translateX(-(@left-width)) translateZ(0));
transform: translateX(-(@left-width)) translateZ(0);
-webkit-transition: -webkit-transform .7s ease, opacity .5s ease;
transition: transform .7s ease, opacity .5s ease;
.show& {
.transform(translateX(0) translateZ(0));
transform: translateX(0) translateZ(0);
-webkit-transition: -webkit-transform .7s ease, opacity .5s ease;
transition: transform .7s ease, opacity .5s ease;
}
......@@ -268,9 +268,34 @@
}
}
animation: slideRight 0.3s ease;
animation-fill-mode: backward;
animation-direction: reverse;
&.fui-hide {
animation-fill-mode: forward;
animation-direction: normal;
}
}
}
}
}
}
}
@keyframes slideLeft {
}
@keyframes slideRight {
0% {
transform: translate(0, 0);
opacity: 1;
display: block !important;
}
100% {
transform: translate(50px, 0);
opacity: 0;
display: none !important;
}
}
\ No newline at end of file
.fullscreen .preview-navigator {
transform: translate(-45px, 30px);
}
.preview-navigator {
background: white;
width: 140px;
......@@ -10,6 +14,7 @@
padding: 1px;
z-index: 9;
cursor: crosshair;
transition: transform .7s 0.1s ease;
&.grab {
cursor: move;
......@@ -18,7 +23,9 @@
cursor: grabbing;
}
}
.fullscreen .nav-bar {
transform: translate(-60px, 0);
}
.nav-bar {
position: absolute;
width: 35px;
......@@ -30,6 +37,7 @@
border-radius: 4px;
z-index: 10;
box-shadow: 3px 3px 10px rgba(0, 0, 0, .2);
transition: transform .7s 0.1s ease;
.command-button {
width: 35px;
......
.netdisk-finder-container {
.netdisk-nav {
@keyframes shake {
0% { transform: translate(0, 0); }
15% { transform: translate(-2px, -2px); }
35% { transform: translate(2px, -2px);}
65% { transform: translate(-2px, 2px); }
85% { transform: translate(2px, 2px); }
100% { transform: translate(0, 0); }
}
.netdisk-finder {
.dir.drag-enter {
border: 1px dashed #717B94 !important;
background: #F9F9F9;
}
&.drop-mode {
.dir {
animation: shake .3s ease;
}
.recycle {
animation: shake .3s ease;
}
}
.head {
padding-bottom: 10px;
height: 30px;
border-bottom: 1px solid #eee;
font-size: 18px;
.control {
float: right;
.mkdir {
}
.button {
vertical-align: middle;
font-size: 0;
background: url(../images/finder.svg) no-repeat;
box-sizing: border-box;
width: 30px;
height: 30px;
border-radius: 2px;
border: 1px solid transparent;
span, a {
display: inline-block;
height: 20px;
line-height: 20px;
padding: 5px 10px;
margin: 0 3px 0 0;
cursor: default;
vertical-align: middle;
}
&.recycle {
background-position: -30px 0;
&.drag-enter {
background-position: -60px 0 !important;
}
}
span.my-document {
width: 25px;
height: 25px;
padding: 0;
text-indent: -1000px;
position: relative;
top: -2px;
background: url(../images/icons.png) 0 -470px;
&:hover {
border: 1px solid lighten(#717B94, 30%);
}
&:active {
box-shadow: inset 0 1px 3px fadeOut(#717B94, 80%);
}
}
}
.nav {
font-size: 18px;
a.dir-back {
border-radius: 100%;
width: 23px;
height: 23px;
padding: 0;
border: 1px solid @ui-color;
text-indent: -1000px;
position: relative;
top: -1px;
background: url(../images/icons.png) -2px -396px no-repeat;
span, a {
display: inline-block;
height: 20px;
line-height: 20px;
padding: 5px 10px;
margin: 0 3px 0 0;
cursor: default;
vertical-align: middle;
}
span.my-document {
width: 25px;
height: 25px;
padding: 0;
text-indent: -1000px;
position: relative;
top: -2px;
background: url(../images/icons.png) 0 -470px;
}
a.dir-back {
border-radius: 100%;
width: 23px;
height: 23px;
padding: 0;
border: 1px solid @ui-color;
text-indent: -1000px;
position: relative;
top: -1px;
background: url(../images/icons.png) -2px -396px no-repeat;
}
}
span.spliter {
.triangle-left(black,4px,8px);
display: inline-block;
margin-left: 4px;
}
a {
&:hover {
background-color: lighten(@tab-hover, 55%);
span.spliter {
.triangle-left(black,4px,8px);
display: inline-block;
margin-left: 4px;
}
&:active {
background-color: lighten(@tab-active, 55%)
a {
border: 1px solid transparent;
&:hover {
background-color: lighten(@tab-hover, 55%);
}
&:active {
background-color: lighten(@tab-active, 55%)
}
}
}
}
.netdisk-file-list {
.file-list {
margin: 0;
padding: 0;
list-style: none;
.dock(40px, 0, 0);
overflow: auto;
.empty {
height: 50px;
line-height: 50px;
......@@ -68,14 +122,17 @@
font-size: 18px;
color: #ccc;
}
.netdisk-file-list-item {
.file-list-item {
font-size: 14px;
line-height: 20px;
padding: 10px 20px 10px 40px;
cursor: default;
-webkit-user-drag: element;
-khtml-user-drag: element;
border: 1px solid transparent;
&:hover {
background-color: lighten(@tab-hover, 55%);
/* background-color: lighten(@tab-hover, 55%); */
}
&:active {
background-color: lighten(@tab-hover, 50%);
......@@ -83,14 +140,22 @@
&.selected {
background-color: lighten(@tab-active, 20%);
color: white;
&.file:before {
background-position: 0 -545px;
&.dir .icon {
background: lighten(@tab-active, 20%) url(../images/icons.png) 0 -1085px;
}
&.dir:after {
border-left-color: white;
}
&.file .icon {
background: lighten(@tab-active, 20%) url(../images/icons.png) 0 -545px;
}
}
&.dragging {
border: 1px solid #717B94;
}
&.file {
position: relative;
&:before {
content: ' ';
.icon {
display: block;
position: absolute;
width: 25px;
......@@ -102,8 +167,7 @@
}
&.dir {
position: relative;
&:before {
content: ' ';
.icon {
display: block;
position: absolute;
width: 25px;
......@@ -127,13 +191,6 @@
}
}
}
.netdisk-mkdir {
position: absolute;
right: 0;
top: 0;
}
}
// for save
......
.notice-widget {
position: absolute;
right: 20px;
top: 20px;
padding: 5px 15px;
border-radius: 4px;
background: lighten(@tab-hover, 20%);
transition: all ease .2s;
opacity: 0;
color: white;
transform: translate3d(0, -50px, 0);
p {
margin: 5px 0;
font-size: 12px;
}
&.show {
transform: translate3d(0, 0, 0);
opacity: 1;
}
&.warn {
background: white url(../images/kmcat_warn.png) 8px 10px no-repeat;
color: rgb(255, 146, 0);
box-shadow: none;
padding-left: 35px;
border: 1px solid #FFB200;
}
}
#content-wrapper .error-dialog {
border-radius: 4px;
.fui-dialog-head {
background: #DC0000;
height: 40px;
line-height: 40px;
padding: 0 15px;
.fui-close-button {
top: 10px;
}
}
.fui-dialog-body {
.error-content {
background: url(../images/kmcat_sad.png) no-repeat;
padding-left: 80px;
h3 {
font-size: 16px;
font-weight: normal;
margin: 0;
}
p {
margin: 10px 0;
height: auto;
}
min-height: 80px;
}
.error-detail {
position: relative;
a.expander {
display: block;
&:before {
.triangle-left(#333, 5px, 10px);
display: inline-block;
margin-right: 3px;
}
margin: 8px 0;
cursor: pointer;
&:hover {
text-decoration: underline;
}
}
&.expanded {
.error-detail-wrapper {
display: block;
}
a.expander:before {
.triangle-top(#333, 10px, 5px);
margin-right: 3px;
top: 3px;
position: relative;
display: inline-block;
}
}
&:before {
display: block;
content: '反馈详细信息有助于开发人员定位问题';
position: absolute;
top: 8px;
right: 0;
font-size: 12px;
color: #AAA;
}
.error-detail-wrapper {
display: none;
textarea {
box-sizing: border-box;
width: 100%;
height: 200px;
border: 1px solid #EEE;
background: #fcfcfc;
outline: none;
padding: 6px;
color: #666;
}
.copy-and-feedback {
float: right;
margin-top: 10px;
}
}
}
}
.fui-dialog-foot {
position: static;
padding: 5px 20px;
.fui-button.fui-xdialog-ok-btn {
background: #dc0000;
margin: 10px 0;
&:hover {
background: #FF7F7F;
}
}
.fui-button.fui-xdialog-cancel-btn {
display: none;
}
}
}
\ No newline at end of file
.transition(@value) {
-webkit-transition: @value;
-moz-transition: @value;
-ms-transition: @value;
-o-transition: @value;
transition: @value;
}
.transform(@value) {
-webkit-transform: @value;
-moz-transform: @value;
-ms-transform: @value;
-o-transform: @value;
tranform: @value;
}
.animation(@value) {
-webkit-animation: @value;
......@@ -23,12 +8,12 @@
}
.blur {
filter: url(../images/blur.svg#blur);
-webkit-filter: blur(5px);
-moz-filter: blur(5px);
-mz-filter: blur(5px);
-o-filter: blur(5px);
filter: blur(5px);
filter: url(../images/blur.svg#blur);
}
.dock(@top: 0, @right: @top, @bottom: @top, @left: @right) {
......@@ -43,6 +28,11 @@
.validate-error {
color: red;
border-color: red !important;
vertical-align: middle;
}
span.validate-error {
margin-left: 5px;
}
.button, button {
......@@ -75,6 +65,7 @@ input[type=text],
input[type=url] {
padding: 2px 5px;
height: 16px;
line-height: 16px;
outline: none;
border: 1px solid lighten(@tab-hover, 50%);
box-shadow: inset 0 1px 3px rgba(0,0,0,.05);
......@@ -127,18 +118,18 @@ input[type=url] {
@-webkit-keyframes rotate {
from {
.transform(rotate(0));
transform: rotate(0);
}
to {
.transform(rotate(360deg));
transform: rotate(360deg);
}
}
@keyframes rotate {
from {
.transform(rotate(0));
transform: rotate(0);
}
to {
.transform(rotate(360deg));
transform: rotate(360deg);
}
}
......@@ -177,6 +168,15 @@ input[type=url] {
text-transform: capitalize;
box-shadow: inset 0 -2px hsl(0, 0%, 92%), inset 0 -3px hsl(0, 100%, 100%), 0 1px 2px rgba(255, 255, 255, 0.3);
&:active {
padding-top: 4px;
padding-bottom: 4px;
box-shadow: inset 0 -1px hsl(0, 0%, 92%), inset 0 -2px hsl(0, 100%, 100%), 0 1px 1px rgba(255, 255, 255, 0.3);
&:after {
transform: translate(0, 1px);
}
}
.mac &.ctrl,
.mac &.shift,
.mac &.alt,
......
......@@ -41,6 +41,26 @@
}
}
&.feedback {
float: right;
margin-right: 5px;
&:after {
top: 6.5px;
left: 7px;
background-position: 0 -970px;
}
}
&.editshare {
margin-right: 5px;
float: right;
&:after {
top: 6.5px;
left: 7px;
background-position: 0 -1060px;
}
}
&:hover {
background-color: @tab-hover;
}
......
#resource-panel > .fui-panel-content > .fui-label-panel-content {
position: relative;
& > .fui-input {
width: 148px;
width: 140px;
margin: 2px 0 0;
vertical-align: middle;
box-sizing: content-box;
}
& > .fui-button {
......
......@@ -17,7 +17,7 @@
background: @tab-hover;
border: none;
height: 20px;
line-height: 20px;
line-height: 1em;
border-radius: 15px;
outline: none;
color: @ui-fore;
......@@ -27,8 +27,8 @@
margin-right: 3px;
width: 30px;
-webkit-appearance: none;
.transition(width .5s ease);
.transform(translateZ(0));
transition: width .5s ease;
transform: translateZ(0);
&:focus {
width: 150px;
......
......@@ -161,6 +161,10 @@
.share-body {
margin-top: 10px;
.share-qr-code img {
margin: 20px 0;
}
}
}
......@@ -191,7 +195,7 @@
}
}
.shared-content {
.left, .right {
& > .left, & > .right {
float: left;
}
.m-logo {
......
#tab-select {
height: @panel-height;
line-height: @panel-height;
min-width: 200px;
margin-left: 10px;
float: left;
......@@ -69,6 +70,10 @@
}
}
.fullscreen #tab-container {
transform: translate(0, -101px) !important;
}
#tab-container {
position: absolute;
top: @panel-height;
......@@ -107,8 +112,8 @@
}
}
.transition(all 0.15s ease);
transition: transform 0.7s ease,
opacity,height .5s ease;
&.collapsed {
opacity: 0;
......
......@@ -6,6 +6,25 @@
color: @ui-fore;
vertical-align: baseline;
.loading-tip {
text-indent: 100000px;
display: inline-block;
width: 50px;
height: @panel-height;
line-height: @panel-height;
position: relative;
&:before {
content: ' ';
display: block;
position: absolute;
left: 9px;
top: 7px;
.loading-circle(16px);
box-shadow: none;
}
}
.fui-button {
padding: 5px 10px;
......@@ -36,12 +55,18 @@
height: 30px;
}
}
&.login-button .fui-icon {
width: 25px;
height: 25px;
margin-right: 3px;
vertical-align: baseline;
background: url(../images/icons.png) 0 -320px;
&.login-button {
.fui-icon {
border-radius: 100%;
width: 25px;
height: 25px;
margin-right: 3px;
vertical-align: baseline;
background: url(../images/icons.png) 0 -320px;
}
.fui-label {
display: none;
}
}
}
}
......
.fui-button, li {
.transition(background-color .2s ease);
transition: background-color .2s ease;
}
.fui-disabled,
......@@ -9,6 +9,14 @@
}
}
input::-ms-clear {
display: none;
}
input[type=search]::-ms-clear {
display: inline-block;
}
#tab-container .fui-button {
display: inline-block;
padding: 2px 5px 2px 3px;
......@@ -16,7 +24,7 @@
.fui-label {
color: @button-text;
font-size: 12px;
vertical-align: baseline;
vertical-align: middle;
}
&.command-button {
......@@ -26,7 +34,7 @@
height: 20px;
margin-right: 3px;
display: inline-block;
vertical-align: baseline;
vertical-align: middle;
}
&.large {
width: 50px;
......@@ -70,7 +78,7 @@
}
}
&:active {
.transform(scale(0.9));
transform: scale(0.9);
&:hover {
background-color: @button-active;
.fui-disabled& {
......@@ -260,6 +268,7 @@
height: 20px;
padding: 2px 4px;
width: 300px;
vertical-align: middle;
}
}
.fui-dialog-foot {
......@@ -347,9 +356,9 @@
}
}
.fui-popup-menu {
.fui-popup-menu, .fui-menu.fui-ppanel-position {
position: absolute;
z-index: 9999;
z-index: 100000;
min-width: 160px;
padding: 5px 0;
font-size: 12px;
......@@ -389,7 +398,7 @@
font-size: 12px;
overflow: hidden;
.transition(none);
transition: none;
&:hover, :focus {
background: #0099f2; /* Old browsers */
......@@ -409,6 +418,10 @@
color: white;
}
}
.menu-label {
display: inline-block;
}
.shortcut {
float: right;
......
......@@ -49,12 +49,10 @@
}
.fui-widget.fui-mask-animate {
-webkit-transition: all 0.2s;
-moz-transition: all 0.2s;
transition: all 0.2s;
}
.fui-widget.fui-mask-hint {
-webkit-transform: perspective(600px) translateZ(30px);
-moz-transform: perspective(600px) translateZ(30px);
transform: perspective(600px) translateZ(30px);
}
/**
......@@ -370,7 +368,8 @@
border-color: #d3d3d3;
-moz-user-select: none;
-webkit-user-select: none;
user-select: none;
-ms-user-select: none;
user-select: none;
}
/**
* FUI 通用样式定义
......@@ -550,16 +549,19 @@
color: #000000;
}
.blur {
filter: url(../images/blur.svg#blur);
-webkit-filter: blur(5px);
-moz-filter: blur(5px);
-mz-filter: blur(5px);
-o-filter: blur(5px);
filter: blur(5px);
filter: url(../images/blur.svg#blur);
}
.validate-error {
color: red;
border-color: red !important;
vertical-align: middle;
}
span.validate-error {
margin-left: 5px;
}
.button,
button {
......@@ -604,6 +606,7 @@ input[type=text],
input[type=url] {
padding: 2px 5px;
height: 16px;
line-height: 16px;
outline: none;
border: 1px solid #e5e7ec;
box-shadow: inset 0 1px 3px rgba(0, 0, 0, 0.05);
......@@ -614,12 +617,11 @@ input[type=url]:focus {
border-color: #6179b8;
}
.loading .loading-target {
filter: url(../images/blur.svg#blur);
-webkit-filter: blur(5px);
-moz-filter: blur(5px);
-mz-filter: blur(5px);
-o-filter: blur(5px);
filter: blur(5px);
filter: url(../images/blur.svg#blur);
}
.loading:after {
content: ' ';
......@@ -631,9 +633,7 @@ input[type=url]:focus {
left: 0;
background: rgba(128, 130, 140, 0.75);
-webkit-animation: fadeIn 3s ease;
-moz-animation: fadeIn 3s ease;
-ms-animation: fadeIn 3s ease;
-o-animation: fadeIn 3s ease;
animation: fadeIn 3s ease;
}
.loading:before {
......@@ -646,9 +646,7 @@ input[type=url]:focus {
z-index: 10;
border-radius: 100%;
-webkit-animation: rotate 1.33s ease infinite;
-moz-animation: rotate 1.33s ease infinite;
-ms-animation: rotate 1.33s ease infinite;
-o-animation: rotate 1.33s ease infinite;
animation: rotate 1.33s ease infinite;
filter: none;
-webkit-filter: none;
......@@ -661,33 +659,21 @@ input[type=url]:focus {
@-webkit-keyframes rotate {
from {
-webkit-transform: rotate(0);
-moz-transform: rotate(0);
-ms-transform: rotate(0);
-o-transform: rotate(0);
tranform: rotate(0);
transform: rotate(0);
}
to {
-webkit-transform: rotate(360deg);
-moz-transform: rotate(360deg);
-ms-transform: rotate(360deg);
-o-transform: rotate(360deg);
tranform: rotate(360deg);
transform: rotate(360deg);
}
}
@keyframes rotate {
from {
-webkit-transform: rotate(0);
-moz-transform: rotate(0);
-ms-transform: rotate(0);
-o-transform: rotate(0);
tranform: rotate(0);
transform: rotate(0);
}
to {
-webkit-transform: rotate(360deg);
-moz-transform: rotate(360deg);
-ms-transform: rotate(360deg);
-o-transform: rotate(360deg);
tranform: rotate(360deg);
transform: rotate(360deg);
}
}
@-webkit-keyframes fadeIn {
......@@ -738,6 +724,16 @@ input[type=url]:focus {
text-transform: capitalize;
box-shadow: inset 0 -2px #ebebeb, inset 0 -3px #ffffff, 0 1px 2px rgba(255, 255, 255, 0.3);
}
.shortcut-key:active {
padding-top: 4px;
padding-bottom: 4px;
box-shadow: inset 0 -1px #ebebeb, inset 0 -2px #ffffff, 0 1px 1px rgba(255, 255, 255, 0.3);
}
.shortcut-key:active:after {
-webkit-transform: translate(0, 1px);
-ms-transform: translate(0, 1px);
transform: translate(0, 1px);
}
.mac .shortcut-key.ctrl,
.mac .shortcut-key.shift,
.mac .shortcut-key.alt,
......@@ -804,10 +800,7 @@ input[type=url]:focus {
.fui-button,
li {
-webkit-transition: background-color 0.2s ease;
-moz-transition: background-color 0.2s ease;
-ms-transition: background-color 0.2s ease;
-o-transition: background-color 0.2s ease;
transition: background-color 0.2s ease;
transition: background-color 0.2s ease;
}
.fui-disabled:hover,
.fui-disabled .fui-widget:hover,
......@@ -815,6 +808,12 @@ li {
.fui-disabled .fui-widget:active {
background-color: transparent;
}
input::-ms-clear {
display: none;
}
input[type=search]::-ms-clear {
display: inline-block;
}
#tab-container .fui-button {
display: inline-block;
padding: 2px 5px 2px 3px;
......@@ -822,7 +821,7 @@ li {
#tab-container .fui-button .fui-label {
color: #5a6378;
font-size: 12px;
vertical-align: baseline;
vertical-align: middle;
}
#tab-container .fui-button.command-button {
margin-bottom: 3px;
......@@ -832,7 +831,7 @@ li {
height: 20px;
margin-right: 3px;
display: inline-block;
vertical-align: baseline;
vertical-align: middle;
}
#tab-container .fui-button.command-button.large {
width: 50px;
......@@ -871,10 +870,8 @@ li {
}
.command-buttonset .fui-toggle-button:active {
-webkit-transform: scale(0.9);
-moz-transform: scale(0.9);
-ms-transform: scale(0.9);
-o-transform: scale(0.9);
tranform: scale(0.9);
-ms-transform: scale(0.9);
transform: scale(0.9);
}
.command-buttonset .fui-toggle-button:active:hover {
background-color: #c4d0ee;
......@@ -1080,6 +1077,7 @@ li {
height: 20px;
padding: 2px 4px;
width: 300px;
vertical-align: middle;
}
.fui-dialog .fui-dialog-foot {
position: absolute;
......@@ -1169,9 +1167,10 @@ li {
border: 1px solid #ccc;
box-shadow: 3px 3px 6px rgba(0, 0, 0, 0.3);
}
.fui-popup-menu {
.fui-popup-menu,
.fui-menu.fui-ppanel-position {
position: absolute;
z-index: 9999;
z-index: 100000;
min-width: 160px;
padding: 5px 0;
font-size: 12px;
......@@ -1183,15 +1182,19 @@ li {
font-family: Arial, "Heiti SC", "Microsoft Yahei";
overflow: hidden;
}
.fui-popup-menu:empty {
.fui-popup-menu:empty,
.fui-menu.fui-ppanel-position:empty {
display: none !important;
}
.fui-popup-menu .fui-panel-content,
.fui-popup-menu .fui-menu {
.fui-menu.fui-ppanel-position .fui-panel-content,
.fui-popup-menu .fui-menu,
.fui-menu.fui-ppanel-position .fui-menu {
border: none;
display: block;
}
.fui-popup-menu .fui-item {
.fui-popup-menu .fui-item,
.fui-menu.fui-ppanel-position .fui-item {
display: block;
padding: 2px 15px 2px 30px;
height: 25px;
......@@ -1204,31 +1207,29 @@ li {
font-size: 12px;
overflow: hidden;
-webkit-transition: none;
-moz-transition: none;
-ms-transition: none;
-o-transition: none;
transition: none;
transition: none;
}
.fui-popup-menu .fui-item .fui-label,
.fui-popup-menu .fui-item .fui-icon {
.fui-menu.fui-ppanel-position .fui-item .fui-label,
.fui-popup-menu .fui-item .fui-icon,
.fui-menu.fui-ppanel-position .fui-item .fui-icon {
height: 25px;
line-height: 25px;
}
.fui-popup-menu .fui-item:hover,
.fui-popup-menu .fui-item :focus {
.fui-menu.fui-ppanel-position .fui-item:hover,
.fui-popup-menu .fui-item :focus,
.fui-menu.fui-ppanel-position .fui-item :focus {
background: #0099f2;
/* Old browsers */
/* IE9 SVG, needs conditional override of 'filter' to 'none' */
background: url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiA/Pgo8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgd2lkdGg9IjEwMCUiIGhlaWdodD0iMTAwJSIgdmlld0JveD0iMCAwIDEgMSIgcHJlc2VydmVBc3BlY3RSYXRpbz0ibm9uZSI+CiAgPGxpbmVhckdyYWRpZW50IGlkPSJncmFkLXVjZ2ctZ2VuZXJhdGVkIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSIgeDE9IjAlIiB5MT0iMCUiIHgyPSIwJSIgeTI9IjEwMCUiPgogICAgPHN0b3Agb2Zmc2V0PSIwJSIgc3RvcC1jb2xvcj0iIzAwOTlmMiIgc3RvcC1vcGFjaXR5PSIxIi8+CiAgICA8c3RvcCBvZmZzZXQ9IjAlIiBzdG9wLWNvbG9yPSIjNDA5NmVlIiBzdG9wLW9wYWNpdHk9IjEiLz4KICAgIDxzdG9wIG9mZnNldD0iMTAwJSIgc3RvcC1jb2xvcj0iIzAwNzZkZCIgc3RvcC1vcGFjaXR5PSIxIi8+CiAgPC9saW5lYXJHcmFkaWVudD4KICA8cmVjdCB4PSIwIiB5PSIwIiB3aWR0aD0iMSIgaGVpZ2h0PSIxIiBmaWxsPSJ1cmwoI2dyYWQtdWNnZy1nZW5lcmF0ZWQpIiAvPgo8L3N2Zz4=);
background: -moz-linear-gradient(top, #0099f2 0%, #4096ee 0%, #0076dd 100%);
/* FF3.6+ */
background: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #0099f2), color-stop(0%, #4096ee), color-stop(100%, #0076dd));
/* Chrome,Safari4+ */
background: -webkit-linear-gradient(top, #0099f2 0%, #4096ee 0%, #0076dd 100%);
/* Chrome10+,Safari5.1+ */
background: -o-linear-gradient(top, #0099f2 0%, #4096ee 0%, #0076dd 100%);
/* Opera 11.10+ */
background: -ms-linear-gradient(top, #0099f2 0%, #4096ee 0%, #0076dd 100%);
/* IE10+ */
background: #5a6377;
/* W3C */
......@@ -1237,27 +1238,38 @@ li {
color: white;
}
.fui-popup-menu .fui-item:hover .fui-label,
.fui-popup-menu .fui-item :focus .fui-label {
.fui-menu.fui-ppanel-position .fui-item:hover .fui-label,
.fui-popup-menu .fui-item :focus .fui-label,
.fui-menu.fui-ppanel-position .fui-item :focus .fui-label {
color: white;
}
.fui-popup-menu .fui-item .shortcut {
.fui-popup-menu .fui-item .menu-label,
.fui-menu.fui-ppanel-position .fui-item .menu-label {
display: inline-block;
}
.fui-popup-menu .fui-item .shortcut,
.fui-menu.fui-ppanel-position .fui-item .shortcut {
float: right;
margin-left: 20px;
}
.fui-popup-menu .fui-item .shortcut .shortcut-key {
.fui-popup-menu .fui-item .shortcut .shortcut-key,
.fui-menu.fui-ppanel-position .fui-item .shortcut .shortcut-key {
font-size: 12px;
border: 1px solid #CCC;
height: 10px;
line-height: 10px;
margin-left: 3px;
}
.fui-popup-menu .fui-item .shortcut + .shortcut:after {
.fui-popup-menu .fui-item .shortcut + .shortcut:after,
.fui-menu.fui-ppanel-position .fui-item .shortcut + .shortcut:after {
content: 'or';
position: relative;
left: 10px;
}
.fui-popup-menu .divider,
.fui-popup-menu .fui-spliter {
.fui-menu.fui-ppanel-position .divider,
.fui-popup-menu .fui-spliter,
.fui-menu.fui-ppanel-position .fui-spliter {
height: 1px;
margin: 5px 0;
overflow: hidden;
......@@ -1265,9 +1277,156 @@ li {
padding: 0;
}
.fui-popup-menu .divider:first-child,
.fui-menu.fui-ppanel-position .divider:first-child,
.fui-popup-menu .fui-spliter:first-child,
.fui-menu.fui-ppanel-position .fui-spliter:first-child,
.fui-popup-menu .divider:last-child,
.fui-popup-menu .fui-spliter:last-child {
.fui-menu.fui-ppanel-position .divider:last-child,
.fui-popup-menu .fui-spliter:last-child,
.fui-menu.fui-ppanel-position .fui-spliter:last-child {
display: none;
}
.notice-widget {
position: absolute;
right: 20px;
top: 20px;
padding: 5px 15px;
border-radius: 4px;
background: #8e96aa;
-webkit-transition: all ease .2s;
transition: all ease .2s;
opacity: 0;
color: white;
-webkit-transform: translate3d(0, -50px, 0);
transform: translate3d(0, -50px, 0);
}
.notice-widget p {
margin: 5px 0;
font-size: 12px;
}
.notice-widget.show {
-webkit-transform: translate3d(0, 0, 0);
transform: translate3d(0, 0, 0);
opacity: 1;
}
.notice-widget.warn {
background: #ffffff url(../images/kmcat_warn.png) 8px 10px no-repeat;
color: #ff9200;
box-shadow: none;
padding-left: 35px;
border: 1px solid #FFB200;
}
#content-wrapper .error-dialog {
border-radius: 4px;
}
#content-wrapper .error-dialog .fui-dialog-head {
background: #DC0000;
height: 40px;
line-height: 40px;
padding: 0 15px;
}
#content-wrapper .error-dialog .fui-dialog-head .fui-close-button {
top: 10px;
}
#content-wrapper .error-dialog .fui-dialog-body .error-content {
background: url(../images/kmcat_sad.png) no-repeat;
padding-left: 80px;
min-height: 80px;
}
#content-wrapper .error-dialog .fui-dialog-body .error-content h3 {
font-size: 16px;
font-weight: normal;
margin: 0;
}
#content-wrapper .error-dialog .fui-dialog-body .error-content p {
margin: 10px 0;
height: auto;
}
#content-wrapper .error-dialog .fui-dialog-body .error-detail {
position: relative;
}
#content-wrapper .error-dialog .fui-dialog-body .error-detail a.expander {
display: block;
margin: 8px 0;
cursor: pointer;
}
#content-wrapper .error-dialog .fui-dialog-body .error-detail a.expander:before {
content: ' ';
display: block;
width: 0;
height: 0;
padding: 0 !important;
line-height: 0;
font-size: 0;
border-style: solid;
border-color: transparent;
border-width: 5px 5px;
border-left-color: #333333;
display: inline-block;
margin-right: 3px;
}
#content-wrapper .error-dialog .fui-dialog-body .error-detail a.expander:hover {
text-decoration: underline;
}
#content-wrapper .error-dialog .fui-dialog-body .error-detail.expanded .error-detail-wrapper {
display: block;
}
#content-wrapper .error-dialog .fui-dialog-body .error-detail.expanded a.expander:before {
content: ' ';
display: block;
width: 0;
height: 0;
padding: 0 !important;
line-height: 0;
font-size: 0;
border-style: solid;
border-color: transparent;
border-width: 5px 5px;
border-top-color: #333333;
margin-right: 3px;
top: 3px;
position: relative;
display: inline-block;
}
#content-wrapper .error-dialog .fui-dialog-body .error-detail:before {
display: block;
content: '反馈详细信息有助于开发人员定位问题';
position: absolute;
top: 8px;
right: 0;
font-size: 12px;
color: #AAA;
}
#content-wrapper .error-dialog .fui-dialog-body .error-detail .error-detail-wrapper {
display: none;
}
#content-wrapper .error-dialog .fui-dialog-body .error-detail .error-detail-wrapper textarea {
-moz-box-sizing: border-box;
box-sizing: border-box;
width: 100%;
height: 200px;
border: 1px solid #EEE;
background: #fcfcfc;
outline: none;
padding: 6px;
color: #666;
}
#content-wrapper .error-dialog .fui-dialog-body .error-detail .error-detail-wrapper .copy-and-feedback {
float: right;
margin-top: 10px;
}
#content-wrapper .error-dialog .fui-dialog-foot {
position: static;
padding: 5px 20px;
}
#content-wrapper .error-dialog .fui-dialog-foot .fui-button.fui-xdialog-ok-btn {
background: #dc0000;
margin: 10px 0;
}
#content-wrapper .error-dialog .fui-dialog-foot .fui-button.fui-xdialog-ok-btn:hover {
background: #FF7F7F;
}
#content-wrapper .error-dialog .fui-dialog-foot .fui-button.fui-xdialog-cancel-btn {
display: none;
}
/**
......@@ -1315,16 +1474,31 @@ body {
#kityminder.maximize {
top: 40px;
}
#kityminder:focus {
/* box-shadow: inset 0 0 10px fadeOut(black, 0.5); */
}
#tab-container.collapsed + #kityminder,
#panel + #kityminder {
top: 40px;
}
.fullscreen #panel {
-webkit-transform: translate(0, -101px);
-ms-transform: translate(0, -101px);
transform: translate(0, -101px);
}
.fullscreen #kityminder {
top: 0 !important;
}
#panel {
background: #393f4f;
font-family: 'Hiragino Sans GB', 'Arial', 'Microsoft Yahei';
height: 40px;
overflow: visible;
overflow: hidden;
-webkit-backface-visibility: hidden;
position: relative;
-webkit-transition: -webkit-transform .7s ease;
transition: transform .7s ease;
z-index: 11;
}
#panel h1 {
font-size: 14px;
......@@ -1346,9 +1520,7 @@ body {
z-index: 10;
border-radius: 100%;
-webkit-animation: rotate 1.33s ease infinite;
-moz-animation: rotate 1.33s ease infinite;
-ms-animation: rotate 1.33s ease infinite;
-o-animation: rotate 1.33s ease infinite;
animation: rotate 1.33s ease infinite;
filter: none;
-webkit-filter: none;
......@@ -1405,11 +1577,10 @@ body {
left: 0;
overflow: hidden;
-webkit-transform: translate3d(0, -100%, 0);
-moz-transform: translate3d(0, -100%, 0);
-ms-transform: translate3d(0, -100%, 0);
-o-transform: translate3d(0, -100%, 0);
tranform: translate3d(0, -100%, 0);
transform-origin: 0 0;
transform: translate3d(0, -100%, 0);
-webkit-transform-origin: 0 0;
-ms-transform-origin: 0 0;
transform-origin: 0 0;
opacity: 0;
-webkit-transition: opacity 0.2s ease, -webkit-transform 0.2s ease;
transition: opacity .2s ease, transform .2s ease;
......@@ -1418,10 +1589,7 @@ body {
#main-menu.show {
opacity: 1;
-webkit-transform: translate3d(0, 0, 0);
-moz-transform: translate3d(0, 0, 0);
-ms-transform: translate3d(0, 0, 0);
-o-transform: translate3d(0, 0, 0);
tranform: translate3d(0, 0, 0);
transform: translate3d(0, 0, 0);
}
#main-menu:before {
content: ' ';
......@@ -1434,19 +1602,13 @@ body {
box-shadow: 0 -3px 8px rgba(0, 0, 0, 0.15);
z-index: 1;
-webkit-transform: translateX(-200px) translateZ(0);
-moz-transform: translateX(-200px) translateZ(0);
-ms-transform: translateX(-200px) translateZ(0);
-o-transform: translateX(-200px) translateZ(0);
tranform: translateX(-200px) translateZ(0);
transform: translateX(-200px) translateZ(0);
-webkit-transition: -webkit-transform 0.7s ease, opacity 0.5s ease;
transition: transform .7s ease, opacity .5s ease;
}
.show#main-menu:before {
-webkit-transform: translateX(0) translateZ(0);
-moz-transform: translateX(0) translateZ(0);
-ms-transform: translateX(0) translateZ(0);
-o-transform: translateX(0) translateZ(0);
tranform: translateX(0) translateZ(0);
transform: translateX(0) translateZ(0);
-webkit-transition: -webkit-transform 0.7s ease, opacity 0.5s ease;
transition: transform .7s ease, opacity .5s ease;
}
......@@ -1483,15 +1645,12 @@ body {
vertical-align: middle;
}
#main-menu .main-menu-back-panel .main-menu-back-button:hover {
background: -moz-linear-gradient(left, rgba(255, 255, 255, 0.3) 0%, rgba(255, 255, 255, 0) 100%);
/* FF3.6+ */
background: -webkit-gradient(linear, left top, right top, color-stop(0%, rgba(255, 255, 255, 0.3)), color-stop(100%, rgba(255, 255, 255, 0)));
/* Chrome,Safari4+ */
background: -webkit-linear-gradient(left, rgba(255, 255, 255, 0.3) 0%, rgba(255, 255, 255, 0) 100%);
/* Chrome10+,Safari5.1+ */
background: -o-linear-gradient(left, rgba(255, 255, 255, 0.3) 0%, rgba(255, 255, 255, 0) 100%);
/* Opera 11.10+ */
background: -ms-linear-gradient(left, rgba(255, 255, 255, 0.3) 0%, rgba(255, 255, 255, 0) 100%);
/* IE10+ */
background: linear-gradient(to right, rgba(255, 255, 255, 0.3) 0%, rgba(255, 255, 255, 0) 100%);
/* W3C */
......@@ -1513,19 +1672,13 @@ body {
line-height: 40px;
color: #999;
-webkit-transform: translateX(-200px) translateZ(0);
-moz-transform: translateX(-200px) translateZ(0);
-ms-transform: translateX(-200px) translateZ(0);
-o-transform: translateX(-200px) translateZ(0);
tranform: translateX(-200px) translateZ(0);
transform: translateX(-200px) translateZ(0);
-webkit-transition: -webkit-transform 0.7s ease, opacity 0.5s ease;
transition: transform .7s ease, opacity .5s ease;
}
.show#main-menu .main-menu-title {
-webkit-transform: translateX(0) translateZ(0);
-moz-transform: translateX(0) translateZ(0);
-ms-transform: translateX(0) translateZ(0);
-o-transform: translateX(0) translateZ(0);
tranform: translateX(0) translateZ(0);
transform: translateX(0) translateZ(0);
-webkit-transition: -webkit-transform 0.7s ease, opacity 0.5s ease;
transition: transform .7s ease, opacity .5s ease;
}
......@@ -1578,20 +1731,14 @@ body {
background-color: white;
z-index: 2;
-webkit-transform: translateX(-200px) translateZ(0);
-moz-transform: translateX(-200px) translateZ(0);
-ms-transform: translateX(-200px) translateZ(0);
-o-transform: translateX(-200px) translateZ(0);
tranform: translateX(-200px) translateZ(0);
transform: translateX(-200px) translateZ(0);
-webkit-transition: -webkit-transform 0.7s ease, opacity 0.5s ease;
transition: transform .7s ease, opacity .5s ease;
/* 每个二级菜单的面板 */
}
.show#main-menu .main-menu-level1 > .fui-tabs-panel-wrap {
-webkit-transform: translateX(0) translateZ(0);
-moz-transform: translateX(0) translateZ(0);
-ms-transform: translateX(0) translateZ(0);
-o-transform: translateX(0) translateZ(0);
tranform: translateX(0) translateZ(0);
transform: translateX(0) translateZ(0);
-webkit-transition: -webkit-transform 0.7s ease, opacity 0.5s ease;
transition: transform .7s ease, opacity .5s ease;
}
......@@ -1602,6 +1749,12 @@ body {
bottom: 0;
left: 40px;
/* 面板内容 */
-webkit-animation: slideRight 0.3s ease;
animation: slideRight 0.3s ease;
-webkit-animation-fill-mode: backward;
animation-fill-mode: backward;
-webkit-animation-direction: reverse;
animation-direction: reverse;
}
#main-menu .main-menu-level1 > .fui-tabs-panel-wrap > .fui-panel > .fui-panel-content {
position: absolute;
......@@ -1692,6 +1845,46 @@ body {
margin: 0;
padding-left: 38px;
}
#main-menu .main-menu-level1 > .fui-tabs-panel-wrap > .fui-panel.fui-hide {
-webkit-animation-fill-mode: forward;
animation-fill-mode: forward;
-webkit-animation-direction: normal;
animation-direction: normal;
}
@-webkit-keyframes slideLeft {
}
@keyframes slideLeft {
}
@-webkit-keyframes slideRight {
0% {
-webkit-transform: translate(0, 0);
transform: translate(0, 0);
opacity: 1;
display: block !important;
}
100% {
-webkit-transform: translate(50px, 0);
transform: translate(50px, 0);
opacity: 0;
display: none !important;
}
}
@keyframes slideRight {
0% {
-webkit-transform: translate(0, 0);
transform: translate(0, 0);
opacity: 1;
display: block !important;
}
100% {
-webkit-transform: translate(50px, 0);
transform: translate(50px, 0);
opacity: 0;
display: none !important;
}
}
.new-file-template-select {
margin: 0;
padding: 0;
......@@ -1787,6 +1980,24 @@ body {
#panel .quick-visit-button.share:after {
background-position: 0 -945px;
}
#panel .quick-visit-button.feedback {
float: right;
margin-right: 5px;
}
#panel .quick-visit-button.feedback:after {
top: 6.5px;
left: 7px;
background-position: 0 -970px;
}
#panel .quick-visit-button.editshare {
margin-right: 5px;
float: right;
}
#panel .quick-visit-button.editshare:after {
top: 6.5px;
left: 7px;
background-position: 0 -1060px;
}
#panel .quick-visit-button:hover {
background-color: #5a6378;
}
......@@ -1845,6 +2056,7 @@ body {
#tab-select {
height: 40px;
line-height: 40px;
min-width: 200px;
margin-left: 10px;
float: left;
}
......@@ -1901,6 +2113,11 @@ body {
#tab-select.collapsed .fui-button.fui-selected:after {
display: none;
}
.fullscreen #tab-container {
-webkit-transform: translate(0, -101px) !important;
-ms-transform: translate(0, -101px) !important;
transform: translate(0, -101px) !important;
}
#tab-container {
position: absolute;
top: 40px;
......@@ -1913,11 +2130,10 @@ body {
box-shadow: 0 -3px 3px rgba(0, 0, 0, 0.05);
overflow: visible;
/* 每一个 Tab 面板 */
-webkit-transition: all 0.15s ease;
-moz-transition: all 0.15s ease;
-ms-transition: all 0.15s ease;
-o-transition: all 0.15s ease;
transition: all 0.15s ease;
-webkit-transition: -webkit-transform 0.7s ease,
opacity,height .5s ease;
transition: transform 0.7s ease,
opacity,height .5s ease;
}
#tab-container > .fui-panel {
display: block;
......@@ -1964,26 +2180,21 @@ body {
background: #5a6378;
border: none;
height: 20px;
line-height: 20px;
line-height: 1em;
border-radius: 15px;
outline: none;
color: #ffffff;
padding: 5px 10px 5px 30px;
box-sizing: content-box;
-moz-box-sizing: content-box;
box-sizing: content-box;
margin-top: 5px;
margin-right: 3px;
width: 30px;
-webkit-appearance: none;
-webkit-transition: width 0.5s ease;
-moz-transition: width 0.5s ease;
-ms-transition: width 0.5s ease;
-o-transition: width 0.5s ease;
transition: width 0.5s ease;
-webkit-transition: width .5s ease;
transition: width .5s ease;
-webkit-transform: translateZ(0);
-moz-transform: translateZ(0);
-ms-transform: translateZ(0);
-o-transform: translateZ(0);
tranform: translateZ(0);
transform: translateZ(0);
}
#search input[type=search]:focus {
width: 150px;
......@@ -1996,6 +2207,34 @@ body {
color: #ffffff;
vertical-align: baseline;
}
#panel div.user-panel .loading-tip {
text-indent: 100000px;
display: inline-block;
width: 50px;
height: 40px;
line-height: 40px;
position: relative;
}
#panel div.user-panel .loading-tip:before {
content: ' ';
display: block;
position: absolute;
left: 9px;
top: 7px;
width: 16px;
height: 16px;
border: 4px solid;
border-color: #c9ced1 transparent transparent;
box-shadow: 0 0 11px #ffffff;
z-index: 10;
border-radius: 100%;
-webkit-animation: rotate 1.33s ease infinite;
-ms-animation: rotate 1.33s ease infinite;
animation: rotate 1.33s ease infinite;
filter: none;
-webkit-filter: none;
box-shadow: none;
}
#panel div.user-panel .fui-button {
padding: 5px 10px;
height: 30px;
......@@ -2024,12 +2263,16 @@ body {
height: 30px;
}
#panel div.user-panel .fui-button.login-button .fui-icon {
border-radius: 100%;
width: 25px;
height: 25px;
margin-right: 3px;
vertical-align: baseline;
background: url(../images/icons.png) 0 -320px;
}
#panel div.user-panel .fui-button.login-button .fui-label {
display: none;
}
.login-tip {
display: none;
}
......@@ -2122,14 +2365,106 @@ body {
font-size: 12px;
color: #999;
}
.netdisk-finder-container .netdisk-nav {
@-webkit-keyframes shake {
0% {
-webkit-transform: translate(0, 0);
transform: translate(0, 0);
}
15% {
-webkit-transform: translate(-2px, -2px);
transform: translate(-2px, -2px);
}
35% {
-webkit-transform: translate(2px, -2px);
transform: translate(2px, -2px);
}
65% {
-webkit-transform: translate(-2px, 2px);
transform: translate(-2px, 2px);
}
85% {
-webkit-transform: translate(2px, 2px);
transform: translate(2px, 2px);
}
100% {
-webkit-transform: translate(0, 0);
transform: translate(0, 0);
}
}
@keyframes shake {
0% {
-webkit-transform: translate(0, 0);
transform: translate(0, 0);
}
15% {
-webkit-transform: translate(-2px, -2px);
transform: translate(-2px, -2px);
}
35% {
-webkit-transform: translate(2px, -2px);
transform: translate(2px, -2px);
}
65% {
-webkit-transform: translate(-2px, 2px);
transform: translate(-2px, 2px);
}
85% {
-webkit-transform: translate(2px, 2px);
transform: translate(2px, 2px);
}
100% {
-webkit-transform: translate(0, 0);
transform: translate(0, 0);
}
}
.netdisk-finder .dir.drag-enter {
border: 1px dashed #717B94 !important;
background: #F9F9F9;
}
.netdisk-finder.drop-mode .dir {
-webkit-animation: shake .3s ease;
animation: shake .3s ease;
}
.netdisk-finder.drop-mode .recycle {
-webkit-animation: shake .3s ease;
animation: shake .3s ease;
}
.netdisk-finder .head {
padding-bottom: 10px;
height: 30px;
border-bottom: 1px solid #eee;
}
.netdisk-finder .head .control {
float: right;
}
.netdisk-finder .head .control .button {
vertical-align: middle;
font-size: 0;
background: url(../images/finder.svg) no-repeat;
-moz-box-sizing: border-box;
box-sizing: border-box;
width: 30px;
height: 30px;
border-radius: 2px;
border: 1px solid transparent;
}
.netdisk-finder .head .control .button.recycle {
background-position: -30px 0;
}
.netdisk-finder .head .control .button.recycle.drag-enter {
background-position: -60px 0 !important;
}
.netdisk-finder .head .control .button:hover {
border: 1px solid #c8ccd6;
}
.netdisk-finder .head .control .button:active {
box-shadow: inset 0 1px 3px rgba(113, 123, 148, 0.2);
}
.netdisk-finder .head .nav {
font-size: 18px;
}
.netdisk-finder-container .netdisk-nav span,
.netdisk-finder-container .netdisk-nav a {
.netdisk-finder .head .nav span,
.netdisk-finder .head .nav a {
display: inline-block;
height: 20px;
line-height: 20px;
......@@ -2138,7 +2473,7 @@ body {
cursor: default;
vertical-align: middle;
}
.netdisk-finder-container .netdisk-nav span.my-document {
.netdisk-finder .head .nav span.my-document {
width: 25px;
height: 25px;
padding: 0;
......@@ -2147,7 +2482,7 @@ body {
top: -2px;
background: url(../images/icons.png) 0 -470px;
}
.netdisk-finder-container .netdisk-nav a.dir-back {
.netdisk-finder .head .nav a.dir-back {
border-radius: 100%;
width: 23px;
height: 23px;
......@@ -2158,7 +2493,7 @@ body {
top: -1px;
background: url(../images/icons.png) -2px -396px no-repeat;
}
.netdisk-finder-container .netdisk-nav span.spliter {
.netdisk-finder .head .nav span.spliter {
content: ' ';
display: block;
width: 0;
......@@ -2173,54 +2508,63 @@ body {
display: inline-block;
margin-left: 4px;
}
.netdisk-finder-container .netdisk-nav a:hover {
.netdisk-finder .head .nav a {
border: 1px solid transparent;
}
.netdisk-finder .head .nav a:hover {
background-color: #f4f5f7;
}
.netdisk-finder-container .netdisk-nav a:active {
.netdisk-finder .head .nav a:active {
background-color: #d7dae1;
}
.netdisk-finder-container .netdisk-file-list {
.netdisk-finder .file-list {
margin: 0;
padding: 0;
list-style: none;
position: absolute;
top: 40px;
right: 0;
bottom: 0;
left: 0;
overflow: auto;
}
.netdisk-finder-container .netdisk-file-list .empty {
.netdisk-finder .file-list .empty {
height: 50px;
line-height: 50px;
text-align: center;
font-size: 18px;
color: #ccc;
}
.netdisk-finder-container .netdisk-file-list .netdisk-file-list-item {
.netdisk-finder .file-list .file-list-item {
font-size: 14px;
line-height: 20px;
padding: 10px 20px 10px 40px;
cursor: default;
-webkit-user-drag: element;
-khtml-user-drag: element;
border: 1px solid transparent;
}
.netdisk-finder-container .netdisk-file-list .netdisk-file-list-item:hover {
background-color: #f4f5f7;
.netdisk-finder .file-list .file-list-item:hover {
/* background-color: lighten(@tab-hover, 55%); */
}
.netdisk-finder-container .netdisk-file-list .netdisk-file-list-item:active {
.netdisk-finder .file-list .file-list-item:active {
background-color: #e5e7ec;
}
.netdisk-finder-container .netdisk-file-list .netdisk-file-list-item.selected {
.netdisk-finder .file-list .file-list-item.selected {
background-color: #717b94;
color: white;
}
.netdisk-finder-container .netdisk-file-list .netdisk-file-list-item.selected.file:before {
background-position: 0 -545px;
.netdisk-finder .file-list .file-list-item.selected.dir .icon {
background: #717b94 url(../images/icons.png) 0 -1085px;
}
.netdisk-finder .file-list .file-list-item.selected.dir:after {
border-left-color: white;
}
.netdisk-finder .file-list .file-list-item.selected.file .icon {
background: #717b94 url(../images/icons.png) 0 -545px;
}
.netdisk-finder .file-list .file-list-item.dragging {
border: 1px solid #717B94;
}
.netdisk-finder-container .netdisk-file-list .netdisk-file-list-item.file {
.netdisk-finder .file-list .file-list-item.file {
position: relative;
}
.netdisk-finder-container .netdisk-file-list .netdisk-file-list-item.file:before {
content: ' ';
.netdisk-finder .file-list .file-list-item.file .icon {
display: block;
position: absolute;
width: 25px;
......@@ -2229,11 +2573,10 @@ body {
top: 7px;
background: url(../images/icons.png) 0 -445px no-repeat;
}
.netdisk-finder-container .netdisk-file-list .netdisk-file-list-item.dir {
.netdisk-finder .file-list .file-list-item.dir {
position: relative;
}
.netdisk-finder-container .netdisk-file-list .netdisk-file-list-item.dir:before {
content: ' ';
.netdisk-finder .file-list .file-list-item.dir .icon {
display: block;
position: absolute;
width: 25px;
......@@ -2242,7 +2585,7 @@ body {
top: 7px;
background: url(../images/icons.png) 0 -420px no-repeat;
}
.netdisk-finder-container .netdisk-file-list .netdisk-file-list-item.dir:after {
.netdisk-finder .file-list .file-list-item.dir:after {
content: ' ';
display: block;
width: 0;
......@@ -2259,16 +2602,11 @@ body {
top: 20px;
margin-top: -4px;
}
.netdisk-finder-container .netdisk-file-list .netdisk-file-list-item.dir input {
.netdisk-finder .file-list .file-list-item.dir input {
margin: 0;
outline: none;
width: 61.80%;
}
.netdisk-finder-container .netdisk-mkdir {
position: absolute;
right: 0;
top: 0;
}
.netdisk-save-panel .netdisk-file-list {
bottom: 50px;
}
......@@ -2363,11 +2701,8 @@ body {
font-size: 16px;
color: #CCC;
margin: 150px auto;
-webkit-transition: all 0.1s ease;
-moz-transition: all 0.1s ease;
-ms-transition: all 0.1s ease;
-o-transition: all 0.1s ease;
transition: all 0.1s ease;
-webkit-transition: all .1s ease;
transition: all .1s ease;
}
.local-file-open-panel .drop-file span {
display: block;
......@@ -2377,10 +2712,8 @@ body {
.local-file-open-panel .drop-file.accept {
border-color: #abb1c0;
-webkit-transform: scale(1.2);
-moz-transform: scale(1.2);
-ms-transform: scale(1.2);
-o-transform: scale(1.2);
tranform: scale(1.2);
-ms-transform: scale(1.2);
transform: scale(1.2);
}
.local-file-open-panel .drop-file.deny {
border-color: #eee;
......@@ -2480,7 +2813,8 @@ body {
.download-panel > .download-list li:active {
background-color: #e5e7ec;
}
#help-panel {
#help-panel,
#feedback-panel {
position: absolute;
top: 50px;
right: 0;
......@@ -2488,43 +2822,92 @@ body {
left: 0;
overflow-y: auto;
}
#help-panel h2 {
#help-panel h2,
#feedback-panel h2 {
font-weight: normal;
color: #fc8383;
margin: 10px 0;
}
#help-panel .shortcut-content {
#help-panel .shortcut-content,
#feedback-panel .shortcut-content {
font-family: 'Microsoft Yahei';
margin-left: 50px;
}
#help-panel .shortcut-content section {
#help-panel .shortcut-content section,
#feedback-panel .shortcut-content section {
min-width: 300px;
margin: 0 20px 20px 0;
float: left;
}
#help-panel .shortcut-content section h3 {
#help-panel .shortcut-content section h3,
#feedback-panel .shortcut-content section h3 {
border-bottom: 1px solid #EEE;
}
#help-panel .shortcut-content section div.shortcut-group {
#help-panel .shortcut-content section div.shortcut-group,
#feedback-panel .shortcut-content section div.shortcut-group {
margin: 5px auto;
}
#help-panel .shortcut-content section div.shortcut-group span.shortcut {
#help-panel .shortcut-content section div.shortcut-group span.shortcut,
#feedback-panel .shortcut-content section div.shortcut-group span.shortcut {
display: inline-block;
width: 220px;
text-align: right;
margin-right: 10px;
}
#help-panel .contact-content {
#help-panel .contact-content,
#feedback-panel .contact-content {
list-style: none;
margin-left: 50px;
padding-left: 0;
}
#help-panel .contact-content li {
padding: 5px 0;
#help-panel .contact-content li,
#feedback-panel .contact-content li {
display: block;
float: left;
padding: 0;
width: 150px;
height: 150px;
margin: 20px;
text-align: center;
position: relative;
}
#help-panel .contact-content li a {
#help-panel .contact-content li a,
#feedback-panel .contact-content li a {
-webkit-user-select: initial;
cursor: text;
color: #fc8383;
}
#help-panel .contact-content li a[href],
#feedback-panel .contact-content li a[href] {
cursor: pointer;
}
#help-panel .contact-content li:before,
#feedback-panel .contact-content li:before {
-webkit-transition: all .3s ease;
transition: all .3s ease;
opacity: 0.6;
content: ' ';
display: block;
width: 150px;
height: 150px;
background: #ffffff url(../images/feedback.png) no-repeat;
}
#help-panel .contact-content li:hover:before,
#feedback-panel .contact-content li:hover:before {
-webkit-transform: translate3d(0, -5px, 0);
transform: translate3d(0, -5px, 0);
opacity: 1;
}
#help-panel .contact-content li.email:before,
#feedback-panel .contact-content li.email:before {
background-position: -150px 0;
}
#help-panel .contact-content li.github:before,
#feedback-panel .contact-content li.github:before {
background-position: -300px 0;
}
#help-panel .contact-content li.tieba:before,
#feedback-panel .contact-content li.tieba:before {
background-position: -450px 0;
}
#tab-container .command-buttonset.priority {
width: 130px;
......@@ -2636,9 +3019,11 @@ body {
position: relative;
}
#resource-panel > .fui-panel-content > .fui-label-panel-content > .fui-input {
width: 148px;
width: 140px;
margin: 2px 0 0;
vertical-align: middle;
-moz-box-sizing: content-box;
box-sizing: content-box;
}
#resource-panel > .fui-panel-content > .fui-label-panel-content > .fui-button {
left: auto;
......@@ -2807,6 +3192,13 @@ ul.resource-list li {
/**
* 页面下方 “关于” 面板的样式
*/
.fullscreen #about #km-cat {
-webkit-transform: translate(0, 0);
-ms-transform: translate(0, 0);
transform: translate(0, 0);
-webkit-transition: -webkit-transform 0.7s 0.2s ease;
transition: transform 0.7s 0.2s ease;
}
#about {
position: absolute;
bottom: 0;
......@@ -2823,16 +3215,11 @@ ul.resource-list li {
padding: 0 15px 0 60px;
border-bottom: 5px solid #393F4F;
overflow: visible;
-webkit-transition: all ease 0.3s 0.3s;
-moz-transition: all ease 0.3s 0.3s;
-ms-transition: all ease 0.3s 0.3s;
-o-transition: all ease 0.3s 0.3s;
transition: all ease 0.3s 0.3s;
-webkit-transition: all ease .3s 0.3s;
transition: all ease .3s 0.3s;
-webkit-transform: translate(100%);
-moz-transform: translate(100%);
-ms-transform: translate(100%);
-o-transform: translate(100%);
tranform: translate(100%);
-ms-transform: translate(100%);
transform: translate(100%);
}
#about a {
color: #eee;
......@@ -2842,15 +3229,10 @@ ul.resource-list li {
left: 15px;
top: 5px;
-webkit-transition: all ease 1.3s 0.3s;
-moz-transition: all ease 1.3s 0.3s;
-ms-transition: all ease 1.3s 0.3s;
-o-transition: all ease 1.3s 0.3s;
transition: all ease 1.3s 0.3s;
transition: all ease 1.3s 0.3s;
-webkit-transform: translate(-60px, 0);
-moz-transform: translate(-60px, 0);
-ms-transform: translate(-60px, 0);
-o-transform: translate(-60px, 0);
tranform: translate(-60px, 0);
-ms-transform: translate(-60px, 0);
transform: translate(-60px, 0);
cursor: pointer;
}
#about #cat-face {
......@@ -2859,10 +3241,8 @@ ul.resource-list li {
#about:hover,
#about:hover #km-cat {
-webkit-transform: translate(0);
-moz-transform: translate(0);
-ms-transform: translate(0);
-o-transform: translate(0);
tranform: translate(0);
-ms-transform: translate(0);
transform: translate(0);
}
#about #km-version.new-version {
position: relative;
......@@ -2881,10 +3261,8 @@ ul.resource-list li {
text-shadow: none;
box-shadow: -1px 1px 3px rgba(0, 0, 0, 0.3);
-webkit-transform: scale(0.6);
-moz-transform: scale(0.6);
-ms-transform: scale(0.6);
-o-transform: scale(0.6);
tranform: scale(0.6);
-ms-transform: scale(0.6);
transform: scale(0.6);
}
.km_receiver {
width: 0;
......@@ -3037,13 +3415,17 @@ ul.resource-list li {
#share-select fieldset .share-body {
margin-top: 10px;
}
#share-select fieldset .share-body .share-qr-code img {
margin: 20px 0;
}
#public-share p {
position: relative;
max-width: 500px;
}
#public-share p input {
width: 100%;
box-sizing: border-box;
-moz-box-sizing: border-box;
box-sizing: border-box;
height: 24px;
margin: 0;
}
......@@ -3059,8 +3441,8 @@ ul.resource-list li {
#public-share .share-body {
display: none;
}
.shared-content .left,
.shared-content .right {
.shared-content > .left,
.shared-content > .right {
float: left;
}
.shared-content .m-logo {
......@@ -3293,6 +3675,20 @@ ul.resource-list li {
.arrangedown.command-button .fui-icon {
background-position: 0 -300px;
}
.expandtoleaf.command-button .fui-icon {
background-position: 0 -995px;
}
.collapsetolevel1.command-button .fui-icon {
background-position: 0 -1015px;
}
.fullscreen.command-button .fui-icon {
background-position: 0 -1035px;
}
.fullscreen .preview-navigator {
-webkit-transform: translate(-45px, 30px);
-ms-transform: translate(-45px, 30px);
transform: translate(-45px, 30px);
}
.preview-navigator {
background: white;
width: 140px;
......@@ -3305,6 +3701,8 @@ ul.resource-list li {
padding: 1px;
z-index: 9;
cursor: crosshair;
-webkit-transition: -webkit-transform .7s 0.1s ease;
transition: transform .7s 0.1s ease;
}
.preview-navigator.grab {
cursor: move;
......@@ -3312,6 +3710,11 @@ ul.resource-list li {
cursor: -moz-grabbing;
cursor: grabbing;
}
.fullscreen .nav-bar {
-webkit-transform: translate(-60px, 0);
-ms-transform: translate(-60px, 0);
transform: translate(-60px, 0);
}
.nav-bar {
position: absolute;
width: 35px;
......@@ -3323,6 +3726,8 @@ ul.resource-list li {
border-radius: 4px;
z-index: 10;
box-shadow: 3px 3px 10px rgba(0, 0, 0, 0.2);
-webkit-transition: -webkit-transform .7s 0.1s ease;
transition: transform .7s 0.1s ease;
}
.nav-bar .command-button {
width: 35px;
......
{"version":3,"sources":["lib/fui/theme/default/fui.all.css","_public.less","_triangle.less","_widgets.less","_kityminder.less","_mainmenu.less","_mainmenu.new.less","_quickvisit.less","_history.less","_tab.less","_search.less","_user.less","_recent.less","_netdisk.less","_localfile.less","_draft.less","_download.less","_help.less","_priority_panel.less","_progress_panel.less","_resource_panel.less","_themepanel.less","_fontpanel.less","_colorpanel.less","_about.less","_receiver.less","_share.less","_icons.less","_nav.less"],"names":[],"mappings":"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"}
\ No newline at end of file
{"version":3,"sources":["default.all.temp.css","lib/fui/theme/default/fui.all.css","_public.less","_triangle.less","_widgets.less","_notice.less","_kityminder.less","_mainmenu.less","_mainmenu.new.less","_quickvisit.less","_history.less","_tab.less","_search.less","_user.less","_recent.less","_netdisk.less","_localfile.less","_draft.less","_download.less","_help.less","_priority_panel.less","_progress_panel.less","_resource_panel.less","_themepanel.less","_fontpanel.less","_colorpanel.less","_about.less","_receiver.less","_share.less","_icons.less","_nav.less"],"names":[],"mappings":"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","file":"default.all.css"}
\ No newline at end of file
......@@ -4,6 +4,7 @@
@import "_public";
@import "_triangle";
@import "_widgets";
@import "_notice";
@import "_kityminder";
@import "_mainmenu";
......
<?xml version="1.0" encoding="iso-8859-1"?>
<!-- Generator: Adobe Illustrator 17.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="25px"
height="25px" viewBox="0 0 25 25" style="enable-background:new 0 0 25 25;" xml:space="preserve">
<g id="&#x56FE;&#x5C42;_2">
<path style="fill:#3A4859;" d="M6.196,24c1.062,0,6.493-3,12.605,0h5.94C24.853,24,25,24.359,25,24.247V2.112
C25,2,24.853,2,24.741,2h-7.869L5.981,24H6.196z"/>
</g>
<g id="&#x56FE;&#x5C42;_1">
<path style="fill:#474D54;" d="M18.905,24L8.038,2H0.169C0.057,2,0,2,0,2.112v22.135C0,24.359,0.057,24,0.169,24h6.027
c1.062,0,6.493-3,12.605,0H18.905z"/>
</g>
<g id="&#x56FE;&#x5C42;_2_x5F_&#x590D;&#x5236;">
</g>
<g id="&#x56FE;&#x5C42;_1_x5F_&#x590D;&#x5236;">
<path style="fill:#2C363F;" d="M5.981,24h0.215c1.062,0,6.493-3,12.605,0h0.103L12.45,10.611L5.981,24z"/>
</g>
<g id="&#x56FE;&#x5C42;_3" style="display:none;">
<image style="display:inline;overflow:visible;" width="512" height="512" xlink:href="754EB0E7B73A025C.png" transform="matrix(0.9999 0 0 0.9999 -243 -243)">
</image>
</g>
</svg>
<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Illustrator 17.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" [
<!ENTITY ns_extend "http://ns.adobe.com/Extensibility/1.0/">
<!ENTITY ns_ai "http://ns.adobe.com/AdobeIllustrator/10.0/">
<!ENTITY ns_graphs "http://ns.adobe.com/Graphs/1.0/">
<!ENTITY ns_vars "http://ns.adobe.com/Variables/1.0/">
<!ENTITY ns_imrep "http://ns.adobe.com/ImageReplacement/1.0/">
<!ENTITY ns_sfw "http://ns.adobe.com/SaveForWeb/1.0/">
<!ENTITY ns_custom "http://ns.adobe.com/GenericCustomNamespace/1.0/">
<!ENTITY ns_adobe_xpath "http://ns.adobe.com/XPath/1.0/">
]>
<svg version="1.1" id="图层_1" xmlns:x="&ns_extend;" xmlns:i="&ns_ai;" xmlns:graph="&ns_graphs;"
xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="300px" height="55px"
viewBox="0.5 0.5 300 55" style="enable-background:new 0.5 0.5 300 55;" xml:space="preserve">
<switch>
<foreignObject requiredExtensions="&ns_ai;" x="0" y="0" width="1" height="1">
<i:pgfRef xlink:href="#adobe_illustrator_pgf">
</i:pgfRef>
</foreignObject>
<g i:extraneous="self">
<g id="参考线">
</g>
<g id="create">
<path id="add-folder-2-icon" style="fill:#717B94;" d="M25.5,19.5h-2v-2h-2v2h-2v2h2v2h2v-2h2V19.5z M17.5,23.5h-12v-17h6.696
l1.645,1.638C14.296,8.591,14.912,8.5,15.555,8.5H25.5v6h-2v-4h-7.945c-1.183,0-2.296-0.108-3.134-0.943L11.365,8.5H7.5v13h10
V23.5z"/>
</g>
<g id="recycle">
<polygon style="fill:#717B94;" points="51.5,22.5 39.5,22.5 39.5,10.5 37.5,10.5 37.5,24.5 53.5,24.5 53.5,10.5 51.5,10.5 "/>
<path style="fill:#717B94;" d="M48.5,6.5c-0.823,0-2-1.222-2-2h-2c0,0.778-1.177,2-2,2h-5v2h16v-2H48.5z"/>
<path style="fill:#717B94;" d="M44.5,19.5c0,0.552-0.448,1-1,1l0,0c-0.552,0-1-0.448-1-1v-7c0-0.552,0.448-1,1-1l0,0
c0.552,0,1,0.448,1,1V19.5z"/>
<path style="fill:#717B94;" d="M48.5,19.5c0,0.552-0.448,1-1,1l0,0c-0.552,0-1-0.448-1-1v-7c0-0.552,0.448-1,1-1l0,0
c0.552,0,1,0.448,1,1V19.5z"/>
<polygon style="fill:#717B94;" points="81.5,22.5 69.5,22.5 69.5,10.5 67.5,10.5 67.5,24.5 83.5,24.5 83.5,10.5 81.5,10.5 "/>
<path style="fill:#717B94;" d="M78.907,5.478c-0.794-0.217-1.606-1.707-1.4-2.457l-1.929-0.529
c-0.206,0.75-1.664,1.618-2.457,1.4l-4.822-1.321L67.769,4.5L83.2,8.729L83.729,6.8L78.907,5.478z"/>
<path style="fill:#717B94;" d="M74.5,19.5c0,0.552-0.448,1-1,1l0,0c-0.552,0-1-0.448-1-1v-7c0-0.552,0.448-1,1-1l0,0
c0.552,0,1,0.448,1,1V19.5z"/>
<path style="fill:#717B94;" d="M78.5,19.5c0,0.552-0.448,1-1,1l0,0c-0.552,0-1-0.448-1-1v-7c0-0.552,0.448-1,1-1l0,0
c0.552,0,1,0.448,1,1V19.5z"/>
</g>
<path style="fill:#767E9C;" d="M9.543,53.5c1.014,0,6.2-3,12.037,0h5.672H27.5V32.61c0-0.107-0.14-0.11-0.247-0.11h-7.515
l-10.4,21H9.543z"/>
<path style="fill:#767E9C;" d="M21.679,53.5l-10.377-21H3.788c-0.107,0-0.288,0.003-0.288,0.11V53.5h0.288h5.755
c1.014,0,6.2-3,12.037,0H21.679z"/>
<path style="fill:#60687C;" d="M9.338,53.5h0.205c1.014,0,6.2-3,12.037,0h0.099l-6.164-12.786L9.338,53.5z"/>
<g>
<path style="fill:#76809B;" d="M54.836,38.828l1.056-5.778l-5.798,1.034c-1.391-0.687-2.957-1.074-4.614-1.074
c-1.651,0-3.212,0.384-4.599,1.067l-5.788-1.007l1.017,5.788l0,0c-0.677,1.382-1.057,2.936-1.057,4.579
c0,5.759,4.669,10.428,10.428,10.428s10.428-4.669,10.428-10.428C55.908,41.783,55.522,40.218,54.836,38.828z"/>
<path style="fill:#FFFFFF;" d="M51.901,38.878c-2.514,0-4.552,2.038-4.552,4.552c0,2.514,2.038,4.552,4.552,4.552
c2.514,0,4.552-2.038,4.552-4.552C56.453,40.916,54.415,38.878,51.901,38.878z M51.896,46.389c-1.604,0-2.904-1.3-2.904-2.904
s1.3-2.904,2.904-2.904s2.904,1.3,2.904,2.904S53.5,46.389,51.896,46.389z"/>
<path style="fill:#FFFFFF;" d="M39.003,38.878c-2.514,0-4.552,2.038-4.552,4.552c0,2.514,2.038,4.552,4.552,4.552
c2.514,0,4.552-2.038,4.552-4.552C43.555,40.916,41.517,38.878,39.003,38.878z M38.998,46.369c-1.604,0-2.904-1.3-2.904-2.904
s1.3-2.904,2.904-2.904s2.904,1.3,2.904,2.904S40.602,46.369,38.998,46.369z"/>
</g>
<path style="fill-rule:evenodd;clip-rule:evenodd;fill:#76809B;" d="M86.888,31.842c0,0-2.398,0.852-7.73,0.852
c-2.871,0-7.383,0-7.383,0s-5.806-0.631-5.995,4.828c-0.189,5.459,0,11.043,0,11.864s0.126,3.818-0.41,4.354
c-0.536,0.536,1.988-0.82,5.837-0.757c3.849,0.063,10.98-0.095,10.98-0.095s3.926,0.273,4.354-4.922
C86.983,42.602,85.91,35.786,86.888,31.842z"/>
<path style="fill-rule:evenodd;clip-rule:evenodd;fill:#FFFFFF;" d="M82.393,44.851c-0.244-0.239-0.424-0.414-0.556-0.543
c-0.036-0.017-0.066-0.039-0.091-0.067c-4.761-2.931-1.457-1.898,0.413-2.666c1.871-0.769,1.237-3.208,1.237-3.208
s-4.913-0.201-4.779,0.167c0.134,0.368,0.602,3.108-2.473,2.506c-3.075-0.602-3.409-4.612-3.409-4.612l-5.648-0.167
c0,0-0.501,2.874,3.509,4.913c3.564,1.812,0.714,1.749-0.55,1.948c-0.01,0.004-0.019,0.009-0.029,0.012
c-0.051,0.015-0.105,0.021-0.158,0.022c-0.031,0.007-0.061,0.014-0.088,0.021c-0.029,0.015-0.061,0.025-0.097,0.031
c-0.004,0.002-0.009,0.003-0.013,0.005c-0.835,0.334-3.175,0.602-3.542,3.442l4.411-0.067c0,0,0.568-2.707,2.339-2.974
c1.771-0.267,5.38,1.003,5.815,4.979l5.481,0.134C84.164,48.728,83.897,46.321,82.393,44.851z"/>
</g>
</switch>
<i:pgf id="adobe_illustrator_pgf">
<![CDATA[
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
]]>
<![CDATA[
+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
]]>
<![CDATA[
tCBTvtlwGGg+vTVDwdt0IT3pDC+gj3WRiD163zOlUuyC2/KSvhbN9a6ziejb0xysyzz46MAI53oA
pPzLDOjc0SpZm/ufRUK410psbK2LTOnOC8j+MrWSE6js3mP1Jdjo7hagXfomM/YHLqBM3r1OA/G1
PQu8IPs6F8sNGGrk5BMnmlhlzMixDeNUVK8dN4ngRQbtgIKBvKWD9eEyll9dvbsEtmU2MhwOGhGi
Z6+m5i68kW+9tBZgXbYpPppHN3l47+9yH2+7CdwztiDfyLVwNnyS5YYysEevxcjjAvwCFv7Jmlz0
xxtOuol6fCe+kA4U7BSLum0C4/V9BxDYNgOx9rgTP31ONp6CDQiFxV54lvgsg5l/PYtClhDLH89A
Ra2wTRKLPawEMVGErJQl1sjYp55BzNkupZIhZxH2dz3lTT+p1SfBPLs4jIWXBcZUapCslApw02fc
hnggREN6vADKgexEe8/Lz4wn+2nOZcPLKdSVrckTEDmutkzzj8BTpfPJSJhy7lWx75xtG11mBwGb
P3Vvs02Di+Kjg49Fw8OZmZZA79/nLICcr16yrnZonPI9e12C1Z++O8fJRmZjD6xLvdsb4BtbgXMV
w8XwuF7sN9F+ZHaTeZu2gYQRuLNcP8itBzrnS6kL72N6khi6MsV5+lmi8jHi8fUyZy2lQsnqi3OJ
Zk/TGCGOg/OyYQo9UH+238j6eckogvwSAgKnMEQBazZC8hJGMRWUaICkPZBjbMwlku19fDqTi1tT
NfdhfSMgM7xm7kwjTDA8pu/ue7RYKdQCkdZTH8yFzDEmIiA1RlrcYWNo5NlA968uUaZKIHL5pitB
wh/uOrL3jjDgO4cT8FBjkx3EC65E9Ol6dRV+ynauwuNnCoyrAKPy7ncYHZ0MtnCM/yzO5ciJs3cy
6FwuUT7RXin9ZPmTwnQozbkC3fa+I+938+10NSeT4kzEI/Ia4dCqmVyXPtgKHi2ALpeCSaEwEam6
nE/Z2g75pGCY/wc7uF8uloMJtfwiM8ufLOjjWfdKYlXeZw+bElzuBU+cmi7G6d6KPndqSkrrMSUd
6Tw/wNoRADHS5Yw//Oxvz1TRyE6IPhVrqpZ6yTZNMyUKYDlVKjxEHacEBW9qy9Kgpl/w3Cu1QhPx
iFWrQVhyaVC91UqtxoFtWN/2FsMepVJgwyNhvqRSwpIYxaY1ciyek2LLHKCCZ7IPDzBh1v63f/8/
//qv/5cf/+yvfvhP/1x4k5zxxz/9w1//zX/54S//7Iff/8Wvf/XXRj6RDzz58d/9bz/+m//ymz//
72lq+e0v/+43//WX/9fPfv+3//Ivfvz9X/z2l//uh5//61//17//zZ/8QtTnP/zhH//4p//pN3/7
p7/9u//px7/89zSI//tv/4cff/6nv/3ZH/zDv/3Zb//DfwvG8cMv/zvQ3Q9/8Be//atf/fAfft9Y
XGRQsZ7xN3/5Rz/+q3/9mz/6+Q9//Segb7qekXv/17/64x9/9Qc//sWf0/2C0f34b3/2m7/5OWj5
Dz/7E9Dst3/1f9CDoifNjVqd0NmlA2MYUNOVPvaVHDSmTWc1UT2TsljojckiV3mkMAIfGi5T1qx3
AA21EgyNQ0sOKhzgaJHuDh5fgFKSNcWI5olUeuRpckAt+70tfY0b/ZpPttRCKMh5EY7u/Uv2l2xd
lHyZBvtunup9f7D4JzjuT6OqkQ06l4jXO2qzlNM6pelCXTDhAoBcbdjjrscfbShbQMWROirIzQGg
QF7/ZEnNGjprqTR0LZPSTCgoN37Uyqtz2LgFLOjThWMBungkHwZTqLcCByyPvkWF9Ke0pgolZrpP
9VSnfMnCqBwGIgWu4xBSnXQFBDawl3piE+UgmgQMOJyqV1ppHn5H+NXWFa4QvLuzLjzWUEWIoSMe
oLLnk/5xVTuUTtiHqfs1iAkdNAPn0duSjcnuq7/oTefqZgXC1tOGRENrCEqWtWYtS8yqtguN5Ibg
SEj1AkypzfcsPDNQw/wEuBKe7aqTamp0we/3AvGluvqIS8TLr8XOR8n1A16Sco5Q8xzHO8UhkOvT
0VRaiKLCRaonlymOmtEdxcUAWJySoaurETFiT9MivMMAPF3QgjZu0py3JKkP2vNzF2wJUXTfY+Vv
HRPfcgUHQ99+BeuZ2GcGNEjhL7JFMY64/yPouG32PZjHce9y3E62XviJ8MUeI17uwSP3CT2Iem8b
21RmFM7PCpe1mx7c1YpzTwnHTS0wMVlWjbXJOfksGMwmx8DtgZ8bJscugptcSW/FZCbxrMlJ5PIm
py1Rd3vLoZ0j3nYucHvyZuU3pW2Pvo33Sjdkg1kONoRsNjm7ww4EVTdZCxsn/NoG8MImR/xmZWag
gIn7bisfcazwcXcL0RKi91tIKrXLOu7Lz5lS0VQ3mNnnmZnbs/EXortx05e5JJ3FLPVKhZKFwLIe
vcWboczlcJfN3NpL/uhL6X4eM3vWaTC1yFIwtbTLXvNtiHJAgmgARYxMONqr/dUobygqumlQry/O
Iubx1a3CaXTJ9CaU2zaJ9+XsGhte4wsIucJ3ajBTb9gmxmA+b7oGQ9ncs1ML5X2hdfQTfM3Pwdvt
jBjoK/V2//ooDzQffPdHiu9uBNRgloCl3q8eyopAA9NS3iwPNGayUhvcTMkBNZg3oSr+6rsgIna5
uW4sznuXAlD/xNqztLPyQH3tFpbD7PcIKOAXyVwvcsPAVbBme5ADiuUazxkFoIFLc7WeTMoBBesC
wH5g+cuXJ1kEX+RdCUux727JAaVeP3sBBmjVYpGg1xvdzocIqMEMqLGfFa9qm3oj7h4gUNv+qro7
vpv7tAMA9S2lQN/eYzk5oAYzAuufVy62CKwM0B71fm1uKgDNDQILS8ArC3STfPMioFCO7c214Ft2
2kt5oLEL68YSvKbkgFK7D9xss9523iRAARR6VcPZuAKCA5dX9SYVlQfqa79hubdCTXamF7lN1Dzz
NKGEkZkrlnfuHhSBWshxoqIwU5MH6JjqFQRq54FCOYYQ/Jiz3wYTpnsANLiSAi0HU21WMLusEqCB
ennWpIFmX2c50UxfEli5k/VDOSYCy8y1sN4EZ5ePAVmg93Zqqgg0MeumkxKgSFoisB0bVo+QG3mg
JddraUg6t7JA693bqCLQh9fCXcpgVphrJ401La2QPNDy5a4+7g9DskCbZXwpAYqgMGCf8p78XAlo
CWuuvAkFoLe25vvzR1IW6PNt3w64Ummu3W5y+6wA9NWHvVUaNnmgD5XxZysTs/NAhRoZe9u6HxWB
flUd1y0loDms+7iOyQOtJGxAWnaSm7TsXLOfroAC0FDB9PyAlWmgvYttXsw0t9TuueODQB0IKEpb
5aRS5TJqe999dQHQG0oK9MNeu2KAzsJ2iaa5xu4f/AgoYYlbC2KgbjCXzfjuEoJ17QuIstv0ehnI
AaCJzZ4ofF2GaaC31qxTgl5TMlex0EDftpE7qMUECLY9OaKFmzsI1LMvCp9wV7B8/QmA5nZSoNT0
1sYAjTy6xTMFVt9TynwdQ2C9t0/lsmiul52Nv9+pQqDYntB/CF9ftLaPRQCU2JPOVLK/eHKYvTH0
dE8jU1QqZGk/lV/vZN/e9UwxrPjq2Co8tcTx3qZ6KXnKSsuLXM5pMqeuMvC5jFjrLwLB3BUOnzr2
n05WrCqTe7qgDOZg5a3gV3i+3Ybw+EtQ/mnx2pSoPGcfFZ5uo6Xi3eUGPZWxYUrYW9nh8O/k3y4F
ug+J+M6i8LQ0qkaCTZfkKadfHl5wVpcSzn1JhV1xa7lP8eXA9VOvk40rPI0Be6yZjj0nFJ6n7M9X
1DSl8LTg7KYDjVf5p/fJ3OeNzWtDT2Uw9lCbfG66WYf82w+tzy/vxkMoPP1aL10zMiR5ytFY+60a
qPVcCm+/2Tscde8/7a6brDSUedprARvm5sIZzMk/J1sPue1FhZR/OsLeJpbP4oXsU/Pz47BpNT3c
ymOMom66j97Eo9UKn7v3nxKpYuUx9QWf7gkhKtn92pjeLBnJUwZjQEhFrHZzzPQh+/bu48ZmTzzb
e/zT+MoWW6FPUKKtkIiKhwtXn0h6AQevmuZcsyAvLaVeMONr2ktR3OTM1J5NzuZ7HTqXDZO1Y9vB
T1XgYs7SJlep68c8rVmQfi1+s5yB0dQTCB6CzOh9z31oYcE8N60dcneAcB3FOKCXnulN3wYsvIss
cHY8YrlJXRCWm6qLcXaulkJdGL/0QvF/94WsceDu9K9qM15cC4H6bK/KQC9y7y5FoFguFaiI9D4H
ljaMF95oVwFo+10FaN7klwPKWuP5PNXm5uoVAQ0VLteB3SsLND8Xo/dNCNRXvxKi9zFRE+n94fX1
JT9XR3T+9KAA1D+B1LaSB+prt+WAIl8MIXgsXFUxUOQ7KAAF3iTwHfpKQHsIKEfJ4rle5LGIIlBk
jygChfbIkwQotMYZBDuVEXyRK15LVhV3AlsDgUefmIV42A3l2iEvSdyycknq6fGicmPS0Y7adWdm
Ro7R8gLOWhQhYliXFhrDa6fVkVpuHmjaB5/S0P4rIsSwmOU4Pl+pARzfO9Efg5mw3GKCAA4TIfI5
a0Imrl4D8WjppJkx9GopFE6Kr6zDhlQwAfApz4TMmOGfS9S90BdjALC8CMbTyeD21GcONvHSXfBC
Lx7PmgV/gGTkrW1JjO4ReeLXa7YRM2F+yNid32xGfyAxiBwNZlwVbgYZR7zvLQgQyOHdYAZDfqqC
H66hDtjZ1QcFh7RRHxLMgHWiPzQ+YbzGsB8apJFe3mkjHf2pCX1ymfnd4qUy41fuURY/P/Sn18qo
r5/3ttm4V1w/A7uCznuGYmiPSHZ+UfuR6yeK9dErmK8vDkOWMjHkm/TQBRpZmdzVkYWNLOuWOt4N
eilrifeuLAUtzlHAO+dXMpj3nItz8v0Nj3dRPFkPsiSip+1cSEVP9jW9Ei4smD2r9w9cjfcsnn3b
5DkEeuURmC9dI6NMgSuzr5WtZDzi0SDZ7oR/OsKg6x7ustCDLom4Uii4ZbnSpjg171W0VFacmkE6
OYWpvV6qTg0h+prmIZmBIGn5nsXIXvdJc1a2azQreWJvO1diNeEVS/791VKYUMYtonOODUV0jpFV
97XYVq8IaCwLoLyuT0EMjZZRxPoiQQtjjUM9/ciRjZOjZIdKZ2l3R0nlS7uiNbJDhe/6xFLKd72L
so45C7iOsWH2R9vLcY0U+M6ZddJ/mLWi9xr2yaLvvTCY9Swo/MNIQRTElqGN3sU9rtiVAUxu6bjZ
H1lkrTAyYk2kXsJ38pN0pqy8FcavrhhjkiWZhVaSJQFvP1GqOk5W9Aig8MInDxGTU1BMQptR3mIU
rO4wj6QqTWMKiknv+s5CO3W1ZJC1n+TWFwy+b1JHFpyfR25IIk8c2NYXioPiR6NvSJNLZV2Z4LlW
W3nkkUmnYlh0dxZVm1+0guomnY71o+eCVpDilNXJxEABBuhl+a7E63JoZ1p+B9sVLw==
]]>
<![CDATA[
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
]]>
<![CDATA[
zcoUnWyo+4Y79frKttoW+QE7nEzt29nYUP6GuwOt8SNvuJOrfMxoCE89ZC/OsDjppryz1CXBO+7O
MitpXZL+a+lkOlM+vUsoYXTWTxxxw53+U81hksqxCBTJsUMSNtTNHNBVV5BlKDrb9vDC2t5F/1KH
E6px1/Pz6edT0ZWP5yisfV2rR7N05lzBfo4rrBXLMdTP6YW1sBe1c+EOq29/Vt2ikhYxsZFeNTZ0
ybBh66C4Fp1xp8CGEavOkhWtIiakxbqU3jImXUVq+2679Lw+nRk2oLND3Haa9xUd95auMLVmEROD
Mb1lTNo1kG45B17Jr1TQSQCfTWXBrGgYKkQV4KB0UoQewxCeRJF2u/ZMw7Rb885vXYZhGxmGijfl
HVrjmmpNpGec8KIAyuSDalzTbg23SG7HRmld0m5dxeI6jqYCXQV01VbrqXGVZm8o7SXpuinv4Ose
5U5vgJfkneu6xzafP6Vd9axmo/Hci3lyXZccPC4/uUumKeoWN9NFeo3bYDvzkms3Mi9ZKpEsBBp3
6ZR7kE6nPCWYxllfsYrHPBcPjokuiSunLp9W846wTlxcmtZRrocLPUaqQlIS1cM5ooOKtAgPcSV7
D5s5Zloq1P61W2pFeEOPIlAs10g9ivwXSWmasEpMCvRD7Zo7V1gAFNaIoawb7h62iGPDAZWWpvla
k3JU4R62C6tiaRq1+8Ddomp0yUV3seiX8o1zKnfr+dodCVA6I4JD8JdywSGWWzYaikCvy+RkqASU
NJjVyvAeW8pAsw+dvCJ6+csLmbilGOzj3qoC1mTAo08MnUd0touidgIJo9DS91rW1aPPVqXbMWqy
HJDN7mBZN7ebS1WnUpwYiSM5bSdJmxSfePDh2D9frnq9PCSLSe0WM61UGGmERLn6Zy03JOEtZnpv
+TooFQZtdMnezJI5MrVKbkgojqR6M4veSFLVopGAZtCNJx2pVXqr0g5KrVIpAJNkaCqdbqqLnpZ6
s7Q0cnsyOlI2dcwPQoGDOpg4FYYkn6Ul3EvSXQp4UJaWGr+o5Gkl6NHs+zli19q95IWV8Oavc7gS
71m57csDY7BHnhoni7Hs2fat37Nn2OUBU3s9PT72nj1DXAusONzlOfEYaB2RZYPOKsDTDqFFuhJW
AeqrF9P0WmBX+1lah8THJEkjfWIprZntXZRl53ywhOkTu3P5yJJw8AnB4BySoMpZN4cddgUPIVM+
7Aryi3bQThxVoU+GECUQ5NVPXaDj/Lqr21SUo54zIgTNZ6Htec45kDl/7JTyIy3jzW4QxfCUB0Uq
nnOgwxoX3y8mkfc6SwHl1k+8nShbv6+7FFDzdl12/bhTm5SR1XSdTAzsLTOgM42qnwMoqyndWd+7
X+yQzjQv/z0EY5r3+xyCMc3CIP2TlF7xcxLGfIrjkpQLS3d4D6sC1OvMyt+VpvucDnmu3KsBVDtV
Q6mLw2/UU7ofWV8VoN4aQMNJVYB6awBV7kfWUQWotwZQ3x2pSiuktwZQOVdBTxWg3hpAXTVWiujQ
WwMouyuquwpQbw0ghKJeBciMZ29WEutJ9VK+k29k03Upn/ZtWee4lA95Fp/Fb3wpnzAKp1toHHwp
n4IcO/OlfOI8pW91KZ80CvdtLuUTauRvdynfKfdX6r+UT31/Hw6q7HtVsp2f9JwNBW/12zsb6sh7
/WSq9wTMfEIl19nOhtJ/r5921fM57vU7x9lQ2vf66Tob6uR7/diquzOcDaVyr99B9ZVH3+sn4VnJ
rX4qlHzQvX7Cse7f6ifjWRx1r98xVTaH3+unFHOgb/VTzFQ58F4/9fsH9N1fqX2vn4645Rnu9VO/
1U98O8Px9/rpzlA96V4/foXkwrniXLjj7/VT5176nKvT7/VTV3RKfuWh9/oplVy5JP7L0eXu6F4/
fXF+HclTqvf66c+CPuVeP5aG5G/1O/I+vgMLcBXv4zv5KlvhrX4a9ybovtdPPZ1Mz/n8eu71U6/C
FecpHX+vn7qnxudan3avn2RcOm8yOvReP/V9GoNwp+aEe/3UE665GOyJ9/rpqEo7w71+bCmY/K1+
Utvy2Hv9juD9I+71kytH5I2JE+/j03mKh/Z9fMfXPfC9wCzoc9zrp36rn+BUwJPu9VNPbBXkKpx0
r5/6eR4y9/Icda+flNjF+RmyFUNH3Ot3gBw74V4/Hdb4Ge71c6je6nfofXwHH6Yjl9F99L1+e72I
mPDI0xv27vVTvIqPt2DPcK+frhN1Tr7XT7XY4pmuSzr9Xj91M8egPySteq+fupkjV1l/zL1+e3JK
dKvfSffx6S5i17iP7wxyE97qd6b7+DTcJz05VzL3+h1YDC+KKZ1wr598MTx7q58YyvH3+qnf6ieR
Y0ff66ee6MTcx6dd06YRO1V326UYO/ZeP5lx6ePKg+71O92v1HOvn1zNkzg+do57/URD2ot/KZ02
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
]]>
<![CDATA[
Tyh78DTDUYf1JMi6+SaqjBYztJdE209HLrIObAP9coLNeC5L6TxK1GA+j/2gbj2g2xkO9BMOl6+A
kk9TLQd44oV4JN25Y3ddbmonL7wE75r6RQL+uDmDdTlEqwBQwarATYGbGWKU00FA/vCwvSpO9GI6
5cYIoDfaD0nnCkskB48Pucytw3+XdC6fsMyuN3kGSubjITFqrKJZ6q1fid7izVDmcrjLZm7tWS86
uPQb6Rd1AQBtSy2Be4S7KhG3cPUPEbjHQYa2pQD21RXQqutXyIGA+dLvrxLVqqZYVcIS30C/yGg2
vrJeL6oPmS6QMK6FKwTlGLvP+g2DMUL9AsT66koxMnAU+Gci43bHnmGsb/uGJ6J3s9oBK32gCYXi
MAfq18NJnKlHPk8YTBEyoOSjGVs/tUFP/AD2OnK6euTYCTTGTNdgPoi9jmQuiRzTv8gHMZdeGmPY
60jmgnYyz15ou623xqTqXZiksg2YbA8vYRjXS8A/KRjBe6C/2uwpwuR6zdZhTLAM43sl+ABIGJNz
8lmHP+RMtthDxORsvmPnDv3Rcf5zRtvljBsoYc4bpzhHnP84Z52P85/qqR7lIx8dp5CbOPSR9ViU
pzkxyOY/OvyqF/xhMdhjKd5glrGoz+7EMHlK0i2HkyGLKd5gPtWV+JYxWC3vjYmPzS6Ojo8FvDaX
O/12F6qAr6OqxFeR81RgTu/BsbDbmv012Xj6fNelZMAnPq/P1qeVLHLY6L38A33WZK47m9tzyXnv
UyUGy0s39InOwjPdvCyZDIXe2n2UiWGxAhqbmjo2vYYcLVXhJxd22zLR2UlsEFSZ2gxmWXLHLeQ2
PQm+kTq5e416gZ++WqalpwHTIiJ86ipbY/XNFh4tO7Itv+XCC3d5vt3Co2U3mL/xwqMFQ97rt1x4
Jqb0jRceLTt7a8Y3W3i07AbzN154tOwG8zde+H39cs6FZwx7QlDzLp9BxWXfizDmWAhngIpXuPR3
2kVlXnPIZNrvlaExCQTSC0GQjrvxfPJaGiMv/B4eFPrN7HvIPLI7TZRDXFuNuojd1gVdFF+dbnEX
E8bvYvygJ9FdJ3Qe/qXARrt+Ie5E513Q97rEKnwXj/td7ERdFK4LfB0CyjdEXMekGjofCECzceRZ
OAsO+NnN/erhfsPApzpgkK2VojP3MKv7RcJS3P1EH+xFPDcERxYTa/+q9oqiCr48uqNHUuPAMrHt
TZCiD+/q4Xi6DR9cMrn786cHUVXE9RezLilbSXBfUuHNffH5hLgSptHDNMDqks7Ot9525qJKirid
xpg3WJkxt8wQO5znK3Q1E0xRv0CjEd/L47i3C5DQobx9FgkoCZtBgi39MnxnUeB2iVDgW3MoeOdR
AOYSI8aPHBJehEiQXBW1ja95JMijoBd74FHg7czxkFAj0wd60phHQJmrdt4UkSBGgZunfSgFsjQK
qFS7w+gXnhIU6ACdY4YIe2fikWDybTrXHApaKnSQr9IZ3TQeX5VISbULdKKMVgdo9RW7aC5PHEN7
xWWqHMkR8HZPnWNgcuH2u+hSJ06jv+HZmsbYwdMgtweNAcxlr4vJqUQ1N0k6YDCmv4tqcyHH3eq8
LT7pqNpeHt6FqIPX1akSptqVFVI6KIKLKVX7lHYXL2qoJDeKy8l7fPYrQRe36fVS1MXkMKKSjAHV
v8x2p/FGdWlSxwPN+6pKj7pgu2h/8V1ghfv2QGQzvXKU0xaMFcu9FSSnabW7siQiJhC1WbX7slIH
0phexLRJBQLRJFKOxtoTZRLRN4aZMoEIogqqXSx2p7ArOiGEksqdQ6exu1AfA01jahz/cnmpNQZi
88p3YLI0J3VhB/3+SqCRjxJcfXKtYwxCjbw/ismxRMV2MNsINPJRHN9fbDWXkxFbrEaWCq7++kSp
09+ZxDQ2uLwQPh9cX4q+2q6EX2eTtejrjBJ9XWxEX9dbMVfOtjvh8/mlSfT1WjSQuU00kLnzivUb
C3RlETyJIsw7RQazydqx+2ACeAumeJfhjk6FjQEUXHwpESwR9zDO0E3bJ/aMHUwtVhqPMhWpuW6X
rV+qLg1mukoMxilw53gcR/EFpsoR1mWh0jS2LsuDvsIjoKzMp08SegkFuqgTnsUEQx4FB/M1YnWh
scJ1QT+AgdIvjp4iW6Ziyl/EuAqlN6zQ24aZgcaDNv6BcAbxG4fgQe8qfYMeQK6Mp138IyL18nTL
vlP08A+8V9Fxkn0gKb6C8Yz8jZ3/TQg5n3YazIJHHGzwqOiGUQcHkWq9otpcG3A+PneoAgt95Yuv
uA66TFlbNYeKxuzApyFTTEwJBlRCqAgelTmDRhUPBOAEANZX4OsT6tZOL46n2vFyFakA/ZexS/jU
AQC4gSfaLvNo+WChfITgugReXBlPL3YdGS8sT7lY1vcpCFvQQY1861F4ggR7jAS7vVUOgxEu0myg
Z68/Qfag7h5FoSPbXegxHMrnEhaykSkOb0wMsbdbOEu9DUJYKUzY5t1Ltmy15+Om3hOSV7+Caqad
AKlBYMv2nzwM2fdbGN4vF23gUwdnKhb770Q8XCTgeX2efs+LPoNPQx/qglnaWQ316ELnPICvLQ/z
9qyDsZ/eeWrrE5bbcpwZzWzo5R8YzMS7ydtlKlLv12ZmLrOvgCAXg3y3jdKTQK6SmocuQ3KxIHpC
/B/6OBz2MAc4l23LzYEdMMSyfcfwPJ6wgk89nP005It/B0xt4/bTtzca/7aZs9vi0WDTdXGf+7g3
h2l7LOW97m6C2F3eAat53wJMsWYLo7ObT64fhfyyX0F67vpRg1mugvTc9aN0PFlaQeo4c/0oipDs
VZAeWj+6+WdxQwjzEcYQgQWNntpuTlIVajqeLoxOQ9TgSRZx/GkxXOYokmyQP91mloPdF7nYGiNG
T7KeLhZD/gw5WA5J0BwVfQU5WeFiJsGQtfBsFVHsE8W2U5lROD8rXNZuepkR1o5LS6ssq8YaZk0U
YKHUwG2GarVDp0xYCxsn/NqmzY/4zWr/vHc6ARIJI/tlhqRSu6zjvvwsKQpHcSL/vJ9dG8yZl5y/
kCz4Wx50RXvKNvvEc+HLScUDfs2mPu4H+VTW66IFIozVOSRHVLFV2Vxx9X5VNpvMiuqy7Y0i4Yr7
4zm2Kpsr52YOGbDijlkQ3ofdfmfp737BqyKO/D/AQOboFAonOkQArUubYoTj1gpjYt0tw4mAv9hP
uBUVxTPi1B+00+dV9C6KwAXz3zjpAypSrQ7QZf60m30t50EyHEEpCE+NcFomnKFSsgkfhLfc8Q4l
4dERzrKDOzqi5BI+eA8KivBLHjEb8Udj4MLDJlJraNo8CE/FyD9ZuVMxHoSnYuTHPu7whwfuOInC
VYI+nQAvuHJQMz/gjI+bfyKQ8hbqo2ragfQ7g8Bq0cXG4Xd2hhWqZTdtAlhuWvBKEk+1hsEQJ84w
a7VFdws4YkGbboTtym1jD60oojVwCA2adsWtrlE4Y1esU6RHrLE6BfRY8xyuo4THrO/3+IQJttCe
biLp5NN19CM9CZZWyUZy8UxbDKmO/Z05j2LQ4k5SaHh5woYpTc1VitX/ZafAMKBVX79GEz68AdZG
f+pdNGk7ASC9bqc/pV68BVTQSbztYkX0iTHD+mM/Lb5djDabPblBF3mc02Yu0HfSSn8SmI+zHiEw
DASG62zsY42cF7/o0Irbp1xB0ehSMLng+Zv0H6nJFRPS4rbjQafSoA3UJJq1G4z7zkF/Eox7O/ai
39hjcYSjCbx8FeaZkXnTSMRuWz5W3b8BEyD/aGVOvZiaweoj5ad9ks+K24MMcedUPcgk1V2ny+8d
PP10N26nSpawx2RfX1KCYgnOPfJc00f3MAbG/YKRShXSTrMPt+aIYNFxPZADMea4nudsjz5hB7hE
buTKMbwPD91zwh/sjOeDX3iIjKvjQKKQXVDgxcHztZA8hKfxtZhTW/IlG3NTAhCPcie4oaMxitje
qqLz0eI+K7R53NjQao2wXk4ETcOKZ9+HHTRkKC1dtKCkbZDxjYe1J3K0UQhcHdpbCs/mqfnFIic9
yUdgUZQv3Mz88gkHXLV7SFRBxtDK51xQTmGMTZMvczbNA8Y4h/AQH75v/iQfl+4TTFQ3SFkX9NQt
UvUNUrAuZ9kiVd8glWzUHb1Fqr5BijZQz7BFqr5BesKGkGiLVH2DlNmoO3mLVH2DFEnLM2yRHrKJ
cvwWqfoGKR18PH2LVJ0OkK48wxapegyRprHTt0jVN0hP3qZt81sVyvygvk2rf4tUfYP0hKCwaItU
na0Vt2kP3CJV3yAVbtOeskWq3oHMNu1RW6TqG6Qsxk7dIj1om/boLVL1DVLpFtqxW6TqG6T8Nu1p
W6TqG6Q6t9A0t0jVVR6yLc+wRaq+QSpLY0dskapjVrJNe/QWqfoGqcF8ni1SnakAJ26Rqm+Q6t2m
1doi1d6mPccW6anbtPq2SNU3SE/epp1tdFCEqkY+YItUfYP0lG3anWhfUm2DFG2gnmGLVH2DlOOX
E7dI1TdIhRtC8lukKASluUWqvkFKHx95+hap+gapYNPxpC1S9Q1SIZRTtkjVN0gNZrktUhhawPHC
bQ3GSR//n+bOdTmO47rjT7DvMHEJCSkRw75fqCgSBZK2bNASQ1G8JBQCgTBNRQQYCJSKX1wu5wHy
AHmKfM2H5GlcyWPk9++ZXayxTQG2XK4IpZ1F75nu0+fyP5deDNebrl89f081xr1r81N438k3Zv1d
u3s8dR8Otj9QwXXv+vwY3w8/mfrJ9+x8z70HbVq/djD6s72TrblFuh2kg8+31w8QP/zo/dXhwtsf
A9sef7/2INit8wdCqwfBuqs/u/O3l5ixN9/iLTPe2/3g7AAknn72zuFPnz4pz2/ef/3Oi9tPnn2m
M6zP7Vn/0z19/eVHy8bvl351dhraxhdb80N7P8yrLvrD7fnJvfd2dD708PrcoIoPmfurp1f1zi67
Zw9bP+5Y7/zqXZgmuP3+Sz3Y+8nyqwBu76B1xJ+snuX8xKze2fWH9rovV73cJ379g1v//M7yWPTr
uGqRpuWf/F38pOT15ySfvZx/TvLTtUM3/9dXP5VQn/Ly+OGV6ZG+tr3XO7dOefd50FjoPLf53p1/
+uLxzq33ytU7d27f/aLMwHT6MprDr26k1k9dPZL4SfsDtt18/s89pkblB48nmFk1ld9dSvH+q5lk
/1+2lwc44crZAc6qB/k3DVr1kJevD9+bkUqtlTWkenw8zk8b/+ivns6PFN8Z1RH/7FprgV9/8eh0
nI47X1y78V77NwVAkNs/P9fWn/9JRf/hF7/8xbnDaX3wgFXyyQastfMQEG3J8i9mKLj2wI7Tec7y
1PJZQzT9adkEXLtmdXZ67mwn4TnPP50OeJb709nwP95cnp3uXJvG9n+y95OGXhNiffzo8detGbrY
0rGOnY51zuY+g7DVed5v/m7xPtgKvu3dPnq2fgy62Npi5P7h6etXIoh7Hx8+f3G0uw==
]]>
<![CDATA[
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
bd3+9M7i/wDW2yQ9
]]>
</i:pgf>
</svg>
ui/theme/default/images/icons.png

17.3 KB | W: | H:

ui/theme/default/images/icons.png

20.3 KB | W: | H:

ui/theme/default/images/icons.png
ui/theme/default/images/icons.png
ui/theme/default/images/icons.png
ui/theme/default/images/icons.png
  • 2-up
  • Swipe
  • Onion skin
/**
* @fileOverview
*
* 快速反馈按钮
*
* @author: techird
* @copyright: Baidu FEX, 2014
*/
KityMinder.registerUI('topbar/feedback', function(minder) {
var $quickvisit = minder.getUI('topbar/quickvisit');
var $feedback = $quickvisit.add('feedback', 'right');
function quickFeedback() {
var $menu = minder.getUI('menu/menu');
$menu.$tabs.select(5);
$menu.show();
}
$feedback.click(quickFeedback);
minder.addShortcut('f1', quickFeedback);
return $feedback;
});
\ No newline at end of file
......@@ -8,20 +8,34 @@
*/
KityMinder.registerUI('topbar/quickvisit', function (minder) {
function btn(name) {
return $('<a class="quick-visit-button"></a>')
var rightDocks = [];
function btn(name, dockRight) {
var $btn = $('<a class="quick-visit-button"></a>')
.text(minder.getLang('ui.quickvisit.' + name))
.attr('title', minder.getLang('ui.quickvisit.' + name))
.addClass(name)
.appendTo('#panel');
.addClass(name);
if (dockRight) rightDocks.push($btn);
else $btn.appendTo('#panel');
return $btn;
}
var $new = btn('new'),
$save = btn('save'),
$share = btn('share');
var ret = {
$new: $new,
$save: $save,
$share: $share
};
minder.on('uiready', function quickVisit() {
while (rightDocks.length) $('#panel #search').after(rightDocks.shift());
function quickNew() {
var $doc = minder.getUI('doc');
if (!$doc.checkSaved()) return;
......@@ -47,6 +61,7 @@ KityMinder.registerUI('topbar/quickvisit', function (minder) {
$menu.show();
}
$new.click(quickNew);
$save.click(quickSave);
$share.click(quickShare);
......@@ -60,5 +75,14 @@ KityMinder.registerUI('topbar/quickvisit', function (minder) {
$menu.show();
});
ret.ready = true;
ret.quickNew = quickNew;
ret.quickSave = quickSave;
ret.quickShare = quickShare;
});
ret.add = btn;
return ret;
});
\ No newline at end of file
......@@ -43,6 +43,8 @@ KityMinder.registerUI('topbar/search', function(minder) {
return;
}
keyword = keyword.toLowerCase();
var newSearch = doSearch.lastKeyword != keyword;
doSearch.lastKeyword = keyword;
......@@ -52,7 +54,7 @@ KityMinder.registerUI('topbar/search', function(minder) {
for (var i = startIndex; i <= endIndex; i++) {
var node = nodeSequence[i % nodeSequence.length];
var text = node.getText();
var text = node.getText().toLowerCase();
if (text.indexOf(keyword) != -1) {
setSearchResult(node);
doSearch.lastIndex = i;
......
......@@ -14,7 +14,9 @@ KityMinder.registerUI('topbar/user', function(minder) {
var $userPanel = $('<div class="user-panel"></div>').appendTo('#panel');
var $tip = $('<span></span>').text(minder.getLang('ui.checklogin')).appendTo($userPanel);
var $tip = $('<span class="loading-tip"></span>')
.text(minder.getLang('ui.checklogin'))
.appendTo($userPanel);
/* 登录按钮 */
var $loginButton = new FUI.Button({
......@@ -64,7 +66,7 @@ KityMinder.registerUI('topbar/user', function(minder) {
window.open('http://i.baidu.com');
break;
case 'gotonetdisk':
window.open('http://pan.baidu.com');
window.open('http://pan.baidu.com/disk/home#path=/apps/kityminder');
break;
case 'switchuser':
switchUser();
......@@ -83,7 +85,7 @@ KityMinder.registerUI('topbar/user', function(minder) {
fio.user.check().then(check)['catch'](function(error) {
$loginButton.show();
$userButton.hide();
$tip.remove();
$tip.hide();
});
});
......@@ -98,11 +100,13 @@ KityMinder.registerUI('topbar/user', function(minder) {
$loginButton.hide();
fio.user.fire('login', user);
} else {
$loginButton.show();
$userButton.hide();
fio.user.fire('logout', user);
if (window.location.href.indexOf('nocheck') == -1) {
return login();
} else {
$loginButton.show();
}
}
$tip.remove();
$tip.hide();
currentUser = user;
}
......@@ -118,14 +122,14 @@ KityMinder.registerUI('topbar/user', function(minder) {
$loginButton.setLabel(minder.getLang('ui.loggingin'));
fio.user.login({
remember: 7 * 24 * 60 * 60 // remember 7 days
}).then(check);
});
}
function switchUser() {
fio.user.login({
remember: 7 * 24 * 60 * 60, // remember 7 days
force: true
}).then(check);
});
}
function requireLogin($element) {
......
......@@ -42,6 +42,11 @@
e.stopPropagation();
});
// 阻止非脑图事件冒泡
$('#content-wrapper').delegate('input', 'mousedown mousemove mouseup contextmenu', function(e) {
e.stopPropagation();
});
minder.getPaper().addClass('loading-target');
this.fire('interactchange');
......@@ -53,12 +58,20 @@
return this._ui[id];
}
});
$.ajaxSetup({ cache: false });
$.extend($, {
pajax: function() {
var defered = $.ajax.apply($, arguments);
return Promise.resolve(defered);
return Promise.resolve($.ajax.apply($, arguments));
}
});
// preload css images
$(function() {
var list = ["kmcat_warn.png", "kmcat_sad.png", "icons.png", "template_large.png", "history.png", "feedback.png", "iconpriority.png", "iconprogress.png", "template.png", "layout.png", "next-level.png", "prev-level.png"];
list.forEach(function(item) {
(new Image()).src = 'ui/theme/default/images/' + item;
});
});
})();
\ No newline at end of file
......@@ -12,8 +12,8 @@ KityMinder.registerUI('widget/commandbutton', function(minder) {
generate: function(command, onclick) {
var $button = new FUI.Button({
label: minder.getLang('ui.' + command),
text: minder.getLang('ui.' + command),
label: minder.getLang('ui.command.' + command) || minder.getLang('ui.' + command),
text: minder.getLang('ui.command.' + command) || minder.getLang('ui.' + command),
className: ['command-widget', 'command-button', command]
});
......
......@@ -45,7 +45,8 @@ KityMinder.registerUI('widget/fileloader', function(minder) {
}
function error(err) {
window.alert('加载文件失败:' + err.message);
var notice = minder.getUI('widget/notice');
notice.error('err_localfile_read', err);
$container.removeClass('loading');
}
......
......@@ -10,6 +10,10 @@
KityMinder.registerUI('widget/netdiskfinder', function(minder) {
var eve = minder.getUI('eve');
var notice = minder.getUI('widget/notice');
var recycleReady = null;
var instances = [];
/**
* 生成一个网盘的目录访问组件
......@@ -21,47 +25,43 @@ KityMinder.registerUI('widget/netdiskfinder', function(minder) {
var finder = eve.setup({});
instances.push(finder);
var base = '/apps/kityminder';
var recyclePath = base + '/.recycle';
var currentPath = base;
/* 路径导航 */
var $nav = $('<div class="netdisk-nav"></div>')
.appendTo($container);
var $finder = $('<div class="netdisk-finder"></div>').appendTo($container);
/* 显示当前目录文件列表 */
var $list = $('<ul class="netdisk-file-list"></ul>')
.appendTo($container);
/* 顶部工具栏 */
var $headbar = $('<div class="head"></div>').appendTo($finder);
var $mkdir = $('<a></a>')
.text(minder.getLang('ui.mkdir'))
.addClass('button netdisk-mkdir')
.click(mkdir);
/* 控制按钮 */
var $control = $('<div class="control"></div>').appendTo($headbar);
var selected = null;
var $mkdir = $('<a></a>')
.text(minder.getLang('ui.mkdir'))
.attr('title', minder.getLang('ui.mkdir'))
.addClass('button mkdir')
.appendTo($control)
.click(mkdir);
$nav.after($mkdir);
var $recycle = $('<a></a>')
.text(minder.getLang('ui.recycle'))
.attr('title', minder.getLang('ui.recycle'))
.addClass('button recycle dir')
.data('file', { path: recyclePath, filename: minder.getLang('ui.recycle')})
.appendTo($control)
.click(recycle);
$container.addClass('netdisk-finder-container');
/* 路径导航 */
var $nav = $('<div class="nav"></div>').appendTo($headbar);
/* 点击目录中的项目时打开项目 */
$list.delegate('.netdisk-file-list-item', 'click', function(e) {
if (mkdir.onprogress) return mkdir.onprogress.select();
var $file = $(e.target),
file = $file.data('file');
if (file) open(file);
});
/* 显示当前目录文件列表 */
var $list = $('<ul class="file-list"></ul>')
.appendTo($finder);
/* 点击导航处,切换路径 */
$nav.delegate('a', 'click', function(e) {
if (mkdir.onprogress) return mkdir.onprogress.select();
if ($(e.target).hasClass('dir-back')) {
var parts = currentPath.split('/');
parts.pop(); // 有一个无效部分
parts.pop();
return list(parts.join('/'));
}
list($(e.target).data('path'));
});
var selected = null;
minder.on('uiready', function() {
var $user = minder.getUI('topbar/user');
......@@ -71,17 +71,143 @@ KityMinder.registerUI('widget/netdiskfinder', function(minder) {
});
});
handleClick();
handleDrag();
handleNav();
function handleClick() {
/* 点击目录中的项目时打开项目 */
$list.delegate('.file-list-item', 'dblclick', function(e) {
if (mkdir.onprogress) return mkdir.onprogress.select();
var $file = $(e.target),
file = $file.data('file');
if (file) open(file);
});
$list.delegate('.file-list-item', 'mousedown', function(e) {
if (mkdir.onprogress) return mkdir.onprogress.select();
var $file = $(e.target),
file = $file.data('file');
select(file && file.path);
});
}
function handleNav() {
/* 点击导航处,切换路径 */
$nav.delegate('a', 'click', function(e) {
if (mkdir.onprogress) return mkdir.onprogress.select();
if ($(e.target).hasClass('dir-back')) {
var parts = currentPath.split('/');
parts.pop(); // 有一个无效部分
parts.pop();
return list(parts.join('/'));
}
list($(e.target).data('path'));
});
}
function handleDrag() {
var fileItemSelector = '.file-list-item';
var dirSelector = '.dir';
var $dragging = null;
$list.delegate(fileItemSelector, 'dragstart', itemDragStart)
.delegate(fileItemSelector, 'dragend', itemDragEnd)
.delegate(dirSelector, 'dragover', dragOver)
.delegate(dirSelector, 'dragenter', dirDragEnter)
.delegate(dirSelector, 'dragleave', dirDragLeave)
.delegate(dirSelector, 'drop', dirDrop);
$headbar.delegate(dirSelector, 'dragover', dragOver)
.delegate(dirSelector, 'dragenter', dirDragEnter)
.delegate(dirSelector, 'dragleave', dirDragLeave)
.delegate(dirSelector, 'drop', dirDrop);
function itemDragStart(e) {
var $target = $(e.target);
if (!$target.hasClass('file-list-item')) {
return;
}
event.dataTransfer.effectAllowed = "move";
event.dataTransfer.setDragImage($target.find('.icon').get(0), 12, 12);
$dragging = $target.addClass('dragging');
$finder.addClass('drop-mode');
}
function itemDragEnd(e) {
$(e.target).removeClass('dragging');
event.dataTransfer.dropEffect = 'move';
e.preventDefault();
$finder.removeClass('drop-mode');
}
function dragOver(e) {
e.preventDefault();
}
function dirDragEnter(e) {
if (!$(e.target).hasClass('dir')) return;
$(e.target).addClass('drag-enter');
}
function dirDragLeave(e) {
$(e.target).removeClass('drag-enter');
}
function dirDrop(e) {
var $target = $(e.target).removeClass('drag-enter');
if (!$target.hasClass('dir')) return;
var source = $dragging.data('file');
var destination = $target.data('file');
var destinationPath = destination.path + '/' + source.filename;
var sourcePath = source.path;
if (destinationPath.indexOf(sourcePath) === 0) return;
if (window.confirm(minder.getLang('ui.move_file_confirm', source.filename, destination.filename))) {
$container.addClass('loading');
recycleReady.then(doMove);
}
function doMove() {
mv(sourcePath, destinationPath).then(function() {
$dragging.remove();
})['catch'](function(e) {
notice.error('err_move_file', e);
}).then(function() {
$container.removeClass('loading');
});
}
}
}
function recycle() {
list(recyclePath);
}
function mv(source, destination) {
return fio.file.move({
path: source,
newPath: destination
});
}
function mkdir() {
if (mkdir.onprogress) {
return mkdir.onprogress.select();
}
var $li = $('<li>').addClass('netdisk-file-list-item dir').prependTo($list);
var $li = $('<li>').addClass('file-list-item dir').prependTo($list);
$li.append('<span class="icon"></span>');
var $input = $('<input>')
.attr('type', 'text')
.addClass('new-dir-name')
.addClass('new-dir-name fui-widget fui-selectable')
.val(minder.getLang('ui.newdir'))
.appendTo($li);
......@@ -108,12 +234,17 @@ KityMinder.registerUI('widget/netdiskfinder', function(minder) {
fio.file.mkdir({
path: currentPath + name
}).then(function() {
return list(currentPath, true);
return new Promise(function(resolve) {
setTimeout(function() {
resolve(list(currentPath, true));
}, 200);
});
}, function(e) {
if (e.message.indexOf('31061') === 0) {
if (e.detail && e.detail.error_code == 31061) {
e.message = '已存在同名目录';
}
window.alert('创建目录失败:' + e.message);
var notice = minder.getUI('widget/notice');
notice.error('err_mkdir', e);
$li.remove();
}).then(function() {
$container.removeClass('loading');
......@@ -180,39 +311,69 @@ KityMinder.registerUI('widget/netdiskfinder', function(minder) {
updateNav();
return Promise.all([listPromise, transitPromise]).then(renderList, function(error) {
window.alert('加载目录发生错误:' + error);
return Promise.all([listPromise, transitPromise]).then(function(values) {
var files = values[0];
if (!recycleReady && path == base) {
for (var i = 0; i < files.length; i++) {
if (files[i].path == recyclePath) {
recycleReady = Promise.resolve(true);
}
break;
}
recycleReady = recycleReady || fio.file.mkdir({
path: base + '/.recycle'
});
}
return renderList(files);
}, function(error) {
var notice = minder.getUI('widget/notice');
notice.error('err_ls', error);
});
}
function renderList(values) {
$list.empty();
var files = values[0];
files.sort(function(a, b) {
if (a.isDir > b.isDir) {
return -1;
} else if (a.isDir == b.isDir) {
return a.createTime > b.createTime ? -1 : 1;
} else return 1;
});
function renderFileList(files) {
$list.empty();
if (!files.length) {
$list.append('<li class="empty" disabled="disabled">' + minder.getLang('ui.emptydir') + '</li>');
} else {
files.forEach(function(file) {
if (!file.isDir && (!listFilter || !listFilter(file))) return;
if (file.path == recyclePath) return;
$('<li></li>')
.text(file.filename)
.addClass('netdisk-file-list-item')
.append('<span class="icon"></span>')
.append(file.filename)
.addClass('file-list-item')
.addClass(file.isDir ? 'dir' : 'file')
.data('file', file)
.attr('draggable', true)
.appendTo($list);
});
}
}
finder._renderFileList = renderFileList;
function renderList(files) {
files.sort(function(a, b) {
if (a.isDir > b.isDir) {
return -1;
} else if (a.isDir == b.isDir) {
return a.createTime > b.createTime ? -1 : 1;
} else return 1;
});
renderFileList(files);
// 通知其他 finder 更新
instances.forEach(function(instance) {
if (instance == finder) return;
if (instance.pwd() == currentPath)
instance._renderFileList(files);
});
fadeInList();
checkSelect();
......@@ -233,13 +394,17 @@ KityMinder.registerUI('widget/netdiskfinder', function(minder) {
function pathButton(part) {
processPath += part + '/';
var $a = $('<a></a>');
var $a = $('<a></a>').addClass('dir');
if (part == base) {
$a.text(minder.getLang('ui.mydocument'));
} else if (part == '.recycle') {
$a.text(minder.getLang('ui.recycle'));
} else {
$a.text(part);
}
return $a.data('path', processPath);
return $a.data('path', processPath).data('file', {
path: processPath.substr(0, processPath.length - 1)
});
}
$nav.append(pathButton(base));
......@@ -258,7 +423,7 @@ KityMinder.registerUI('widget/netdiskfinder', function(minder) {
function checkSelect() {
var hasSelect = false;
$list.find('.netdisk-file-list-item').removeClass('selected').each(function() {
$list.find('.file-list-item').removeClass('selected').each(function() {
var file = $(this).data('file');
if (file && file.path == selected) {
$(this).addClass('selected');
......
/**
* @fileOverview
*
* 通知小组件
*
* @author: techird
* @copyright: Baidu FEX, 2014
*/
KityMinder.registerUI('widget/notice', function (minder) {
var errorMessage = minder.getLang('error_message');
var memory = minder.getUI('memory');
var $notice = $('<div>')
.addClass('notice-widget')
.appendTo('#kityminder');
var $mask = $('<div>')
.addClass('error-mask');
var $error = new FUI.Dialog({
width: 500,
height: 'auto',
prompt: true,
caption: errorMessage.title,
className: 'error-dialog'
}).appendTo(document.getElementById('content-wrapper'));
$error.on('ok cancel', function(e) {
if (error.resolve) error.resolve(e);
});
var $error_body = $($error.getBodyElement());
var isBuilded = (function() {
var scripts = [].slice.apply(document.getElementsByTagName('script'));
var s, m;
while( (s = scripts.pop()) ) {
if ( (m = /kityminder.*\.min\.js/.exec(s.src))) return m[0];
}
return false;
})();
// concatMap: sperate files -> join file
// minMap: join file -> min file
var concatMap, minMap;
function fixSourceSymbol($ta, $mask) {
function fix() {
var text = $ta.text();
var pattern = new RegExp('at.+' + isBuilded + '.+\\:(\\d+)\\:(\\d+)\\)?', 'g');
var match;
$ta.text(text.replace(pattern, function(match, $1, $2) {
var lookup = {line: +$1, column: +$2};
var info = minMap.originalPositionFor(lookup);
var name = info.name;
lookup = {line: info.line, column: info.column};
info = concatMap.originalPositionFor(lookup);
name = name || '<Anonymous>';
var replaced = 'at ' + name + ' (' +
info.source.replace('../', '') + ':' + info.line + ':' + info.column + ')';
if (replaced.indexOf('promise') != -1) {
replaced = 'at <async> Promise.' + name;
}
return replaced;
}));
}
if (isBuilded) {
if (concatMap) return fix();
$mask.addClass('loading');
setTimeout(function() {
$mask.removeClass('loading');
}, 5000);
var script = document.createElement('script');
script.onload = function() {
Promise.all([
$.pajax({
url: isBuilded.replace('min.js', 'js.map'),
dataType: 'json'
}),
$.pajax({
url: isBuilded.replace('.js', '.map'),
dataType: 'json'
})
]).then(function(files) {
concatMap = new window.sourceMap.SourceMapConsumer(files[0]);
minMap = new window.sourceMap.SourceMapConsumer(files[1]);
fix();
$mask.removeClass('loading');
});
};
script.src = 'lib/source-map.min.js';
document.head.appendChild(script);
}
}
$error_body.delegate('.error-detail a.expander', 'click', function(e) {
var $detail = $(e.target).closest('.error-detail').toggleClass('expanded');
var showDetail = $detail.hasClass('expanded');
memory.set('show-error-detail', showDetail);
});
function info(msg, warn, time) {
if (!$notice.hasClass('show')) $notice.empty();
clearTimeout(info.ttl2);
if (warn) $notice.addClass('warn');
else $notice.removeClass('warn');
$notice.append('<p>' + msg + '</p>');
$notice.addClass('show');
clearTimeout(info.ttl);
time = time || (warn ? 5000 : 3000);
info.ttl = setTimeout(function() {
$notice.removeClass('show');
info.ttl2 = setTimeout(function() {
$notice.empty();
}, 1000);
}, time);
}
function warn(msg) {
info(msg, warn);
}
function descriptReason(e) {
e = e || {};
if (typeof(e) == 'string') {
e = new Error(e);
}
if (e.getDetail) return e;
// 文件访问错误
if (typeof(fio) != 'undefined' && (e instanceof fio.FileRequestError)) {
if (!e.status) {
e.description = errorMessage.err_network;
} else {
e.description = errorMessage.pcs_code[e.detail.error_code];
}
e.getDetail = function() {
return JSON.stringify(e, null, 4);
};
} else if (e instanceof Error) {
e.getDetail = function() {
return e.stack;
};
}
return e;
}
function error(name, e) {
if (arguments.length == 1) {
e = name;
name = 'unknown';
}
$error_body.empty();
e = descriptReason(e);
var $content = $('<div>')
.addClass('error-content')
.appendTo($error_body);
var $msg = $('<h3>')
.text(errorMessage[name] || errorMessage.err_unknown)
.appendTo($content);
var $reason = $('<p>')
.text(e.message || e.description || errorMessage.unknownreason)
.appendTo($content);
if (e.getDetail) {
var $detail = $('<div>')
.addClass('error-detail')
.append($('<a class="expander"></a>').text(minder.getLang('ui.error_detail')))
.appendTo($error_body);
var $detailContent = $('<div>')
.addClass('error-detail-wrapper')
.appendTo($detail);
var $textarea = $('<textarea>')
.attr('id', 'error-detail-content')
.text(e.getDetail() + '\n\n浏览器信息:' + navigator.userAgent)
.appendTo($detailContent);
fixSourceSymbol($textarea, $detailContent);
var $copy = $('<button>')
.addClass('copy-and-feedback')
.text(minder.getLang('ui.copy_and_feedback'))
.appendTo($detailContent);
$copy.attr('data-clipboard-target', 'error-detail-content');
zeroCopy($copy);
if (memory.get('show-error-detail')) $detail.addClass('expanded');
}
$error.show();
$error.getElement().style.top = '180px';
return new Promise(function(resolve) {
error.resolve = resolve;
});
}
function zeroCopy($target) {
/* global ZeroClipboard:true */
if (window.ZeroClipboard) {
ZeroClipboard.config({
swfPath: 'lib/ZeroClipboard.swf',
hoverClass: 'hover',
activeClass: 'active'
});
var clip = new window.ZeroClipboard($target);
clip.on('ready', function () {
clip.on('aftercopy', function() {
$error.hide();
minder.getUI('topbar/feedback').click();
});
});
} else {
$target.remove();
}
}
return {
info: info,
error: error,
warn: warn
};
});
\ No newline at end of file
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